dfhack_proto/generated/messages/
RemoteFortressReader.rs

1// This file is generated by rust-protobuf 3.7.2. 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(dead_code)]
13#![allow(missing_docs)]
14#![allow(non_camel_case_types)]
15#![allow(non_snake_case)]
16#![allow(non_upper_case_globals)]
17#![allow(trivial_casts)]
18#![allow(unused_results)]
19#![allow(unused_mut)]
20
21//! Generated file from `RemoteFortressReader.proto`
22
23/// Generated files are compatible only with the same version
24/// of protobuf runtime.
25const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_3_7_2;
26
27#[derive(Hash, Eq)]
28// @@protoc_insertion_point(message:RemoteFortressReader.Coord)
29#[derive(PartialEq,Clone,Default,Debug)]
30pub struct Coord {
31    // message fields
32    // @@protoc_insertion_point(field:RemoteFortressReader.Coord.x)
33    pub x: ::std::option::Option<i32>,
34    // @@protoc_insertion_point(field:RemoteFortressReader.Coord.y)
35    pub y: ::std::option::Option<i32>,
36    // @@protoc_insertion_point(field:RemoteFortressReader.Coord.z)
37    pub z: ::std::option::Option<i32>,
38    // special fields
39    // @@protoc_insertion_point(special_field:RemoteFortressReader.Coord.special_fields)
40    pub special_fields: ::protobuf::SpecialFields,
41}
42
43impl<'a> ::std::default::Default for &'a Coord {
44    fn default() -> &'a Coord {
45        <Coord as ::protobuf::Message>::default_instance()
46    }
47}
48
49impl Coord {
50    pub fn new() -> Coord {
51        ::std::default::Default::default()
52    }
53
54    // optional int32 x = 1;
55
56    pub fn x(&self) -> i32 {
57        self.x.unwrap_or(0)
58    }
59
60    pub fn clear_x(&mut self) {
61        self.x = ::std::option::Option::None;
62    }
63
64    pub fn has_x(&self) -> bool {
65        self.x.is_some()
66    }
67
68    // Param is passed by value, moved
69    pub fn set_x(&mut self, v: i32) {
70        self.x = ::std::option::Option::Some(v);
71    }
72
73    // optional int32 y = 2;
74
75    pub fn y(&self) -> i32 {
76        self.y.unwrap_or(0)
77    }
78
79    pub fn clear_y(&mut self) {
80        self.y = ::std::option::Option::None;
81    }
82
83    pub fn has_y(&self) -> bool {
84        self.y.is_some()
85    }
86
87    // Param is passed by value, moved
88    pub fn set_y(&mut self, v: i32) {
89        self.y = ::std::option::Option::Some(v);
90    }
91
92    // optional int32 z = 3;
93
94    pub fn z(&self) -> i32 {
95        self.z.unwrap_or(0)
96    }
97
98    pub fn clear_z(&mut self) {
99        self.z = ::std::option::Option::None;
100    }
101
102    pub fn has_z(&self) -> bool {
103        self.z.is_some()
104    }
105
106    // Param is passed by value, moved
107    pub fn set_z(&mut self, v: i32) {
108        self.z = ::std::option::Option::Some(v);
109    }
110
111    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
112        let mut fields = ::std::vec::Vec::with_capacity(3);
113        let mut oneofs = ::std::vec::Vec::with_capacity(0);
114        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
115            "x",
116            |m: &Coord| { &m.x },
117            |m: &mut Coord| { &mut m.x },
118        ));
119        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
120            "y",
121            |m: &Coord| { &m.y },
122            |m: &mut Coord| { &mut m.y },
123        ));
124        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
125            "z",
126            |m: &Coord| { &m.z },
127            |m: &mut Coord| { &mut m.z },
128        ));
129        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Coord>(
130            "Coord",
131            fields,
132            oneofs,
133        )
134    }
135}
136
137impl ::protobuf::Message for Coord {
138    const NAME: &'static str = "Coord";
139
140    fn is_initialized(&self) -> bool {
141        true
142    }
143
144    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
145        while let Some(tag) = is.read_raw_tag_or_eof()? {
146            match tag {
147                8 => {
148                    self.x = ::std::option::Option::Some(is.read_int32()?);
149                },
150                16 => {
151                    self.y = ::std::option::Option::Some(is.read_int32()?);
152                },
153                24 => {
154                    self.z = ::std::option::Option::Some(is.read_int32()?);
155                },
156                tag => {
157                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
158                },
159            };
160        }
161        ::std::result::Result::Ok(())
162    }
163
164    // Compute sizes of nested messages
165    #[allow(unused_variables)]
166    fn compute_size(&self) -> u64 {
167        let mut my_size = 0;
168        if let Some(v) = self.x {
169            my_size += ::protobuf::rt::int32_size(1, v);
170        }
171        if let Some(v) = self.y {
172            my_size += ::protobuf::rt::int32_size(2, v);
173        }
174        if let Some(v) = self.z {
175            my_size += ::protobuf::rt::int32_size(3, v);
176        }
177        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
178        self.special_fields.cached_size().set(my_size as u32);
179        my_size
180    }
181
182    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
183        if let Some(v) = self.x {
184            os.write_int32(1, v)?;
185        }
186        if let Some(v) = self.y {
187            os.write_int32(2, v)?;
188        }
189        if let Some(v) = self.z {
190            os.write_int32(3, v)?;
191        }
192        os.write_unknown_fields(self.special_fields.unknown_fields())?;
193        ::std::result::Result::Ok(())
194    }
195
196    fn special_fields(&self) -> &::protobuf::SpecialFields {
197        &self.special_fields
198    }
199
200    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
201        &mut self.special_fields
202    }
203
204    fn new() -> Coord {
205        Coord::new()
206    }
207
208    fn clear(&mut self) {
209        self.x = ::std::option::Option::None;
210        self.y = ::std::option::Option::None;
211        self.z = ::std::option::Option::None;
212        self.special_fields.clear();
213    }
214
215    fn default_instance() -> &'static Coord {
216        static instance: Coord = Coord {
217            x: ::std::option::Option::None,
218            y: ::std::option::Option::None,
219            z: ::std::option::Option::None,
220            special_fields: ::protobuf::SpecialFields::new(),
221        };
222        &instance
223    }
224}
225
226impl ::protobuf::MessageFull for Coord {
227    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
228        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
229        descriptor.get(|| file_descriptor().message_by_package_relative_name("Coord").unwrap()).clone()
230    }
231}
232
233impl ::std::fmt::Display for Coord {
234    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
235        ::protobuf::text_format::fmt(self, f)
236    }
237}
238
239impl ::protobuf::reflect::ProtobufValue for Coord {
240    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
241}
242
243// @@protoc_insertion_point(message:RemoteFortressReader.Tiletype)
244#[derive(PartialEq,Clone,Default,Debug)]
245pub struct Tiletype {
246    // message fields
247    // @@protoc_insertion_point(field:RemoteFortressReader.Tiletype.id)
248    pub id: ::std::option::Option<i32>,
249    // @@protoc_insertion_point(field:RemoteFortressReader.Tiletype.name)
250    pub name: ::std::option::Option<::std::string::String>,
251    // @@protoc_insertion_point(field:RemoteFortressReader.Tiletype.caption)
252    pub caption: ::std::option::Option<::std::string::String>,
253    // @@protoc_insertion_point(field:RemoteFortressReader.Tiletype.shape)
254    pub shape: ::std::option::Option<::protobuf::EnumOrUnknown<TiletypeShape>>,
255    // @@protoc_insertion_point(field:RemoteFortressReader.Tiletype.special)
256    pub special: ::std::option::Option<::protobuf::EnumOrUnknown<TiletypeSpecial>>,
257    // @@protoc_insertion_point(field:RemoteFortressReader.Tiletype.material)
258    pub material: ::std::option::Option<::protobuf::EnumOrUnknown<TiletypeMaterial>>,
259    // @@protoc_insertion_point(field:RemoteFortressReader.Tiletype.variant)
260    pub variant: ::std::option::Option<::protobuf::EnumOrUnknown<TiletypeVariant>>,
261    // @@protoc_insertion_point(field:RemoteFortressReader.Tiletype.direction)
262    pub direction: ::std::option::Option<::std::string::String>,
263    // special fields
264    // @@protoc_insertion_point(special_field:RemoteFortressReader.Tiletype.special_fields)
265    pub special_fields: ::protobuf::SpecialFields,
266}
267
268impl<'a> ::std::default::Default for &'a Tiletype {
269    fn default() -> &'a Tiletype {
270        <Tiletype as ::protobuf::Message>::default_instance()
271    }
272}
273
274impl Tiletype {
275    pub fn new() -> Tiletype {
276        ::std::default::Default::default()
277    }
278
279    // required int32 id = 1;
280
281    pub fn id(&self) -> i32 {
282        self.id.unwrap_or(0)
283    }
284
285    pub fn clear_id(&mut self) {
286        self.id = ::std::option::Option::None;
287    }
288
289    pub fn has_id(&self) -> bool {
290        self.id.is_some()
291    }
292
293    // Param is passed by value, moved
294    pub fn set_id(&mut self, v: i32) {
295        self.id = ::std::option::Option::Some(v);
296    }
297
298    // optional string name = 2;
299
300    pub fn name(&self) -> &str {
301        match self.name.as_ref() {
302            Some(v) => v,
303            None => "",
304        }
305    }
306
307    pub fn clear_name(&mut self) {
308        self.name = ::std::option::Option::None;
309    }
310
311    pub fn has_name(&self) -> bool {
312        self.name.is_some()
313    }
314
315    // Param is passed by value, moved
316    pub fn set_name(&mut self, v: ::std::string::String) {
317        self.name = ::std::option::Option::Some(v);
318    }
319
320    // Mutable pointer to the field.
321    // If field is not initialized, it is initialized with default value first.
322    pub fn mut_name(&mut self) -> &mut ::std::string::String {
323        if self.name.is_none() {
324            self.name = ::std::option::Option::Some(::std::string::String::new());
325        }
326        self.name.as_mut().unwrap()
327    }
328
329    // Take field
330    pub fn take_name(&mut self) -> ::std::string::String {
331        self.name.take().unwrap_or_else(|| ::std::string::String::new())
332    }
333
334    // optional string caption = 3;
335
336    pub fn caption(&self) -> &str {
337        match self.caption.as_ref() {
338            Some(v) => v,
339            None => "",
340        }
341    }
342
343    pub fn clear_caption(&mut self) {
344        self.caption = ::std::option::Option::None;
345    }
346
347    pub fn has_caption(&self) -> bool {
348        self.caption.is_some()
349    }
350
351    // Param is passed by value, moved
352    pub fn set_caption(&mut self, v: ::std::string::String) {
353        self.caption = ::std::option::Option::Some(v);
354    }
355
356    // Mutable pointer to the field.
357    // If field is not initialized, it is initialized with default value first.
358    pub fn mut_caption(&mut self) -> &mut ::std::string::String {
359        if self.caption.is_none() {
360            self.caption = ::std::option::Option::Some(::std::string::String::new());
361        }
362        self.caption.as_mut().unwrap()
363    }
364
365    // Take field
366    pub fn take_caption(&mut self) -> ::std::string::String {
367        self.caption.take().unwrap_or_else(|| ::std::string::String::new())
368    }
369
370    // optional .RemoteFortressReader.TiletypeShape shape = 4;
371
372    pub fn shape(&self) -> TiletypeShape {
373        match self.shape {
374            Some(e) => e.enum_value_or(TiletypeShape::NO_SHAPE),
375            None => TiletypeShape::NO_SHAPE,
376        }
377    }
378
379    pub fn clear_shape(&mut self) {
380        self.shape = ::std::option::Option::None;
381    }
382
383    pub fn has_shape(&self) -> bool {
384        self.shape.is_some()
385    }
386
387    // Param is passed by value, moved
388    pub fn set_shape(&mut self, v: TiletypeShape) {
389        self.shape = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
390    }
391
392    // optional .RemoteFortressReader.TiletypeSpecial special = 5;
393
394    pub fn special(&self) -> TiletypeSpecial {
395        match self.special {
396            Some(e) => e.enum_value_or(TiletypeSpecial::NO_SPECIAL),
397            None => TiletypeSpecial::NO_SPECIAL,
398        }
399    }
400
401    pub fn clear_special(&mut self) {
402        self.special = ::std::option::Option::None;
403    }
404
405    pub fn has_special(&self) -> bool {
406        self.special.is_some()
407    }
408
409    // Param is passed by value, moved
410    pub fn set_special(&mut self, v: TiletypeSpecial) {
411        self.special = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
412    }
413
414    // optional .RemoteFortressReader.TiletypeMaterial material = 6;
415
416    pub fn material(&self) -> TiletypeMaterial {
417        match self.material {
418            Some(e) => e.enum_value_or(TiletypeMaterial::NO_MATERIAL),
419            None => TiletypeMaterial::NO_MATERIAL,
420        }
421    }
422
423    pub fn clear_material(&mut self) {
424        self.material = ::std::option::Option::None;
425    }
426
427    pub fn has_material(&self) -> bool {
428        self.material.is_some()
429    }
430
431    // Param is passed by value, moved
432    pub fn set_material(&mut self, v: TiletypeMaterial) {
433        self.material = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
434    }
435
436    // optional .RemoteFortressReader.TiletypeVariant variant = 7;
437
438    pub fn variant(&self) -> TiletypeVariant {
439        match self.variant {
440            Some(e) => e.enum_value_or(TiletypeVariant::NO_VARIANT),
441            None => TiletypeVariant::NO_VARIANT,
442        }
443    }
444
445    pub fn clear_variant(&mut self) {
446        self.variant = ::std::option::Option::None;
447    }
448
449    pub fn has_variant(&self) -> bool {
450        self.variant.is_some()
451    }
452
453    // Param is passed by value, moved
454    pub fn set_variant(&mut self, v: TiletypeVariant) {
455        self.variant = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
456    }
457
458    // optional string direction = 8;
459
460    pub fn direction(&self) -> &str {
461        match self.direction.as_ref() {
462            Some(v) => v,
463            None => "",
464        }
465    }
466
467    pub fn clear_direction(&mut self) {
468        self.direction = ::std::option::Option::None;
469    }
470
471    pub fn has_direction(&self) -> bool {
472        self.direction.is_some()
473    }
474
475    // Param is passed by value, moved
476    pub fn set_direction(&mut self, v: ::std::string::String) {
477        self.direction = ::std::option::Option::Some(v);
478    }
479
480    // Mutable pointer to the field.
481    // If field is not initialized, it is initialized with default value first.
482    pub fn mut_direction(&mut self) -> &mut ::std::string::String {
483        if self.direction.is_none() {
484            self.direction = ::std::option::Option::Some(::std::string::String::new());
485        }
486        self.direction.as_mut().unwrap()
487    }
488
489    // Take field
490    pub fn take_direction(&mut self) -> ::std::string::String {
491        self.direction.take().unwrap_or_else(|| ::std::string::String::new())
492    }
493
494    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
495        let mut fields = ::std::vec::Vec::with_capacity(8);
496        let mut oneofs = ::std::vec::Vec::with_capacity(0);
497        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
498            "id",
499            |m: &Tiletype| { &m.id },
500            |m: &mut Tiletype| { &mut m.id },
501        ));
502        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
503            "name",
504            |m: &Tiletype| { &m.name },
505            |m: &mut Tiletype| { &mut m.name },
506        ));
507        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
508            "caption",
509            |m: &Tiletype| { &m.caption },
510            |m: &mut Tiletype| { &mut m.caption },
511        ));
512        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
513            "shape",
514            |m: &Tiletype| { &m.shape },
515            |m: &mut Tiletype| { &mut m.shape },
516        ));
517        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
518            "special",
519            |m: &Tiletype| { &m.special },
520            |m: &mut Tiletype| { &mut m.special },
521        ));
522        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
523            "material",
524            |m: &Tiletype| { &m.material },
525            |m: &mut Tiletype| { &mut m.material },
526        ));
527        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
528            "variant",
529            |m: &Tiletype| { &m.variant },
530            |m: &mut Tiletype| { &mut m.variant },
531        ));
532        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
533            "direction",
534            |m: &Tiletype| { &m.direction },
535            |m: &mut Tiletype| { &mut m.direction },
536        ));
537        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Tiletype>(
538            "Tiletype",
539            fields,
540            oneofs,
541        )
542    }
543}
544
545impl ::protobuf::Message for Tiletype {
546    const NAME: &'static str = "Tiletype";
547
548    fn is_initialized(&self) -> bool {
549        if self.id.is_none() {
550            return false;
551        }
552        true
553    }
554
555    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
556        while let Some(tag) = is.read_raw_tag_or_eof()? {
557            match tag {
558                8 => {
559                    self.id = ::std::option::Option::Some(is.read_int32()?);
560                },
561                18 => {
562                    self.name = ::std::option::Option::Some(is.read_string()?);
563                },
564                26 => {
565                    self.caption = ::std::option::Option::Some(is.read_string()?);
566                },
567                32 => {
568                    self.shape = ::std::option::Option::Some(is.read_enum_or_unknown()?);
569                },
570                40 => {
571                    self.special = ::std::option::Option::Some(is.read_enum_or_unknown()?);
572                },
573                48 => {
574                    self.material = ::std::option::Option::Some(is.read_enum_or_unknown()?);
575                },
576                56 => {
577                    self.variant = ::std::option::Option::Some(is.read_enum_or_unknown()?);
578                },
579                66 => {
580                    self.direction = ::std::option::Option::Some(is.read_string()?);
581                },
582                tag => {
583                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
584                },
585            };
586        }
587        ::std::result::Result::Ok(())
588    }
589
590    // Compute sizes of nested messages
591    #[allow(unused_variables)]
592    fn compute_size(&self) -> u64 {
593        let mut my_size = 0;
594        if let Some(v) = self.id {
595            my_size += ::protobuf::rt::int32_size(1, v);
596        }
597        if let Some(v) = self.name.as_ref() {
598            my_size += ::protobuf::rt::string_size(2, &v);
599        }
600        if let Some(v) = self.caption.as_ref() {
601            my_size += ::protobuf::rt::string_size(3, &v);
602        }
603        if let Some(v) = self.shape {
604            my_size += ::protobuf::rt::int32_size(4, v.value());
605        }
606        if let Some(v) = self.special {
607            my_size += ::protobuf::rt::int32_size(5, v.value());
608        }
609        if let Some(v) = self.material {
610            my_size += ::protobuf::rt::int32_size(6, v.value());
611        }
612        if let Some(v) = self.variant {
613            my_size += ::protobuf::rt::int32_size(7, v.value());
614        }
615        if let Some(v) = self.direction.as_ref() {
616            my_size += ::protobuf::rt::string_size(8, &v);
617        }
618        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
619        self.special_fields.cached_size().set(my_size as u32);
620        my_size
621    }
622
623    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
624        if let Some(v) = self.id {
625            os.write_int32(1, v)?;
626        }
627        if let Some(v) = self.name.as_ref() {
628            os.write_string(2, v)?;
629        }
630        if let Some(v) = self.caption.as_ref() {
631            os.write_string(3, v)?;
632        }
633        if let Some(v) = self.shape {
634            os.write_enum(4, ::protobuf::EnumOrUnknown::value(&v))?;
635        }
636        if let Some(v) = self.special {
637            os.write_enum(5, ::protobuf::EnumOrUnknown::value(&v))?;
638        }
639        if let Some(v) = self.material {
640            os.write_enum(6, ::protobuf::EnumOrUnknown::value(&v))?;
641        }
642        if let Some(v) = self.variant {
643            os.write_enum(7, ::protobuf::EnumOrUnknown::value(&v))?;
644        }
645        if let Some(v) = self.direction.as_ref() {
646            os.write_string(8, v)?;
647        }
648        os.write_unknown_fields(self.special_fields.unknown_fields())?;
649        ::std::result::Result::Ok(())
650    }
651
652    fn special_fields(&self) -> &::protobuf::SpecialFields {
653        &self.special_fields
654    }
655
656    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
657        &mut self.special_fields
658    }
659
660    fn new() -> Tiletype {
661        Tiletype::new()
662    }
663
664    fn clear(&mut self) {
665        self.id = ::std::option::Option::None;
666        self.name = ::std::option::Option::None;
667        self.caption = ::std::option::Option::None;
668        self.shape = ::std::option::Option::None;
669        self.special = ::std::option::Option::None;
670        self.material = ::std::option::Option::None;
671        self.variant = ::std::option::Option::None;
672        self.direction = ::std::option::Option::None;
673        self.special_fields.clear();
674    }
675
676    fn default_instance() -> &'static Tiletype {
677        static instance: Tiletype = Tiletype {
678            id: ::std::option::Option::None,
679            name: ::std::option::Option::None,
680            caption: ::std::option::Option::None,
681            shape: ::std::option::Option::None,
682            special: ::std::option::Option::None,
683            material: ::std::option::Option::None,
684            variant: ::std::option::Option::None,
685            direction: ::std::option::Option::None,
686            special_fields: ::protobuf::SpecialFields::new(),
687        };
688        &instance
689    }
690}
691
692impl ::protobuf::MessageFull for Tiletype {
693    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
694        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
695        descriptor.get(|| file_descriptor().message_by_package_relative_name("Tiletype").unwrap()).clone()
696    }
697}
698
699impl ::std::fmt::Display for Tiletype {
700    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
701        ::protobuf::text_format::fmt(self, f)
702    }
703}
704
705impl ::protobuf::reflect::ProtobufValue for Tiletype {
706    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
707}
708
709// @@protoc_insertion_point(message:RemoteFortressReader.TiletypeList)
710#[derive(PartialEq,Clone,Default,Debug)]
711pub struct TiletypeList {
712    // message fields
713    // @@protoc_insertion_point(field:RemoteFortressReader.TiletypeList.tiletype_list)
714    pub tiletype_list: ::std::vec::Vec<Tiletype>,
715    // special fields
716    // @@protoc_insertion_point(special_field:RemoteFortressReader.TiletypeList.special_fields)
717    pub special_fields: ::protobuf::SpecialFields,
718}
719
720impl<'a> ::std::default::Default for &'a TiletypeList {
721    fn default() -> &'a TiletypeList {
722        <TiletypeList as ::protobuf::Message>::default_instance()
723    }
724}
725
726impl TiletypeList {
727    pub fn new() -> TiletypeList {
728        ::std::default::Default::default()
729    }
730
731    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
732        let mut fields = ::std::vec::Vec::with_capacity(1);
733        let mut oneofs = ::std::vec::Vec::with_capacity(0);
734        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
735            "tiletype_list",
736            |m: &TiletypeList| { &m.tiletype_list },
737            |m: &mut TiletypeList| { &mut m.tiletype_list },
738        ));
739        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<TiletypeList>(
740            "TiletypeList",
741            fields,
742            oneofs,
743        )
744    }
745}
746
747impl ::protobuf::Message for TiletypeList {
748    const NAME: &'static str = "TiletypeList";
749
750    fn is_initialized(&self) -> bool {
751        for v in &self.tiletype_list {
752            if !v.is_initialized() {
753                return false;
754            }
755        };
756        true
757    }
758
759    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
760        while let Some(tag) = is.read_raw_tag_or_eof()? {
761            match tag {
762                10 => {
763                    self.tiletype_list.push(is.read_message()?);
764                },
765                tag => {
766                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
767                },
768            };
769        }
770        ::std::result::Result::Ok(())
771    }
772
773    // Compute sizes of nested messages
774    #[allow(unused_variables)]
775    fn compute_size(&self) -> u64 {
776        let mut my_size = 0;
777        for value in &self.tiletype_list {
778            let len = value.compute_size();
779            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
780        };
781        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
782        self.special_fields.cached_size().set(my_size as u32);
783        my_size
784    }
785
786    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
787        for v in &self.tiletype_list {
788            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
789        };
790        os.write_unknown_fields(self.special_fields.unknown_fields())?;
791        ::std::result::Result::Ok(())
792    }
793
794    fn special_fields(&self) -> &::protobuf::SpecialFields {
795        &self.special_fields
796    }
797
798    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
799        &mut self.special_fields
800    }
801
802    fn new() -> TiletypeList {
803        TiletypeList::new()
804    }
805
806    fn clear(&mut self) {
807        self.tiletype_list.clear();
808        self.special_fields.clear();
809    }
810
811    fn default_instance() -> &'static TiletypeList {
812        static instance: TiletypeList = TiletypeList {
813            tiletype_list: ::std::vec::Vec::new(),
814            special_fields: ::protobuf::SpecialFields::new(),
815        };
816        &instance
817    }
818}
819
820impl ::protobuf::MessageFull for TiletypeList {
821    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
822        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
823        descriptor.get(|| file_descriptor().message_by_package_relative_name("TiletypeList").unwrap()).clone()
824    }
825}
826
827impl ::std::fmt::Display for TiletypeList {
828    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
829        ::protobuf::text_format::fmt(self, f)
830    }
831}
832
833impl ::protobuf::reflect::ProtobufValue for TiletypeList {
834    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
835}
836
837// @@protoc_insertion_point(message:RemoteFortressReader.BuildingExtents)
838#[derive(PartialEq,Clone,Default,Debug)]
839pub struct BuildingExtents {
840    // message fields
841    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingExtents.pos_x)
842    pub pos_x: ::std::option::Option<i32>,
843    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingExtents.pos_y)
844    pub pos_y: ::std::option::Option<i32>,
845    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingExtents.width)
846    pub width: ::std::option::Option<i32>,
847    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingExtents.height)
848    pub height: ::std::option::Option<i32>,
849    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingExtents.extents)
850    pub extents: ::std::vec::Vec<i32>,
851    // special fields
852    // @@protoc_insertion_point(special_field:RemoteFortressReader.BuildingExtents.special_fields)
853    pub special_fields: ::protobuf::SpecialFields,
854}
855
856impl<'a> ::std::default::Default for &'a BuildingExtents {
857    fn default() -> &'a BuildingExtents {
858        <BuildingExtents as ::protobuf::Message>::default_instance()
859    }
860}
861
862impl BuildingExtents {
863    pub fn new() -> BuildingExtents {
864        ::std::default::Default::default()
865    }
866
867    // required int32 pos_x = 1;
868
869    pub fn pos_x(&self) -> i32 {
870        self.pos_x.unwrap_or(0)
871    }
872
873    pub fn clear_pos_x(&mut self) {
874        self.pos_x = ::std::option::Option::None;
875    }
876
877    pub fn has_pos_x(&self) -> bool {
878        self.pos_x.is_some()
879    }
880
881    // Param is passed by value, moved
882    pub fn set_pos_x(&mut self, v: i32) {
883        self.pos_x = ::std::option::Option::Some(v);
884    }
885
886    // required int32 pos_y = 2;
887
888    pub fn pos_y(&self) -> i32 {
889        self.pos_y.unwrap_or(0)
890    }
891
892    pub fn clear_pos_y(&mut self) {
893        self.pos_y = ::std::option::Option::None;
894    }
895
896    pub fn has_pos_y(&self) -> bool {
897        self.pos_y.is_some()
898    }
899
900    // Param is passed by value, moved
901    pub fn set_pos_y(&mut self, v: i32) {
902        self.pos_y = ::std::option::Option::Some(v);
903    }
904
905    // required int32 width = 3;
906
907    pub fn width(&self) -> i32 {
908        self.width.unwrap_or(0)
909    }
910
911    pub fn clear_width(&mut self) {
912        self.width = ::std::option::Option::None;
913    }
914
915    pub fn has_width(&self) -> bool {
916        self.width.is_some()
917    }
918
919    // Param is passed by value, moved
920    pub fn set_width(&mut self, v: i32) {
921        self.width = ::std::option::Option::Some(v);
922    }
923
924    // required int32 height = 4;
925
926    pub fn height(&self) -> i32 {
927        self.height.unwrap_or(0)
928    }
929
930    pub fn clear_height(&mut self) {
931        self.height = ::std::option::Option::None;
932    }
933
934    pub fn has_height(&self) -> bool {
935        self.height.is_some()
936    }
937
938    // Param is passed by value, moved
939    pub fn set_height(&mut self, v: i32) {
940        self.height = ::std::option::Option::Some(v);
941    }
942
943    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
944        let mut fields = ::std::vec::Vec::with_capacity(5);
945        let mut oneofs = ::std::vec::Vec::with_capacity(0);
946        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
947            "pos_x",
948            |m: &BuildingExtents| { &m.pos_x },
949            |m: &mut BuildingExtents| { &mut m.pos_x },
950        ));
951        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
952            "pos_y",
953            |m: &BuildingExtents| { &m.pos_y },
954            |m: &mut BuildingExtents| { &mut m.pos_y },
955        ));
956        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
957            "width",
958            |m: &BuildingExtents| { &m.width },
959            |m: &mut BuildingExtents| { &mut m.width },
960        ));
961        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
962            "height",
963            |m: &BuildingExtents| { &m.height },
964            |m: &mut BuildingExtents| { &mut m.height },
965        ));
966        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
967            "extents",
968            |m: &BuildingExtents| { &m.extents },
969            |m: &mut BuildingExtents| { &mut m.extents },
970        ));
971        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BuildingExtents>(
972            "BuildingExtents",
973            fields,
974            oneofs,
975        )
976    }
977}
978
979impl ::protobuf::Message for BuildingExtents {
980    const NAME: &'static str = "BuildingExtents";
981
982    fn is_initialized(&self) -> bool {
983        if self.pos_x.is_none() {
984            return false;
985        }
986        if self.pos_y.is_none() {
987            return false;
988        }
989        if self.width.is_none() {
990            return false;
991        }
992        if self.height.is_none() {
993            return false;
994        }
995        true
996    }
997
998    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
999        while let Some(tag) = is.read_raw_tag_or_eof()? {
1000            match tag {
1001                8 => {
1002                    self.pos_x = ::std::option::Option::Some(is.read_int32()?);
1003                },
1004                16 => {
1005                    self.pos_y = ::std::option::Option::Some(is.read_int32()?);
1006                },
1007                24 => {
1008                    self.width = ::std::option::Option::Some(is.read_int32()?);
1009                },
1010                32 => {
1011                    self.height = ::std::option::Option::Some(is.read_int32()?);
1012                },
1013                42 => {
1014                    is.read_repeated_packed_int32_into(&mut self.extents)?;
1015                },
1016                40 => {
1017                    self.extents.push(is.read_int32()?);
1018                },
1019                tag => {
1020                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
1021                },
1022            };
1023        }
1024        ::std::result::Result::Ok(())
1025    }
1026
1027    // Compute sizes of nested messages
1028    #[allow(unused_variables)]
1029    fn compute_size(&self) -> u64 {
1030        let mut my_size = 0;
1031        if let Some(v) = self.pos_x {
1032            my_size += ::protobuf::rt::int32_size(1, v);
1033        }
1034        if let Some(v) = self.pos_y {
1035            my_size += ::protobuf::rt::int32_size(2, v);
1036        }
1037        if let Some(v) = self.width {
1038            my_size += ::protobuf::rt::int32_size(3, v);
1039        }
1040        if let Some(v) = self.height {
1041            my_size += ::protobuf::rt::int32_size(4, v);
1042        }
1043        for value in &self.extents {
1044            my_size += ::protobuf::rt::int32_size(5, *value);
1045        };
1046        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
1047        self.special_fields.cached_size().set(my_size as u32);
1048        my_size
1049    }
1050
1051    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
1052        if let Some(v) = self.pos_x {
1053            os.write_int32(1, v)?;
1054        }
1055        if let Some(v) = self.pos_y {
1056            os.write_int32(2, v)?;
1057        }
1058        if let Some(v) = self.width {
1059            os.write_int32(3, v)?;
1060        }
1061        if let Some(v) = self.height {
1062            os.write_int32(4, v)?;
1063        }
1064        for v in &self.extents {
1065            os.write_int32(5, *v)?;
1066        };
1067        os.write_unknown_fields(self.special_fields.unknown_fields())?;
1068        ::std::result::Result::Ok(())
1069    }
1070
1071    fn special_fields(&self) -> &::protobuf::SpecialFields {
1072        &self.special_fields
1073    }
1074
1075    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
1076        &mut self.special_fields
1077    }
1078
1079    fn new() -> BuildingExtents {
1080        BuildingExtents::new()
1081    }
1082
1083    fn clear(&mut self) {
1084        self.pos_x = ::std::option::Option::None;
1085        self.pos_y = ::std::option::Option::None;
1086        self.width = ::std::option::Option::None;
1087        self.height = ::std::option::Option::None;
1088        self.extents.clear();
1089        self.special_fields.clear();
1090    }
1091
1092    fn default_instance() -> &'static BuildingExtents {
1093        static instance: BuildingExtents = BuildingExtents {
1094            pos_x: ::std::option::Option::None,
1095            pos_y: ::std::option::Option::None,
1096            width: ::std::option::Option::None,
1097            height: ::std::option::Option::None,
1098            extents: ::std::vec::Vec::new(),
1099            special_fields: ::protobuf::SpecialFields::new(),
1100        };
1101        &instance
1102    }
1103}
1104
1105impl ::protobuf::MessageFull for BuildingExtents {
1106    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
1107        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
1108        descriptor.get(|| file_descriptor().message_by_package_relative_name("BuildingExtents").unwrap()).clone()
1109    }
1110}
1111
1112impl ::std::fmt::Display for BuildingExtents {
1113    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1114        ::protobuf::text_format::fmt(self, f)
1115    }
1116}
1117
1118impl ::protobuf::reflect::ProtobufValue for BuildingExtents {
1119    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
1120}
1121
1122// @@protoc_insertion_point(message:RemoteFortressReader.BuildingItem)
1123#[derive(PartialEq,Clone,Default,Debug)]
1124pub struct BuildingItem {
1125    // message fields
1126    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingItem.item)
1127    pub item: ::protobuf::MessageField<Item>,
1128    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingItem.mode)
1129    pub mode: ::std::option::Option<i32>,
1130    // special fields
1131    // @@protoc_insertion_point(special_field:RemoteFortressReader.BuildingItem.special_fields)
1132    pub special_fields: ::protobuf::SpecialFields,
1133}
1134
1135impl<'a> ::std::default::Default for &'a BuildingItem {
1136    fn default() -> &'a BuildingItem {
1137        <BuildingItem as ::protobuf::Message>::default_instance()
1138    }
1139}
1140
1141impl BuildingItem {
1142    pub fn new() -> BuildingItem {
1143        ::std::default::Default::default()
1144    }
1145
1146    // optional int32 mode = 2;
1147
1148    pub fn mode(&self) -> i32 {
1149        self.mode.unwrap_or(0)
1150    }
1151
1152    pub fn clear_mode(&mut self) {
1153        self.mode = ::std::option::Option::None;
1154    }
1155
1156    pub fn has_mode(&self) -> bool {
1157        self.mode.is_some()
1158    }
1159
1160    // Param is passed by value, moved
1161    pub fn set_mode(&mut self, v: i32) {
1162        self.mode = ::std::option::Option::Some(v);
1163    }
1164
1165    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
1166        let mut fields = ::std::vec::Vec::with_capacity(2);
1167        let mut oneofs = ::std::vec::Vec::with_capacity(0);
1168        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Item>(
1169            "item",
1170            |m: &BuildingItem| { &m.item },
1171            |m: &mut BuildingItem| { &mut m.item },
1172        ));
1173        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1174            "mode",
1175            |m: &BuildingItem| { &m.mode },
1176            |m: &mut BuildingItem| { &mut m.mode },
1177        ));
1178        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BuildingItem>(
1179            "BuildingItem",
1180            fields,
1181            oneofs,
1182        )
1183    }
1184}
1185
1186impl ::protobuf::Message for BuildingItem {
1187    const NAME: &'static str = "BuildingItem";
1188
1189    fn is_initialized(&self) -> bool {
1190        for v in &self.item {
1191            if !v.is_initialized() {
1192                return false;
1193            }
1194        };
1195        true
1196    }
1197
1198    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
1199        while let Some(tag) = is.read_raw_tag_or_eof()? {
1200            match tag {
1201                10 => {
1202                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.item)?;
1203                },
1204                16 => {
1205                    self.mode = ::std::option::Option::Some(is.read_int32()?);
1206                },
1207                tag => {
1208                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
1209                },
1210            };
1211        }
1212        ::std::result::Result::Ok(())
1213    }
1214
1215    // Compute sizes of nested messages
1216    #[allow(unused_variables)]
1217    fn compute_size(&self) -> u64 {
1218        let mut my_size = 0;
1219        if let Some(v) = self.item.as_ref() {
1220            let len = v.compute_size();
1221            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
1222        }
1223        if let Some(v) = self.mode {
1224            my_size += ::protobuf::rt::int32_size(2, v);
1225        }
1226        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
1227        self.special_fields.cached_size().set(my_size as u32);
1228        my_size
1229    }
1230
1231    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
1232        if let Some(v) = self.item.as_ref() {
1233            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
1234        }
1235        if let Some(v) = self.mode {
1236            os.write_int32(2, v)?;
1237        }
1238        os.write_unknown_fields(self.special_fields.unknown_fields())?;
1239        ::std::result::Result::Ok(())
1240    }
1241
1242    fn special_fields(&self) -> &::protobuf::SpecialFields {
1243        &self.special_fields
1244    }
1245
1246    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
1247        &mut self.special_fields
1248    }
1249
1250    fn new() -> BuildingItem {
1251        BuildingItem::new()
1252    }
1253
1254    fn clear(&mut self) {
1255        self.item.clear();
1256        self.mode = ::std::option::Option::None;
1257        self.special_fields.clear();
1258    }
1259
1260    fn default_instance() -> &'static BuildingItem {
1261        static instance: BuildingItem = BuildingItem {
1262            item: ::protobuf::MessageField::none(),
1263            mode: ::std::option::Option::None,
1264            special_fields: ::protobuf::SpecialFields::new(),
1265        };
1266        &instance
1267    }
1268}
1269
1270impl ::protobuf::MessageFull for BuildingItem {
1271    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
1272        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
1273        descriptor.get(|| file_descriptor().message_by_package_relative_name("BuildingItem").unwrap()).clone()
1274    }
1275}
1276
1277impl ::std::fmt::Display for BuildingItem {
1278    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1279        ::protobuf::text_format::fmt(self, f)
1280    }
1281}
1282
1283impl ::protobuf::reflect::ProtobufValue for BuildingItem {
1284    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
1285}
1286
1287// @@protoc_insertion_point(message:RemoteFortressReader.BuildingInstance)
1288#[derive(PartialEq,Clone,Default,Debug)]
1289pub struct BuildingInstance {
1290    // message fields
1291    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.index)
1292    pub index: ::std::option::Option<i32>,
1293    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.pos_x_min)
1294    pub pos_x_min: ::std::option::Option<i32>,
1295    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.pos_y_min)
1296    pub pos_y_min: ::std::option::Option<i32>,
1297    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.pos_z_min)
1298    pub pos_z_min: ::std::option::Option<i32>,
1299    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.pos_x_max)
1300    pub pos_x_max: ::std::option::Option<i32>,
1301    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.pos_y_max)
1302    pub pos_y_max: ::std::option::Option<i32>,
1303    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.pos_z_max)
1304    pub pos_z_max: ::std::option::Option<i32>,
1305    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.building_type)
1306    pub building_type: ::protobuf::MessageField<BuildingType>,
1307    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.material)
1308    pub material: ::protobuf::MessageField<MatPair>,
1309    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.building_flags)
1310    pub building_flags: ::std::option::Option<u32>,
1311    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.is_room)
1312    pub is_room: ::std::option::Option<bool>,
1313    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.room)
1314    pub room: ::protobuf::MessageField<BuildingExtents>,
1315    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.direction)
1316    pub direction: ::std::option::Option<::protobuf::EnumOrUnknown<BuildingDirection>>,
1317    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.items)
1318    pub items: ::std::vec::Vec<BuildingItem>,
1319    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.active)
1320    pub active: ::std::option::Option<i32>,
1321    // special fields
1322    // @@protoc_insertion_point(special_field:RemoteFortressReader.BuildingInstance.special_fields)
1323    pub special_fields: ::protobuf::SpecialFields,
1324}
1325
1326impl<'a> ::std::default::Default for &'a BuildingInstance {
1327    fn default() -> &'a BuildingInstance {
1328        <BuildingInstance as ::protobuf::Message>::default_instance()
1329    }
1330}
1331
1332impl BuildingInstance {
1333    pub fn new() -> BuildingInstance {
1334        ::std::default::Default::default()
1335    }
1336
1337    // required int32 index = 1;
1338
1339    pub fn index(&self) -> i32 {
1340        self.index.unwrap_or(0)
1341    }
1342
1343    pub fn clear_index(&mut self) {
1344        self.index = ::std::option::Option::None;
1345    }
1346
1347    pub fn has_index(&self) -> bool {
1348        self.index.is_some()
1349    }
1350
1351    // Param is passed by value, moved
1352    pub fn set_index(&mut self, v: i32) {
1353        self.index = ::std::option::Option::Some(v);
1354    }
1355
1356    // optional int32 pos_x_min = 2;
1357
1358    pub fn pos_x_min(&self) -> i32 {
1359        self.pos_x_min.unwrap_or(0)
1360    }
1361
1362    pub fn clear_pos_x_min(&mut self) {
1363        self.pos_x_min = ::std::option::Option::None;
1364    }
1365
1366    pub fn has_pos_x_min(&self) -> bool {
1367        self.pos_x_min.is_some()
1368    }
1369
1370    // Param is passed by value, moved
1371    pub fn set_pos_x_min(&mut self, v: i32) {
1372        self.pos_x_min = ::std::option::Option::Some(v);
1373    }
1374
1375    // optional int32 pos_y_min = 3;
1376
1377    pub fn pos_y_min(&self) -> i32 {
1378        self.pos_y_min.unwrap_or(0)
1379    }
1380
1381    pub fn clear_pos_y_min(&mut self) {
1382        self.pos_y_min = ::std::option::Option::None;
1383    }
1384
1385    pub fn has_pos_y_min(&self) -> bool {
1386        self.pos_y_min.is_some()
1387    }
1388
1389    // Param is passed by value, moved
1390    pub fn set_pos_y_min(&mut self, v: i32) {
1391        self.pos_y_min = ::std::option::Option::Some(v);
1392    }
1393
1394    // optional int32 pos_z_min = 4;
1395
1396    pub fn pos_z_min(&self) -> i32 {
1397        self.pos_z_min.unwrap_or(0)
1398    }
1399
1400    pub fn clear_pos_z_min(&mut self) {
1401        self.pos_z_min = ::std::option::Option::None;
1402    }
1403
1404    pub fn has_pos_z_min(&self) -> bool {
1405        self.pos_z_min.is_some()
1406    }
1407
1408    // Param is passed by value, moved
1409    pub fn set_pos_z_min(&mut self, v: i32) {
1410        self.pos_z_min = ::std::option::Option::Some(v);
1411    }
1412
1413    // optional int32 pos_x_max = 5;
1414
1415    pub fn pos_x_max(&self) -> i32 {
1416        self.pos_x_max.unwrap_or(0)
1417    }
1418
1419    pub fn clear_pos_x_max(&mut self) {
1420        self.pos_x_max = ::std::option::Option::None;
1421    }
1422
1423    pub fn has_pos_x_max(&self) -> bool {
1424        self.pos_x_max.is_some()
1425    }
1426
1427    // Param is passed by value, moved
1428    pub fn set_pos_x_max(&mut self, v: i32) {
1429        self.pos_x_max = ::std::option::Option::Some(v);
1430    }
1431
1432    // optional int32 pos_y_max = 6;
1433
1434    pub fn pos_y_max(&self) -> i32 {
1435        self.pos_y_max.unwrap_or(0)
1436    }
1437
1438    pub fn clear_pos_y_max(&mut self) {
1439        self.pos_y_max = ::std::option::Option::None;
1440    }
1441
1442    pub fn has_pos_y_max(&self) -> bool {
1443        self.pos_y_max.is_some()
1444    }
1445
1446    // Param is passed by value, moved
1447    pub fn set_pos_y_max(&mut self, v: i32) {
1448        self.pos_y_max = ::std::option::Option::Some(v);
1449    }
1450
1451    // optional int32 pos_z_max = 7;
1452
1453    pub fn pos_z_max(&self) -> i32 {
1454        self.pos_z_max.unwrap_or(0)
1455    }
1456
1457    pub fn clear_pos_z_max(&mut self) {
1458        self.pos_z_max = ::std::option::Option::None;
1459    }
1460
1461    pub fn has_pos_z_max(&self) -> bool {
1462        self.pos_z_max.is_some()
1463    }
1464
1465    // Param is passed by value, moved
1466    pub fn set_pos_z_max(&mut self, v: i32) {
1467        self.pos_z_max = ::std::option::Option::Some(v);
1468    }
1469
1470    // optional uint32 building_flags = 10;
1471
1472    pub fn building_flags(&self) -> u32 {
1473        self.building_flags.unwrap_or(0)
1474    }
1475
1476    pub fn clear_building_flags(&mut self) {
1477        self.building_flags = ::std::option::Option::None;
1478    }
1479
1480    pub fn has_building_flags(&self) -> bool {
1481        self.building_flags.is_some()
1482    }
1483
1484    // Param is passed by value, moved
1485    pub fn set_building_flags(&mut self, v: u32) {
1486        self.building_flags = ::std::option::Option::Some(v);
1487    }
1488
1489    // optional bool is_room = 11;
1490
1491    pub fn is_room(&self) -> bool {
1492        self.is_room.unwrap_or(false)
1493    }
1494
1495    pub fn clear_is_room(&mut self) {
1496        self.is_room = ::std::option::Option::None;
1497    }
1498
1499    pub fn has_is_room(&self) -> bool {
1500        self.is_room.is_some()
1501    }
1502
1503    // Param is passed by value, moved
1504    pub fn set_is_room(&mut self, v: bool) {
1505        self.is_room = ::std::option::Option::Some(v);
1506    }
1507
1508    // optional .RemoteFortressReader.BuildingDirection direction = 13;
1509
1510    pub fn direction(&self) -> BuildingDirection {
1511        match self.direction {
1512            Some(e) => e.enum_value_or(BuildingDirection::NORTH),
1513            None => BuildingDirection::NORTH,
1514        }
1515    }
1516
1517    pub fn clear_direction(&mut self) {
1518        self.direction = ::std::option::Option::None;
1519    }
1520
1521    pub fn has_direction(&self) -> bool {
1522        self.direction.is_some()
1523    }
1524
1525    // Param is passed by value, moved
1526    pub fn set_direction(&mut self, v: BuildingDirection) {
1527        self.direction = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
1528    }
1529
1530    // optional int32 active = 15;
1531
1532    pub fn active(&self) -> i32 {
1533        self.active.unwrap_or(0)
1534    }
1535
1536    pub fn clear_active(&mut self) {
1537        self.active = ::std::option::Option::None;
1538    }
1539
1540    pub fn has_active(&self) -> bool {
1541        self.active.is_some()
1542    }
1543
1544    // Param is passed by value, moved
1545    pub fn set_active(&mut self, v: i32) {
1546        self.active = ::std::option::Option::Some(v);
1547    }
1548
1549    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
1550        let mut fields = ::std::vec::Vec::with_capacity(15);
1551        let mut oneofs = ::std::vec::Vec::with_capacity(0);
1552        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1553            "index",
1554            |m: &BuildingInstance| { &m.index },
1555            |m: &mut BuildingInstance| { &mut m.index },
1556        ));
1557        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1558            "pos_x_min",
1559            |m: &BuildingInstance| { &m.pos_x_min },
1560            |m: &mut BuildingInstance| { &mut m.pos_x_min },
1561        ));
1562        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1563            "pos_y_min",
1564            |m: &BuildingInstance| { &m.pos_y_min },
1565            |m: &mut BuildingInstance| { &mut m.pos_y_min },
1566        ));
1567        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1568            "pos_z_min",
1569            |m: &BuildingInstance| { &m.pos_z_min },
1570            |m: &mut BuildingInstance| { &mut m.pos_z_min },
1571        ));
1572        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1573            "pos_x_max",
1574            |m: &BuildingInstance| { &m.pos_x_max },
1575            |m: &mut BuildingInstance| { &mut m.pos_x_max },
1576        ));
1577        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1578            "pos_y_max",
1579            |m: &BuildingInstance| { &m.pos_y_max },
1580            |m: &mut BuildingInstance| { &mut m.pos_y_max },
1581        ));
1582        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1583            "pos_z_max",
1584            |m: &BuildingInstance| { &m.pos_z_max },
1585            |m: &mut BuildingInstance| { &mut m.pos_z_max },
1586        ));
1587        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, BuildingType>(
1588            "building_type",
1589            |m: &BuildingInstance| { &m.building_type },
1590            |m: &mut BuildingInstance| { &mut m.building_type },
1591        ));
1592        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
1593            "material",
1594            |m: &BuildingInstance| { &m.material },
1595            |m: &mut BuildingInstance| { &mut m.material },
1596        ));
1597        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1598            "building_flags",
1599            |m: &BuildingInstance| { &m.building_flags },
1600            |m: &mut BuildingInstance| { &mut m.building_flags },
1601        ));
1602        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1603            "is_room",
1604            |m: &BuildingInstance| { &m.is_room },
1605            |m: &mut BuildingInstance| { &mut m.is_room },
1606        ));
1607        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, BuildingExtents>(
1608            "room",
1609            |m: &BuildingInstance| { &m.room },
1610            |m: &mut BuildingInstance| { &mut m.room },
1611        ));
1612        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1613            "direction",
1614            |m: &BuildingInstance| { &m.direction },
1615            |m: &mut BuildingInstance| { &mut m.direction },
1616        ));
1617        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
1618            "items",
1619            |m: &BuildingInstance| { &m.items },
1620            |m: &mut BuildingInstance| { &mut m.items },
1621        ));
1622        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1623            "active",
1624            |m: &BuildingInstance| { &m.active },
1625            |m: &mut BuildingInstance| { &mut m.active },
1626        ));
1627        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BuildingInstance>(
1628            "BuildingInstance",
1629            fields,
1630            oneofs,
1631        )
1632    }
1633}
1634
1635impl ::protobuf::Message for BuildingInstance {
1636    const NAME: &'static str = "BuildingInstance";
1637
1638    fn is_initialized(&self) -> bool {
1639        if self.index.is_none() {
1640            return false;
1641        }
1642        for v in &self.building_type {
1643            if !v.is_initialized() {
1644                return false;
1645            }
1646        };
1647        for v in &self.material {
1648            if !v.is_initialized() {
1649                return false;
1650            }
1651        };
1652        for v in &self.room {
1653            if !v.is_initialized() {
1654                return false;
1655            }
1656        };
1657        for v in &self.items {
1658            if !v.is_initialized() {
1659                return false;
1660            }
1661        };
1662        true
1663    }
1664
1665    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
1666        while let Some(tag) = is.read_raw_tag_or_eof()? {
1667            match tag {
1668                8 => {
1669                    self.index = ::std::option::Option::Some(is.read_int32()?);
1670                },
1671                16 => {
1672                    self.pos_x_min = ::std::option::Option::Some(is.read_int32()?);
1673                },
1674                24 => {
1675                    self.pos_y_min = ::std::option::Option::Some(is.read_int32()?);
1676                },
1677                32 => {
1678                    self.pos_z_min = ::std::option::Option::Some(is.read_int32()?);
1679                },
1680                40 => {
1681                    self.pos_x_max = ::std::option::Option::Some(is.read_int32()?);
1682                },
1683                48 => {
1684                    self.pos_y_max = ::std::option::Option::Some(is.read_int32()?);
1685                },
1686                56 => {
1687                    self.pos_z_max = ::std::option::Option::Some(is.read_int32()?);
1688                },
1689                66 => {
1690                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.building_type)?;
1691                },
1692                74 => {
1693                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
1694                },
1695                80 => {
1696                    self.building_flags = ::std::option::Option::Some(is.read_uint32()?);
1697                },
1698                88 => {
1699                    self.is_room = ::std::option::Option::Some(is.read_bool()?);
1700                },
1701                98 => {
1702                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.room)?;
1703                },
1704                104 => {
1705                    self.direction = ::std::option::Option::Some(is.read_enum_or_unknown()?);
1706                },
1707                114 => {
1708                    self.items.push(is.read_message()?);
1709                },
1710                120 => {
1711                    self.active = ::std::option::Option::Some(is.read_int32()?);
1712                },
1713                tag => {
1714                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
1715                },
1716            };
1717        }
1718        ::std::result::Result::Ok(())
1719    }
1720
1721    // Compute sizes of nested messages
1722    #[allow(unused_variables)]
1723    fn compute_size(&self) -> u64 {
1724        let mut my_size = 0;
1725        if let Some(v) = self.index {
1726            my_size += ::protobuf::rt::int32_size(1, v);
1727        }
1728        if let Some(v) = self.pos_x_min {
1729            my_size += ::protobuf::rt::int32_size(2, v);
1730        }
1731        if let Some(v) = self.pos_y_min {
1732            my_size += ::protobuf::rt::int32_size(3, v);
1733        }
1734        if let Some(v) = self.pos_z_min {
1735            my_size += ::protobuf::rt::int32_size(4, v);
1736        }
1737        if let Some(v) = self.pos_x_max {
1738            my_size += ::protobuf::rt::int32_size(5, v);
1739        }
1740        if let Some(v) = self.pos_y_max {
1741            my_size += ::protobuf::rt::int32_size(6, v);
1742        }
1743        if let Some(v) = self.pos_z_max {
1744            my_size += ::protobuf::rt::int32_size(7, v);
1745        }
1746        if let Some(v) = self.building_type.as_ref() {
1747            let len = v.compute_size();
1748            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
1749        }
1750        if let Some(v) = self.material.as_ref() {
1751            let len = v.compute_size();
1752            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
1753        }
1754        if let Some(v) = self.building_flags {
1755            my_size += ::protobuf::rt::uint32_size(10, v);
1756        }
1757        if let Some(v) = self.is_room {
1758            my_size += 1 + 1;
1759        }
1760        if let Some(v) = self.room.as_ref() {
1761            let len = v.compute_size();
1762            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
1763        }
1764        if let Some(v) = self.direction {
1765            my_size += ::protobuf::rt::int32_size(13, v.value());
1766        }
1767        for value in &self.items {
1768            let len = value.compute_size();
1769            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
1770        };
1771        if let Some(v) = self.active {
1772            my_size += ::protobuf::rt::int32_size(15, v);
1773        }
1774        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
1775        self.special_fields.cached_size().set(my_size as u32);
1776        my_size
1777    }
1778
1779    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
1780        if let Some(v) = self.index {
1781            os.write_int32(1, v)?;
1782        }
1783        if let Some(v) = self.pos_x_min {
1784            os.write_int32(2, v)?;
1785        }
1786        if let Some(v) = self.pos_y_min {
1787            os.write_int32(3, v)?;
1788        }
1789        if let Some(v) = self.pos_z_min {
1790            os.write_int32(4, v)?;
1791        }
1792        if let Some(v) = self.pos_x_max {
1793            os.write_int32(5, v)?;
1794        }
1795        if let Some(v) = self.pos_y_max {
1796            os.write_int32(6, v)?;
1797        }
1798        if let Some(v) = self.pos_z_max {
1799            os.write_int32(7, v)?;
1800        }
1801        if let Some(v) = self.building_type.as_ref() {
1802            ::protobuf::rt::write_message_field_with_cached_size(8, v, os)?;
1803        }
1804        if let Some(v) = self.material.as_ref() {
1805            ::protobuf::rt::write_message_field_with_cached_size(9, v, os)?;
1806        }
1807        if let Some(v) = self.building_flags {
1808            os.write_uint32(10, v)?;
1809        }
1810        if let Some(v) = self.is_room {
1811            os.write_bool(11, v)?;
1812        }
1813        if let Some(v) = self.room.as_ref() {
1814            ::protobuf::rt::write_message_field_with_cached_size(12, v, os)?;
1815        }
1816        if let Some(v) = self.direction {
1817            os.write_enum(13, ::protobuf::EnumOrUnknown::value(&v))?;
1818        }
1819        for v in &self.items {
1820            ::protobuf::rt::write_message_field_with_cached_size(14, v, os)?;
1821        };
1822        if let Some(v) = self.active {
1823            os.write_int32(15, v)?;
1824        }
1825        os.write_unknown_fields(self.special_fields.unknown_fields())?;
1826        ::std::result::Result::Ok(())
1827    }
1828
1829    fn special_fields(&self) -> &::protobuf::SpecialFields {
1830        &self.special_fields
1831    }
1832
1833    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
1834        &mut self.special_fields
1835    }
1836
1837    fn new() -> BuildingInstance {
1838        BuildingInstance::new()
1839    }
1840
1841    fn clear(&mut self) {
1842        self.index = ::std::option::Option::None;
1843        self.pos_x_min = ::std::option::Option::None;
1844        self.pos_y_min = ::std::option::Option::None;
1845        self.pos_z_min = ::std::option::Option::None;
1846        self.pos_x_max = ::std::option::Option::None;
1847        self.pos_y_max = ::std::option::Option::None;
1848        self.pos_z_max = ::std::option::Option::None;
1849        self.building_type.clear();
1850        self.material.clear();
1851        self.building_flags = ::std::option::Option::None;
1852        self.is_room = ::std::option::Option::None;
1853        self.room.clear();
1854        self.direction = ::std::option::Option::None;
1855        self.items.clear();
1856        self.active = ::std::option::Option::None;
1857        self.special_fields.clear();
1858    }
1859
1860    fn default_instance() -> &'static BuildingInstance {
1861        static instance: BuildingInstance = BuildingInstance {
1862            index: ::std::option::Option::None,
1863            pos_x_min: ::std::option::Option::None,
1864            pos_y_min: ::std::option::Option::None,
1865            pos_z_min: ::std::option::Option::None,
1866            pos_x_max: ::std::option::Option::None,
1867            pos_y_max: ::std::option::Option::None,
1868            pos_z_max: ::std::option::Option::None,
1869            building_type: ::protobuf::MessageField::none(),
1870            material: ::protobuf::MessageField::none(),
1871            building_flags: ::std::option::Option::None,
1872            is_room: ::std::option::Option::None,
1873            room: ::protobuf::MessageField::none(),
1874            direction: ::std::option::Option::None,
1875            items: ::std::vec::Vec::new(),
1876            active: ::std::option::Option::None,
1877            special_fields: ::protobuf::SpecialFields::new(),
1878        };
1879        &instance
1880    }
1881}
1882
1883impl ::protobuf::MessageFull for BuildingInstance {
1884    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
1885        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
1886        descriptor.get(|| file_descriptor().message_by_package_relative_name("BuildingInstance").unwrap()).clone()
1887    }
1888}
1889
1890impl ::std::fmt::Display for BuildingInstance {
1891    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1892        ::protobuf::text_format::fmt(self, f)
1893    }
1894}
1895
1896impl ::protobuf::reflect::ProtobufValue for BuildingInstance {
1897    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
1898}
1899
1900// @@protoc_insertion_point(message:RemoteFortressReader.RiverEdge)
1901#[derive(PartialEq,Clone,Default,Debug)]
1902pub struct RiverEdge {
1903    // message fields
1904    // @@protoc_insertion_point(field:RemoteFortressReader.RiverEdge.min_pos)
1905    pub min_pos: ::std::option::Option<i32>,
1906    // @@protoc_insertion_point(field:RemoteFortressReader.RiverEdge.max_pos)
1907    pub max_pos: ::std::option::Option<i32>,
1908    // @@protoc_insertion_point(field:RemoteFortressReader.RiverEdge.active)
1909    pub active: ::std::option::Option<i32>,
1910    // @@protoc_insertion_point(field:RemoteFortressReader.RiverEdge.elevation)
1911    pub elevation: ::std::option::Option<i32>,
1912    // special fields
1913    // @@protoc_insertion_point(special_field:RemoteFortressReader.RiverEdge.special_fields)
1914    pub special_fields: ::protobuf::SpecialFields,
1915}
1916
1917impl<'a> ::std::default::Default for &'a RiverEdge {
1918    fn default() -> &'a RiverEdge {
1919        <RiverEdge as ::protobuf::Message>::default_instance()
1920    }
1921}
1922
1923impl RiverEdge {
1924    pub fn new() -> RiverEdge {
1925        ::std::default::Default::default()
1926    }
1927
1928    // optional int32 min_pos = 1;
1929
1930    pub fn min_pos(&self) -> i32 {
1931        self.min_pos.unwrap_or(0)
1932    }
1933
1934    pub fn clear_min_pos(&mut self) {
1935        self.min_pos = ::std::option::Option::None;
1936    }
1937
1938    pub fn has_min_pos(&self) -> bool {
1939        self.min_pos.is_some()
1940    }
1941
1942    // Param is passed by value, moved
1943    pub fn set_min_pos(&mut self, v: i32) {
1944        self.min_pos = ::std::option::Option::Some(v);
1945    }
1946
1947    // optional int32 max_pos = 2;
1948
1949    pub fn max_pos(&self) -> i32 {
1950        self.max_pos.unwrap_or(0)
1951    }
1952
1953    pub fn clear_max_pos(&mut self) {
1954        self.max_pos = ::std::option::Option::None;
1955    }
1956
1957    pub fn has_max_pos(&self) -> bool {
1958        self.max_pos.is_some()
1959    }
1960
1961    // Param is passed by value, moved
1962    pub fn set_max_pos(&mut self, v: i32) {
1963        self.max_pos = ::std::option::Option::Some(v);
1964    }
1965
1966    // optional int32 active = 3;
1967
1968    pub fn active(&self) -> i32 {
1969        self.active.unwrap_or(0)
1970    }
1971
1972    pub fn clear_active(&mut self) {
1973        self.active = ::std::option::Option::None;
1974    }
1975
1976    pub fn has_active(&self) -> bool {
1977        self.active.is_some()
1978    }
1979
1980    // Param is passed by value, moved
1981    pub fn set_active(&mut self, v: i32) {
1982        self.active = ::std::option::Option::Some(v);
1983    }
1984
1985    // optional int32 elevation = 4;
1986
1987    pub fn elevation(&self) -> i32 {
1988        self.elevation.unwrap_or(0)
1989    }
1990
1991    pub fn clear_elevation(&mut self) {
1992        self.elevation = ::std::option::Option::None;
1993    }
1994
1995    pub fn has_elevation(&self) -> bool {
1996        self.elevation.is_some()
1997    }
1998
1999    // Param is passed by value, moved
2000    pub fn set_elevation(&mut self, v: i32) {
2001        self.elevation = ::std::option::Option::Some(v);
2002    }
2003
2004    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
2005        let mut fields = ::std::vec::Vec::with_capacity(4);
2006        let mut oneofs = ::std::vec::Vec::with_capacity(0);
2007        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2008            "min_pos",
2009            |m: &RiverEdge| { &m.min_pos },
2010            |m: &mut RiverEdge| { &mut m.min_pos },
2011        ));
2012        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2013            "max_pos",
2014            |m: &RiverEdge| { &m.max_pos },
2015            |m: &mut RiverEdge| { &mut m.max_pos },
2016        ));
2017        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2018            "active",
2019            |m: &RiverEdge| { &m.active },
2020            |m: &mut RiverEdge| { &mut m.active },
2021        ));
2022        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2023            "elevation",
2024            |m: &RiverEdge| { &m.elevation },
2025            |m: &mut RiverEdge| { &mut m.elevation },
2026        ));
2027        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<RiverEdge>(
2028            "RiverEdge",
2029            fields,
2030            oneofs,
2031        )
2032    }
2033}
2034
2035impl ::protobuf::Message for RiverEdge {
2036    const NAME: &'static str = "RiverEdge";
2037
2038    fn is_initialized(&self) -> bool {
2039        true
2040    }
2041
2042    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
2043        while let Some(tag) = is.read_raw_tag_or_eof()? {
2044            match tag {
2045                8 => {
2046                    self.min_pos = ::std::option::Option::Some(is.read_int32()?);
2047                },
2048                16 => {
2049                    self.max_pos = ::std::option::Option::Some(is.read_int32()?);
2050                },
2051                24 => {
2052                    self.active = ::std::option::Option::Some(is.read_int32()?);
2053                },
2054                32 => {
2055                    self.elevation = ::std::option::Option::Some(is.read_int32()?);
2056                },
2057                tag => {
2058                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
2059                },
2060            };
2061        }
2062        ::std::result::Result::Ok(())
2063    }
2064
2065    // Compute sizes of nested messages
2066    #[allow(unused_variables)]
2067    fn compute_size(&self) -> u64 {
2068        let mut my_size = 0;
2069        if let Some(v) = self.min_pos {
2070            my_size += ::protobuf::rt::int32_size(1, v);
2071        }
2072        if let Some(v) = self.max_pos {
2073            my_size += ::protobuf::rt::int32_size(2, v);
2074        }
2075        if let Some(v) = self.active {
2076            my_size += ::protobuf::rt::int32_size(3, v);
2077        }
2078        if let Some(v) = self.elevation {
2079            my_size += ::protobuf::rt::int32_size(4, v);
2080        }
2081        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
2082        self.special_fields.cached_size().set(my_size as u32);
2083        my_size
2084    }
2085
2086    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
2087        if let Some(v) = self.min_pos {
2088            os.write_int32(1, v)?;
2089        }
2090        if let Some(v) = self.max_pos {
2091            os.write_int32(2, v)?;
2092        }
2093        if let Some(v) = self.active {
2094            os.write_int32(3, v)?;
2095        }
2096        if let Some(v) = self.elevation {
2097            os.write_int32(4, v)?;
2098        }
2099        os.write_unknown_fields(self.special_fields.unknown_fields())?;
2100        ::std::result::Result::Ok(())
2101    }
2102
2103    fn special_fields(&self) -> &::protobuf::SpecialFields {
2104        &self.special_fields
2105    }
2106
2107    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
2108        &mut self.special_fields
2109    }
2110
2111    fn new() -> RiverEdge {
2112        RiverEdge::new()
2113    }
2114
2115    fn clear(&mut self) {
2116        self.min_pos = ::std::option::Option::None;
2117        self.max_pos = ::std::option::Option::None;
2118        self.active = ::std::option::Option::None;
2119        self.elevation = ::std::option::Option::None;
2120        self.special_fields.clear();
2121    }
2122
2123    fn default_instance() -> &'static RiverEdge {
2124        static instance: RiverEdge = RiverEdge {
2125            min_pos: ::std::option::Option::None,
2126            max_pos: ::std::option::Option::None,
2127            active: ::std::option::Option::None,
2128            elevation: ::std::option::Option::None,
2129            special_fields: ::protobuf::SpecialFields::new(),
2130        };
2131        &instance
2132    }
2133}
2134
2135impl ::protobuf::MessageFull for RiverEdge {
2136    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
2137        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
2138        descriptor.get(|| file_descriptor().message_by_package_relative_name("RiverEdge").unwrap()).clone()
2139    }
2140}
2141
2142impl ::std::fmt::Display for RiverEdge {
2143    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2144        ::protobuf::text_format::fmt(self, f)
2145    }
2146}
2147
2148impl ::protobuf::reflect::ProtobufValue for RiverEdge {
2149    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
2150}
2151
2152// @@protoc_insertion_point(message:RemoteFortressReader.RiverTile)
2153#[derive(PartialEq,Clone,Default,Debug)]
2154pub struct RiverTile {
2155    // message fields
2156    // @@protoc_insertion_point(field:RemoteFortressReader.RiverTile.north)
2157    pub north: ::protobuf::MessageField<RiverEdge>,
2158    // @@protoc_insertion_point(field:RemoteFortressReader.RiverTile.south)
2159    pub south: ::protobuf::MessageField<RiverEdge>,
2160    // @@protoc_insertion_point(field:RemoteFortressReader.RiverTile.east)
2161    pub east: ::protobuf::MessageField<RiverEdge>,
2162    // @@protoc_insertion_point(field:RemoteFortressReader.RiverTile.west)
2163    pub west: ::protobuf::MessageField<RiverEdge>,
2164    // special fields
2165    // @@protoc_insertion_point(special_field:RemoteFortressReader.RiverTile.special_fields)
2166    pub special_fields: ::protobuf::SpecialFields,
2167}
2168
2169impl<'a> ::std::default::Default for &'a RiverTile {
2170    fn default() -> &'a RiverTile {
2171        <RiverTile as ::protobuf::Message>::default_instance()
2172    }
2173}
2174
2175impl RiverTile {
2176    pub fn new() -> RiverTile {
2177        ::std::default::Default::default()
2178    }
2179
2180    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
2181        let mut fields = ::std::vec::Vec::with_capacity(4);
2182        let mut oneofs = ::std::vec::Vec::with_capacity(0);
2183        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, RiverEdge>(
2184            "north",
2185            |m: &RiverTile| { &m.north },
2186            |m: &mut RiverTile| { &mut m.north },
2187        ));
2188        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, RiverEdge>(
2189            "south",
2190            |m: &RiverTile| { &m.south },
2191            |m: &mut RiverTile| { &mut m.south },
2192        ));
2193        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, RiverEdge>(
2194            "east",
2195            |m: &RiverTile| { &m.east },
2196            |m: &mut RiverTile| { &mut m.east },
2197        ));
2198        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, RiverEdge>(
2199            "west",
2200            |m: &RiverTile| { &m.west },
2201            |m: &mut RiverTile| { &mut m.west },
2202        ));
2203        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<RiverTile>(
2204            "RiverTile",
2205            fields,
2206            oneofs,
2207        )
2208    }
2209}
2210
2211impl ::protobuf::Message for RiverTile {
2212    const NAME: &'static str = "RiverTile";
2213
2214    fn is_initialized(&self) -> bool {
2215        true
2216    }
2217
2218    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
2219        while let Some(tag) = is.read_raw_tag_or_eof()? {
2220            match tag {
2221                10 => {
2222                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.north)?;
2223                },
2224                18 => {
2225                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.south)?;
2226                },
2227                26 => {
2228                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.east)?;
2229                },
2230                34 => {
2231                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.west)?;
2232                },
2233                tag => {
2234                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
2235                },
2236            };
2237        }
2238        ::std::result::Result::Ok(())
2239    }
2240
2241    // Compute sizes of nested messages
2242    #[allow(unused_variables)]
2243    fn compute_size(&self) -> u64 {
2244        let mut my_size = 0;
2245        if let Some(v) = self.north.as_ref() {
2246            let len = v.compute_size();
2247            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
2248        }
2249        if let Some(v) = self.south.as_ref() {
2250            let len = v.compute_size();
2251            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
2252        }
2253        if let Some(v) = self.east.as_ref() {
2254            let len = v.compute_size();
2255            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
2256        }
2257        if let Some(v) = self.west.as_ref() {
2258            let len = v.compute_size();
2259            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
2260        }
2261        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
2262        self.special_fields.cached_size().set(my_size as u32);
2263        my_size
2264    }
2265
2266    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
2267        if let Some(v) = self.north.as_ref() {
2268            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
2269        }
2270        if let Some(v) = self.south.as_ref() {
2271            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
2272        }
2273        if let Some(v) = self.east.as_ref() {
2274            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
2275        }
2276        if let Some(v) = self.west.as_ref() {
2277            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
2278        }
2279        os.write_unknown_fields(self.special_fields.unknown_fields())?;
2280        ::std::result::Result::Ok(())
2281    }
2282
2283    fn special_fields(&self) -> &::protobuf::SpecialFields {
2284        &self.special_fields
2285    }
2286
2287    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
2288        &mut self.special_fields
2289    }
2290
2291    fn new() -> RiverTile {
2292        RiverTile::new()
2293    }
2294
2295    fn clear(&mut self) {
2296        self.north.clear();
2297        self.south.clear();
2298        self.east.clear();
2299        self.west.clear();
2300        self.special_fields.clear();
2301    }
2302
2303    fn default_instance() -> &'static RiverTile {
2304        static instance: RiverTile = RiverTile {
2305            north: ::protobuf::MessageField::none(),
2306            south: ::protobuf::MessageField::none(),
2307            east: ::protobuf::MessageField::none(),
2308            west: ::protobuf::MessageField::none(),
2309            special_fields: ::protobuf::SpecialFields::new(),
2310        };
2311        &instance
2312    }
2313}
2314
2315impl ::protobuf::MessageFull for RiverTile {
2316    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
2317        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
2318        descriptor.get(|| file_descriptor().message_by_package_relative_name("RiverTile").unwrap()).clone()
2319    }
2320}
2321
2322impl ::std::fmt::Display for RiverTile {
2323    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2324        ::protobuf::text_format::fmt(self, f)
2325    }
2326}
2327
2328impl ::protobuf::reflect::ProtobufValue for RiverTile {
2329    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
2330}
2331
2332// @@protoc_insertion_point(message:RemoteFortressReader.Spatter)
2333#[derive(PartialEq,Clone,Default,Debug)]
2334pub struct Spatter {
2335    // message fields
2336    // @@protoc_insertion_point(field:RemoteFortressReader.Spatter.material)
2337    pub material: ::protobuf::MessageField<MatPair>,
2338    // @@protoc_insertion_point(field:RemoteFortressReader.Spatter.amount)
2339    pub amount: ::std::option::Option<i32>,
2340    // @@protoc_insertion_point(field:RemoteFortressReader.Spatter.state)
2341    pub state: ::std::option::Option<::protobuf::EnumOrUnknown<MatterState>>,
2342    // @@protoc_insertion_point(field:RemoteFortressReader.Spatter.item)
2343    pub item: ::protobuf::MessageField<MatPair>,
2344    // special fields
2345    // @@protoc_insertion_point(special_field:RemoteFortressReader.Spatter.special_fields)
2346    pub special_fields: ::protobuf::SpecialFields,
2347}
2348
2349impl<'a> ::std::default::Default for &'a Spatter {
2350    fn default() -> &'a Spatter {
2351        <Spatter as ::protobuf::Message>::default_instance()
2352    }
2353}
2354
2355impl Spatter {
2356    pub fn new() -> Spatter {
2357        ::std::default::Default::default()
2358    }
2359
2360    // optional int32 amount = 2;
2361
2362    pub fn amount(&self) -> i32 {
2363        self.amount.unwrap_or(0)
2364    }
2365
2366    pub fn clear_amount(&mut self) {
2367        self.amount = ::std::option::Option::None;
2368    }
2369
2370    pub fn has_amount(&self) -> bool {
2371        self.amount.is_some()
2372    }
2373
2374    // Param is passed by value, moved
2375    pub fn set_amount(&mut self, v: i32) {
2376        self.amount = ::std::option::Option::Some(v);
2377    }
2378
2379    // optional .RemoteFortressReader.MatterState state = 3;
2380
2381    pub fn state(&self) -> MatterState {
2382        match self.state {
2383            Some(e) => e.enum_value_or(MatterState::Solid),
2384            None => MatterState::Solid,
2385        }
2386    }
2387
2388    pub fn clear_state(&mut self) {
2389        self.state = ::std::option::Option::None;
2390    }
2391
2392    pub fn has_state(&self) -> bool {
2393        self.state.is_some()
2394    }
2395
2396    // Param is passed by value, moved
2397    pub fn set_state(&mut self, v: MatterState) {
2398        self.state = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
2399    }
2400
2401    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
2402        let mut fields = ::std::vec::Vec::with_capacity(4);
2403        let mut oneofs = ::std::vec::Vec::with_capacity(0);
2404        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
2405            "material",
2406            |m: &Spatter| { &m.material },
2407            |m: &mut Spatter| { &mut m.material },
2408        ));
2409        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2410            "amount",
2411            |m: &Spatter| { &m.amount },
2412            |m: &mut Spatter| { &mut m.amount },
2413        ));
2414        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2415            "state",
2416            |m: &Spatter| { &m.state },
2417            |m: &mut Spatter| { &mut m.state },
2418        ));
2419        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
2420            "item",
2421            |m: &Spatter| { &m.item },
2422            |m: &mut Spatter| { &mut m.item },
2423        ));
2424        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Spatter>(
2425            "Spatter",
2426            fields,
2427            oneofs,
2428        )
2429    }
2430}
2431
2432impl ::protobuf::Message for Spatter {
2433    const NAME: &'static str = "Spatter";
2434
2435    fn is_initialized(&self) -> bool {
2436        for v in &self.material {
2437            if !v.is_initialized() {
2438                return false;
2439            }
2440        };
2441        for v in &self.item {
2442            if !v.is_initialized() {
2443                return false;
2444            }
2445        };
2446        true
2447    }
2448
2449    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
2450        while let Some(tag) = is.read_raw_tag_or_eof()? {
2451            match tag {
2452                10 => {
2453                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
2454                },
2455                16 => {
2456                    self.amount = ::std::option::Option::Some(is.read_int32()?);
2457                },
2458                24 => {
2459                    self.state = ::std::option::Option::Some(is.read_enum_or_unknown()?);
2460                },
2461                34 => {
2462                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.item)?;
2463                },
2464                tag => {
2465                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
2466                },
2467            };
2468        }
2469        ::std::result::Result::Ok(())
2470    }
2471
2472    // Compute sizes of nested messages
2473    #[allow(unused_variables)]
2474    fn compute_size(&self) -> u64 {
2475        let mut my_size = 0;
2476        if let Some(v) = self.material.as_ref() {
2477            let len = v.compute_size();
2478            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
2479        }
2480        if let Some(v) = self.amount {
2481            my_size += ::protobuf::rt::int32_size(2, v);
2482        }
2483        if let Some(v) = self.state {
2484            my_size += ::protobuf::rt::int32_size(3, v.value());
2485        }
2486        if let Some(v) = self.item.as_ref() {
2487            let len = v.compute_size();
2488            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
2489        }
2490        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
2491        self.special_fields.cached_size().set(my_size as u32);
2492        my_size
2493    }
2494
2495    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
2496        if let Some(v) = self.material.as_ref() {
2497            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
2498        }
2499        if let Some(v) = self.amount {
2500            os.write_int32(2, v)?;
2501        }
2502        if let Some(v) = self.state {
2503            os.write_enum(3, ::protobuf::EnumOrUnknown::value(&v))?;
2504        }
2505        if let Some(v) = self.item.as_ref() {
2506            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
2507        }
2508        os.write_unknown_fields(self.special_fields.unknown_fields())?;
2509        ::std::result::Result::Ok(())
2510    }
2511
2512    fn special_fields(&self) -> &::protobuf::SpecialFields {
2513        &self.special_fields
2514    }
2515
2516    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
2517        &mut self.special_fields
2518    }
2519
2520    fn new() -> Spatter {
2521        Spatter::new()
2522    }
2523
2524    fn clear(&mut self) {
2525        self.material.clear();
2526        self.amount = ::std::option::Option::None;
2527        self.state = ::std::option::Option::None;
2528        self.item.clear();
2529        self.special_fields.clear();
2530    }
2531
2532    fn default_instance() -> &'static Spatter {
2533        static instance: Spatter = Spatter {
2534            material: ::protobuf::MessageField::none(),
2535            amount: ::std::option::Option::None,
2536            state: ::std::option::Option::None,
2537            item: ::protobuf::MessageField::none(),
2538            special_fields: ::protobuf::SpecialFields::new(),
2539        };
2540        &instance
2541    }
2542}
2543
2544impl ::protobuf::MessageFull for Spatter {
2545    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
2546        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
2547        descriptor.get(|| file_descriptor().message_by_package_relative_name("Spatter").unwrap()).clone()
2548    }
2549}
2550
2551impl ::std::fmt::Display for Spatter {
2552    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2553        ::protobuf::text_format::fmt(self, f)
2554    }
2555}
2556
2557impl ::protobuf::reflect::ProtobufValue for Spatter {
2558    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
2559}
2560
2561// @@protoc_insertion_point(message:RemoteFortressReader.SpatterPile)
2562#[derive(PartialEq,Clone,Default,Debug)]
2563pub struct SpatterPile {
2564    // message fields
2565    // @@protoc_insertion_point(field:RemoteFortressReader.SpatterPile.spatters)
2566    pub spatters: ::std::vec::Vec<Spatter>,
2567    // special fields
2568    // @@protoc_insertion_point(special_field:RemoteFortressReader.SpatterPile.special_fields)
2569    pub special_fields: ::protobuf::SpecialFields,
2570}
2571
2572impl<'a> ::std::default::Default for &'a SpatterPile {
2573    fn default() -> &'a SpatterPile {
2574        <SpatterPile as ::protobuf::Message>::default_instance()
2575    }
2576}
2577
2578impl SpatterPile {
2579    pub fn new() -> SpatterPile {
2580        ::std::default::Default::default()
2581    }
2582
2583    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
2584        let mut fields = ::std::vec::Vec::with_capacity(1);
2585        let mut oneofs = ::std::vec::Vec::with_capacity(0);
2586        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
2587            "spatters",
2588            |m: &SpatterPile| { &m.spatters },
2589            |m: &mut SpatterPile| { &mut m.spatters },
2590        ));
2591        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SpatterPile>(
2592            "SpatterPile",
2593            fields,
2594            oneofs,
2595        )
2596    }
2597}
2598
2599impl ::protobuf::Message for SpatterPile {
2600    const NAME: &'static str = "SpatterPile";
2601
2602    fn is_initialized(&self) -> bool {
2603        for v in &self.spatters {
2604            if !v.is_initialized() {
2605                return false;
2606            }
2607        };
2608        true
2609    }
2610
2611    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
2612        while let Some(tag) = is.read_raw_tag_or_eof()? {
2613            match tag {
2614                10 => {
2615                    self.spatters.push(is.read_message()?);
2616                },
2617                tag => {
2618                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
2619                },
2620            };
2621        }
2622        ::std::result::Result::Ok(())
2623    }
2624
2625    // Compute sizes of nested messages
2626    #[allow(unused_variables)]
2627    fn compute_size(&self) -> u64 {
2628        let mut my_size = 0;
2629        for value in &self.spatters {
2630            let len = value.compute_size();
2631            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
2632        };
2633        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
2634        self.special_fields.cached_size().set(my_size as u32);
2635        my_size
2636    }
2637
2638    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
2639        for v in &self.spatters {
2640            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
2641        };
2642        os.write_unknown_fields(self.special_fields.unknown_fields())?;
2643        ::std::result::Result::Ok(())
2644    }
2645
2646    fn special_fields(&self) -> &::protobuf::SpecialFields {
2647        &self.special_fields
2648    }
2649
2650    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
2651        &mut self.special_fields
2652    }
2653
2654    fn new() -> SpatterPile {
2655        SpatterPile::new()
2656    }
2657
2658    fn clear(&mut self) {
2659        self.spatters.clear();
2660        self.special_fields.clear();
2661    }
2662
2663    fn default_instance() -> &'static SpatterPile {
2664        static instance: SpatterPile = SpatterPile {
2665            spatters: ::std::vec::Vec::new(),
2666            special_fields: ::protobuf::SpecialFields::new(),
2667        };
2668        &instance
2669    }
2670}
2671
2672impl ::protobuf::MessageFull for SpatterPile {
2673    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
2674        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
2675        descriptor.get(|| file_descriptor().message_by_package_relative_name("SpatterPile").unwrap()).clone()
2676    }
2677}
2678
2679impl ::std::fmt::Display for SpatterPile {
2680    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2681        ::protobuf::text_format::fmt(self, f)
2682    }
2683}
2684
2685impl ::protobuf::reflect::ProtobufValue for SpatterPile {
2686    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
2687}
2688
2689// @@protoc_insertion_point(message:RemoteFortressReader.Item)
2690#[derive(PartialEq,Clone,Default,Debug)]
2691pub struct Item {
2692    // message fields
2693    // @@protoc_insertion_point(field:RemoteFortressReader.Item.id)
2694    pub id: ::std::option::Option<i32>,
2695    // @@protoc_insertion_point(field:RemoteFortressReader.Item.pos)
2696    pub pos: ::protobuf::MessageField<Coord>,
2697    // @@protoc_insertion_point(field:RemoteFortressReader.Item.flags1)
2698    pub flags1: ::std::option::Option<u32>,
2699    // @@protoc_insertion_point(field:RemoteFortressReader.Item.flags2)
2700    pub flags2: ::std::option::Option<u32>,
2701    // @@protoc_insertion_point(field:RemoteFortressReader.Item.type)
2702    pub type_: ::protobuf::MessageField<MatPair>,
2703    // @@protoc_insertion_point(field:RemoteFortressReader.Item.material)
2704    pub material: ::protobuf::MessageField<MatPair>,
2705    // @@protoc_insertion_point(field:RemoteFortressReader.Item.dye)
2706    pub dye: ::protobuf::MessageField<ColorDefinition>,
2707    // @@protoc_insertion_point(field:RemoteFortressReader.Item.stack_size)
2708    pub stack_size: ::std::option::Option<i32>,
2709    // @@protoc_insertion_point(field:RemoteFortressReader.Item.subpos_x)
2710    pub subpos_x: ::std::option::Option<f32>,
2711    // @@protoc_insertion_point(field:RemoteFortressReader.Item.subpos_y)
2712    pub subpos_y: ::std::option::Option<f32>,
2713    // @@protoc_insertion_point(field:RemoteFortressReader.Item.subpos_z)
2714    pub subpos_z: ::std::option::Option<f32>,
2715    // @@protoc_insertion_point(field:RemoteFortressReader.Item.projectile)
2716    pub projectile: ::std::option::Option<bool>,
2717    // @@protoc_insertion_point(field:RemoteFortressReader.Item.velocity_x)
2718    pub velocity_x: ::std::option::Option<f32>,
2719    // @@protoc_insertion_point(field:RemoteFortressReader.Item.velocity_y)
2720    pub velocity_y: ::std::option::Option<f32>,
2721    // @@protoc_insertion_point(field:RemoteFortressReader.Item.velocity_z)
2722    pub velocity_z: ::std::option::Option<f32>,
2723    // @@protoc_insertion_point(field:RemoteFortressReader.Item.volume)
2724    pub volume: ::std::option::Option<i32>,
2725    // @@protoc_insertion_point(field:RemoteFortressReader.Item.improvements)
2726    pub improvements: ::std::vec::Vec<ItemImprovement>,
2727    // @@protoc_insertion_point(field:RemoteFortressReader.Item.image)
2728    pub image: ::protobuf::MessageField<ArtImage>,
2729    // special fields
2730    // @@protoc_insertion_point(special_field:RemoteFortressReader.Item.special_fields)
2731    pub special_fields: ::protobuf::SpecialFields,
2732}
2733
2734impl<'a> ::std::default::Default for &'a Item {
2735    fn default() -> &'a Item {
2736        <Item as ::protobuf::Message>::default_instance()
2737    }
2738}
2739
2740impl Item {
2741    pub fn new() -> Item {
2742        ::std::default::Default::default()
2743    }
2744
2745    // optional int32 id = 1;
2746
2747    pub fn id(&self) -> i32 {
2748        self.id.unwrap_or(0)
2749    }
2750
2751    pub fn clear_id(&mut self) {
2752        self.id = ::std::option::Option::None;
2753    }
2754
2755    pub fn has_id(&self) -> bool {
2756        self.id.is_some()
2757    }
2758
2759    // Param is passed by value, moved
2760    pub fn set_id(&mut self, v: i32) {
2761        self.id = ::std::option::Option::Some(v);
2762    }
2763
2764    // optional uint32 flags1 = 3;
2765
2766    pub fn flags1(&self) -> u32 {
2767        self.flags1.unwrap_or(0)
2768    }
2769
2770    pub fn clear_flags1(&mut self) {
2771        self.flags1 = ::std::option::Option::None;
2772    }
2773
2774    pub fn has_flags1(&self) -> bool {
2775        self.flags1.is_some()
2776    }
2777
2778    // Param is passed by value, moved
2779    pub fn set_flags1(&mut self, v: u32) {
2780        self.flags1 = ::std::option::Option::Some(v);
2781    }
2782
2783    // optional uint32 flags2 = 4;
2784
2785    pub fn flags2(&self) -> u32 {
2786        self.flags2.unwrap_or(0)
2787    }
2788
2789    pub fn clear_flags2(&mut self) {
2790        self.flags2 = ::std::option::Option::None;
2791    }
2792
2793    pub fn has_flags2(&self) -> bool {
2794        self.flags2.is_some()
2795    }
2796
2797    // Param is passed by value, moved
2798    pub fn set_flags2(&mut self, v: u32) {
2799        self.flags2 = ::std::option::Option::Some(v);
2800    }
2801
2802    // optional int32 stack_size = 8;
2803
2804    pub fn stack_size(&self) -> i32 {
2805        self.stack_size.unwrap_or(0)
2806    }
2807
2808    pub fn clear_stack_size(&mut self) {
2809        self.stack_size = ::std::option::Option::None;
2810    }
2811
2812    pub fn has_stack_size(&self) -> bool {
2813        self.stack_size.is_some()
2814    }
2815
2816    // Param is passed by value, moved
2817    pub fn set_stack_size(&mut self, v: i32) {
2818        self.stack_size = ::std::option::Option::Some(v);
2819    }
2820
2821    // optional float subpos_x = 9;
2822
2823    pub fn subpos_x(&self) -> f32 {
2824        self.subpos_x.unwrap_or(0.)
2825    }
2826
2827    pub fn clear_subpos_x(&mut self) {
2828        self.subpos_x = ::std::option::Option::None;
2829    }
2830
2831    pub fn has_subpos_x(&self) -> bool {
2832        self.subpos_x.is_some()
2833    }
2834
2835    // Param is passed by value, moved
2836    pub fn set_subpos_x(&mut self, v: f32) {
2837        self.subpos_x = ::std::option::Option::Some(v);
2838    }
2839
2840    // optional float subpos_y = 10;
2841
2842    pub fn subpos_y(&self) -> f32 {
2843        self.subpos_y.unwrap_or(0.)
2844    }
2845
2846    pub fn clear_subpos_y(&mut self) {
2847        self.subpos_y = ::std::option::Option::None;
2848    }
2849
2850    pub fn has_subpos_y(&self) -> bool {
2851        self.subpos_y.is_some()
2852    }
2853
2854    // Param is passed by value, moved
2855    pub fn set_subpos_y(&mut self, v: f32) {
2856        self.subpos_y = ::std::option::Option::Some(v);
2857    }
2858
2859    // optional float subpos_z = 11;
2860
2861    pub fn subpos_z(&self) -> f32 {
2862        self.subpos_z.unwrap_or(0.)
2863    }
2864
2865    pub fn clear_subpos_z(&mut self) {
2866        self.subpos_z = ::std::option::Option::None;
2867    }
2868
2869    pub fn has_subpos_z(&self) -> bool {
2870        self.subpos_z.is_some()
2871    }
2872
2873    // Param is passed by value, moved
2874    pub fn set_subpos_z(&mut self, v: f32) {
2875        self.subpos_z = ::std::option::Option::Some(v);
2876    }
2877
2878    // optional bool projectile = 12;
2879
2880    pub fn projectile(&self) -> bool {
2881        self.projectile.unwrap_or(false)
2882    }
2883
2884    pub fn clear_projectile(&mut self) {
2885        self.projectile = ::std::option::Option::None;
2886    }
2887
2888    pub fn has_projectile(&self) -> bool {
2889        self.projectile.is_some()
2890    }
2891
2892    // Param is passed by value, moved
2893    pub fn set_projectile(&mut self, v: bool) {
2894        self.projectile = ::std::option::Option::Some(v);
2895    }
2896
2897    // optional float velocity_x = 13;
2898
2899    pub fn velocity_x(&self) -> f32 {
2900        self.velocity_x.unwrap_or(0.)
2901    }
2902
2903    pub fn clear_velocity_x(&mut self) {
2904        self.velocity_x = ::std::option::Option::None;
2905    }
2906
2907    pub fn has_velocity_x(&self) -> bool {
2908        self.velocity_x.is_some()
2909    }
2910
2911    // Param is passed by value, moved
2912    pub fn set_velocity_x(&mut self, v: f32) {
2913        self.velocity_x = ::std::option::Option::Some(v);
2914    }
2915
2916    // optional float velocity_y = 14;
2917
2918    pub fn velocity_y(&self) -> f32 {
2919        self.velocity_y.unwrap_or(0.)
2920    }
2921
2922    pub fn clear_velocity_y(&mut self) {
2923        self.velocity_y = ::std::option::Option::None;
2924    }
2925
2926    pub fn has_velocity_y(&self) -> bool {
2927        self.velocity_y.is_some()
2928    }
2929
2930    // Param is passed by value, moved
2931    pub fn set_velocity_y(&mut self, v: f32) {
2932        self.velocity_y = ::std::option::Option::Some(v);
2933    }
2934
2935    // optional float velocity_z = 15;
2936
2937    pub fn velocity_z(&self) -> f32 {
2938        self.velocity_z.unwrap_or(0.)
2939    }
2940
2941    pub fn clear_velocity_z(&mut self) {
2942        self.velocity_z = ::std::option::Option::None;
2943    }
2944
2945    pub fn has_velocity_z(&self) -> bool {
2946        self.velocity_z.is_some()
2947    }
2948
2949    // Param is passed by value, moved
2950    pub fn set_velocity_z(&mut self, v: f32) {
2951        self.velocity_z = ::std::option::Option::Some(v);
2952    }
2953
2954    // optional int32 volume = 16;
2955
2956    pub fn volume(&self) -> i32 {
2957        self.volume.unwrap_or(0)
2958    }
2959
2960    pub fn clear_volume(&mut self) {
2961        self.volume = ::std::option::Option::None;
2962    }
2963
2964    pub fn has_volume(&self) -> bool {
2965        self.volume.is_some()
2966    }
2967
2968    // Param is passed by value, moved
2969    pub fn set_volume(&mut self, v: i32) {
2970        self.volume = ::std::option::Option::Some(v);
2971    }
2972
2973    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
2974        let mut fields = ::std::vec::Vec::with_capacity(18);
2975        let mut oneofs = ::std::vec::Vec::with_capacity(0);
2976        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2977            "id",
2978            |m: &Item| { &m.id },
2979            |m: &mut Item| { &mut m.id },
2980        ));
2981        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
2982            "pos",
2983            |m: &Item| { &m.pos },
2984            |m: &mut Item| { &mut m.pos },
2985        ));
2986        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2987            "flags1",
2988            |m: &Item| { &m.flags1 },
2989            |m: &mut Item| { &mut m.flags1 },
2990        ));
2991        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2992            "flags2",
2993            |m: &Item| { &m.flags2 },
2994            |m: &mut Item| { &mut m.flags2 },
2995        ));
2996        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
2997            "type",
2998            |m: &Item| { &m.type_ },
2999            |m: &mut Item| { &mut m.type_ },
3000        ));
3001        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
3002            "material",
3003            |m: &Item| { &m.material },
3004            |m: &mut Item| { &mut m.material },
3005        ));
3006        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ColorDefinition>(
3007            "dye",
3008            |m: &Item| { &m.dye },
3009            |m: &mut Item| { &mut m.dye },
3010        ));
3011        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3012            "stack_size",
3013            |m: &Item| { &m.stack_size },
3014            |m: &mut Item| { &mut m.stack_size },
3015        ));
3016        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3017            "subpos_x",
3018            |m: &Item| { &m.subpos_x },
3019            |m: &mut Item| { &mut m.subpos_x },
3020        ));
3021        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3022            "subpos_y",
3023            |m: &Item| { &m.subpos_y },
3024            |m: &mut Item| { &mut m.subpos_y },
3025        ));
3026        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3027            "subpos_z",
3028            |m: &Item| { &m.subpos_z },
3029            |m: &mut Item| { &mut m.subpos_z },
3030        ));
3031        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3032            "projectile",
3033            |m: &Item| { &m.projectile },
3034            |m: &mut Item| { &mut m.projectile },
3035        ));
3036        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3037            "velocity_x",
3038            |m: &Item| { &m.velocity_x },
3039            |m: &mut Item| { &mut m.velocity_x },
3040        ));
3041        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3042            "velocity_y",
3043            |m: &Item| { &m.velocity_y },
3044            |m: &mut Item| { &mut m.velocity_y },
3045        ));
3046        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3047            "velocity_z",
3048            |m: &Item| { &m.velocity_z },
3049            |m: &mut Item| { &mut m.velocity_z },
3050        ));
3051        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3052            "volume",
3053            |m: &Item| { &m.volume },
3054            |m: &mut Item| { &mut m.volume },
3055        ));
3056        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
3057            "improvements",
3058            |m: &Item| { &m.improvements },
3059            |m: &mut Item| { &mut m.improvements },
3060        ));
3061        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ArtImage>(
3062            "image",
3063            |m: &Item| { &m.image },
3064            |m: &mut Item| { &mut m.image },
3065        ));
3066        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Item>(
3067            "Item",
3068            fields,
3069            oneofs,
3070        )
3071    }
3072}
3073
3074impl ::protobuf::Message for Item {
3075    const NAME: &'static str = "Item";
3076
3077    fn is_initialized(&self) -> bool {
3078        for v in &self.pos {
3079            if !v.is_initialized() {
3080                return false;
3081            }
3082        };
3083        for v in &self.type_ {
3084            if !v.is_initialized() {
3085                return false;
3086            }
3087        };
3088        for v in &self.material {
3089            if !v.is_initialized() {
3090                return false;
3091            }
3092        };
3093        for v in &self.dye {
3094            if !v.is_initialized() {
3095                return false;
3096            }
3097        };
3098        for v in &self.improvements {
3099            if !v.is_initialized() {
3100                return false;
3101            }
3102        };
3103        for v in &self.image {
3104            if !v.is_initialized() {
3105                return false;
3106            }
3107        };
3108        true
3109    }
3110
3111    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
3112        while let Some(tag) = is.read_raw_tag_or_eof()? {
3113            match tag {
3114                8 => {
3115                    self.id = ::std::option::Option::Some(is.read_int32()?);
3116                },
3117                18 => {
3118                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.pos)?;
3119                },
3120                24 => {
3121                    self.flags1 = ::std::option::Option::Some(is.read_uint32()?);
3122                },
3123                32 => {
3124                    self.flags2 = ::std::option::Option::Some(is.read_uint32()?);
3125                },
3126                42 => {
3127                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.type_)?;
3128                },
3129                50 => {
3130                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
3131                },
3132                58 => {
3133                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.dye)?;
3134                },
3135                64 => {
3136                    self.stack_size = ::std::option::Option::Some(is.read_int32()?);
3137                },
3138                77 => {
3139                    self.subpos_x = ::std::option::Option::Some(is.read_float()?);
3140                },
3141                85 => {
3142                    self.subpos_y = ::std::option::Option::Some(is.read_float()?);
3143                },
3144                93 => {
3145                    self.subpos_z = ::std::option::Option::Some(is.read_float()?);
3146                },
3147                96 => {
3148                    self.projectile = ::std::option::Option::Some(is.read_bool()?);
3149                },
3150                109 => {
3151                    self.velocity_x = ::std::option::Option::Some(is.read_float()?);
3152                },
3153                117 => {
3154                    self.velocity_y = ::std::option::Option::Some(is.read_float()?);
3155                },
3156                125 => {
3157                    self.velocity_z = ::std::option::Option::Some(is.read_float()?);
3158                },
3159                128 => {
3160                    self.volume = ::std::option::Option::Some(is.read_int32()?);
3161                },
3162                138 => {
3163                    self.improvements.push(is.read_message()?);
3164                },
3165                146 => {
3166                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.image)?;
3167                },
3168                tag => {
3169                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
3170                },
3171            };
3172        }
3173        ::std::result::Result::Ok(())
3174    }
3175
3176    // Compute sizes of nested messages
3177    #[allow(unused_variables)]
3178    fn compute_size(&self) -> u64 {
3179        let mut my_size = 0;
3180        if let Some(v) = self.id {
3181            my_size += ::protobuf::rt::int32_size(1, v);
3182        }
3183        if let Some(v) = self.pos.as_ref() {
3184            let len = v.compute_size();
3185            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
3186        }
3187        if let Some(v) = self.flags1 {
3188            my_size += ::protobuf::rt::uint32_size(3, v);
3189        }
3190        if let Some(v) = self.flags2 {
3191            my_size += ::protobuf::rt::uint32_size(4, v);
3192        }
3193        if let Some(v) = self.type_.as_ref() {
3194            let len = v.compute_size();
3195            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
3196        }
3197        if let Some(v) = self.material.as_ref() {
3198            let len = v.compute_size();
3199            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
3200        }
3201        if let Some(v) = self.dye.as_ref() {
3202            let len = v.compute_size();
3203            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
3204        }
3205        if let Some(v) = self.stack_size {
3206            my_size += ::protobuf::rt::int32_size(8, v);
3207        }
3208        if let Some(v) = self.subpos_x {
3209            my_size += 1 + 4;
3210        }
3211        if let Some(v) = self.subpos_y {
3212            my_size += 1 + 4;
3213        }
3214        if let Some(v) = self.subpos_z {
3215            my_size += 1 + 4;
3216        }
3217        if let Some(v) = self.projectile {
3218            my_size += 1 + 1;
3219        }
3220        if let Some(v) = self.velocity_x {
3221            my_size += 1 + 4;
3222        }
3223        if let Some(v) = self.velocity_y {
3224            my_size += 1 + 4;
3225        }
3226        if let Some(v) = self.velocity_z {
3227            my_size += 1 + 4;
3228        }
3229        if let Some(v) = self.volume {
3230            my_size += ::protobuf::rt::int32_size(16, v);
3231        }
3232        for value in &self.improvements {
3233            let len = value.compute_size();
3234            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
3235        };
3236        if let Some(v) = self.image.as_ref() {
3237            let len = v.compute_size();
3238            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
3239        }
3240        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
3241        self.special_fields.cached_size().set(my_size as u32);
3242        my_size
3243    }
3244
3245    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
3246        if let Some(v) = self.id {
3247            os.write_int32(1, v)?;
3248        }
3249        if let Some(v) = self.pos.as_ref() {
3250            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
3251        }
3252        if let Some(v) = self.flags1 {
3253            os.write_uint32(3, v)?;
3254        }
3255        if let Some(v) = self.flags2 {
3256            os.write_uint32(4, v)?;
3257        }
3258        if let Some(v) = self.type_.as_ref() {
3259            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
3260        }
3261        if let Some(v) = self.material.as_ref() {
3262            ::protobuf::rt::write_message_field_with_cached_size(6, v, os)?;
3263        }
3264        if let Some(v) = self.dye.as_ref() {
3265            ::protobuf::rt::write_message_field_with_cached_size(7, v, os)?;
3266        }
3267        if let Some(v) = self.stack_size {
3268            os.write_int32(8, v)?;
3269        }
3270        if let Some(v) = self.subpos_x {
3271            os.write_float(9, v)?;
3272        }
3273        if let Some(v) = self.subpos_y {
3274            os.write_float(10, v)?;
3275        }
3276        if let Some(v) = self.subpos_z {
3277            os.write_float(11, v)?;
3278        }
3279        if let Some(v) = self.projectile {
3280            os.write_bool(12, v)?;
3281        }
3282        if let Some(v) = self.velocity_x {
3283            os.write_float(13, v)?;
3284        }
3285        if let Some(v) = self.velocity_y {
3286            os.write_float(14, v)?;
3287        }
3288        if let Some(v) = self.velocity_z {
3289            os.write_float(15, v)?;
3290        }
3291        if let Some(v) = self.volume {
3292            os.write_int32(16, v)?;
3293        }
3294        for v in &self.improvements {
3295            ::protobuf::rt::write_message_field_with_cached_size(17, v, os)?;
3296        };
3297        if let Some(v) = self.image.as_ref() {
3298            ::protobuf::rt::write_message_field_with_cached_size(18, v, os)?;
3299        }
3300        os.write_unknown_fields(self.special_fields.unknown_fields())?;
3301        ::std::result::Result::Ok(())
3302    }
3303
3304    fn special_fields(&self) -> &::protobuf::SpecialFields {
3305        &self.special_fields
3306    }
3307
3308    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
3309        &mut self.special_fields
3310    }
3311
3312    fn new() -> Item {
3313        Item::new()
3314    }
3315
3316    fn clear(&mut self) {
3317        self.id = ::std::option::Option::None;
3318        self.pos.clear();
3319        self.flags1 = ::std::option::Option::None;
3320        self.flags2 = ::std::option::Option::None;
3321        self.type_.clear();
3322        self.material.clear();
3323        self.dye.clear();
3324        self.stack_size = ::std::option::Option::None;
3325        self.subpos_x = ::std::option::Option::None;
3326        self.subpos_y = ::std::option::Option::None;
3327        self.subpos_z = ::std::option::Option::None;
3328        self.projectile = ::std::option::Option::None;
3329        self.velocity_x = ::std::option::Option::None;
3330        self.velocity_y = ::std::option::Option::None;
3331        self.velocity_z = ::std::option::Option::None;
3332        self.volume = ::std::option::Option::None;
3333        self.improvements.clear();
3334        self.image.clear();
3335        self.special_fields.clear();
3336    }
3337
3338    fn default_instance() -> &'static Item {
3339        static instance: Item = Item {
3340            id: ::std::option::Option::None,
3341            pos: ::protobuf::MessageField::none(),
3342            flags1: ::std::option::Option::None,
3343            flags2: ::std::option::Option::None,
3344            type_: ::protobuf::MessageField::none(),
3345            material: ::protobuf::MessageField::none(),
3346            dye: ::protobuf::MessageField::none(),
3347            stack_size: ::std::option::Option::None,
3348            subpos_x: ::std::option::Option::None,
3349            subpos_y: ::std::option::Option::None,
3350            subpos_z: ::std::option::Option::None,
3351            projectile: ::std::option::Option::None,
3352            velocity_x: ::std::option::Option::None,
3353            velocity_y: ::std::option::Option::None,
3354            velocity_z: ::std::option::Option::None,
3355            volume: ::std::option::Option::None,
3356            improvements: ::std::vec::Vec::new(),
3357            image: ::protobuf::MessageField::none(),
3358            special_fields: ::protobuf::SpecialFields::new(),
3359        };
3360        &instance
3361    }
3362}
3363
3364impl ::protobuf::MessageFull for Item {
3365    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
3366        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
3367        descriptor.get(|| file_descriptor().message_by_package_relative_name("Item").unwrap()).clone()
3368    }
3369}
3370
3371impl ::std::fmt::Display for Item {
3372    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3373        ::protobuf::text_format::fmt(self, f)
3374    }
3375}
3376
3377impl ::protobuf::reflect::ProtobufValue for Item {
3378    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
3379}
3380
3381// @@protoc_insertion_point(message:RemoteFortressReader.PlantTile)
3382#[derive(PartialEq,Clone,Default,Debug)]
3383pub struct PlantTile {
3384    // message fields
3385    // @@protoc_insertion_point(field:RemoteFortressReader.PlantTile.trunk)
3386    pub trunk: ::std::option::Option<bool>,
3387    // @@protoc_insertion_point(field:RemoteFortressReader.PlantTile.connection_east)
3388    pub connection_east: ::std::option::Option<bool>,
3389    // @@protoc_insertion_point(field:RemoteFortressReader.PlantTile.connection_south)
3390    pub connection_south: ::std::option::Option<bool>,
3391    // @@protoc_insertion_point(field:RemoteFortressReader.PlantTile.connection_west)
3392    pub connection_west: ::std::option::Option<bool>,
3393    // @@protoc_insertion_point(field:RemoteFortressReader.PlantTile.connection_north)
3394    pub connection_north: ::std::option::Option<bool>,
3395    // @@protoc_insertion_point(field:RemoteFortressReader.PlantTile.branches)
3396    pub branches: ::std::option::Option<bool>,
3397    // @@protoc_insertion_point(field:RemoteFortressReader.PlantTile.twigs)
3398    pub twigs: ::std::option::Option<bool>,
3399    // @@protoc_insertion_point(field:RemoteFortressReader.PlantTile.tile_type)
3400    pub tile_type: ::std::option::Option<::protobuf::EnumOrUnknown<TiletypeSpecial>>,
3401    // special fields
3402    // @@protoc_insertion_point(special_field:RemoteFortressReader.PlantTile.special_fields)
3403    pub special_fields: ::protobuf::SpecialFields,
3404}
3405
3406impl<'a> ::std::default::Default for &'a PlantTile {
3407    fn default() -> &'a PlantTile {
3408        <PlantTile as ::protobuf::Message>::default_instance()
3409    }
3410}
3411
3412impl PlantTile {
3413    pub fn new() -> PlantTile {
3414        ::std::default::Default::default()
3415    }
3416
3417    // optional bool trunk = 1;
3418
3419    pub fn trunk(&self) -> bool {
3420        self.trunk.unwrap_or(false)
3421    }
3422
3423    pub fn clear_trunk(&mut self) {
3424        self.trunk = ::std::option::Option::None;
3425    }
3426
3427    pub fn has_trunk(&self) -> bool {
3428        self.trunk.is_some()
3429    }
3430
3431    // Param is passed by value, moved
3432    pub fn set_trunk(&mut self, v: bool) {
3433        self.trunk = ::std::option::Option::Some(v);
3434    }
3435
3436    // optional bool connection_east = 2;
3437
3438    pub fn connection_east(&self) -> bool {
3439        self.connection_east.unwrap_or(false)
3440    }
3441
3442    pub fn clear_connection_east(&mut self) {
3443        self.connection_east = ::std::option::Option::None;
3444    }
3445
3446    pub fn has_connection_east(&self) -> bool {
3447        self.connection_east.is_some()
3448    }
3449
3450    // Param is passed by value, moved
3451    pub fn set_connection_east(&mut self, v: bool) {
3452        self.connection_east = ::std::option::Option::Some(v);
3453    }
3454
3455    // optional bool connection_south = 3;
3456
3457    pub fn connection_south(&self) -> bool {
3458        self.connection_south.unwrap_or(false)
3459    }
3460
3461    pub fn clear_connection_south(&mut self) {
3462        self.connection_south = ::std::option::Option::None;
3463    }
3464
3465    pub fn has_connection_south(&self) -> bool {
3466        self.connection_south.is_some()
3467    }
3468
3469    // Param is passed by value, moved
3470    pub fn set_connection_south(&mut self, v: bool) {
3471        self.connection_south = ::std::option::Option::Some(v);
3472    }
3473
3474    // optional bool connection_west = 4;
3475
3476    pub fn connection_west(&self) -> bool {
3477        self.connection_west.unwrap_or(false)
3478    }
3479
3480    pub fn clear_connection_west(&mut self) {
3481        self.connection_west = ::std::option::Option::None;
3482    }
3483
3484    pub fn has_connection_west(&self) -> bool {
3485        self.connection_west.is_some()
3486    }
3487
3488    // Param is passed by value, moved
3489    pub fn set_connection_west(&mut self, v: bool) {
3490        self.connection_west = ::std::option::Option::Some(v);
3491    }
3492
3493    // optional bool connection_north = 5;
3494
3495    pub fn connection_north(&self) -> bool {
3496        self.connection_north.unwrap_or(false)
3497    }
3498
3499    pub fn clear_connection_north(&mut self) {
3500        self.connection_north = ::std::option::Option::None;
3501    }
3502
3503    pub fn has_connection_north(&self) -> bool {
3504        self.connection_north.is_some()
3505    }
3506
3507    // Param is passed by value, moved
3508    pub fn set_connection_north(&mut self, v: bool) {
3509        self.connection_north = ::std::option::Option::Some(v);
3510    }
3511
3512    // optional bool branches = 6;
3513
3514    pub fn branches(&self) -> bool {
3515        self.branches.unwrap_or(false)
3516    }
3517
3518    pub fn clear_branches(&mut self) {
3519        self.branches = ::std::option::Option::None;
3520    }
3521
3522    pub fn has_branches(&self) -> bool {
3523        self.branches.is_some()
3524    }
3525
3526    // Param is passed by value, moved
3527    pub fn set_branches(&mut self, v: bool) {
3528        self.branches = ::std::option::Option::Some(v);
3529    }
3530
3531    // optional bool twigs = 7;
3532
3533    pub fn twigs(&self) -> bool {
3534        self.twigs.unwrap_or(false)
3535    }
3536
3537    pub fn clear_twigs(&mut self) {
3538        self.twigs = ::std::option::Option::None;
3539    }
3540
3541    pub fn has_twigs(&self) -> bool {
3542        self.twigs.is_some()
3543    }
3544
3545    // Param is passed by value, moved
3546    pub fn set_twigs(&mut self, v: bool) {
3547        self.twigs = ::std::option::Option::Some(v);
3548    }
3549
3550    // optional .RemoteFortressReader.TiletypeSpecial tile_type = 8;
3551
3552    pub fn tile_type(&self) -> TiletypeSpecial {
3553        match self.tile_type {
3554            Some(e) => e.enum_value_or(TiletypeSpecial::NO_SPECIAL),
3555            None => TiletypeSpecial::NO_SPECIAL,
3556        }
3557    }
3558
3559    pub fn clear_tile_type(&mut self) {
3560        self.tile_type = ::std::option::Option::None;
3561    }
3562
3563    pub fn has_tile_type(&self) -> bool {
3564        self.tile_type.is_some()
3565    }
3566
3567    // Param is passed by value, moved
3568    pub fn set_tile_type(&mut self, v: TiletypeSpecial) {
3569        self.tile_type = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
3570    }
3571
3572    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
3573        let mut fields = ::std::vec::Vec::with_capacity(8);
3574        let mut oneofs = ::std::vec::Vec::with_capacity(0);
3575        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3576            "trunk",
3577            |m: &PlantTile| { &m.trunk },
3578            |m: &mut PlantTile| { &mut m.trunk },
3579        ));
3580        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3581            "connection_east",
3582            |m: &PlantTile| { &m.connection_east },
3583            |m: &mut PlantTile| { &mut m.connection_east },
3584        ));
3585        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3586            "connection_south",
3587            |m: &PlantTile| { &m.connection_south },
3588            |m: &mut PlantTile| { &mut m.connection_south },
3589        ));
3590        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3591            "connection_west",
3592            |m: &PlantTile| { &m.connection_west },
3593            |m: &mut PlantTile| { &mut m.connection_west },
3594        ));
3595        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3596            "connection_north",
3597            |m: &PlantTile| { &m.connection_north },
3598            |m: &mut PlantTile| { &mut m.connection_north },
3599        ));
3600        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3601            "branches",
3602            |m: &PlantTile| { &m.branches },
3603            |m: &mut PlantTile| { &mut m.branches },
3604        ));
3605        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3606            "twigs",
3607            |m: &PlantTile| { &m.twigs },
3608            |m: &mut PlantTile| { &mut m.twigs },
3609        ));
3610        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3611            "tile_type",
3612            |m: &PlantTile| { &m.tile_type },
3613            |m: &mut PlantTile| { &mut m.tile_type },
3614        ));
3615        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PlantTile>(
3616            "PlantTile",
3617            fields,
3618            oneofs,
3619        )
3620    }
3621}
3622
3623impl ::protobuf::Message for PlantTile {
3624    const NAME: &'static str = "PlantTile";
3625
3626    fn is_initialized(&self) -> bool {
3627        true
3628    }
3629
3630    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
3631        while let Some(tag) = is.read_raw_tag_or_eof()? {
3632            match tag {
3633                8 => {
3634                    self.trunk = ::std::option::Option::Some(is.read_bool()?);
3635                },
3636                16 => {
3637                    self.connection_east = ::std::option::Option::Some(is.read_bool()?);
3638                },
3639                24 => {
3640                    self.connection_south = ::std::option::Option::Some(is.read_bool()?);
3641                },
3642                32 => {
3643                    self.connection_west = ::std::option::Option::Some(is.read_bool()?);
3644                },
3645                40 => {
3646                    self.connection_north = ::std::option::Option::Some(is.read_bool()?);
3647                },
3648                48 => {
3649                    self.branches = ::std::option::Option::Some(is.read_bool()?);
3650                },
3651                56 => {
3652                    self.twigs = ::std::option::Option::Some(is.read_bool()?);
3653                },
3654                64 => {
3655                    self.tile_type = ::std::option::Option::Some(is.read_enum_or_unknown()?);
3656                },
3657                tag => {
3658                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
3659                },
3660            };
3661        }
3662        ::std::result::Result::Ok(())
3663    }
3664
3665    // Compute sizes of nested messages
3666    #[allow(unused_variables)]
3667    fn compute_size(&self) -> u64 {
3668        let mut my_size = 0;
3669        if let Some(v) = self.trunk {
3670            my_size += 1 + 1;
3671        }
3672        if let Some(v) = self.connection_east {
3673            my_size += 1 + 1;
3674        }
3675        if let Some(v) = self.connection_south {
3676            my_size += 1 + 1;
3677        }
3678        if let Some(v) = self.connection_west {
3679            my_size += 1 + 1;
3680        }
3681        if let Some(v) = self.connection_north {
3682            my_size += 1 + 1;
3683        }
3684        if let Some(v) = self.branches {
3685            my_size += 1 + 1;
3686        }
3687        if let Some(v) = self.twigs {
3688            my_size += 1 + 1;
3689        }
3690        if let Some(v) = self.tile_type {
3691            my_size += ::protobuf::rt::int32_size(8, v.value());
3692        }
3693        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
3694        self.special_fields.cached_size().set(my_size as u32);
3695        my_size
3696    }
3697
3698    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
3699        if let Some(v) = self.trunk {
3700            os.write_bool(1, v)?;
3701        }
3702        if let Some(v) = self.connection_east {
3703            os.write_bool(2, v)?;
3704        }
3705        if let Some(v) = self.connection_south {
3706            os.write_bool(3, v)?;
3707        }
3708        if let Some(v) = self.connection_west {
3709            os.write_bool(4, v)?;
3710        }
3711        if let Some(v) = self.connection_north {
3712            os.write_bool(5, v)?;
3713        }
3714        if let Some(v) = self.branches {
3715            os.write_bool(6, v)?;
3716        }
3717        if let Some(v) = self.twigs {
3718            os.write_bool(7, v)?;
3719        }
3720        if let Some(v) = self.tile_type {
3721            os.write_enum(8, ::protobuf::EnumOrUnknown::value(&v))?;
3722        }
3723        os.write_unknown_fields(self.special_fields.unknown_fields())?;
3724        ::std::result::Result::Ok(())
3725    }
3726
3727    fn special_fields(&self) -> &::protobuf::SpecialFields {
3728        &self.special_fields
3729    }
3730
3731    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
3732        &mut self.special_fields
3733    }
3734
3735    fn new() -> PlantTile {
3736        PlantTile::new()
3737    }
3738
3739    fn clear(&mut self) {
3740        self.trunk = ::std::option::Option::None;
3741        self.connection_east = ::std::option::Option::None;
3742        self.connection_south = ::std::option::Option::None;
3743        self.connection_west = ::std::option::Option::None;
3744        self.connection_north = ::std::option::Option::None;
3745        self.branches = ::std::option::Option::None;
3746        self.twigs = ::std::option::Option::None;
3747        self.tile_type = ::std::option::Option::None;
3748        self.special_fields.clear();
3749    }
3750
3751    fn default_instance() -> &'static PlantTile {
3752        static instance: PlantTile = PlantTile {
3753            trunk: ::std::option::Option::None,
3754            connection_east: ::std::option::Option::None,
3755            connection_south: ::std::option::Option::None,
3756            connection_west: ::std::option::Option::None,
3757            connection_north: ::std::option::Option::None,
3758            branches: ::std::option::Option::None,
3759            twigs: ::std::option::Option::None,
3760            tile_type: ::std::option::Option::None,
3761            special_fields: ::protobuf::SpecialFields::new(),
3762        };
3763        &instance
3764    }
3765}
3766
3767impl ::protobuf::MessageFull for PlantTile {
3768    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
3769        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
3770        descriptor.get(|| file_descriptor().message_by_package_relative_name("PlantTile").unwrap()).clone()
3771    }
3772}
3773
3774impl ::std::fmt::Display for PlantTile {
3775    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3776        ::protobuf::text_format::fmt(self, f)
3777    }
3778}
3779
3780impl ::protobuf::reflect::ProtobufValue for PlantTile {
3781    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
3782}
3783
3784// @@protoc_insertion_point(message:RemoteFortressReader.TreeInfo)
3785#[derive(PartialEq,Clone,Default,Debug)]
3786pub struct TreeInfo {
3787    // message fields
3788    // @@protoc_insertion_point(field:RemoteFortressReader.TreeInfo.size)
3789    pub size: ::protobuf::MessageField<Coord>,
3790    // @@protoc_insertion_point(field:RemoteFortressReader.TreeInfo.tiles)
3791    pub tiles: ::std::vec::Vec<PlantTile>,
3792    // special fields
3793    // @@protoc_insertion_point(special_field:RemoteFortressReader.TreeInfo.special_fields)
3794    pub special_fields: ::protobuf::SpecialFields,
3795}
3796
3797impl<'a> ::std::default::Default for &'a TreeInfo {
3798    fn default() -> &'a TreeInfo {
3799        <TreeInfo as ::protobuf::Message>::default_instance()
3800    }
3801}
3802
3803impl TreeInfo {
3804    pub fn new() -> TreeInfo {
3805        ::std::default::Default::default()
3806    }
3807
3808    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
3809        let mut fields = ::std::vec::Vec::with_capacity(2);
3810        let mut oneofs = ::std::vec::Vec::with_capacity(0);
3811        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
3812            "size",
3813            |m: &TreeInfo| { &m.size },
3814            |m: &mut TreeInfo| { &mut m.size },
3815        ));
3816        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
3817            "tiles",
3818            |m: &TreeInfo| { &m.tiles },
3819            |m: &mut TreeInfo| { &mut m.tiles },
3820        ));
3821        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<TreeInfo>(
3822            "TreeInfo",
3823            fields,
3824            oneofs,
3825        )
3826    }
3827}
3828
3829impl ::protobuf::Message for TreeInfo {
3830    const NAME: &'static str = "TreeInfo";
3831
3832    fn is_initialized(&self) -> bool {
3833        true
3834    }
3835
3836    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
3837        while let Some(tag) = is.read_raw_tag_or_eof()? {
3838            match tag {
3839                10 => {
3840                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.size)?;
3841                },
3842                18 => {
3843                    self.tiles.push(is.read_message()?);
3844                },
3845                tag => {
3846                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
3847                },
3848            };
3849        }
3850        ::std::result::Result::Ok(())
3851    }
3852
3853    // Compute sizes of nested messages
3854    #[allow(unused_variables)]
3855    fn compute_size(&self) -> u64 {
3856        let mut my_size = 0;
3857        if let Some(v) = self.size.as_ref() {
3858            let len = v.compute_size();
3859            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
3860        }
3861        for value in &self.tiles {
3862            let len = value.compute_size();
3863            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
3864        };
3865        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
3866        self.special_fields.cached_size().set(my_size as u32);
3867        my_size
3868    }
3869
3870    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
3871        if let Some(v) = self.size.as_ref() {
3872            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
3873        }
3874        for v in &self.tiles {
3875            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
3876        };
3877        os.write_unknown_fields(self.special_fields.unknown_fields())?;
3878        ::std::result::Result::Ok(())
3879    }
3880
3881    fn special_fields(&self) -> &::protobuf::SpecialFields {
3882        &self.special_fields
3883    }
3884
3885    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
3886        &mut self.special_fields
3887    }
3888
3889    fn new() -> TreeInfo {
3890        TreeInfo::new()
3891    }
3892
3893    fn clear(&mut self) {
3894        self.size.clear();
3895        self.tiles.clear();
3896        self.special_fields.clear();
3897    }
3898
3899    fn default_instance() -> &'static TreeInfo {
3900        static instance: TreeInfo = TreeInfo {
3901            size: ::protobuf::MessageField::none(),
3902            tiles: ::std::vec::Vec::new(),
3903            special_fields: ::protobuf::SpecialFields::new(),
3904        };
3905        &instance
3906    }
3907}
3908
3909impl ::protobuf::MessageFull for TreeInfo {
3910    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
3911        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
3912        descriptor.get(|| file_descriptor().message_by_package_relative_name("TreeInfo").unwrap()).clone()
3913    }
3914}
3915
3916impl ::std::fmt::Display for TreeInfo {
3917    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3918        ::protobuf::text_format::fmt(self, f)
3919    }
3920}
3921
3922impl ::protobuf::reflect::ProtobufValue for TreeInfo {
3923    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
3924}
3925
3926// @@protoc_insertion_point(message:RemoteFortressReader.PlantInstance)
3927#[derive(PartialEq,Clone,Default,Debug)]
3928pub struct PlantInstance {
3929    // message fields
3930    // @@protoc_insertion_point(field:RemoteFortressReader.PlantInstance.plant_type)
3931    pub plant_type: ::std::option::Option<i32>,
3932    // @@protoc_insertion_point(field:RemoteFortressReader.PlantInstance.pos)
3933    pub pos: ::protobuf::MessageField<Coord>,
3934    // @@protoc_insertion_point(field:RemoteFortressReader.PlantInstance.tree_info)
3935    pub tree_info: ::protobuf::MessageField<TreeInfo>,
3936    // special fields
3937    // @@protoc_insertion_point(special_field:RemoteFortressReader.PlantInstance.special_fields)
3938    pub special_fields: ::protobuf::SpecialFields,
3939}
3940
3941impl<'a> ::std::default::Default for &'a PlantInstance {
3942    fn default() -> &'a PlantInstance {
3943        <PlantInstance as ::protobuf::Message>::default_instance()
3944    }
3945}
3946
3947impl PlantInstance {
3948    pub fn new() -> PlantInstance {
3949        ::std::default::Default::default()
3950    }
3951
3952    // optional int32 plant_type = 1;
3953
3954    pub fn plant_type(&self) -> i32 {
3955        self.plant_type.unwrap_or(0)
3956    }
3957
3958    pub fn clear_plant_type(&mut self) {
3959        self.plant_type = ::std::option::Option::None;
3960    }
3961
3962    pub fn has_plant_type(&self) -> bool {
3963        self.plant_type.is_some()
3964    }
3965
3966    // Param is passed by value, moved
3967    pub fn set_plant_type(&mut self, v: i32) {
3968        self.plant_type = ::std::option::Option::Some(v);
3969    }
3970
3971    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
3972        let mut fields = ::std::vec::Vec::with_capacity(3);
3973        let mut oneofs = ::std::vec::Vec::with_capacity(0);
3974        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3975            "plant_type",
3976            |m: &PlantInstance| { &m.plant_type },
3977            |m: &mut PlantInstance| { &mut m.plant_type },
3978        ));
3979        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
3980            "pos",
3981            |m: &PlantInstance| { &m.pos },
3982            |m: &mut PlantInstance| { &mut m.pos },
3983        ));
3984        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, TreeInfo>(
3985            "tree_info",
3986            |m: &PlantInstance| { &m.tree_info },
3987            |m: &mut PlantInstance| { &mut m.tree_info },
3988        ));
3989        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PlantInstance>(
3990            "PlantInstance",
3991            fields,
3992            oneofs,
3993        )
3994    }
3995}
3996
3997impl ::protobuf::Message for PlantInstance {
3998    const NAME: &'static str = "PlantInstance";
3999
4000    fn is_initialized(&self) -> bool {
4001        true
4002    }
4003
4004    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
4005        while let Some(tag) = is.read_raw_tag_or_eof()? {
4006            match tag {
4007                8 => {
4008                    self.plant_type = ::std::option::Option::Some(is.read_int32()?);
4009                },
4010                18 => {
4011                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.pos)?;
4012                },
4013                26 => {
4014                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.tree_info)?;
4015                },
4016                tag => {
4017                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
4018                },
4019            };
4020        }
4021        ::std::result::Result::Ok(())
4022    }
4023
4024    // Compute sizes of nested messages
4025    #[allow(unused_variables)]
4026    fn compute_size(&self) -> u64 {
4027        let mut my_size = 0;
4028        if let Some(v) = self.plant_type {
4029            my_size += ::protobuf::rt::int32_size(1, v);
4030        }
4031        if let Some(v) = self.pos.as_ref() {
4032            let len = v.compute_size();
4033            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4034        }
4035        if let Some(v) = self.tree_info.as_ref() {
4036            let len = v.compute_size();
4037            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4038        }
4039        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
4040        self.special_fields.cached_size().set(my_size as u32);
4041        my_size
4042    }
4043
4044    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
4045        if let Some(v) = self.plant_type {
4046            os.write_int32(1, v)?;
4047        }
4048        if let Some(v) = self.pos.as_ref() {
4049            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
4050        }
4051        if let Some(v) = self.tree_info.as_ref() {
4052            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
4053        }
4054        os.write_unknown_fields(self.special_fields.unknown_fields())?;
4055        ::std::result::Result::Ok(())
4056    }
4057
4058    fn special_fields(&self) -> &::protobuf::SpecialFields {
4059        &self.special_fields
4060    }
4061
4062    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
4063        &mut self.special_fields
4064    }
4065
4066    fn new() -> PlantInstance {
4067        PlantInstance::new()
4068    }
4069
4070    fn clear(&mut self) {
4071        self.plant_type = ::std::option::Option::None;
4072        self.pos.clear();
4073        self.tree_info.clear();
4074        self.special_fields.clear();
4075    }
4076
4077    fn default_instance() -> &'static PlantInstance {
4078        static instance: PlantInstance = PlantInstance {
4079            plant_type: ::std::option::Option::None,
4080            pos: ::protobuf::MessageField::none(),
4081            tree_info: ::protobuf::MessageField::none(),
4082            special_fields: ::protobuf::SpecialFields::new(),
4083        };
4084        &instance
4085    }
4086}
4087
4088impl ::protobuf::MessageFull for PlantInstance {
4089    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
4090        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
4091        descriptor.get(|| file_descriptor().message_by_package_relative_name("PlantInstance").unwrap()).clone()
4092    }
4093}
4094
4095impl ::std::fmt::Display for PlantInstance {
4096    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4097        ::protobuf::text_format::fmt(self, f)
4098    }
4099}
4100
4101impl ::protobuf::reflect::ProtobufValue for PlantInstance {
4102    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
4103}
4104
4105// @@protoc_insertion_point(message:RemoteFortressReader.MapBlock)
4106#[derive(PartialEq,Clone,Default,Debug)]
4107pub struct MapBlock {
4108    // message fields
4109    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.map_x)
4110    pub map_x: ::std::option::Option<i32>,
4111    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.map_y)
4112    pub map_y: ::std::option::Option<i32>,
4113    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.map_z)
4114    pub map_z: ::std::option::Option<i32>,
4115    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.tiles)
4116    pub tiles: ::std::vec::Vec<i32>,
4117    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.materials)
4118    pub materials: ::std::vec::Vec<MatPair>,
4119    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.layer_materials)
4120    pub layer_materials: ::std::vec::Vec<MatPair>,
4121    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.vein_materials)
4122    pub vein_materials: ::std::vec::Vec<MatPair>,
4123    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.base_materials)
4124    pub base_materials: ::std::vec::Vec<MatPair>,
4125    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.magma)
4126    pub magma: ::std::vec::Vec<i32>,
4127    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.water)
4128    pub water: ::std::vec::Vec<i32>,
4129    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.hidden)
4130    pub hidden: ::std::vec::Vec<bool>,
4131    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.light)
4132    pub light: ::std::vec::Vec<bool>,
4133    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.subterranean)
4134    pub subterranean: ::std::vec::Vec<bool>,
4135    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.outside)
4136    pub outside: ::std::vec::Vec<bool>,
4137    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.aquifer)
4138    pub aquifer: ::std::vec::Vec<bool>,
4139    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.water_stagnant)
4140    pub water_stagnant: ::std::vec::Vec<bool>,
4141    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.water_salt)
4142    pub water_salt: ::std::vec::Vec<bool>,
4143    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.construction_items)
4144    pub construction_items: ::std::vec::Vec<MatPair>,
4145    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.buildings)
4146    pub buildings: ::std::vec::Vec<BuildingInstance>,
4147    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.tree_percent)
4148    pub tree_percent: ::std::vec::Vec<i32>,
4149    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.tree_x)
4150    pub tree_x: ::std::vec::Vec<i32>,
4151    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.tree_y)
4152    pub tree_y: ::std::vec::Vec<i32>,
4153    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.tree_z)
4154    pub tree_z: ::std::vec::Vec<i32>,
4155    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.tile_dig_designation)
4156    pub tile_dig_designation: ::std::vec::Vec<::protobuf::EnumOrUnknown<TileDigDesignation>>,
4157    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.spatterPile)
4158    pub spatterPile: ::std::vec::Vec<SpatterPile>,
4159    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.items)
4160    pub items: ::std::vec::Vec<Item>,
4161    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.tile_dig_designation_marker)
4162    pub tile_dig_designation_marker: ::std::vec::Vec<bool>,
4163    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.tile_dig_designation_auto)
4164    pub tile_dig_designation_auto: ::std::vec::Vec<bool>,
4165    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.grass_percent)
4166    pub grass_percent: ::std::vec::Vec<i32>,
4167    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.flows)
4168    pub flows: ::std::vec::Vec<FlowInfo>,
4169    // special fields
4170    // @@protoc_insertion_point(special_field:RemoteFortressReader.MapBlock.special_fields)
4171    pub special_fields: ::protobuf::SpecialFields,
4172}
4173
4174impl<'a> ::std::default::Default for &'a MapBlock {
4175    fn default() -> &'a MapBlock {
4176        <MapBlock as ::protobuf::Message>::default_instance()
4177    }
4178}
4179
4180impl MapBlock {
4181    pub fn new() -> MapBlock {
4182        ::std::default::Default::default()
4183    }
4184
4185    // required int32 map_x = 1;
4186
4187    pub fn map_x(&self) -> i32 {
4188        self.map_x.unwrap_or(0)
4189    }
4190
4191    pub fn clear_map_x(&mut self) {
4192        self.map_x = ::std::option::Option::None;
4193    }
4194
4195    pub fn has_map_x(&self) -> bool {
4196        self.map_x.is_some()
4197    }
4198
4199    // Param is passed by value, moved
4200    pub fn set_map_x(&mut self, v: i32) {
4201        self.map_x = ::std::option::Option::Some(v);
4202    }
4203
4204    // required int32 map_y = 2;
4205
4206    pub fn map_y(&self) -> i32 {
4207        self.map_y.unwrap_or(0)
4208    }
4209
4210    pub fn clear_map_y(&mut self) {
4211        self.map_y = ::std::option::Option::None;
4212    }
4213
4214    pub fn has_map_y(&self) -> bool {
4215        self.map_y.is_some()
4216    }
4217
4218    // Param is passed by value, moved
4219    pub fn set_map_y(&mut self, v: i32) {
4220        self.map_y = ::std::option::Option::Some(v);
4221    }
4222
4223    // required int32 map_z = 3;
4224
4225    pub fn map_z(&self) -> i32 {
4226        self.map_z.unwrap_or(0)
4227    }
4228
4229    pub fn clear_map_z(&mut self) {
4230        self.map_z = ::std::option::Option::None;
4231    }
4232
4233    pub fn has_map_z(&self) -> bool {
4234        self.map_z.is_some()
4235    }
4236
4237    // Param is passed by value, moved
4238    pub fn set_map_z(&mut self, v: i32) {
4239        self.map_z = ::std::option::Option::Some(v);
4240    }
4241
4242    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
4243        let mut fields = ::std::vec::Vec::with_capacity(30);
4244        let mut oneofs = ::std::vec::Vec::with_capacity(0);
4245        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
4246            "map_x",
4247            |m: &MapBlock| { &m.map_x },
4248            |m: &mut MapBlock| { &mut m.map_x },
4249        ));
4250        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
4251            "map_y",
4252            |m: &MapBlock| { &m.map_y },
4253            |m: &mut MapBlock| { &mut m.map_y },
4254        ));
4255        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
4256            "map_z",
4257            |m: &MapBlock| { &m.map_z },
4258            |m: &mut MapBlock| { &mut m.map_z },
4259        ));
4260        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4261            "tiles",
4262            |m: &MapBlock| { &m.tiles },
4263            |m: &mut MapBlock| { &mut m.tiles },
4264        ));
4265        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4266            "materials",
4267            |m: &MapBlock| { &m.materials },
4268            |m: &mut MapBlock| { &mut m.materials },
4269        ));
4270        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4271            "layer_materials",
4272            |m: &MapBlock| { &m.layer_materials },
4273            |m: &mut MapBlock| { &mut m.layer_materials },
4274        ));
4275        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4276            "vein_materials",
4277            |m: &MapBlock| { &m.vein_materials },
4278            |m: &mut MapBlock| { &mut m.vein_materials },
4279        ));
4280        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4281            "base_materials",
4282            |m: &MapBlock| { &m.base_materials },
4283            |m: &mut MapBlock| { &mut m.base_materials },
4284        ));
4285        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4286            "magma",
4287            |m: &MapBlock| { &m.magma },
4288            |m: &mut MapBlock| { &mut m.magma },
4289        ));
4290        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4291            "water",
4292            |m: &MapBlock| { &m.water },
4293            |m: &mut MapBlock| { &mut m.water },
4294        ));
4295        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4296            "hidden",
4297            |m: &MapBlock| { &m.hidden },
4298            |m: &mut MapBlock| { &mut m.hidden },
4299        ));
4300        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4301            "light",
4302            |m: &MapBlock| { &m.light },
4303            |m: &mut MapBlock| { &mut m.light },
4304        ));
4305        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4306            "subterranean",
4307            |m: &MapBlock| { &m.subterranean },
4308            |m: &mut MapBlock| { &mut m.subterranean },
4309        ));
4310        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4311            "outside",
4312            |m: &MapBlock| { &m.outside },
4313            |m: &mut MapBlock| { &mut m.outside },
4314        ));
4315        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4316            "aquifer",
4317            |m: &MapBlock| { &m.aquifer },
4318            |m: &mut MapBlock| { &mut m.aquifer },
4319        ));
4320        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4321            "water_stagnant",
4322            |m: &MapBlock| { &m.water_stagnant },
4323            |m: &mut MapBlock| { &mut m.water_stagnant },
4324        ));
4325        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4326            "water_salt",
4327            |m: &MapBlock| { &m.water_salt },
4328            |m: &mut MapBlock| { &mut m.water_salt },
4329        ));
4330        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4331            "construction_items",
4332            |m: &MapBlock| { &m.construction_items },
4333            |m: &mut MapBlock| { &mut m.construction_items },
4334        ));
4335        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4336            "buildings",
4337            |m: &MapBlock| { &m.buildings },
4338            |m: &mut MapBlock| { &mut m.buildings },
4339        ));
4340        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4341            "tree_percent",
4342            |m: &MapBlock| { &m.tree_percent },
4343            |m: &mut MapBlock| { &mut m.tree_percent },
4344        ));
4345        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4346            "tree_x",
4347            |m: &MapBlock| { &m.tree_x },
4348            |m: &mut MapBlock| { &mut m.tree_x },
4349        ));
4350        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4351            "tree_y",
4352            |m: &MapBlock| { &m.tree_y },
4353            |m: &mut MapBlock| { &mut m.tree_y },
4354        ));
4355        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4356            "tree_z",
4357            |m: &MapBlock| { &m.tree_z },
4358            |m: &mut MapBlock| { &mut m.tree_z },
4359        ));
4360        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4361            "tile_dig_designation",
4362            |m: &MapBlock| { &m.tile_dig_designation },
4363            |m: &mut MapBlock| { &mut m.tile_dig_designation },
4364        ));
4365        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4366            "spatterPile",
4367            |m: &MapBlock| { &m.spatterPile },
4368            |m: &mut MapBlock| { &mut m.spatterPile },
4369        ));
4370        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4371            "items",
4372            |m: &MapBlock| { &m.items },
4373            |m: &mut MapBlock| { &mut m.items },
4374        ));
4375        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4376            "tile_dig_designation_marker",
4377            |m: &MapBlock| { &m.tile_dig_designation_marker },
4378            |m: &mut MapBlock| { &mut m.tile_dig_designation_marker },
4379        ));
4380        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4381            "tile_dig_designation_auto",
4382            |m: &MapBlock| { &m.tile_dig_designation_auto },
4383            |m: &mut MapBlock| { &mut m.tile_dig_designation_auto },
4384        ));
4385        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4386            "grass_percent",
4387            |m: &MapBlock| { &m.grass_percent },
4388            |m: &mut MapBlock| { &mut m.grass_percent },
4389        ));
4390        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4391            "flows",
4392            |m: &MapBlock| { &m.flows },
4393            |m: &mut MapBlock| { &mut m.flows },
4394        ));
4395        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<MapBlock>(
4396            "MapBlock",
4397            fields,
4398            oneofs,
4399        )
4400    }
4401}
4402
4403impl ::protobuf::Message for MapBlock {
4404    const NAME: &'static str = "MapBlock";
4405
4406    fn is_initialized(&self) -> bool {
4407        if self.map_x.is_none() {
4408            return false;
4409        }
4410        if self.map_y.is_none() {
4411            return false;
4412        }
4413        if self.map_z.is_none() {
4414            return false;
4415        }
4416        for v in &self.materials {
4417            if !v.is_initialized() {
4418                return false;
4419            }
4420        };
4421        for v in &self.layer_materials {
4422            if !v.is_initialized() {
4423                return false;
4424            }
4425        };
4426        for v in &self.vein_materials {
4427            if !v.is_initialized() {
4428                return false;
4429            }
4430        };
4431        for v in &self.base_materials {
4432            if !v.is_initialized() {
4433                return false;
4434            }
4435        };
4436        for v in &self.construction_items {
4437            if !v.is_initialized() {
4438                return false;
4439            }
4440        };
4441        for v in &self.buildings {
4442            if !v.is_initialized() {
4443                return false;
4444            }
4445        };
4446        for v in &self.spatterPile {
4447            if !v.is_initialized() {
4448                return false;
4449            }
4450        };
4451        for v in &self.items {
4452            if !v.is_initialized() {
4453                return false;
4454            }
4455        };
4456        for v in &self.flows {
4457            if !v.is_initialized() {
4458                return false;
4459            }
4460        };
4461        true
4462    }
4463
4464    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
4465        while let Some(tag) = is.read_raw_tag_or_eof()? {
4466            match tag {
4467                8 => {
4468                    self.map_x = ::std::option::Option::Some(is.read_int32()?);
4469                },
4470                16 => {
4471                    self.map_y = ::std::option::Option::Some(is.read_int32()?);
4472                },
4473                24 => {
4474                    self.map_z = ::std::option::Option::Some(is.read_int32()?);
4475                },
4476                34 => {
4477                    is.read_repeated_packed_int32_into(&mut self.tiles)?;
4478                },
4479                32 => {
4480                    self.tiles.push(is.read_int32()?);
4481                },
4482                42 => {
4483                    self.materials.push(is.read_message()?);
4484                },
4485                50 => {
4486                    self.layer_materials.push(is.read_message()?);
4487                },
4488                58 => {
4489                    self.vein_materials.push(is.read_message()?);
4490                },
4491                66 => {
4492                    self.base_materials.push(is.read_message()?);
4493                },
4494                74 => {
4495                    is.read_repeated_packed_int32_into(&mut self.magma)?;
4496                },
4497                72 => {
4498                    self.magma.push(is.read_int32()?);
4499                },
4500                82 => {
4501                    is.read_repeated_packed_int32_into(&mut self.water)?;
4502                },
4503                80 => {
4504                    self.water.push(is.read_int32()?);
4505                },
4506                90 => {
4507                    is.read_repeated_packed_bool_into(&mut self.hidden)?;
4508                },
4509                88 => {
4510                    self.hidden.push(is.read_bool()?);
4511                },
4512                98 => {
4513                    is.read_repeated_packed_bool_into(&mut self.light)?;
4514                },
4515                96 => {
4516                    self.light.push(is.read_bool()?);
4517                },
4518                106 => {
4519                    is.read_repeated_packed_bool_into(&mut self.subterranean)?;
4520                },
4521                104 => {
4522                    self.subterranean.push(is.read_bool()?);
4523                },
4524                114 => {
4525                    is.read_repeated_packed_bool_into(&mut self.outside)?;
4526                },
4527                112 => {
4528                    self.outside.push(is.read_bool()?);
4529                },
4530                122 => {
4531                    is.read_repeated_packed_bool_into(&mut self.aquifer)?;
4532                },
4533                120 => {
4534                    self.aquifer.push(is.read_bool()?);
4535                },
4536                130 => {
4537                    is.read_repeated_packed_bool_into(&mut self.water_stagnant)?;
4538                },
4539                128 => {
4540                    self.water_stagnant.push(is.read_bool()?);
4541                },
4542                138 => {
4543                    is.read_repeated_packed_bool_into(&mut self.water_salt)?;
4544                },
4545                136 => {
4546                    self.water_salt.push(is.read_bool()?);
4547                },
4548                146 => {
4549                    self.construction_items.push(is.read_message()?);
4550                },
4551                154 => {
4552                    self.buildings.push(is.read_message()?);
4553                },
4554                162 => {
4555                    is.read_repeated_packed_int32_into(&mut self.tree_percent)?;
4556                },
4557                160 => {
4558                    self.tree_percent.push(is.read_int32()?);
4559                },
4560                170 => {
4561                    is.read_repeated_packed_int32_into(&mut self.tree_x)?;
4562                },
4563                168 => {
4564                    self.tree_x.push(is.read_int32()?);
4565                },
4566                178 => {
4567                    is.read_repeated_packed_int32_into(&mut self.tree_y)?;
4568                },
4569                176 => {
4570                    self.tree_y.push(is.read_int32()?);
4571                },
4572                186 => {
4573                    is.read_repeated_packed_int32_into(&mut self.tree_z)?;
4574                },
4575                184 => {
4576                    self.tree_z.push(is.read_int32()?);
4577                },
4578                192 => {
4579                    self.tile_dig_designation.push(is.read_enum_or_unknown()?);
4580                },
4581                194 => {
4582                    ::protobuf::rt::read_repeated_packed_enum_or_unknown_into(is, &mut self.tile_dig_designation)?
4583                },
4584                202 => {
4585                    self.spatterPile.push(is.read_message()?);
4586                },
4587                210 => {
4588                    self.items.push(is.read_message()?);
4589                },
4590                218 => {
4591                    is.read_repeated_packed_bool_into(&mut self.tile_dig_designation_marker)?;
4592                },
4593                216 => {
4594                    self.tile_dig_designation_marker.push(is.read_bool()?);
4595                },
4596                226 => {
4597                    is.read_repeated_packed_bool_into(&mut self.tile_dig_designation_auto)?;
4598                },
4599                224 => {
4600                    self.tile_dig_designation_auto.push(is.read_bool()?);
4601                },
4602                234 => {
4603                    is.read_repeated_packed_int32_into(&mut self.grass_percent)?;
4604                },
4605                232 => {
4606                    self.grass_percent.push(is.read_int32()?);
4607                },
4608                242 => {
4609                    self.flows.push(is.read_message()?);
4610                },
4611                tag => {
4612                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
4613                },
4614            };
4615        }
4616        ::std::result::Result::Ok(())
4617    }
4618
4619    // Compute sizes of nested messages
4620    #[allow(unused_variables)]
4621    fn compute_size(&self) -> u64 {
4622        let mut my_size = 0;
4623        if let Some(v) = self.map_x {
4624            my_size += ::protobuf::rt::int32_size(1, v);
4625        }
4626        if let Some(v) = self.map_y {
4627            my_size += ::protobuf::rt::int32_size(2, v);
4628        }
4629        if let Some(v) = self.map_z {
4630            my_size += ::protobuf::rt::int32_size(3, v);
4631        }
4632        for value in &self.tiles {
4633            my_size += ::protobuf::rt::int32_size(4, *value);
4634        };
4635        for value in &self.materials {
4636            let len = value.compute_size();
4637            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4638        };
4639        for value in &self.layer_materials {
4640            let len = value.compute_size();
4641            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4642        };
4643        for value in &self.vein_materials {
4644            let len = value.compute_size();
4645            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4646        };
4647        for value in &self.base_materials {
4648            let len = value.compute_size();
4649            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4650        };
4651        for value in &self.magma {
4652            my_size += ::protobuf::rt::int32_size(9, *value);
4653        };
4654        for value in &self.water {
4655            my_size += ::protobuf::rt::int32_size(10, *value);
4656        };
4657        my_size += 2 * self.hidden.len() as u64;
4658        my_size += 2 * self.light.len() as u64;
4659        my_size += 2 * self.subterranean.len() as u64;
4660        my_size += 2 * self.outside.len() as u64;
4661        my_size += 2 * self.aquifer.len() as u64;
4662        my_size += 3 * self.water_stagnant.len() as u64;
4663        my_size += 3 * self.water_salt.len() as u64;
4664        for value in &self.construction_items {
4665            let len = value.compute_size();
4666            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4667        };
4668        for value in &self.buildings {
4669            let len = value.compute_size();
4670            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4671        };
4672        for value in &self.tree_percent {
4673            my_size += ::protobuf::rt::int32_size(20, *value);
4674        };
4675        for value in &self.tree_x {
4676            my_size += ::protobuf::rt::int32_size(21, *value);
4677        };
4678        for value in &self.tree_y {
4679            my_size += ::protobuf::rt::int32_size(22, *value);
4680        };
4681        for value in &self.tree_z {
4682            my_size += ::protobuf::rt::int32_size(23, *value);
4683        };
4684        for value in &self.tile_dig_designation {
4685            my_size += ::protobuf::rt::int32_size(24, value.value());
4686        };
4687        for value in &self.spatterPile {
4688            let len = value.compute_size();
4689            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4690        };
4691        for value in &self.items {
4692            let len = value.compute_size();
4693            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4694        };
4695        my_size += 3 * self.tile_dig_designation_marker.len() as u64;
4696        my_size += 3 * self.tile_dig_designation_auto.len() as u64;
4697        for value in &self.grass_percent {
4698            my_size += ::protobuf::rt::int32_size(29, *value);
4699        };
4700        for value in &self.flows {
4701            let len = value.compute_size();
4702            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4703        };
4704        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
4705        self.special_fields.cached_size().set(my_size as u32);
4706        my_size
4707    }
4708
4709    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
4710        if let Some(v) = self.map_x {
4711            os.write_int32(1, v)?;
4712        }
4713        if let Some(v) = self.map_y {
4714            os.write_int32(2, v)?;
4715        }
4716        if let Some(v) = self.map_z {
4717            os.write_int32(3, v)?;
4718        }
4719        for v in &self.tiles {
4720            os.write_int32(4, *v)?;
4721        };
4722        for v in &self.materials {
4723            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
4724        };
4725        for v in &self.layer_materials {
4726            ::protobuf::rt::write_message_field_with_cached_size(6, v, os)?;
4727        };
4728        for v in &self.vein_materials {
4729            ::protobuf::rt::write_message_field_with_cached_size(7, v, os)?;
4730        };
4731        for v in &self.base_materials {
4732            ::protobuf::rt::write_message_field_with_cached_size(8, v, os)?;
4733        };
4734        for v in &self.magma {
4735            os.write_int32(9, *v)?;
4736        };
4737        for v in &self.water {
4738            os.write_int32(10, *v)?;
4739        };
4740        for v in &self.hidden {
4741            os.write_bool(11, *v)?;
4742        };
4743        for v in &self.light {
4744            os.write_bool(12, *v)?;
4745        };
4746        for v in &self.subterranean {
4747            os.write_bool(13, *v)?;
4748        };
4749        for v in &self.outside {
4750            os.write_bool(14, *v)?;
4751        };
4752        for v in &self.aquifer {
4753            os.write_bool(15, *v)?;
4754        };
4755        for v in &self.water_stagnant {
4756            os.write_bool(16, *v)?;
4757        };
4758        for v in &self.water_salt {
4759            os.write_bool(17, *v)?;
4760        };
4761        for v in &self.construction_items {
4762            ::protobuf::rt::write_message_field_with_cached_size(18, v, os)?;
4763        };
4764        for v in &self.buildings {
4765            ::protobuf::rt::write_message_field_with_cached_size(19, v, os)?;
4766        };
4767        for v in &self.tree_percent {
4768            os.write_int32(20, *v)?;
4769        };
4770        for v in &self.tree_x {
4771            os.write_int32(21, *v)?;
4772        };
4773        for v in &self.tree_y {
4774            os.write_int32(22, *v)?;
4775        };
4776        for v in &self.tree_z {
4777            os.write_int32(23, *v)?;
4778        };
4779        for v in &self.tile_dig_designation {
4780            os.write_enum(24, ::protobuf::EnumOrUnknown::value(v))?;
4781        };
4782        for v in &self.spatterPile {
4783            ::protobuf::rt::write_message_field_with_cached_size(25, v, os)?;
4784        };
4785        for v in &self.items {
4786            ::protobuf::rt::write_message_field_with_cached_size(26, v, os)?;
4787        };
4788        for v in &self.tile_dig_designation_marker {
4789            os.write_bool(27, *v)?;
4790        };
4791        for v in &self.tile_dig_designation_auto {
4792            os.write_bool(28, *v)?;
4793        };
4794        for v in &self.grass_percent {
4795            os.write_int32(29, *v)?;
4796        };
4797        for v in &self.flows {
4798            ::protobuf::rt::write_message_field_with_cached_size(30, v, os)?;
4799        };
4800        os.write_unknown_fields(self.special_fields.unknown_fields())?;
4801        ::std::result::Result::Ok(())
4802    }
4803
4804    fn special_fields(&self) -> &::protobuf::SpecialFields {
4805        &self.special_fields
4806    }
4807
4808    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
4809        &mut self.special_fields
4810    }
4811
4812    fn new() -> MapBlock {
4813        MapBlock::new()
4814    }
4815
4816    fn clear(&mut self) {
4817        self.map_x = ::std::option::Option::None;
4818        self.map_y = ::std::option::Option::None;
4819        self.map_z = ::std::option::Option::None;
4820        self.tiles.clear();
4821        self.materials.clear();
4822        self.layer_materials.clear();
4823        self.vein_materials.clear();
4824        self.base_materials.clear();
4825        self.magma.clear();
4826        self.water.clear();
4827        self.hidden.clear();
4828        self.light.clear();
4829        self.subterranean.clear();
4830        self.outside.clear();
4831        self.aquifer.clear();
4832        self.water_stagnant.clear();
4833        self.water_salt.clear();
4834        self.construction_items.clear();
4835        self.buildings.clear();
4836        self.tree_percent.clear();
4837        self.tree_x.clear();
4838        self.tree_y.clear();
4839        self.tree_z.clear();
4840        self.tile_dig_designation.clear();
4841        self.spatterPile.clear();
4842        self.items.clear();
4843        self.tile_dig_designation_marker.clear();
4844        self.tile_dig_designation_auto.clear();
4845        self.grass_percent.clear();
4846        self.flows.clear();
4847        self.special_fields.clear();
4848    }
4849
4850    fn default_instance() -> &'static MapBlock {
4851        static instance: MapBlock = MapBlock {
4852            map_x: ::std::option::Option::None,
4853            map_y: ::std::option::Option::None,
4854            map_z: ::std::option::Option::None,
4855            tiles: ::std::vec::Vec::new(),
4856            materials: ::std::vec::Vec::new(),
4857            layer_materials: ::std::vec::Vec::new(),
4858            vein_materials: ::std::vec::Vec::new(),
4859            base_materials: ::std::vec::Vec::new(),
4860            magma: ::std::vec::Vec::new(),
4861            water: ::std::vec::Vec::new(),
4862            hidden: ::std::vec::Vec::new(),
4863            light: ::std::vec::Vec::new(),
4864            subterranean: ::std::vec::Vec::new(),
4865            outside: ::std::vec::Vec::new(),
4866            aquifer: ::std::vec::Vec::new(),
4867            water_stagnant: ::std::vec::Vec::new(),
4868            water_salt: ::std::vec::Vec::new(),
4869            construction_items: ::std::vec::Vec::new(),
4870            buildings: ::std::vec::Vec::new(),
4871            tree_percent: ::std::vec::Vec::new(),
4872            tree_x: ::std::vec::Vec::new(),
4873            tree_y: ::std::vec::Vec::new(),
4874            tree_z: ::std::vec::Vec::new(),
4875            tile_dig_designation: ::std::vec::Vec::new(),
4876            spatterPile: ::std::vec::Vec::new(),
4877            items: ::std::vec::Vec::new(),
4878            tile_dig_designation_marker: ::std::vec::Vec::new(),
4879            tile_dig_designation_auto: ::std::vec::Vec::new(),
4880            grass_percent: ::std::vec::Vec::new(),
4881            flows: ::std::vec::Vec::new(),
4882            special_fields: ::protobuf::SpecialFields::new(),
4883        };
4884        &instance
4885    }
4886}
4887
4888impl ::protobuf::MessageFull for MapBlock {
4889    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
4890        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
4891        descriptor.get(|| file_descriptor().message_by_package_relative_name("MapBlock").unwrap()).clone()
4892    }
4893}
4894
4895impl ::std::fmt::Display for MapBlock {
4896    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4897        ::protobuf::text_format::fmt(self, f)
4898    }
4899}
4900
4901impl ::protobuf::reflect::ProtobufValue for MapBlock {
4902    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
4903}
4904
4905#[derive(Hash, Eq)]
4906// @@protoc_insertion_point(message:RemoteFortressReader.MatPair)
4907#[derive(PartialEq,Clone,Default,Debug)]
4908pub struct MatPair {
4909    // message fields
4910    // @@protoc_insertion_point(field:RemoteFortressReader.MatPair.mat_type)
4911    pub mat_type: ::std::option::Option<i32>,
4912    // @@protoc_insertion_point(field:RemoteFortressReader.MatPair.mat_index)
4913    pub mat_index: ::std::option::Option<i32>,
4914    // special fields
4915    // @@protoc_insertion_point(special_field:RemoteFortressReader.MatPair.special_fields)
4916    pub special_fields: ::protobuf::SpecialFields,
4917}
4918
4919impl<'a> ::std::default::Default for &'a MatPair {
4920    fn default() -> &'a MatPair {
4921        <MatPair as ::protobuf::Message>::default_instance()
4922    }
4923}
4924
4925impl MatPair {
4926    pub fn new() -> MatPair {
4927        ::std::default::Default::default()
4928    }
4929
4930    // required int32 mat_type = 1;
4931
4932    pub fn mat_type(&self) -> i32 {
4933        self.mat_type.unwrap_or(0)
4934    }
4935
4936    pub fn clear_mat_type(&mut self) {
4937        self.mat_type = ::std::option::Option::None;
4938    }
4939
4940    pub fn has_mat_type(&self) -> bool {
4941        self.mat_type.is_some()
4942    }
4943
4944    // Param is passed by value, moved
4945    pub fn set_mat_type(&mut self, v: i32) {
4946        self.mat_type = ::std::option::Option::Some(v);
4947    }
4948
4949    // required int32 mat_index = 2;
4950
4951    pub fn mat_index(&self) -> i32 {
4952        self.mat_index.unwrap_or(0)
4953    }
4954
4955    pub fn clear_mat_index(&mut self) {
4956        self.mat_index = ::std::option::Option::None;
4957    }
4958
4959    pub fn has_mat_index(&self) -> bool {
4960        self.mat_index.is_some()
4961    }
4962
4963    // Param is passed by value, moved
4964    pub fn set_mat_index(&mut self, v: i32) {
4965        self.mat_index = ::std::option::Option::Some(v);
4966    }
4967
4968    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
4969        let mut fields = ::std::vec::Vec::with_capacity(2);
4970        let mut oneofs = ::std::vec::Vec::with_capacity(0);
4971        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
4972            "mat_type",
4973            |m: &MatPair| { &m.mat_type },
4974            |m: &mut MatPair| { &mut m.mat_type },
4975        ));
4976        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
4977            "mat_index",
4978            |m: &MatPair| { &m.mat_index },
4979            |m: &mut MatPair| { &mut m.mat_index },
4980        ));
4981        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<MatPair>(
4982            "MatPair",
4983            fields,
4984            oneofs,
4985        )
4986    }
4987}
4988
4989impl ::protobuf::Message for MatPair {
4990    const NAME: &'static str = "MatPair";
4991
4992    fn is_initialized(&self) -> bool {
4993        if self.mat_type.is_none() {
4994            return false;
4995        }
4996        if self.mat_index.is_none() {
4997            return false;
4998        }
4999        true
5000    }
5001
5002    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
5003        while let Some(tag) = is.read_raw_tag_or_eof()? {
5004            match tag {
5005                8 => {
5006                    self.mat_type = ::std::option::Option::Some(is.read_int32()?);
5007                },
5008                16 => {
5009                    self.mat_index = ::std::option::Option::Some(is.read_int32()?);
5010                },
5011                tag => {
5012                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
5013                },
5014            };
5015        }
5016        ::std::result::Result::Ok(())
5017    }
5018
5019    // Compute sizes of nested messages
5020    #[allow(unused_variables)]
5021    fn compute_size(&self) -> u64 {
5022        let mut my_size = 0;
5023        if let Some(v) = self.mat_type {
5024            my_size += ::protobuf::rt::int32_size(1, v);
5025        }
5026        if let Some(v) = self.mat_index {
5027            my_size += ::protobuf::rt::int32_size(2, v);
5028        }
5029        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
5030        self.special_fields.cached_size().set(my_size as u32);
5031        my_size
5032    }
5033
5034    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
5035        if let Some(v) = self.mat_type {
5036            os.write_int32(1, v)?;
5037        }
5038        if let Some(v) = self.mat_index {
5039            os.write_int32(2, v)?;
5040        }
5041        os.write_unknown_fields(self.special_fields.unknown_fields())?;
5042        ::std::result::Result::Ok(())
5043    }
5044
5045    fn special_fields(&self) -> &::protobuf::SpecialFields {
5046        &self.special_fields
5047    }
5048
5049    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
5050        &mut self.special_fields
5051    }
5052
5053    fn new() -> MatPair {
5054        MatPair::new()
5055    }
5056
5057    fn clear(&mut self) {
5058        self.mat_type = ::std::option::Option::None;
5059        self.mat_index = ::std::option::Option::None;
5060        self.special_fields.clear();
5061    }
5062
5063    fn default_instance() -> &'static MatPair {
5064        static instance: MatPair = MatPair {
5065            mat_type: ::std::option::Option::None,
5066            mat_index: ::std::option::Option::None,
5067            special_fields: ::protobuf::SpecialFields::new(),
5068        };
5069        &instance
5070    }
5071}
5072
5073impl ::protobuf::MessageFull for MatPair {
5074    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
5075        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
5076        descriptor.get(|| file_descriptor().message_by_package_relative_name("MatPair").unwrap()).clone()
5077    }
5078}
5079
5080impl ::std::fmt::Display for MatPair {
5081    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5082        ::protobuf::text_format::fmt(self, f)
5083    }
5084}
5085
5086impl ::protobuf::reflect::ProtobufValue for MatPair {
5087    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
5088}
5089
5090// @@protoc_insertion_point(message:RemoteFortressReader.ColorDefinition)
5091#[derive(PartialEq,Clone,Default,Debug)]
5092pub struct ColorDefinition {
5093    // message fields
5094    // @@protoc_insertion_point(field:RemoteFortressReader.ColorDefinition.red)
5095    pub red: ::std::option::Option<i32>,
5096    // @@protoc_insertion_point(field:RemoteFortressReader.ColorDefinition.green)
5097    pub green: ::std::option::Option<i32>,
5098    // @@protoc_insertion_point(field:RemoteFortressReader.ColorDefinition.blue)
5099    pub blue: ::std::option::Option<i32>,
5100    // special fields
5101    // @@protoc_insertion_point(special_field:RemoteFortressReader.ColorDefinition.special_fields)
5102    pub special_fields: ::protobuf::SpecialFields,
5103}
5104
5105impl<'a> ::std::default::Default for &'a ColorDefinition {
5106    fn default() -> &'a ColorDefinition {
5107        <ColorDefinition as ::protobuf::Message>::default_instance()
5108    }
5109}
5110
5111impl ColorDefinition {
5112    pub fn new() -> ColorDefinition {
5113        ::std::default::Default::default()
5114    }
5115
5116    // required int32 red = 1;
5117
5118    pub fn red(&self) -> i32 {
5119        self.red.unwrap_or(0)
5120    }
5121
5122    pub fn clear_red(&mut self) {
5123        self.red = ::std::option::Option::None;
5124    }
5125
5126    pub fn has_red(&self) -> bool {
5127        self.red.is_some()
5128    }
5129
5130    // Param is passed by value, moved
5131    pub fn set_red(&mut self, v: i32) {
5132        self.red = ::std::option::Option::Some(v);
5133    }
5134
5135    // required int32 green = 2;
5136
5137    pub fn green(&self) -> i32 {
5138        self.green.unwrap_or(0)
5139    }
5140
5141    pub fn clear_green(&mut self) {
5142        self.green = ::std::option::Option::None;
5143    }
5144
5145    pub fn has_green(&self) -> bool {
5146        self.green.is_some()
5147    }
5148
5149    // Param is passed by value, moved
5150    pub fn set_green(&mut self, v: i32) {
5151        self.green = ::std::option::Option::Some(v);
5152    }
5153
5154    // required int32 blue = 3;
5155
5156    pub fn blue(&self) -> i32 {
5157        self.blue.unwrap_or(0)
5158    }
5159
5160    pub fn clear_blue(&mut self) {
5161        self.blue = ::std::option::Option::None;
5162    }
5163
5164    pub fn has_blue(&self) -> bool {
5165        self.blue.is_some()
5166    }
5167
5168    // Param is passed by value, moved
5169    pub fn set_blue(&mut self, v: i32) {
5170        self.blue = ::std::option::Option::Some(v);
5171    }
5172
5173    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
5174        let mut fields = ::std::vec::Vec::with_capacity(3);
5175        let mut oneofs = ::std::vec::Vec::with_capacity(0);
5176        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5177            "red",
5178            |m: &ColorDefinition| { &m.red },
5179            |m: &mut ColorDefinition| { &mut m.red },
5180        ));
5181        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5182            "green",
5183            |m: &ColorDefinition| { &m.green },
5184            |m: &mut ColorDefinition| { &mut m.green },
5185        ));
5186        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5187            "blue",
5188            |m: &ColorDefinition| { &m.blue },
5189            |m: &mut ColorDefinition| { &mut m.blue },
5190        ));
5191        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ColorDefinition>(
5192            "ColorDefinition",
5193            fields,
5194            oneofs,
5195        )
5196    }
5197}
5198
5199impl ::protobuf::Message for ColorDefinition {
5200    const NAME: &'static str = "ColorDefinition";
5201
5202    fn is_initialized(&self) -> bool {
5203        if self.red.is_none() {
5204            return false;
5205        }
5206        if self.green.is_none() {
5207            return false;
5208        }
5209        if self.blue.is_none() {
5210            return false;
5211        }
5212        true
5213    }
5214
5215    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
5216        while let Some(tag) = is.read_raw_tag_or_eof()? {
5217            match tag {
5218                8 => {
5219                    self.red = ::std::option::Option::Some(is.read_int32()?);
5220                },
5221                16 => {
5222                    self.green = ::std::option::Option::Some(is.read_int32()?);
5223                },
5224                24 => {
5225                    self.blue = ::std::option::Option::Some(is.read_int32()?);
5226                },
5227                tag => {
5228                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
5229                },
5230            };
5231        }
5232        ::std::result::Result::Ok(())
5233    }
5234
5235    // Compute sizes of nested messages
5236    #[allow(unused_variables)]
5237    fn compute_size(&self) -> u64 {
5238        let mut my_size = 0;
5239        if let Some(v) = self.red {
5240            my_size += ::protobuf::rt::int32_size(1, v);
5241        }
5242        if let Some(v) = self.green {
5243            my_size += ::protobuf::rt::int32_size(2, v);
5244        }
5245        if let Some(v) = self.blue {
5246            my_size += ::protobuf::rt::int32_size(3, v);
5247        }
5248        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
5249        self.special_fields.cached_size().set(my_size as u32);
5250        my_size
5251    }
5252
5253    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
5254        if let Some(v) = self.red {
5255            os.write_int32(1, v)?;
5256        }
5257        if let Some(v) = self.green {
5258            os.write_int32(2, v)?;
5259        }
5260        if let Some(v) = self.blue {
5261            os.write_int32(3, v)?;
5262        }
5263        os.write_unknown_fields(self.special_fields.unknown_fields())?;
5264        ::std::result::Result::Ok(())
5265    }
5266
5267    fn special_fields(&self) -> &::protobuf::SpecialFields {
5268        &self.special_fields
5269    }
5270
5271    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
5272        &mut self.special_fields
5273    }
5274
5275    fn new() -> ColorDefinition {
5276        ColorDefinition::new()
5277    }
5278
5279    fn clear(&mut self) {
5280        self.red = ::std::option::Option::None;
5281        self.green = ::std::option::Option::None;
5282        self.blue = ::std::option::Option::None;
5283        self.special_fields.clear();
5284    }
5285
5286    fn default_instance() -> &'static ColorDefinition {
5287        static instance: ColorDefinition = ColorDefinition {
5288            red: ::std::option::Option::None,
5289            green: ::std::option::Option::None,
5290            blue: ::std::option::Option::None,
5291            special_fields: ::protobuf::SpecialFields::new(),
5292        };
5293        &instance
5294    }
5295}
5296
5297impl ::protobuf::MessageFull for ColorDefinition {
5298    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
5299        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
5300        descriptor.get(|| file_descriptor().message_by_package_relative_name("ColorDefinition").unwrap()).clone()
5301    }
5302}
5303
5304impl ::std::fmt::Display for ColorDefinition {
5305    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5306        ::protobuf::text_format::fmt(self, f)
5307    }
5308}
5309
5310impl ::protobuf::reflect::ProtobufValue for ColorDefinition {
5311    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
5312}
5313
5314// @@protoc_insertion_point(message:RemoteFortressReader.MaterialDefinition)
5315#[derive(PartialEq,Clone,Default,Debug)]
5316pub struct MaterialDefinition {
5317    // message fields
5318    // @@protoc_insertion_point(field:RemoteFortressReader.MaterialDefinition.mat_pair)
5319    pub mat_pair: ::protobuf::MessageField<MatPair>,
5320    // @@protoc_insertion_point(field:RemoteFortressReader.MaterialDefinition.id)
5321    pub id: ::std::option::Option<::std::string::String>,
5322    // @@protoc_insertion_point(field:RemoteFortressReader.MaterialDefinition.name)
5323    pub name: ::std::option::Option<::std::vec::Vec<u8>>,
5324    // @@protoc_insertion_point(field:RemoteFortressReader.MaterialDefinition.state_color)
5325    pub state_color: ::protobuf::MessageField<ColorDefinition>,
5326    // @@protoc_insertion_point(field:RemoteFortressReader.MaterialDefinition.instrument)
5327    pub instrument: ::protobuf::MessageField<super::ItemdefInstrument::InstrumentDef>,
5328    // @@protoc_insertion_point(field:RemoteFortressReader.MaterialDefinition.up_step)
5329    pub up_step: ::std::option::Option<i32>,
5330    // @@protoc_insertion_point(field:RemoteFortressReader.MaterialDefinition.down_step)
5331    pub down_step: ::std::option::Option<i32>,
5332    // @@protoc_insertion_point(field:RemoteFortressReader.MaterialDefinition.layer)
5333    pub layer: ::std::option::Option<::protobuf::EnumOrUnknown<ArmorLayer>>,
5334    // special fields
5335    // @@protoc_insertion_point(special_field:RemoteFortressReader.MaterialDefinition.special_fields)
5336    pub special_fields: ::protobuf::SpecialFields,
5337}
5338
5339impl<'a> ::std::default::Default for &'a MaterialDefinition {
5340    fn default() -> &'a MaterialDefinition {
5341        <MaterialDefinition as ::protobuf::Message>::default_instance()
5342    }
5343}
5344
5345impl MaterialDefinition {
5346    pub fn new() -> MaterialDefinition {
5347        ::std::default::Default::default()
5348    }
5349
5350    // optional string id = 2;
5351
5352    pub fn id(&self) -> &str {
5353        match self.id.as_ref() {
5354            Some(v) => v,
5355            None => "",
5356        }
5357    }
5358
5359    pub fn clear_id(&mut self) {
5360        self.id = ::std::option::Option::None;
5361    }
5362
5363    pub fn has_id(&self) -> bool {
5364        self.id.is_some()
5365    }
5366
5367    // Param is passed by value, moved
5368    pub fn set_id(&mut self, v: ::std::string::String) {
5369        self.id = ::std::option::Option::Some(v);
5370    }
5371
5372    // Mutable pointer to the field.
5373    // If field is not initialized, it is initialized with default value first.
5374    pub fn mut_id(&mut self) -> &mut ::std::string::String {
5375        if self.id.is_none() {
5376            self.id = ::std::option::Option::Some(::std::string::String::new());
5377        }
5378        self.id.as_mut().unwrap()
5379    }
5380
5381    // Take field
5382    pub fn take_id(&mut self) -> ::std::string::String {
5383        self.id.take().unwrap_or_else(|| ::std::string::String::new())
5384    }
5385
5386    // optional bytes name = 3;
5387
5388    pub fn name(&self) -> &[u8] {
5389        match self.name.as_ref() {
5390            Some(v) => v,
5391            None => &[],
5392        }
5393    }
5394
5395    pub fn clear_name(&mut self) {
5396        self.name = ::std::option::Option::None;
5397    }
5398
5399    pub fn has_name(&self) -> bool {
5400        self.name.is_some()
5401    }
5402
5403    // Param is passed by value, moved
5404    pub fn set_name(&mut self, v: ::std::vec::Vec<u8>) {
5405        self.name = ::std::option::Option::Some(v);
5406    }
5407
5408    // Mutable pointer to the field.
5409    // If field is not initialized, it is initialized with default value first.
5410    pub fn mut_name(&mut self) -> &mut ::std::vec::Vec<u8> {
5411        if self.name.is_none() {
5412            self.name = ::std::option::Option::Some(::std::vec::Vec::new());
5413        }
5414        self.name.as_mut().unwrap()
5415    }
5416
5417    // Take field
5418    pub fn take_name(&mut self) -> ::std::vec::Vec<u8> {
5419        self.name.take().unwrap_or_else(|| ::std::vec::Vec::new())
5420    }
5421
5422    // optional int32 up_step = 6;
5423
5424    pub fn up_step(&self) -> i32 {
5425        self.up_step.unwrap_or(0)
5426    }
5427
5428    pub fn clear_up_step(&mut self) {
5429        self.up_step = ::std::option::Option::None;
5430    }
5431
5432    pub fn has_up_step(&self) -> bool {
5433        self.up_step.is_some()
5434    }
5435
5436    // Param is passed by value, moved
5437    pub fn set_up_step(&mut self, v: i32) {
5438        self.up_step = ::std::option::Option::Some(v);
5439    }
5440
5441    // optional int32 down_step = 7;
5442
5443    pub fn down_step(&self) -> i32 {
5444        self.down_step.unwrap_or(0)
5445    }
5446
5447    pub fn clear_down_step(&mut self) {
5448        self.down_step = ::std::option::Option::None;
5449    }
5450
5451    pub fn has_down_step(&self) -> bool {
5452        self.down_step.is_some()
5453    }
5454
5455    // Param is passed by value, moved
5456    pub fn set_down_step(&mut self, v: i32) {
5457        self.down_step = ::std::option::Option::Some(v);
5458    }
5459
5460    // optional .RemoteFortressReader.ArmorLayer layer = 8;
5461
5462    pub fn layer(&self) -> ArmorLayer {
5463        match self.layer {
5464            Some(e) => e.enum_value_or(ArmorLayer::LAYER_UNDER),
5465            None => ArmorLayer::LAYER_UNDER,
5466        }
5467    }
5468
5469    pub fn clear_layer(&mut self) {
5470        self.layer = ::std::option::Option::None;
5471    }
5472
5473    pub fn has_layer(&self) -> bool {
5474        self.layer.is_some()
5475    }
5476
5477    // Param is passed by value, moved
5478    pub fn set_layer(&mut self, v: ArmorLayer) {
5479        self.layer = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
5480    }
5481
5482    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
5483        let mut fields = ::std::vec::Vec::with_capacity(8);
5484        let mut oneofs = ::std::vec::Vec::with_capacity(0);
5485        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
5486            "mat_pair",
5487            |m: &MaterialDefinition| { &m.mat_pair },
5488            |m: &mut MaterialDefinition| { &mut m.mat_pair },
5489        ));
5490        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5491            "id",
5492            |m: &MaterialDefinition| { &m.id },
5493            |m: &mut MaterialDefinition| { &mut m.id },
5494        ));
5495        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5496            "name",
5497            |m: &MaterialDefinition| { &m.name },
5498            |m: &mut MaterialDefinition| { &mut m.name },
5499        ));
5500        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ColorDefinition>(
5501            "state_color",
5502            |m: &MaterialDefinition| { &m.state_color },
5503            |m: &mut MaterialDefinition| { &mut m.state_color },
5504        ));
5505        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, super::ItemdefInstrument::InstrumentDef>(
5506            "instrument",
5507            |m: &MaterialDefinition| { &m.instrument },
5508            |m: &mut MaterialDefinition| { &mut m.instrument },
5509        ));
5510        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5511            "up_step",
5512            |m: &MaterialDefinition| { &m.up_step },
5513            |m: &mut MaterialDefinition| { &mut m.up_step },
5514        ));
5515        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5516            "down_step",
5517            |m: &MaterialDefinition| { &m.down_step },
5518            |m: &mut MaterialDefinition| { &mut m.down_step },
5519        ));
5520        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5521            "layer",
5522            |m: &MaterialDefinition| { &m.layer },
5523            |m: &mut MaterialDefinition| { &mut m.layer },
5524        ));
5525        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<MaterialDefinition>(
5526            "MaterialDefinition",
5527            fields,
5528            oneofs,
5529        )
5530    }
5531}
5532
5533impl ::protobuf::Message for MaterialDefinition {
5534    const NAME: &'static str = "MaterialDefinition";
5535
5536    fn is_initialized(&self) -> bool {
5537        if self.mat_pair.is_none() {
5538            return false;
5539        }
5540        for v in &self.mat_pair {
5541            if !v.is_initialized() {
5542                return false;
5543            }
5544        };
5545        for v in &self.state_color {
5546            if !v.is_initialized() {
5547                return false;
5548            }
5549        };
5550        for v in &self.instrument {
5551            if !v.is_initialized() {
5552                return false;
5553            }
5554        };
5555        true
5556    }
5557
5558    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
5559        while let Some(tag) = is.read_raw_tag_or_eof()? {
5560            match tag {
5561                10 => {
5562                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.mat_pair)?;
5563                },
5564                18 => {
5565                    self.id = ::std::option::Option::Some(is.read_string()?);
5566                },
5567                26 => {
5568                    self.name = ::std::option::Option::Some(is.read_bytes()?);
5569                },
5570                34 => {
5571                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.state_color)?;
5572                },
5573                42 => {
5574                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.instrument)?;
5575                },
5576                48 => {
5577                    self.up_step = ::std::option::Option::Some(is.read_int32()?);
5578                },
5579                56 => {
5580                    self.down_step = ::std::option::Option::Some(is.read_int32()?);
5581                },
5582                64 => {
5583                    self.layer = ::std::option::Option::Some(is.read_enum_or_unknown()?);
5584                },
5585                tag => {
5586                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
5587                },
5588            };
5589        }
5590        ::std::result::Result::Ok(())
5591    }
5592
5593    // Compute sizes of nested messages
5594    #[allow(unused_variables)]
5595    fn compute_size(&self) -> u64 {
5596        let mut my_size = 0;
5597        if let Some(v) = self.mat_pair.as_ref() {
5598            let len = v.compute_size();
5599            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
5600        }
5601        if let Some(v) = self.id.as_ref() {
5602            my_size += ::protobuf::rt::string_size(2, &v);
5603        }
5604        if let Some(v) = self.name.as_ref() {
5605            my_size += ::protobuf::rt::bytes_size(3, &v);
5606        }
5607        if let Some(v) = self.state_color.as_ref() {
5608            let len = v.compute_size();
5609            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
5610        }
5611        if let Some(v) = self.instrument.as_ref() {
5612            let len = v.compute_size();
5613            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
5614        }
5615        if let Some(v) = self.up_step {
5616            my_size += ::protobuf::rt::int32_size(6, v);
5617        }
5618        if let Some(v) = self.down_step {
5619            my_size += ::protobuf::rt::int32_size(7, v);
5620        }
5621        if let Some(v) = self.layer {
5622            my_size += ::protobuf::rt::int32_size(8, v.value());
5623        }
5624        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
5625        self.special_fields.cached_size().set(my_size as u32);
5626        my_size
5627    }
5628
5629    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
5630        if let Some(v) = self.mat_pair.as_ref() {
5631            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
5632        }
5633        if let Some(v) = self.id.as_ref() {
5634            os.write_string(2, v)?;
5635        }
5636        if let Some(v) = self.name.as_ref() {
5637            os.write_bytes(3, v)?;
5638        }
5639        if let Some(v) = self.state_color.as_ref() {
5640            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
5641        }
5642        if let Some(v) = self.instrument.as_ref() {
5643            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
5644        }
5645        if let Some(v) = self.up_step {
5646            os.write_int32(6, v)?;
5647        }
5648        if let Some(v) = self.down_step {
5649            os.write_int32(7, v)?;
5650        }
5651        if let Some(v) = self.layer {
5652            os.write_enum(8, ::protobuf::EnumOrUnknown::value(&v))?;
5653        }
5654        os.write_unknown_fields(self.special_fields.unknown_fields())?;
5655        ::std::result::Result::Ok(())
5656    }
5657
5658    fn special_fields(&self) -> &::protobuf::SpecialFields {
5659        &self.special_fields
5660    }
5661
5662    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
5663        &mut self.special_fields
5664    }
5665
5666    fn new() -> MaterialDefinition {
5667        MaterialDefinition::new()
5668    }
5669
5670    fn clear(&mut self) {
5671        self.mat_pair.clear();
5672        self.id = ::std::option::Option::None;
5673        self.name = ::std::option::Option::None;
5674        self.state_color.clear();
5675        self.instrument.clear();
5676        self.up_step = ::std::option::Option::None;
5677        self.down_step = ::std::option::Option::None;
5678        self.layer = ::std::option::Option::None;
5679        self.special_fields.clear();
5680    }
5681
5682    fn default_instance() -> &'static MaterialDefinition {
5683        static instance: MaterialDefinition = MaterialDefinition {
5684            mat_pair: ::protobuf::MessageField::none(),
5685            id: ::std::option::Option::None,
5686            name: ::std::option::Option::None,
5687            state_color: ::protobuf::MessageField::none(),
5688            instrument: ::protobuf::MessageField::none(),
5689            up_step: ::std::option::Option::None,
5690            down_step: ::std::option::Option::None,
5691            layer: ::std::option::Option::None,
5692            special_fields: ::protobuf::SpecialFields::new(),
5693        };
5694        &instance
5695    }
5696}
5697
5698impl ::protobuf::MessageFull for MaterialDefinition {
5699    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
5700        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
5701        descriptor.get(|| file_descriptor().message_by_package_relative_name("MaterialDefinition").unwrap()).clone()
5702    }
5703}
5704
5705impl ::std::fmt::Display for MaterialDefinition {
5706    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5707        ::protobuf::text_format::fmt(self, f)
5708    }
5709}
5710
5711impl ::protobuf::reflect::ProtobufValue for MaterialDefinition {
5712    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
5713}
5714
5715// @@protoc_insertion_point(message:RemoteFortressReader.BuildingType)
5716#[derive(PartialEq,Clone,Default,Debug)]
5717pub struct BuildingType {
5718    // message fields
5719    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingType.building_type)
5720    pub building_type: ::std::option::Option<i32>,
5721    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingType.building_subtype)
5722    pub building_subtype: ::std::option::Option<i32>,
5723    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingType.building_custom)
5724    pub building_custom: ::std::option::Option<i32>,
5725    // special fields
5726    // @@protoc_insertion_point(special_field:RemoteFortressReader.BuildingType.special_fields)
5727    pub special_fields: ::protobuf::SpecialFields,
5728}
5729
5730impl<'a> ::std::default::Default for &'a BuildingType {
5731    fn default() -> &'a BuildingType {
5732        <BuildingType as ::protobuf::Message>::default_instance()
5733    }
5734}
5735
5736impl BuildingType {
5737    pub fn new() -> BuildingType {
5738        ::std::default::Default::default()
5739    }
5740
5741    // required int32 building_type = 1;
5742
5743    pub fn building_type(&self) -> i32 {
5744        self.building_type.unwrap_or(0)
5745    }
5746
5747    pub fn clear_building_type(&mut self) {
5748        self.building_type = ::std::option::Option::None;
5749    }
5750
5751    pub fn has_building_type(&self) -> bool {
5752        self.building_type.is_some()
5753    }
5754
5755    // Param is passed by value, moved
5756    pub fn set_building_type(&mut self, v: i32) {
5757        self.building_type = ::std::option::Option::Some(v);
5758    }
5759
5760    // required int32 building_subtype = 2;
5761
5762    pub fn building_subtype(&self) -> i32 {
5763        self.building_subtype.unwrap_or(0)
5764    }
5765
5766    pub fn clear_building_subtype(&mut self) {
5767        self.building_subtype = ::std::option::Option::None;
5768    }
5769
5770    pub fn has_building_subtype(&self) -> bool {
5771        self.building_subtype.is_some()
5772    }
5773
5774    // Param is passed by value, moved
5775    pub fn set_building_subtype(&mut self, v: i32) {
5776        self.building_subtype = ::std::option::Option::Some(v);
5777    }
5778
5779    // required int32 building_custom = 3;
5780
5781    pub fn building_custom(&self) -> i32 {
5782        self.building_custom.unwrap_or(0)
5783    }
5784
5785    pub fn clear_building_custom(&mut self) {
5786        self.building_custom = ::std::option::Option::None;
5787    }
5788
5789    pub fn has_building_custom(&self) -> bool {
5790        self.building_custom.is_some()
5791    }
5792
5793    // Param is passed by value, moved
5794    pub fn set_building_custom(&mut self, v: i32) {
5795        self.building_custom = ::std::option::Option::Some(v);
5796    }
5797
5798    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
5799        let mut fields = ::std::vec::Vec::with_capacity(3);
5800        let mut oneofs = ::std::vec::Vec::with_capacity(0);
5801        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5802            "building_type",
5803            |m: &BuildingType| { &m.building_type },
5804            |m: &mut BuildingType| { &mut m.building_type },
5805        ));
5806        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5807            "building_subtype",
5808            |m: &BuildingType| { &m.building_subtype },
5809            |m: &mut BuildingType| { &mut m.building_subtype },
5810        ));
5811        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5812            "building_custom",
5813            |m: &BuildingType| { &m.building_custom },
5814            |m: &mut BuildingType| { &mut m.building_custom },
5815        ));
5816        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BuildingType>(
5817            "BuildingType",
5818            fields,
5819            oneofs,
5820        )
5821    }
5822}
5823
5824impl ::protobuf::Message for BuildingType {
5825    const NAME: &'static str = "BuildingType";
5826
5827    fn is_initialized(&self) -> bool {
5828        if self.building_type.is_none() {
5829            return false;
5830        }
5831        if self.building_subtype.is_none() {
5832            return false;
5833        }
5834        if self.building_custom.is_none() {
5835            return false;
5836        }
5837        true
5838    }
5839
5840    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
5841        while let Some(tag) = is.read_raw_tag_or_eof()? {
5842            match tag {
5843                8 => {
5844                    self.building_type = ::std::option::Option::Some(is.read_int32()?);
5845                },
5846                16 => {
5847                    self.building_subtype = ::std::option::Option::Some(is.read_int32()?);
5848                },
5849                24 => {
5850                    self.building_custom = ::std::option::Option::Some(is.read_int32()?);
5851                },
5852                tag => {
5853                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
5854                },
5855            };
5856        }
5857        ::std::result::Result::Ok(())
5858    }
5859
5860    // Compute sizes of nested messages
5861    #[allow(unused_variables)]
5862    fn compute_size(&self) -> u64 {
5863        let mut my_size = 0;
5864        if let Some(v) = self.building_type {
5865            my_size += ::protobuf::rt::int32_size(1, v);
5866        }
5867        if let Some(v) = self.building_subtype {
5868            my_size += ::protobuf::rt::int32_size(2, v);
5869        }
5870        if let Some(v) = self.building_custom {
5871            my_size += ::protobuf::rt::int32_size(3, v);
5872        }
5873        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
5874        self.special_fields.cached_size().set(my_size as u32);
5875        my_size
5876    }
5877
5878    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
5879        if let Some(v) = self.building_type {
5880            os.write_int32(1, v)?;
5881        }
5882        if let Some(v) = self.building_subtype {
5883            os.write_int32(2, v)?;
5884        }
5885        if let Some(v) = self.building_custom {
5886            os.write_int32(3, v)?;
5887        }
5888        os.write_unknown_fields(self.special_fields.unknown_fields())?;
5889        ::std::result::Result::Ok(())
5890    }
5891
5892    fn special_fields(&self) -> &::protobuf::SpecialFields {
5893        &self.special_fields
5894    }
5895
5896    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
5897        &mut self.special_fields
5898    }
5899
5900    fn new() -> BuildingType {
5901        BuildingType::new()
5902    }
5903
5904    fn clear(&mut self) {
5905        self.building_type = ::std::option::Option::None;
5906        self.building_subtype = ::std::option::Option::None;
5907        self.building_custom = ::std::option::Option::None;
5908        self.special_fields.clear();
5909    }
5910
5911    fn default_instance() -> &'static BuildingType {
5912        static instance: BuildingType = BuildingType {
5913            building_type: ::std::option::Option::None,
5914            building_subtype: ::std::option::Option::None,
5915            building_custom: ::std::option::Option::None,
5916            special_fields: ::protobuf::SpecialFields::new(),
5917        };
5918        &instance
5919    }
5920}
5921
5922impl ::protobuf::MessageFull for BuildingType {
5923    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
5924        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
5925        descriptor.get(|| file_descriptor().message_by_package_relative_name("BuildingType").unwrap()).clone()
5926    }
5927}
5928
5929impl ::std::fmt::Display for BuildingType {
5930    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5931        ::protobuf::text_format::fmt(self, f)
5932    }
5933}
5934
5935impl ::protobuf::reflect::ProtobufValue for BuildingType {
5936    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
5937}
5938
5939// @@protoc_insertion_point(message:RemoteFortressReader.BuildingDefinition)
5940#[derive(PartialEq,Clone,Default,Debug)]
5941pub struct BuildingDefinition {
5942    // message fields
5943    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingDefinition.building_type)
5944    pub building_type: ::protobuf::MessageField<BuildingType>,
5945    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingDefinition.id)
5946    pub id: ::std::option::Option<::std::string::String>,
5947    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingDefinition.name)
5948    pub name: ::std::option::Option<::std::string::String>,
5949    // special fields
5950    // @@protoc_insertion_point(special_field:RemoteFortressReader.BuildingDefinition.special_fields)
5951    pub special_fields: ::protobuf::SpecialFields,
5952}
5953
5954impl<'a> ::std::default::Default for &'a BuildingDefinition {
5955    fn default() -> &'a BuildingDefinition {
5956        <BuildingDefinition as ::protobuf::Message>::default_instance()
5957    }
5958}
5959
5960impl BuildingDefinition {
5961    pub fn new() -> BuildingDefinition {
5962        ::std::default::Default::default()
5963    }
5964
5965    // optional string id = 2;
5966
5967    pub fn id(&self) -> &str {
5968        match self.id.as_ref() {
5969            Some(v) => v,
5970            None => "",
5971        }
5972    }
5973
5974    pub fn clear_id(&mut self) {
5975        self.id = ::std::option::Option::None;
5976    }
5977
5978    pub fn has_id(&self) -> bool {
5979        self.id.is_some()
5980    }
5981
5982    // Param is passed by value, moved
5983    pub fn set_id(&mut self, v: ::std::string::String) {
5984        self.id = ::std::option::Option::Some(v);
5985    }
5986
5987    // Mutable pointer to the field.
5988    // If field is not initialized, it is initialized with default value first.
5989    pub fn mut_id(&mut self) -> &mut ::std::string::String {
5990        if self.id.is_none() {
5991            self.id = ::std::option::Option::Some(::std::string::String::new());
5992        }
5993        self.id.as_mut().unwrap()
5994    }
5995
5996    // Take field
5997    pub fn take_id(&mut self) -> ::std::string::String {
5998        self.id.take().unwrap_or_else(|| ::std::string::String::new())
5999    }
6000
6001    // optional string name = 3;
6002
6003    pub fn name(&self) -> &str {
6004        match self.name.as_ref() {
6005            Some(v) => v,
6006            None => "",
6007        }
6008    }
6009
6010    pub fn clear_name(&mut self) {
6011        self.name = ::std::option::Option::None;
6012    }
6013
6014    pub fn has_name(&self) -> bool {
6015        self.name.is_some()
6016    }
6017
6018    // Param is passed by value, moved
6019    pub fn set_name(&mut self, v: ::std::string::String) {
6020        self.name = ::std::option::Option::Some(v);
6021    }
6022
6023    // Mutable pointer to the field.
6024    // If field is not initialized, it is initialized with default value first.
6025    pub fn mut_name(&mut self) -> &mut ::std::string::String {
6026        if self.name.is_none() {
6027            self.name = ::std::option::Option::Some(::std::string::String::new());
6028        }
6029        self.name.as_mut().unwrap()
6030    }
6031
6032    // Take field
6033    pub fn take_name(&mut self) -> ::std::string::String {
6034        self.name.take().unwrap_or_else(|| ::std::string::String::new())
6035    }
6036
6037    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
6038        let mut fields = ::std::vec::Vec::with_capacity(3);
6039        let mut oneofs = ::std::vec::Vec::with_capacity(0);
6040        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, BuildingType>(
6041            "building_type",
6042            |m: &BuildingDefinition| { &m.building_type },
6043            |m: &mut BuildingDefinition| { &mut m.building_type },
6044        ));
6045        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6046            "id",
6047            |m: &BuildingDefinition| { &m.id },
6048            |m: &mut BuildingDefinition| { &mut m.id },
6049        ));
6050        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6051            "name",
6052            |m: &BuildingDefinition| { &m.name },
6053            |m: &mut BuildingDefinition| { &mut m.name },
6054        ));
6055        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BuildingDefinition>(
6056            "BuildingDefinition",
6057            fields,
6058            oneofs,
6059        )
6060    }
6061}
6062
6063impl ::protobuf::Message for BuildingDefinition {
6064    const NAME: &'static str = "BuildingDefinition";
6065
6066    fn is_initialized(&self) -> bool {
6067        if self.building_type.is_none() {
6068            return false;
6069        }
6070        for v in &self.building_type {
6071            if !v.is_initialized() {
6072                return false;
6073            }
6074        };
6075        true
6076    }
6077
6078    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
6079        while let Some(tag) = is.read_raw_tag_or_eof()? {
6080            match tag {
6081                10 => {
6082                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.building_type)?;
6083                },
6084                18 => {
6085                    self.id = ::std::option::Option::Some(is.read_string()?);
6086                },
6087                26 => {
6088                    self.name = ::std::option::Option::Some(is.read_string()?);
6089                },
6090                tag => {
6091                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
6092                },
6093            };
6094        }
6095        ::std::result::Result::Ok(())
6096    }
6097
6098    // Compute sizes of nested messages
6099    #[allow(unused_variables)]
6100    fn compute_size(&self) -> u64 {
6101        let mut my_size = 0;
6102        if let Some(v) = self.building_type.as_ref() {
6103            let len = v.compute_size();
6104            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
6105        }
6106        if let Some(v) = self.id.as_ref() {
6107            my_size += ::protobuf::rt::string_size(2, &v);
6108        }
6109        if let Some(v) = self.name.as_ref() {
6110            my_size += ::protobuf::rt::string_size(3, &v);
6111        }
6112        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
6113        self.special_fields.cached_size().set(my_size as u32);
6114        my_size
6115    }
6116
6117    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
6118        if let Some(v) = self.building_type.as_ref() {
6119            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
6120        }
6121        if let Some(v) = self.id.as_ref() {
6122            os.write_string(2, v)?;
6123        }
6124        if let Some(v) = self.name.as_ref() {
6125            os.write_string(3, v)?;
6126        }
6127        os.write_unknown_fields(self.special_fields.unknown_fields())?;
6128        ::std::result::Result::Ok(())
6129    }
6130
6131    fn special_fields(&self) -> &::protobuf::SpecialFields {
6132        &self.special_fields
6133    }
6134
6135    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
6136        &mut self.special_fields
6137    }
6138
6139    fn new() -> BuildingDefinition {
6140        BuildingDefinition::new()
6141    }
6142
6143    fn clear(&mut self) {
6144        self.building_type.clear();
6145        self.id = ::std::option::Option::None;
6146        self.name = ::std::option::Option::None;
6147        self.special_fields.clear();
6148    }
6149
6150    fn default_instance() -> &'static BuildingDefinition {
6151        static instance: BuildingDefinition = BuildingDefinition {
6152            building_type: ::protobuf::MessageField::none(),
6153            id: ::std::option::Option::None,
6154            name: ::std::option::Option::None,
6155            special_fields: ::protobuf::SpecialFields::new(),
6156        };
6157        &instance
6158    }
6159}
6160
6161impl ::protobuf::MessageFull for BuildingDefinition {
6162    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
6163        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
6164        descriptor.get(|| file_descriptor().message_by_package_relative_name("BuildingDefinition").unwrap()).clone()
6165    }
6166}
6167
6168impl ::std::fmt::Display for BuildingDefinition {
6169    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6170        ::protobuf::text_format::fmt(self, f)
6171    }
6172}
6173
6174impl ::protobuf::reflect::ProtobufValue for BuildingDefinition {
6175    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
6176}
6177
6178// @@protoc_insertion_point(message:RemoteFortressReader.BuildingList)
6179#[derive(PartialEq,Clone,Default,Debug)]
6180pub struct BuildingList {
6181    // message fields
6182    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingList.building_list)
6183    pub building_list: ::std::vec::Vec<BuildingDefinition>,
6184    // special fields
6185    // @@protoc_insertion_point(special_field:RemoteFortressReader.BuildingList.special_fields)
6186    pub special_fields: ::protobuf::SpecialFields,
6187}
6188
6189impl<'a> ::std::default::Default for &'a BuildingList {
6190    fn default() -> &'a BuildingList {
6191        <BuildingList as ::protobuf::Message>::default_instance()
6192    }
6193}
6194
6195impl BuildingList {
6196    pub fn new() -> BuildingList {
6197        ::std::default::Default::default()
6198    }
6199
6200    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
6201        let mut fields = ::std::vec::Vec::with_capacity(1);
6202        let mut oneofs = ::std::vec::Vec::with_capacity(0);
6203        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
6204            "building_list",
6205            |m: &BuildingList| { &m.building_list },
6206            |m: &mut BuildingList| { &mut m.building_list },
6207        ));
6208        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BuildingList>(
6209            "BuildingList",
6210            fields,
6211            oneofs,
6212        )
6213    }
6214}
6215
6216impl ::protobuf::Message for BuildingList {
6217    const NAME: &'static str = "BuildingList";
6218
6219    fn is_initialized(&self) -> bool {
6220        for v in &self.building_list {
6221            if !v.is_initialized() {
6222                return false;
6223            }
6224        };
6225        true
6226    }
6227
6228    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
6229        while let Some(tag) = is.read_raw_tag_or_eof()? {
6230            match tag {
6231                10 => {
6232                    self.building_list.push(is.read_message()?);
6233                },
6234                tag => {
6235                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
6236                },
6237            };
6238        }
6239        ::std::result::Result::Ok(())
6240    }
6241
6242    // Compute sizes of nested messages
6243    #[allow(unused_variables)]
6244    fn compute_size(&self) -> u64 {
6245        let mut my_size = 0;
6246        for value in &self.building_list {
6247            let len = value.compute_size();
6248            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
6249        };
6250        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
6251        self.special_fields.cached_size().set(my_size as u32);
6252        my_size
6253    }
6254
6255    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
6256        for v in &self.building_list {
6257            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
6258        };
6259        os.write_unknown_fields(self.special_fields.unknown_fields())?;
6260        ::std::result::Result::Ok(())
6261    }
6262
6263    fn special_fields(&self) -> &::protobuf::SpecialFields {
6264        &self.special_fields
6265    }
6266
6267    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
6268        &mut self.special_fields
6269    }
6270
6271    fn new() -> BuildingList {
6272        BuildingList::new()
6273    }
6274
6275    fn clear(&mut self) {
6276        self.building_list.clear();
6277        self.special_fields.clear();
6278    }
6279
6280    fn default_instance() -> &'static BuildingList {
6281        static instance: BuildingList = BuildingList {
6282            building_list: ::std::vec::Vec::new(),
6283            special_fields: ::protobuf::SpecialFields::new(),
6284        };
6285        &instance
6286    }
6287}
6288
6289impl ::protobuf::MessageFull for BuildingList {
6290    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
6291        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
6292        descriptor.get(|| file_descriptor().message_by_package_relative_name("BuildingList").unwrap()).clone()
6293    }
6294}
6295
6296impl ::std::fmt::Display for BuildingList {
6297    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6298        ::protobuf::text_format::fmt(self, f)
6299    }
6300}
6301
6302impl ::protobuf::reflect::ProtobufValue for BuildingList {
6303    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
6304}
6305
6306// @@protoc_insertion_point(message:RemoteFortressReader.MaterialList)
6307#[derive(PartialEq,Clone,Default,Debug)]
6308pub struct MaterialList {
6309    // message fields
6310    // @@protoc_insertion_point(field:RemoteFortressReader.MaterialList.material_list)
6311    pub material_list: ::std::vec::Vec<MaterialDefinition>,
6312    // special fields
6313    // @@protoc_insertion_point(special_field:RemoteFortressReader.MaterialList.special_fields)
6314    pub special_fields: ::protobuf::SpecialFields,
6315}
6316
6317impl<'a> ::std::default::Default for &'a MaterialList {
6318    fn default() -> &'a MaterialList {
6319        <MaterialList as ::protobuf::Message>::default_instance()
6320    }
6321}
6322
6323impl MaterialList {
6324    pub fn new() -> MaterialList {
6325        ::std::default::Default::default()
6326    }
6327
6328    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
6329        let mut fields = ::std::vec::Vec::with_capacity(1);
6330        let mut oneofs = ::std::vec::Vec::with_capacity(0);
6331        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
6332            "material_list",
6333            |m: &MaterialList| { &m.material_list },
6334            |m: &mut MaterialList| { &mut m.material_list },
6335        ));
6336        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<MaterialList>(
6337            "MaterialList",
6338            fields,
6339            oneofs,
6340        )
6341    }
6342}
6343
6344impl ::protobuf::Message for MaterialList {
6345    const NAME: &'static str = "MaterialList";
6346
6347    fn is_initialized(&self) -> bool {
6348        for v in &self.material_list {
6349            if !v.is_initialized() {
6350                return false;
6351            }
6352        };
6353        true
6354    }
6355
6356    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
6357        while let Some(tag) = is.read_raw_tag_or_eof()? {
6358            match tag {
6359                10 => {
6360                    self.material_list.push(is.read_message()?);
6361                },
6362                tag => {
6363                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
6364                },
6365            };
6366        }
6367        ::std::result::Result::Ok(())
6368    }
6369
6370    // Compute sizes of nested messages
6371    #[allow(unused_variables)]
6372    fn compute_size(&self) -> u64 {
6373        let mut my_size = 0;
6374        for value in &self.material_list {
6375            let len = value.compute_size();
6376            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
6377        };
6378        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
6379        self.special_fields.cached_size().set(my_size as u32);
6380        my_size
6381    }
6382
6383    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
6384        for v in &self.material_list {
6385            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
6386        };
6387        os.write_unknown_fields(self.special_fields.unknown_fields())?;
6388        ::std::result::Result::Ok(())
6389    }
6390
6391    fn special_fields(&self) -> &::protobuf::SpecialFields {
6392        &self.special_fields
6393    }
6394
6395    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
6396        &mut self.special_fields
6397    }
6398
6399    fn new() -> MaterialList {
6400        MaterialList::new()
6401    }
6402
6403    fn clear(&mut self) {
6404        self.material_list.clear();
6405        self.special_fields.clear();
6406    }
6407
6408    fn default_instance() -> &'static MaterialList {
6409        static instance: MaterialList = MaterialList {
6410            material_list: ::std::vec::Vec::new(),
6411            special_fields: ::protobuf::SpecialFields::new(),
6412        };
6413        &instance
6414    }
6415}
6416
6417impl ::protobuf::MessageFull for MaterialList {
6418    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
6419        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
6420        descriptor.get(|| file_descriptor().message_by_package_relative_name("MaterialList").unwrap()).clone()
6421    }
6422}
6423
6424impl ::std::fmt::Display for MaterialList {
6425    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6426        ::protobuf::text_format::fmt(self, f)
6427    }
6428}
6429
6430impl ::protobuf::reflect::ProtobufValue for MaterialList {
6431    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
6432}
6433
6434// @@protoc_insertion_point(message:RemoteFortressReader.Hair)
6435#[derive(PartialEq,Clone,Default,Debug)]
6436pub struct Hair {
6437    // message fields
6438    // @@protoc_insertion_point(field:RemoteFortressReader.Hair.length)
6439    pub length: ::std::option::Option<i32>,
6440    // @@protoc_insertion_point(field:RemoteFortressReader.Hair.style)
6441    pub style: ::std::option::Option<::protobuf::EnumOrUnknown<HairStyle>>,
6442    // special fields
6443    // @@protoc_insertion_point(special_field:RemoteFortressReader.Hair.special_fields)
6444    pub special_fields: ::protobuf::SpecialFields,
6445}
6446
6447impl<'a> ::std::default::Default for &'a Hair {
6448    fn default() -> &'a Hair {
6449        <Hair as ::protobuf::Message>::default_instance()
6450    }
6451}
6452
6453impl Hair {
6454    pub fn new() -> Hair {
6455        ::std::default::Default::default()
6456    }
6457
6458    // optional int32 length = 1;
6459
6460    pub fn length(&self) -> i32 {
6461        self.length.unwrap_or(0)
6462    }
6463
6464    pub fn clear_length(&mut self) {
6465        self.length = ::std::option::Option::None;
6466    }
6467
6468    pub fn has_length(&self) -> bool {
6469        self.length.is_some()
6470    }
6471
6472    // Param is passed by value, moved
6473    pub fn set_length(&mut self, v: i32) {
6474        self.length = ::std::option::Option::Some(v);
6475    }
6476
6477    // optional .RemoteFortressReader.HairStyle style = 2;
6478
6479    pub fn style(&self) -> HairStyle {
6480        match self.style {
6481            Some(e) => e.enum_value_or(HairStyle::UNKEMPT),
6482            None => HairStyle::UNKEMPT,
6483        }
6484    }
6485
6486    pub fn clear_style(&mut self) {
6487        self.style = ::std::option::Option::None;
6488    }
6489
6490    pub fn has_style(&self) -> bool {
6491        self.style.is_some()
6492    }
6493
6494    // Param is passed by value, moved
6495    pub fn set_style(&mut self, v: HairStyle) {
6496        self.style = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
6497    }
6498
6499    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
6500        let mut fields = ::std::vec::Vec::with_capacity(2);
6501        let mut oneofs = ::std::vec::Vec::with_capacity(0);
6502        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6503            "length",
6504            |m: &Hair| { &m.length },
6505            |m: &mut Hair| { &mut m.length },
6506        ));
6507        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6508            "style",
6509            |m: &Hair| { &m.style },
6510            |m: &mut Hair| { &mut m.style },
6511        ));
6512        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Hair>(
6513            "Hair",
6514            fields,
6515            oneofs,
6516        )
6517    }
6518}
6519
6520impl ::protobuf::Message for Hair {
6521    const NAME: &'static str = "Hair";
6522
6523    fn is_initialized(&self) -> bool {
6524        true
6525    }
6526
6527    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
6528        while let Some(tag) = is.read_raw_tag_or_eof()? {
6529            match tag {
6530                8 => {
6531                    self.length = ::std::option::Option::Some(is.read_int32()?);
6532                },
6533                16 => {
6534                    self.style = ::std::option::Option::Some(is.read_enum_or_unknown()?);
6535                },
6536                tag => {
6537                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
6538                },
6539            };
6540        }
6541        ::std::result::Result::Ok(())
6542    }
6543
6544    // Compute sizes of nested messages
6545    #[allow(unused_variables)]
6546    fn compute_size(&self) -> u64 {
6547        let mut my_size = 0;
6548        if let Some(v) = self.length {
6549            my_size += ::protobuf::rt::int32_size(1, v);
6550        }
6551        if let Some(v) = self.style {
6552            my_size += ::protobuf::rt::int32_size(2, v.value());
6553        }
6554        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
6555        self.special_fields.cached_size().set(my_size as u32);
6556        my_size
6557    }
6558
6559    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
6560        if let Some(v) = self.length {
6561            os.write_int32(1, v)?;
6562        }
6563        if let Some(v) = self.style {
6564            os.write_enum(2, ::protobuf::EnumOrUnknown::value(&v))?;
6565        }
6566        os.write_unknown_fields(self.special_fields.unknown_fields())?;
6567        ::std::result::Result::Ok(())
6568    }
6569
6570    fn special_fields(&self) -> &::protobuf::SpecialFields {
6571        &self.special_fields
6572    }
6573
6574    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
6575        &mut self.special_fields
6576    }
6577
6578    fn new() -> Hair {
6579        Hair::new()
6580    }
6581
6582    fn clear(&mut self) {
6583        self.length = ::std::option::Option::None;
6584        self.style = ::std::option::Option::None;
6585        self.special_fields.clear();
6586    }
6587
6588    fn default_instance() -> &'static Hair {
6589        static instance: Hair = Hair {
6590            length: ::std::option::Option::None,
6591            style: ::std::option::Option::None,
6592            special_fields: ::protobuf::SpecialFields::new(),
6593        };
6594        &instance
6595    }
6596}
6597
6598impl ::protobuf::MessageFull for Hair {
6599    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
6600        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
6601        descriptor.get(|| file_descriptor().message_by_package_relative_name("Hair").unwrap()).clone()
6602    }
6603}
6604
6605impl ::std::fmt::Display for Hair {
6606    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6607        ::protobuf::text_format::fmt(self, f)
6608    }
6609}
6610
6611impl ::protobuf::reflect::ProtobufValue for Hair {
6612    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
6613}
6614
6615// @@protoc_insertion_point(message:RemoteFortressReader.BodySizeInfo)
6616#[derive(PartialEq,Clone,Default,Debug)]
6617pub struct BodySizeInfo {
6618    // message fields
6619    // @@protoc_insertion_point(field:RemoteFortressReader.BodySizeInfo.size_cur)
6620    pub size_cur: ::std::option::Option<i32>,
6621    // @@protoc_insertion_point(field:RemoteFortressReader.BodySizeInfo.size_base)
6622    pub size_base: ::std::option::Option<i32>,
6623    // @@protoc_insertion_point(field:RemoteFortressReader.BodySizeInfo.area_cur)
6624    pub area_cur: ::std::option::Option<i32>,
6625    // @@protoc_insertion_point(field:RemoteFortressReader.BodySizeInfo.area_base)
6626    pub area_base: ::std::option::Option<i32>,
6627    // @@protoc_insertion_point(field:RemoteFortressReader.BodySizeInfo.length_cur)
6628    pub length_cur: ::std::option::Option<i32>,
6629    // @@protoc_insertion_point(field:RemoteFortressReader.BodySizeInfo.length_base)
6630    pub length_base: ::std::option::Option<i32>,
6631    // special fields
6632    // @@protoc_insertion_point(special_field:RemoteFortressReader.BodySizeInfo.special_fields)
6633    pub special_fields: ::protobuf::SpecialFields,
6634}
6635
6636impl<'a> ::std::default::Default for &'a BodySizeInfo {
6637    fn default() -> &'a BodySizeInfo {
6638        <BodySizeInfo as ::protobuf::Message>::default_instance()
6639    }
6640}
6641
6642impl BodySizeInfo {
6643    pub fn new() -> BodySizeInfo {
6644        ::std::default::Default::default()
6645    }
6646
6647    // optional int32 size_cur = 1;
6648
6649    pub fn size_cur(&self) -> i32 {
6650        self.size_cur.unwrap_or(0)
6651    }
6652
6653    pub fn clear_size_cur(&mut self) {
6654        self.size_cur = ::std::option::Option::None;
6655    }
6656
6657    pub fn has_size_cur(&self) -> bool {
6658        self.size_cur.is_some()
6659    }
6660
6661    // Param is passed by value, moved
6662    pub fn set_size_cur(&mut self, v: i32) {
6663        self.size_cur = ::std::option::Option::Some(v);
6664    }
6665
6666    // optional int32 size_base = 2;
6667
6668    pub fn size_base(&self) -> i32 {
6669        self.size_base.unwrap_or(0)
6670    }
6671
6672    pub fn clear_size_base(&mut self) {
6673        self.size_base = ::std::option::Option::None;
6674    }
6675
6676    pub fn has_size_base(&self) -> bool {
6677        self.size_base.is_some()
6678    }
6679
6680    // Param is passed by value, moved
6681    pub fn set_size_base(&mut self, v: i32) {
6682        self.size_base = ::std::option::Option::Some(v);
6683    }
6684
6685    // optional int32 area_cur = 3;
6686
6687    pub fn area_cur(&self) -> i32 {
6688        self.area_cur.unwrap_or(0)
6689    }
6690
6691    pub fn clear_area_cur(&mut self) {
6692        self.area_cur = ::std::option::Option::None;
6693    }
6694
6695    pub fn has_area_cur(&self) -> bool {
6696        self.area_cur.is_some()
6697    }
6698
6699    // Param is passed by value, moved
6700    pub fn set_area_cur(&mut self, v: i32) {
6701        self.area_cur = ::std::option::Option::Some(v);
6702    }
6703
6704    // optional int32 area_base = 4;
6705
6706    pub fn area_base(&self) -> i32 {
6707        self.area_base.unwrap_or(0)
6708    }
6709
6710    pub fn clear_area_base(&mut self) {
6711        self.area_base = ::std::option::Option::None;
6712    }
6713
6714    pub fn has_area_base(&self) -> bool {
6715        self.area_base.is_some()
6716    }
6717
6718    // Param is passed by value, moved
6719    pub fn set_area_base(&mut self, v: i32) {
6720        self.area_base = ::std::option::Option::Some(v);
6721    }
6722
6723    // optional int32 length_cur = 5;
6724
6725    pub fn length_cur(&self) -> i32 {
6726        self.length_cur.unwrap_or(0)
6727    }
6728
6729    pub fn clear_length_cur(&mut self) {
6730        self.length_cur = ::std::option::Option::None;
6731    }
6732
6733    pub fn has_length_cur(&self) -> bool {
6734        self.length_cur.is_some()
6735    }
6736
6737    // Param is passed by value, moved
6738    pub fn set_length_cur(&mut self, v: i32) {
6739        self.length_cur = ::std::option::Option::Some(v);
6740    }
6741
6742    // optional int32 length_base = 6;
6743
6744    pub fn length_base(&self) -> i32 {
6745        self.length_base.unwrap_or(0)
6746    }
6747
6748    pub fn clear_length_base(&mut self) {
6749        self.length_base = ::std::option::Option::None;
6750    }
6751
6752    pub fn has_length_base(&self) -> bool {
6753        self.length_base.is_some()
6754    }
6755
6756    // Param is passed by value, moved
6757    pub fn set_length_base(&mut self, v: i32) {
6758        self.length_base = ::std::option::Option::Some(v);
6759    }
6760
6761    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
6762        let mut fields = ::std::vec::Vec::with_capacity(6);
6763        let mut oneofs = ::std::vec::Vec::with_capacity(0);
6764        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6765            "size_cur",
6766            |m: &BodySizeInfo| { &m.size_cur },
6767            |m: &mut BodySizeInfo| { &mut m.size_cur },
6768        ));
6769        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6770            "size_base",
6771            |m: &BodySizeInfo| { &m.size_base },
6772            |m: &mut BodySizeInfo| { &mut m.size_base },
6773        ));
6774        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6775            "area_cur",
6776            |m: &BodySizeInfo| { &m.area_cur },
6777            |m: &mut BodySizeInfo| { &mut m.area_cur },
6778        ));
6779        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6780            "area_base",
6781            |m: &BodySizeInfo| { &m.area_base },
6782            |m: &mut BodySizeInfo| { &mut m.area_base },
6783        ));
6784        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6785            "length_cur",
6786            |m: &BodySizeInfo| { &m.length_cur },
6787            |m: &mut BodySizeInfo| { &mut m.length_cur },
6788        ));
6789        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6790            "length_base",
6791            |m: &BodySizeInfo| { &m.length_base },
6792            |m: &mut BodySizeInfo| { &mut m.length_base },
6793        ));
6794        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BodySizeInfo>(
6795            "BodySizeInfo",
6796            fields,
6797            oneofs,
6798        )
6799    }
6800}
6801
6802impl ::protobuf::Message for BodySizeInfo {
6803    const NAME: &'static str = "BodySizeInfo";
6804
6805    fn is_initialized(&self) -> bool {
6806        true
6807    }
6808
6809    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
6810        while let Some(tag) = is.read_raw_tag_or_eof()? {
6811            match tag {
6812                8 => {
6813                    self.size_cur = ::std::option::Option::Some(is.read_int32()?);
6814                },
6815                16 => {
6816                    self.size_base = ::std::option::Option::Some(is.read_int32()?);
6817                },
6818                24 => {
6819                    self.area_cur = ::std::option::Option::Some(is.read_int32()?);
6820                },
6821                32 => {
6822                    self.area_base = ::std::option::Option::Some(is.read_int32()?);
6823                },
6824                40 => {
6825                    self.length_cur = ::std::option::Option::Some(is.read_int32()?);
6826                },
6827                48 => {
6828                    self.length_base = ::std::option::Option::Some(is.read_int32()?);
6829                },
6830                tag => {
6831                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
6832                },
6833            };
6834        }
6835        ::std::result::Result::Ok(())
6836    }
6837
6838    // Compute sizes of nested messages
6839    #[allow(unused_variables)]
6840    fn compute_size(&self) -> u64 {
6841        let mut my_size = 0;
6842        if let Some(v) = self.size_cur {
6843            my_size += ::protobuf::rt::int32_size(1, v);
6844        }
6845        if let Some(v) = self.size_base {
6846            my_size += ::protobuf::rt::int32_size(2, v);
6847        }
6848        if let Some(v) = self.area_cur {
6849            my_size += ::protobuf::rt::int32_size(3, v);
6850        }
6851        if let Some(v) = self.area_base {
6852            my_size += ::protobuf::rt::int32_size(4, v);
6853        }
6854        if let Some(v) = self.length_cur {
6855            my_size += ::protobuf::rt::int32_size(5, v);
6856        }
6857        if let Some(v) = self.length_base {
6858            my_size += ::protobuf::rt::int32_size(6, v);
6859        }
6860        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
6861        self.special_fields.cached_size().set(my_size as u32);
6862        my_size
6863    }
6864
6865    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
6866        if let Some(v) = self.size_cur {
6867            os.write_int32(1, v)?;
6868        }
6869        if let Some(v) = self.size_base {
6870            os.write_int32(2, v)?;
6871        }
6872        if let Some(v) = self.area_cur {
6873            os.write_int32(3, v)?;
6874        }
6875        if let Some(v) = self.area_base {
6876            os.write_int32(4, v)?;
6877        }
6878        if let Some(v) = self.length_cur {
6879            os.write_int32(5, v)?;
6880        }
6881        if let Some(v) = self.length_base {
6882            os.write_int32(6, v)?;
6883        }
6884        os.write_unknown_fields(self.special_fields.unknown_fields())?;
6885        ::std::result::Result::Ok(())
6886    }
6887
6888    fn special_fields(&self) -> &::protobuf::SpecialFields {
6889        &self.special_fields
6890    }
6891
6892    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
6893        &mut self.special_fields
6894    }
6895
6896    fn new() -> BodySizeInfo {
6897        BodySizeInfo::new()
6898    }
6899
6900    fn clear(&mut self) {
6901        self.size_cur = ::std::option::Option::None;
6902        self.size_base = ::std::option::Option::None;
6903        self.area_cur = ::std::option::Option::None;
6904        self.area_base = ::std::option::Option::None;
6905        self.length_cur = ::std::option::Option::None;
6906        self.length_base = ::std::option::Option::None;
6907        self.special_fields.clear();
6908    }
6909
6910    fn default_instance() -> &'static BodySizeInfo {
6911        static instance: BodySizeInfo = BodySizeInfo {
6912            size_cur: ::std::option::Option::None,
6913            size_base: ::std::option::Option::None,
6914            area_cur: ::std::option::Option::None,
6915            area_base: ::std::option::Option::None,
6916            length_cur: ::std::option::Option::None,
6917            length_base: ::std::option::Option::None,
6918            special_fields: ::protobuf::SpecialFields::new(),
6919        };
6920        &instance
6921    }
6922}
6923
6924impl ::protobuf::MessageFull for BodySizeInfo {
6925    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
6926        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
6927        descriptor.get(|| file_descriptor().message_by_package_relative_name("BodySizeInfo").unwrap()).clone()
6928    }
6929}
6930
6931impl ::std::fmt::Display for BodySizeInfo {
6932    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6933        ::protobuf::text_format::fmt(self, f)
6934    }
6935}
6936
6937impl ::protobuf::reflect::ProtobufValue for BodySizeInfo {
6938    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
6939}
6940
6941// @@protoc_insertion_point(message:RemoteFortressReader.UnitAppearance)
6942#[derive(PartialEq,Clone,Default,Debug)]
6943pub struct UnitAppearance {
6944    // message fields
6945    // @@protoc_insertion_point(field:RemoteFortressReader.UnitAppearance.body_modifiers)
6946    pub body_modifiers: ::std::vec::Vec<i32>,
6947    // @@protoc_insertion_point(field:RemoteFortressReader.UnitAppearance.bp_modifiers)
6948    pub bp_modifiers: ::std::vec::Vec<i32>,
6949    // @@protoc_insertion_point(field:RemoteFortressReader.UnitAppearance.size_modifier)
6950    pub size_modifier: ::std::option::Option<i32>,
6951    // @@protoc_insertion_point(field:RemoteFortressReader.UnitAppearance.colors)
6952    pub colors: ::std::vec::Vec<i32>,
6953    // @@protoc_insertion_point(field:RemoteFortressReader.UnitAppearance.hair)
6954    pub hair: ::protobuf::MessageField<Hair>,
6955    // @@protoc_insertion_point(field:RemoteFortressReader.UnitAppearance.beard)
6956    pub beard: ::protobuf::MessageField<Hair>,
6957    // @@protoc_insertion_point(field:RemoteFortressReader.UnitAppearance.moustache)
6958    pub moustache: ::protobuf::MessageField<Hair>,
6959    // @@protoc_insertion_point(field:RemoteFortressReader.UnitAppearance.sideburns)
6960    pub sideburns: ::protobuf::MessageField<Hair>,
6961    // @@protoc_insertion_point(field:RemoteFortressReader.UnitAppearance.physical_description)
6962    pub physical_description: ::std::option::Option<::std::string::String>,
6963    // special fields
6964    // @@protoc_insertion_point(special_field:RemoteFortressReader.UnitAppearance.special_fields)
6965    pub special_fields: ::protobuf::SpecialFields,
6966}
6967
6968impl<'a> ::std::default::Default for &'a UnitAppearance {
6969    fn default() -> &'a UnitAppearance {
6970        <UnitAppearance as ::protobuf::Message>::default_instance()
6971    }
6972}
6973
6974impl UnitAppearance {
6975    pub fn new() -> UnitAppearance {
6976        ::std::default::Default::default()
6977    }
6978
6979    // optional int32 size_modifier = 3;
6980
6981    pub fn size_modifier(&self) -> i32 {
6982        self.size_modifier.unwrap_or(0)
6983    }
6984
6985    pub fn clear_size_modifier(&mut self) {
6986        self.size_modifier = ::std::option::Option::None;
6987    }
6988
6989    pub fn has_size_modifier(&self) -> bool {
6990        self.size_modifier.is_some()
6991    }
6992
6993    // Param is passed by value, moved
6994    pub fn set_size_modifier(&mut self, v: i32) {
6995        self.size_modifier = ::std::option::Option::Some(v);
6996    }
6997
6998    // optional string physical_description = 9;
6999
7000    pub fn physical_description(&self) -> &str {
7001        match self.physical_description.as_ref() {
7002            Some(v) => v,
7003            None => "",
7004        }
7005    }
7006
7007    pub fn clear_physical_description(&mut self) {
7008        self.physical_description = ::std::option::Option::None;
7009    }
7010
7011    pub fn has_physical_description(&self) -> bool {
7012        self.physical_description.is_some()
7013    }
7014
7015    // Param is passed by value, moved
7016    pub fn set_physical_description(&mut self, v: ::std::string::String) {
7017        self.physical_description = ::std::option::Option::Some(v);
7018    }
7019
7020    // Mutable pointer to the field.
7021    // If field is not initialized, it is initialized with default value first.
7022    pub fn mut_physical_description(&mut self) -> &mut ::std::string::String {
7023        if self.physical_description.is_none() {
7024            self.physical_description = ::std::option::Option::Some(::std::string::String::new());
7025        }
7026        self.physical_description.as_mut().unwrap()
7027    }
7028
7029    // Take field
7030    pub fn take_physical_description(&mut self) -> ::std::string::String {
7031        self.physical_description.take().unwrap_or_else(|| ::std::string::String::new())
7032    }
7033
7034    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
7035        let mut fields = ::std::vec::Vec::with_capacity(9);
7036        let mut oneofs = ::std::vec::Vec::with_capacity(0);
7037        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
7038            "body_modifiers",
7039            |m: &UnitAppearance| { &m.body_modifiers },
7040            |m: &mut UnitAppearance| { &mut m.body_modifiers },
7041        ));
7042        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
7043            "bp_modifiers",
7044            |m: &UnitAppearance| { &m.bp_modifiers },
7045            |m: &mut UnitAppearance| { &mut m.bp_modifiers },
7046        ));
7047        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
7048            "size_modifier",
7049            |m: &UnitAppearance| { &m.size_modifier },
7050            |m: &mut UnitAppearance| { &mut m.size_modifier },
7051        ));
7052        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
7053            "colors",
7054            |m: &UnitAppearance| { &m.colors },
7055            |m: &mut UnitAppearance| { &mut m.colors },
7056        ));
7057        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Hair>(
7058            "hair",
7059            |m: &UnitAppearance| { &m.hair },
7060            |m: &mut UnitAppearance| { &mut m.hair },
7061        ));
7062        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Hair>(
7063            "beard",
7064            |m: &UnitAppearance| { &m.beard },
7065            |m: &mut UnitAppearance| { &mut m.beard },
7066        ));
7067        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Hair>(
7068            "moustache",
7069            |m: &UnitAppearance| { &m.moustache },
7070            |m: &mut UnitAppearance| { &mut m.moustache },
7071        ));
7072        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Hair>(
7073            "sideburns",
7074            |m: &UnitAppearance| { &m.sideburns },
7075            |m: &mut UnitAppearance| { &mut m.sideburns },
7076        ));
7077        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
7078            "physical_description",
7079            |m: &UnitAppearance| { &m.physical_description },
7080            |m: &mut UnitAppearance| { &mut m.physical_description },
7081        ));
7082        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<UnitAppearance>(
7083            "UnitAppearance",
7084            fields,
7085            oneofs,
7086        )
7087    }
7088}
7089
7090impl ::protobuf::Message for UnitAppearance {
7091    const NAME: &'static str = "UnitAppearance";
7092
7093    fn is_initialized(&self) -> bool {
7094        true
7095    }
7096
7097    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
7098        while let Some(tag) = is.read_raw_tag_or_eof()? {
7099            match tag {
7100                10 => {
7101                    is.read_repeated_packed_int32_into(&mut self.body_modifiers)?;
7102                },
7103                8 => {
7104                    self.body_modifiers.push(is.read_int32()?);
7105                },
7106                18 => {
7107                    is.read_repeated_packed_int32_into(&mut self.bp_modifiers)?;
7108                },
7109                16 => {
7110                    self.bp_modifiers.push(is.read_int32()?);
7111                },
7112                24 => {
7113                    self.size_modifier = ::std::option::Option::Some(is.read_int32()?);
7114                },
7115                34 => {
7116                    is.read_repeated_packed_int32_into(&mut self.colors)?;
7117                },
7118                32 => {
7119                    self.colors.push(is.read_int32()?);
7120                },
7121                42 => {
7122                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.hair)?;
7123                },
7124                50 => {
7125                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.beard)?;
7126                },
7127                58 => {
7128                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.moustache)?;
7129                },
7130                66 => {
7131                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.sideburns)?;
7132                },
7133                74 => {
7134                    self.physical_description = ::std::option::Option::Some(is.read_string()?);
7135                },
7136                tag => {
7137                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
7138                },
7139            };
7140        }
7141        ::std::result::Result::Ok(())
7142    }
7143
7144    // Compute sizes of nested messages
7145    #[allow(unused_variables)]
7146    fn compute_size(&self) -> u64 {
7147        let mut my_size = 0;
7148        for value in &self.body_modifiers {
7149            my_size += ::protobuf::rt::int32_size(1, *value);
7150        };
7151        for value in &self.bp_modifiers {
7152            my_size += ::protobuf::rt::int32_size(2, *value);
7153        };
7154        if let Some(v) = self.size_modifier {
7155            my_size += ::protobuf::rt::int32_size(3, v);
7156        }
7157        for value in &self.colors {
7158            my_size += ::protobuf::rt::int32_size(4, *value);
7159        };
7160        if let Some(v) = self.hair.as_ref() {
7161            let len = v.compute_size();
7162            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
7163        }
7164        if let Some(v) = self.beard.as_ref() {
7165            let len = v.compute_size();
7166            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
7167        }
7168        if let Some(v) = self.moustache.as_ref() {
7169            let len = v.compute_size();
7170            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
7171        }
7172        if let Some(v) = self.sideburns.as_ref() {
7173            let len = v.compute_size();
7174            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
7175        }
7176        if let Some(v) = self.physical_description.as_ref() {
7177            my_size += ::protobuf::rt::string_size(9, &v);
7178        }
7179        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
7180        self.special_fields.cached_size().set(my_size as u32);
7181        my_size
7182    }
7183
7184    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
7185        for v in &self.body_modifiers {
7186            os.write_int32(1, *v)?;
7187        };
7188        for v in &self.bp_modifiers {
7189            os.write_int32(2, *v)?;
7190        };
7191        if let Some(v) = self.size_modifier {
7192            os.write_int32(3, v)?;
7193        }
7194        for v in &self.colors {
7195            os.write_int32(4, *v)?;
7196        };
7197        if let Some(v) = self.hair.as_ref() {
7198            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
7199        }
7200        if let Some(v) = self.beard.as_ref() {
7201            ::protobuf::rt::write_message_field_with_cached_size(6, v, os)?;
7202        }
7203        if let Some(v) = self.moustache.as_ref() {
7204            ::protobuf::rt::write_message_field_with_cached_size(7, v, os)?;
7205        }
7206        if let Some(v) = self.sideburns.as_ref() {
7207            ::protobuf::rt::write_message_field_with_cached_size(8, v, os)?;
7208        }
7209        if let Some(v) = self.physical_description.as_ref() {
7210            os.write_string(9, v)?;
7211        }
7212        os.write_unknown_fields(self.special_fields.unknown_fields())?;
7213        ::std::result::Result::Ok(())
7214    }
7215
7216    fn special_fields(&self) -> &::protobuf::SpecialFields {
7217        &self.special_fields
7218    }
7219
7220    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
7221        &mut self.special_fields
7222    }
7223
7224    fn new() -> UnitAppearance {
7225        UnitAppearance::new()
7226    }
7227
7228    fn clear(&mut self) {
7229        self.body_modifiers.clear();
7230        self.bp_modifiers.clear();
7231        self.size_modifier = ::std::option::Option::None;
7232        self.colors.clear();
7233        self.hair.clear();
7234        self.beard.clear();
7235        self.moustache.clear();
7236        self.sideburns.clear();
7237        self.physical_description = ::std::option::Option::None;
7238        self.special_fields.clear();
7239    }
7240
7241    fn default_instance() -> &'static UnitAppearance {
7242        static instance: UnitAppearance = UnitAppearance {
7243            body_modifiers: ::std::vec::Vec::new(),
7244            bp_modifiers: ::std::vec::Vec::new(),
7245            size_modifier: ::std::option::Option::None,
7246            colors: ::std::vec::Vec::new(),
7247            hair: ::protobuf::MessageField::none(),
7248            beard: ::protobuf::MessageField::none(),
7249            moustache: ::protobuf::MessageField::none(),
7250            sideburns: ::protobuf::MessageField::none(),
7251            physical_description: ::std::option::Option::None,
7252            special_fields: ::protobuf::SpecialFields::new(),
7253        };
7254        &instance
7255    }
7256}
7257
7258impl ::protobuf::MessageFull for UnitAppearance {
7259    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
7260        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
7261        descriptor.get(|| file_descriptor().message_by_package_relative_name("UnitAppearance").unwrap()).clone()
7262    }
7263}
7264
7265impl ::std::fmt::Display for UnitAppearance {
7266    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7267        ::protobuf::text_format::fmt(self, f)
7268    }
7269}
7270
7271impl ::protobuf::reflect::ProtobufValue for UnitAppearance {
7272    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
7273}
7274
7275// @@protoc_insertion_point(message:RemoteFortressReader.InventoryItem)
7276#[derive(PartialEq,Clone,Default,Debug)]
7277pub struct InventoryItem {
7278    // message fields
7279    // @@protoc_insertion_point(field:RemoteFortressReader.InventoryItem.mode)
7280    pub mode: ::std::option::Option<::protobuf::EnumOrUnknown<InventoryMode>>,
7281    // @@protoc_insertion_point(field:RemoteFortressReader.InventoryItem.item)
7282    pub item: ::protobuf::MessageField<Item>,
7283    // @@protoc_insertion_point(field:RemoteFortressReader.InventoryItem.body_part_id)
7284    pub body_part_id: ::std::option::Option<i32>,
7285    // special fields
7286    // @@protoc_insertion_point(special_field:RemoteFortressReader.InventoryItem.special_fields)
7287    pub special_fields: ::protobuf::SpecialFields,
7288}
7289
7290impl<'a> ::std::default::Default for &'a InventoryItem {
7291    fn default() -> &'a InventoryItem {
7292        <InventoryItem as ::protobuf::Message>::default_instance()
7293    }
7294}
7295
7296impl InventoryItem {
7297    pub fn new() -> InventoryItem {
7298        ::std::default::Default::default()
7299    }
7300
7301    // optional .RemoteFortressReader.InventoryMode mode = 1;
7302
7303    pub fn mode(&self) -> InventoryMode {
7304        match self.mode {
7305            Some(e) => e.enum_value_or(InventoryMode::Hauled),
7306            None => InventoryMode::Hauled,
7307        }
7308    }
7309
7310    pub fn clear_mode(&mut self) {
7311        self.mode = ::std::option::Option::None;
7312    }
7313
7314    pub fn has_mode(&self) -> bool {
7315        self.mode.is_some()
7316    }
7317
7318    // Param is passed by value, moved
7319    pub fn set_mode(&mut self, v: InventoryMode) {
7320        self.mode = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
7321    }
7322
7323    // optional int32 body_part_id = 3;
7324
7325    pub fn body_part_id(&self) -> i32 {
7326        self.body_part_id.unwrap_or(0)
7327    }
7328
7329    pub fn clear_body_part_id(&mut self) {
7330        self.body_part_id = ::std::option::Option::None;
7331    }
7332
7333    pub fn has_body_part_id(&self) -> bool {
7334        self.body_part_id.is_some()
7335    }
7336
7337    // Param is passed by value, moved
7338    pub fn set_body_part_id(&mut self, v: i32) {
7339        self.body_part_id = ::std::option::Option::Some(v);
7340    }
7341
7342    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
7343        let mut fields = ::std::vec::Vec::with_capacity(3);
7344        let mut oneofs = ::std::vec::Vec::with_capacity(0);
7345        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
7346            "mode",
7347            |m: &InventoryItem| { &m.mode },
7348            |m: &mut InventoryItem| { &mut m.mode },
7349        ));
7350        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Item>(
7351            "item",
7352            |m: &InventoryItem| { &m.item },
7353            |m: &mut InventoryItem| { &mut m.item },
7354        ));
7355        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
7356            "body_part_id",
7357            |m: &InventoryItem| { &m.body_part_id },
7358            |m: &mut InventoryItem| { &mut m.body_part_id },
7359        ));
7360        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<InventoryItem>(
7361            "InventoryItem",
7362            fields,
7363            oneofs,
7364        )
7365    }
7366}
7367
7368impl ::protobuf::Message for InventoryItem {
7369    const NAME: &'static str = "InventoryItem";
7370
7371    fn is_initialized(&self) -> bool {
7372        for v in &self.item {
7373            if !v.is_initialized() {
7374                return false;
7375            }
7376        };
7377        true
7378    }
7379
7380    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
7381        while let Some(tag) = is.read_raw_tag_or_eof()? {
7382            match tag {
7383                8 => {
7384                    self.mode = ::std::option::Option::Some(is.read_enum_or_unknown()?);
7385                },
7386                18 => {
7387                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.item)?;
7388                },
7389                24 => {
7390                    self.body_part_id = ::std::option::Option::Some(is.read_int32()?);
7391                },
7392                tag => {
7393                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
7394                },
7395            };
7396        }
7397        ::std::result::Result::Ok(())
7398    }
7399
7400    // Compute sizes of nested messages
7401    #[allow(unused_variables)]
7402    fn compute_size(&self) -> u64 {
7403        let mut my_size = 0;
7404        if let Some(v) = self.mode {
7405            my_size += ::protobuf::rt::int32_size(1, v.value());
7406        }
7407        if let Some(v) = self.item.as_ref() {
7408            let len = v.compute_size();
7409            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
7410        }
7411        if let Some(v) = self.body_part_id {
7412            my_size += ::protobuf::rt::int32_size(3, v);
7413        }
7414        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
7415        self.special_fields.cached_size().set(my_size as u32);
7416        my_size
7417    }
7418
7419    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
7420        if let Some(v) = self.mode {
7421            os.write_enum(1, ::protobuf::EnumOrUnknown::value(&v))?;
7422        }
7423        if let Some(v) = self.item.as_ref() {
7424            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
7425        }
7426        if let Some(v) = self.body_part_id {
7427            os.write_int32(3, v)?;
7428        }
7429        os.write_unknown_fields(self.special_fields.unknown_fields())?;
7430        ::std::result::Result::Ok(())
7431    }
7432
7433    fn special_fields(&self) -> &::protobuf::SpecialFields {
7434        &self.special_fields
7435    }
7436
7437    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
7438        &mut self.special_fields
7439    }
7440
7441    fn new() -> InventoryItem {
7442        InventoryItem::new()
7443    }
7444
7445    fn clear(&mut self) {
7446        self.mode = ::std::option::Option::None;
7447        self.item.clear();
7448        self.body_part_id = ::std::option::Option::None;
7449        self.special_fields.clear();
7450    }
7451
7452    fn default_instance() -> &'static InventoryItem {
7453        static instance: InventoryItem = InventoryItem {
7454            mode: ::std::option::Option::None,
7455            item: ::protobuf::MessageField::none(),
7456            body_part_id: ::std::option::Option::None,
7457            special_fields: ::protobuf::SpecialFields::new(),
7458        };
7459        &instance
7460    }
7461}
7462
7463impl ::protobuf::MessageFull for InventoryItem {
7464    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
7465        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
7466        descriptor.get(|| file_descriptor().message_by_package_relative_name("InventoryItem").unwrap()).clone()
7467    }
7468}
7469
7470impl ::std::fmt::Display for InventoryItem {
7471    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7472        ::protobuf::text_format::fmt(self, f)
7473    }
7474}
7475
7476impl ::protobuf::reflect::ProtobufValue for InventoryItem {
7477    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
7478}
7479
7480// @@protoc_insertion_point(message:RemoteFortressReader.WoundPart)
7481#[derive(PartialEq,Clone,Default,Debug)]
7482pub struct WoundPart {
7483    // message fields
7484    // @@protoc_insertion_point(field:RemoteFortressReader.WoundPart.global_layer_idx)
7485    pub global_layer_idx: ::std::option::Option<i32>,
7486    // @@protoc_insertion_point(field:RemoteFortressReader.WoundPart.body_part_id)
7487    pub body_part_id: ::std::option::Option<i32>,
7488    // @@protoc_insertion_point(field:RemoteFortressReader.WoundPart.layer_idx)
7489    pub layer_idx: ::std::option::Option<i32>,
7490    // special fields
7491    // @@protoc_insertion_point(special_field:RemoteFortressReader.WoundPart.special_fields)
7492    pub special_fields: ::protobuf::SpecialFields,
7493}
7494
7495impl<'a> ::std::default::Default for &'a WoundPart {
7496    fn default() -> &'a WoundPart {
7497        <WoundPart as ::protobuf::Message>::default_instance()
7498    }
7499}
7500
7501impl WoundPart {
7502    pub fn new() -> WoundPart {
7503        ::std::default::Default::default()
7504    }
7505
7506    // optional int32 global_layer_idx = 1;
7507
7508    pub fn global_layer_idx(&self) -> i32 {
7509        self.global_layer_idx.unwrap_or(0)
7510    }
7511
7512    pub fn clear_global_layer_idx(&mut self) {
7513        self.global_layer_idx = ::std::option::Option::None;
7514    }
7515
7516    pub fn has_global_layer_idx(&self) -> bool {
7517        self.global_layer_idx.is_some()
7518    }
7519
7520    // Param is passed by value, moved
7521    pub fn set_global_layer_idx(&mut self, v: i32) {
7522        self.global_layer_idx = ::std::option::Option::Some(v);
7523    }
7524
7525    // optional int32 body_part_id = 2;
7526
7527    pub fn body_part_id(&self) -> i32 {
7528        self.body_part_id.unwrap_or(0)
7529    }
7530
7531    pub fn clear_body_part_id(&mut self) {
7532        self.body_part_id = ::std::option::Option::None;
7533    }
7534
7535    pub fn has_body_part_id(&self) -> bool {
7536        self.body_part_id.is_some()
7537    }
7538
7539    // Param is passed by value, moved
7540    pub fn set_body_part_id(&mut self, v: i32) {
7541        self.body_part_id = ::std::option::Option::Some(v);
7542    }
7543
7544    // optional int32 layer_idx = 3;
7545
7546    pub fn layer_idx(&self) -> i32 {
7547        self.layer_idx.unwrap_or(0)
7548    }
7549
7550    pub fn clear_layer_idx(&mut self) {
7551        self.layer_idx = ::std::option::Option::None;
7552    }
7553
7554    pub fn has_layer_idx(&self) -> bool {
7555        self.layer_idx.is_some()
7556    }
7557
7558    // Param is passed by value, moved
7559    pub fn set_layer_idx(&mut self, v: i32) {
7560        self.layer_idx = ::std::option::Option::Some(v);
7561    }
7562
7563    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
7564        let mut fields = ::std::vec::Vec::with_capacity(3);
7565        let mut oneofs = ::std::vec::Vec::with_capacity(0);
7566        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
7567            "global_layer_idx",
7568            |m: &WoundPart| { &m.global_layer_idx },
7569            |m: &mut WoundPart| { &mut m.global_layer_idx },
7570        ));
7571        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
7572            "body_part_id",
7573            |m: &WoundPart| { &m.body_part_id },
7574            |m: &mut WoundPart| { &mut m.body_part_id },
7575        ));
7576        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
7577            "layer_idx",
7578            |m: &WoundPart| { &m.layer_idx },
7579            |m: &mut WoundPart| { &mut m.layer_idx },
7580        ));
7581        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<WoundPart>(
7582            "WoundPart",
7583            fields,
7584            oneofs,
7585        )
7586    }
7587}
7588
7589impl ::protobuf::Message for WoundPart {
7590    const NAME: &'static str = "WoundPart";
7591
7592    fn is_initialized(&self) -> bool {
7593        true
7594    }
7595
7596    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
7597        while let Some(tag) = is.read_raw_tag_or_eof()? {
7598            match tag {
7599                8 => {
7600                    self.global_layer_idx = ::std::option::Option::Some(is.read_int32()?);
7601                },
7602                16 => {
7603                    self.body_part_id = ::std::option::Option::Some(is.read_int32()?);
7604                },
7605                24 => {
7606                    self.layer_idx = ::std::option::Option::Some(is.read_int32()?);
7607                },
7608                tag => {
7609                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
7610                },
7611            };
7612        }
7613        ::std::result::Result::Ok(())
7614    }
7615
7616    // Compute sizes of nested messages
7617    #[allow(unused_variables)]
7618    fn compute_size(&self) -> u64 {
7619        let mut my_size = 0;
7620        if let Some(v) = self.global_layer_idx {
7621            my_size += ::protobuf::rt::int32_size(1, v);
7622        }
7623        if let Some(v) = self.body_part_id {
7624            my_size += ::protobuf::rt::int32_size(2, v);
7625        }
7626        if let Some(v) = self.layer_idx {
7627            my_size += ::protobuf::rt::int32_size(3, v);
7628        }
7629        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
7630        self.special_fields.cached_size().set(my_size as u32);
7631        my_size
7632    }
7633
7634    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
7635        if let Some(v) = self.global_layer_idx {
7636            os.write_int32(1, v)?;
7637        }
7638        if let Some(v) = self.body_part_id {
7639            os.write_int32(2, v)?;
7640        }
7641        if let Some(v) = self.layer_idx {
7642            os.write_int32(3, v)?;
7643        }
7644        os.write_unknown_fields(self.special_fields.unknown_fields())?;
7645        ::std::result::Result::Ok(())
7646    }
7647
7648    fn special_fields(&self) -> &::protobuf::SpecialFields {
7649        &self.special_fields
7650    }
7651
7652    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
7653        &mut self.special_fields
7654    }
7655
7656    fn new() -> WoundPart {
7657        WoundPart::new()
7658    }
7659
7660    fn clear(&mut self) {
7661        self.global_layer_idx = ::std::option::Option::None;
7662        self.body_part_id = ::std::option::Option::None;
7663        self.layer_idx = ::std::option::Option::None;
7664        self.special_fields.clear();
7665    }
7666
7667    fn default_instance() -> &'static WoundPart {
7668        static instance: WoundPart = WoundPart {
7669            global_layer_idx: ::std::option::Option::None,
7670            body_part_id: ::std::option::Option::None,
7671            layer_idx: ::std::option::Option::None,
7672            special_fields: ::protobuf::SpecialFields::new(),
7673        };
7674        &instance
7675    }
7676}
7677
7678impl ::protobuf::MessageFull for WoundPart {
7679    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
7680        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
7681        descriptor.get(|| file_descriptor().message_by_package_relative_name("WoundPart").unwrap()).clone()
7682    }
7683}
7684
7685impl ::std::fmt::Display for WoundPart {
7686    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7687        ::protobuf::text_format::fmt(self, f)
7688    }
7689}
7690
7691impl ::protobuf::reflect::ProtobufValue for WoundPart {
7692    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
7693}
7694
7695// @@protoc_insertion_point(message:RemoteFortressReader.UnitWound)
7696#[derive(PartialEq,Clone,Default,Debug)]
7697pub struct UnitWound {
7698    // message fields
7699    // @@protoc_insertion_point(field:RemoteFortressReader.UnitWound.parts)
7700    pub parts: ::std::vec::Vec<WoundPart>,
7701    // @@protoc_insertion_point(field:RemoteFortressReader.UnitWound.severed_part)
7702    pub severed_part: ::std::option::Option<bool>,
7703    // special fields
7704    // @@protoc_insertion_point(special_field:RemoteFortressReader.UnitWound.special_fields)
7705    pub special_fields: ::protobuf::SpecialFields,
7706}
7707
7708impl<'a> ::std::default::Default for &'a UnitWound {
7709    fn default() -> &'a UnitWound {
7710        <UnitWound as ::protobuf::Message>::default_instance()
7711    }
7712}
7713
7714impl UnitWound {
7715    pub fn new() -> UnitWound {
7716        ::std::default::Default::default()
7717    }
7718
7719    // optional bool severed_part = 2;
7720
7721    pub fn severed_part(&self) -> bool {
7722        self.severed_part.unwrap_or(false)
7723    }
7724
7725    pub fn clear_severed_part(&mut self) {
7726        self.severed_part = ::std::option::Option::None;
7727    }
7728
7729    pub fn has_severed_part(&self) -> bool {
7730        self.severed_part.is_some()
7731    }
7732
7733    // Param is passed by value, moved
7734    pub fn set_severed_part(&mut self, v: bool) {
7735        self.severed_part = ::std::option::Option::Some(v);
7736    }
7737
7738    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
7739        let mut fields = ::std::vec::Vec::with_capacity(2);
7740        let mut oneofs = ::std::vec::Vec::with_capacity(0);
7741        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
7742            "parts",
7743            |m: &UnitWound| { &m.parts },
7744            |m: &mut UnitWound| { &mut m.parts },
7745        ));
7746        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
7747            "severed_part",
7748            |m: &UnitWound| { &m.severed_part },
7749            |m: &mut UnitWound| { &mut m.severed_part },
7750        ));
7751        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<UnitWound>(
7752            "UnitWound",
7753            fields,
7754            oneofs,
7755        )
7756    }
7757}
7758
7759impl ::protobuf::Message for UnitWound {
7760    const NAME: &'static str = "UnitWound";
7761
7762    fn is_initialized(&self) -> bool {
7763        true
7764    }
7765
7766    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
7767        while let Some(tag) = is.read_raw_tag_or_eof()? {
7768            match tag {
7769                10 => {
7770                    self.parts.push(is.read_message()?);
7771                },
7772                16 => {
7773                    self.severed_part = ::std::option::Option::Some(is.read_bool()?);
7774                },
7775                tag => {
7776                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
7777                },
7778            };
7779        }
7780        ::std::result::Result::Ok(())
7781    }
7782
7783    // Compute sizes of nested messages
7784    #[allow(unused_variables)]
7785    fn compute_size(&self) -> u64 {
7786        let mut my_size = 0;
7787        for value in &self.parts {
7788            let len = value.compute_size();
7789            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
7790        };
7791        if let Some(v) = self.severed_part {
7792            my_size += 1 + 1;
7793        }
7794        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
7795        self.special_fields.cached_size().set(my_size as u32);
7796        my_size
7797    }
7798
7799    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
7800        for v in &self.parts {
7801            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
7802        };
7803        if let Some(v) = self.severed_part {
7804            os.write_bool(2, v)?;
7805        }
7806        os.write_unknown_fields(self.special_fields.unknown_fields())?;
7807        ::std::result::Result::Ok(())
7808    }
7809
7810    fn special_fields(&self) -> &::protobuf::SpecialFields {
7811        &self.special_fields
7812    }
7813
7814    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
7815        &mut self.special_fields
7816    }
7817
7818    fn new() -> UnitWound {
7819        UnitWound::new()
7820    }
7821
7822    fn clear(&mut self) {
7823        self.parts.clear();
7824        self.severed_part = ::std::option::Option::None;
7825        self.special_fields.clear();
7826    }
7827
7828    fn default_instance() -> &'static UnitWound {
7829        static instance: UnitWound = UnitWound {
7830            parts: ::std::vec::Vec::new(),
7831            severed_part: ::std::option::Option::None,
7832            special_fields: ::protobuf::SpecialFields::new(),
7833        };
7834        &instance
7835    }
7836}
7837
7838impl ::protobuf::MessageFull for UnitWound {
7839    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
7840        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
7841        descriptor.get(|| file_descriptor().message_by_package_relative_name("UnitWound").unwrap()).clone()
7842    }
7843}
7844
7845impl ::std::fmt::Display for UnitWound {
7846    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7847        ::protobuf::text_format::fmt(self, f)
7848    }
7849}
7850
7851impl ::protobuf::reflect::ProtobufValue for UnitWound {
7852    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
7853}
7854
7855// @@protoc_insertion_point(message:RemoteFortressReader.UnitDefinition)
7856#[derive(PartialEq,Clone,Default,Debug)]
7857pub struct UnitDefinition {
7858    // message fields
7859    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.id)
7860    pub id: ::std::option::Option<i32>,
7861    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.isValid)
7862    pub isValid: ::std::option::Option<bool>,
7863    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.pos_x)
7864    pub pos_x: ::std::option::Option<i32>,
7865    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.pos_y)
7866    pub pos_y: ::std::option::Option<i32>,
7867    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.pos_z)
7868    pub pos_z: ::std::option::Option<i32>,
7869    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.race)
7870    pub race: ::protobuf::MessageField<MatPair>,
7871    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.profession_color)
7872    pub profession_color: ::protobuf::MessageField<ColorDefinition>,
7873    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.flags1)
7874    pub flags1: ::std::option::Option<u32>,
7875    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.flags2)
7876    pub flags2: ::std::option::Option<u32>,
7877    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.flags3)
7878    pub flags3: ::std::option::Option<u32>,
7879    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.is_soldier)
7880    pub is_soldier: ::std::option::Option<bool>,
7881    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.size_info)
7882    pub size_info: ::protobuf::MessageField<BodySizeInfo>,
7883    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.name)
7884    pub name: ::std::option::Option<::std::string::String>,
7885    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.blood_max)
7886    pub blood_max: ::std::option::Option<i32>,
7887    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.blood_count)
7888    pub blood_count: ::std::option::Option<i32>,
7889    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.appearance)
7890    pub appearance: ::protobuf::MessageField<UnitAppearance>,
7891    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.profession_id)
7892    pub profession_id: ::std::option::Option<i32>,
7893    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.noble_positions)
7894    pub noble_positions: ::std::vec::Vec<::std::string::String>,
7895    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.rider_id)
7896    pub rider_id: ::std::option::Option<i32>,
7897    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.inventory)
7898    pub inventory: ::std::vec::Vec<InventoryItem>,
7899    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.subpos_x)
7900    pub subpos_x: ::std::option::Option<f32>,
7901    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.subpos_y)
7902    pub subpos_y: ::std::option::Option<f32>,
7903    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.subpos_z)
7904    pub subpos_z: ::std::option::Option<f32>,
7905    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.facing)
7906    pub facing: ::protobuf::MessageField<Coord>,
7907    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.age)
7908    pub age: ::std::option::Option<i32>,
7909    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.wounds)
7910    pub wounds: ::std::vec::Vec<UnitWound>,
7911    // special fields
7912    // @@protoc_insertion_point(special_field:RemoteFortressReader.UnitDefinition.special_fields)
7913    pub special_fields: ::protobuf::SpecialFields,
7914}
7915
7916impl<'a> ::std::default::Default for &'a UnitDefinition {
7917    fn default() -> &'a UnitDefinition {
7918        <UnitDefinition as ::protobuf::Message>::default_instance()
7919    }
7920}
7921
7922impl UnitDefinition {
7923    pub fn new() -> UnitDefinition {
7924        ::std::default::Default::default()
7925    }
7926
7927    // required int32 id = 1;
7928
7929    pub fn id(&self) -> i32 {
7930        self.id.unwrap_or(0)
7931    }
7932
7933    pub fn clear_id(&mut self) {
7934        self.id = ::std::option::Option::None;
7935    }
7936
7937    pub fn has_id(&self) -> bool {
7938        self.id.is_some()
7939    }
7940
7941    // Param is passed by value, moved
7942    pub fn set_id(&mut self, v: i32) {
7943        self.id = ::std::option::Option::Some(v);
7944    }
7945
7946    // optional bool isValid = 2;
7947
7948    pub fn isValid(&self) -> bool {
7949        self.isValid.unwrap_or(false)
7950    }
7951
7952    pub fn clear_isValid(&mut self) {
7953        self.isValid = ::std::option::Option::None;
7954    }
7955
7956    pub fn has_isValid(&self) -> bool {
7957        self.isValid.is_some()
7958    }
7959
7960    // Param is passed by value, moved
7961    pub fn set_isValid(&mut self, v: bool) {
7962        self.isValid = ::std::option::Option::Some(v);
7963    }
7964
7965    // optional int32 pos_x = 3;
7966
7967    pub fn pos_x(&self) -> i32 {
7968        self.pos_x.unwrap_or(0)
7969    }
7970
7971    pub fn clear_pos_x(&mut self) {
7972        self.pos_x = ::std::option::Option::None;
7973    }
7974
7975    pub fn has_pos_x(&self) -> bool {
7976        self.pos_x.is_some()
7977    }
7978
7979    // Param is passed by value, moved
7980    pub fn set_pos_x(&mut self, v: i32) {
7981        self.pos_x = ::std::option::Option::Some(v);
7982    }
7983
7984    // optional int32 pos_y = 4;
7985
7986    pub fn pos_y(&self) -> i32 {
7987        self.pos_y.unwrap_or(0)
7988    }
7989
7990    pub fn clear_pos_y(&mut self) {
7991        self.pos_y = ::std::option::Option::None;
7992    }
7993
7994    pub fn has_pos_y(&self) -> bool {
7995        self.pos_y.is_some()
7996    }
7997
7998    // Param is passed by value, moved
7999    pub fn set_pos_y(&mut self, v: i32) {
8000        self.pos_y = ::std::option::Option::Some(v);
8001    }
8002
8003    // optional int32 pos_z = 5;
8004
8005    pub fn pos_z(&self) -> i32 {
8006        self.pos_z.unwrap_or(0)
8007    }
8008
8009    pub fn clear_pos_z(&mut self) {
8010        self.pos_z = ::std::option::Option::None;
8011    }
8012
8013    pub fn has_pos_z(&self) -> bool {
8014        self.pos_z.is_some()
8015    }
8016
8017    // Param is passed by value, moved
8018    pub fn set_pos_z(&mut self, v: i32) {
8019        self.pos_z = ::std::option::Option::Some(v);
8020    }
8021
8022    // optional uint32 flags1 = 8;
8023
8024    pub fn flags1(&self) -> u32 {
8025        self.flags1.unwrap_or(0)
8026    }
8027
8028    pub fn clear_flags1(&mut self) {
8029        self.flags1 = ::std::option::Option::None;
8030    }
8031
8032    pub fn has_flags1(&self) -> bool {
8033        self.flags1.is_some()
8034    }
8035
8036    // Param is passed by value, moved
8037    pub fn set_flags1(&mut self, v: u32) {
8038        self.flags1 = ::std::option::Option::Some(v);
8039    }
8040
8041    // optional uint32 flags2 = 9;
8042
8043    pub fn flags2(&self) -> u32 {
8044        self.flags2.unwrap_or(0)
8045    }
8046
8047    pub fn clear_flags2(&mut self) {
8048        self.flags2 = ::std::option::Option::None;
8049    }
8050
8051    pub fn has_flags2(&self) -> bool {
8052        self.flags2.is_some()
8053    }
8054
8055    // Param is passed by value, moved
8056    pub fn set_flags2(&mut self, v: u32) {
8057        self.flags2 = ::std::option::Option::Some(v);
8058    }
8059
8060    // optional uint32 flags3 = 10;
8061
8062    pub fn flags3(&self) -> u32 {
8063        self.flags3.unwrap_or(0)
8064    }
8065
8066    pub fn clear_flags3(&mut self) {
8067        self.flags3 = ::std::option::Option::None;
8068    }
8069
8070    pub fn has_flags3(&self) -> bool {
8071        self.flags3.is_some()
8072    }
8073
8074    // Param is passed by value, moved
8075    pub fn set_flags3(&mut self, v: u32) {
8076        self.flags3 = ::std::option::Option::Some(v);
8077    }
8078
8079    // optional bool is_soldier = 11;
8080
8081    pub fn is_soldier(&self) -> bool {
8082        self.is_soldier.unwrap_or(false)
8083    }
8084
8085    pub fn clear_is_soldier(&mut self) {
8086        self.is_soldier = ::std::option::Option::None;
8087    }
8088
8089    pub fn has_is_soldier(&self) -> bool {
8090        self.is_soldier.is_some()
8091    }
8092
8093    // Param is passed by value, moved
8094    pub fn set_is_soldier(&mut self, v: bool) {
8095        self.is_soldier = ::std::option::Option::Some(v);
8096    }
8097
8098    // optional string name = 13;
8099
8100    pub fn name(&self) -> &str {
8101        match self.name.as_ref() {
8102            Some(v) => v,
8103            None => "",
8104        }
8105    }
8106
8107    pub fn clear_name(&mut self) {
8108        self.name = ::std::option::Option::None;
8109    }
8110
8111    pub fn has_name(&self) -> bool {
8112        self.name.is_some()
8113    }
8114
8115    // Param is passed by value, moved
8116    pub fn set_name(&mut self, v: ::std::string::String) {
8117        self.name = ::std::option::Option::Some(v);
8118    }
8119
8120    // Mutable pointer to the field.
8121    // If field is not initialized, it is initialized with default value first.
8122    pub fn mut_name(&mut self) -> &mut ::std::string::String {
8123        if self.name.is_none() {
8124            self.name = ::std::option::Option::Some(::std::string::String::new());
8125        }
8126        self.name.as_mut().unwrap()
8127    }
8128
8129    // Take field
8130    pub fn take_name(&mut self) -> ::std::string::String {
8131        self.name.take().unwrap_or_else(|| ::std::string::String::new())
8132    }
8133
8134    // optional int32 blood_max = 14;
8135
8136    pub fn blood_max(&self) -> i32 {
8137        self.blood_max.unwrap_or(0)
8138    }
8139
8140    pub fn clear_blood_max(&mut self) {
8141        self.blood_max = ::std::option::Option::None;
8142    }
8143
8144    pub fn has_blood_max(&self) -> bool {
8145        self.blood_max.is_some()
8146    }
8147
8148    // Param is passed by value, moved
8149    pub fn set_blood_max(&mut self, v: i32) {
8150        self.blood_max = ::std::option::Option::Some(v);
8151    }
8152
8153    // optional int32 blood_count = 15;
8154
8155    pub fn blood_count(&self) -> i32 {
8156        self.blood_count.unwrap_or(0)
8157    }
8158
8159    pub fn clear_blood_count(&mut self) {
8160        self.blood_count = ::std::option::Option::None;
8161    }
8162
8163    pub fn has_blood_count(&self) -> bool {
8164        self.blood_count.is_some()
8165    }
8166
8167    // Param is passed by value, moved
8168    pub fn set_blood_count(&mut self, v: i32) {
8169        self.blood_count = ::std::option::Option::Some(v);
8170    }
8171
8172    // optional int32 profession_id = 17;
8173
8174    pub fn profession_id(&self) -> i32 {
8175        self.profession_id.unwrap_or(0)
8176    }
8177
8178    pub fn clear_profession_id(&mut self) {
8179        self.profession_id = ::std::option::Option::None;
8180    }
8181
8182    pub fn has_profession_id(&self) -> bool {
8183        self.profession_id.is_some()
8184    }
8185
8186    // Param is passed by value, moved
8187    pub fn set_profession_id(&mut self, v: i32) {
8188        self.profession_id = ::std::option::Option::Some(v);
8189    }
8190
8191    // optional int32 rider_id = 19;
8192
8193    pub fn rider_id(&self) -> i32 {
8194        self.rider_id.unwrap_or(0)
8195    }
8196
8197    pub fn clear_rider_id(&mut self) {
8198        self.rider_id = ::std::option::Option::None;
8199    }
8200
8201    pub fn has_rider_id(&self) -> bool {
8202        self.rider_id.is_some()
8203    }
8204
8205    // Param is passed by value, moved
8206    pub fn set_rider_id(&mut self, v: i32) {
8207        self.rider_id = ::std::option::Option::Some(v);
8208    }
8209
8210    // optional float subpos_x = 21;
8211
8212    pub fn subpos_x(&self) -> f32 {
8213        self.subpos_x.unwrap_or(0.)
8214    }
8215
8216    pub fn clear_subpos_x(&mut self) {
8217        self.subpos_x = ::std::option::Option::None;
8218    }
8219
8220    pub fn has_subpos_x(&self) -> bool {
8221        self.subpos_x.is_some()
8222    }
8223
8224    // Param is passed by value, moved
8225    pub fn set_subpos_x(&mut self, v: f32) {
8226        self.subpos_x = ::std::option::Option::Some(v);
8227    }
8228
8229    // optional float subpos_y = 22;
8230
8231    pub fn subpos_y(&self) -> f32 {
8232        self.subpos_y.unwrap_or(0.)
8233    }
8234
8235    pub fn clear_subpos_y(&mut self) {
8236        self.subpos_y = ::std::option::Option::None;
8237    }
8238
8239    pub fn has_subpos_y(&self) -> bool {
8240        self.subpos_y.is_some()
8241    }
8242
8243    // Param is passed by value, moved
8244    pub fn set_subpos_y(&mut self, v: f32) {
8245        self.subpos_y = ::std::option::Option::Some(v);
8246    }
8247
8248    // optional float subpos_z = 23;
8249
8250    pub fn subpos_z(&self) -> f32 {
8251        self.subpos_z.unwrap_or(0.)
8252    }
8253
8254    pub fn clear_subpos_z(&mut self) {
8255        self.subpos_z = ::std::option::Option::None;
8256    }
8257
8258    pub fn has_subpos_z(&self) -> bool {
8259        self.subpos_z.is_some()
8260    }
8261
8262    // Param is passed by value, moved
8263    pub fn set_subpos_z(&mut self, v: f32) {
8264        self.subpos_z = ::std::option::Option::Some(v);
8265    }
8266
8267    // optional int32 age = 25;
8268
8269    pub fn age(&self) -> i32 {
8270        self.age.unwrap_or(0)
8271    }
8272
8273    pub fn clear_age(&mut self) {
8274        self.age = ::std::option::Option::None;
8275    }
8276
8277    pub fn has_age(&self) -> bool {
8278        self.age.is_some()
8279    }
8280
8281    // Param is passed by value, moved
8282    pub fn set_age(&mut self, v: i32) {
8283        self.age = ::std::option::Option::Some(v);
8284    }
8285
8286    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
8287        let mut fields = ::std::vec::Vec::with_capacity(26);
8288        let mut oneofs = ::std::vec::Vec::with_capacity(0);
8289        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8290            "id",
8291            |m: &UnitDefinition| { &m.id },
8292            |m: &mut UnitDefinition| { &mut m.id },
8293        ));
8294        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8295            "isValid",
8296            |m: &UnitDefinition| { &m.isValid },
8297            |m: &mut UnitDefinition| { &mut m.isValid },
8298        ));
8299        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8300            "pos_x",
8301            |m: &UnitDefinition| { &m.pos_x },
8302            |m: &mut UnitDefinition| { &mut m.pos_x },
8303        ));
8304        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8305            "pos_y",
8306            |m: &UnitDefinition| { &m.pos_y },
8307            |m: &mut UnitDefinition| { &mut m.pos_y },
8308        ));
8309        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8310            "pos_z",
8311            |m: &UnitDefinition| { &m.pos_z },
8312            |m: &mut UnitDefinition| { &mut m.pos_z },
8313        ));
8314        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
8315            "race",
8316            |m: &UnitDefinition| { &m.race },
8317            |m: &mut UnitDefinition| { &mut m.race },
8318        ));
8319        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ColorDefinition>(
8320            "profession_color",
8321            |m: &UnitDefinition| { &m.profession_color },
8322            |m: &mut UnitDefinition| { &mut m.profession_color },
8323        ));
8324        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8325            "flags1",
8326            |m: &UnitDefinition| { &m.flags1 },
8327            |m: &mut UnitDefinition| { &mut m.flags1 },
8328        ));
8329        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8330            "flags2",
8331            |m: &UnitDefinition| { &m.flags2 },
8332            |m: &mut UnitDefinition| { &mut m.flags2 },
8333        ));
8334        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8335            "flags3",
8336            |m: &UnitDefinition| { &m.flags3 },
8337            |m: &mut UnitDefinition| { &mut m.flags3 },
8338        ));
8339        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8340            "is_soldier",
8341            |m: &UnitDefinition| { &m.is_soldier },
8342            |m: &mut UnitDefinition| { &mut m.is_soldier },
8343        ));
8344        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, BodySizeInfo>(
8345            "size_info",
8346            |m: &UnitDefinition| { &m.size_info },
8347            |m: &mut UnitDefinition| { &mut m.size_info },
8348        ));
8349        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8350            "name",
8351            |m: &UnitDefinition| { &m.name },
8352            |m: &mut UnitDefinition| { &mut m.name },
8353        ));
8354        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8355            "blood_max",
8356            |m: &UnitDefinition| { &m.blood_max },
8357            |m: &mut UnitDefinition| { &mut m.blood_max },
8358        ));
8359        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8360            "blood_count",
8361            |m: &UnitDefinition| { &m.blood_count },
8362            |m: &mut UnitDefinition| { &mut m.blood_count },
8363        ));
8364        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, UnitAppearance>(
8365            "appearance",
8366            |m: &UnitDefinition| { &m.appearance },
8367            |m: &mut UnitDefinition| { &mut m.appearance },
8368        ));
8369        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8370            "profession_id",
8371            |m: &UnitDefinition| { &m.profession_id },
8372            |m: &mut UnitDefinition| { &mut m.profession_id },
8373        ));
8374        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
8375            "noble_positions",
8376            |m: &UnitDefinition| { &m.noble_positions },
8377            |m: &mut UnitDefinition| { &mut m.noble_positions },
8378        ));
8379        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8380            "rider_id",
8381            |m: &UnitDefinition| { &m.rider_id },
8382            |m: &mut UnitDefinition| { &mut m.rider_id },
8383        ));
8384        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
8385            "inventory",
8386            |m: &UnitDefinition| { &m.inventory },
8387            |m: &mut UnitDefinition| { &mut m.inventory },
8388        ));
8389        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8390            "subpos_x",
8391            |m: &UnitDefinition| { &m.subpos_x },
8392            |m: &mut UnitDefinition| { &mut m.subpos_x },
8393        ));
8394        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8395            "subpos_y",
8396            |m: &UnitDefinition| { &m.subpos_y },
8397            |m: &mut UnitDefinition| { &mut m.subpos_y },
8398        ));
8399        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8400            "subpos_z",
8401            |m: &UnitDefinition| { &m.subpos_z },
8402            |m: &mut UnitDefinition| { &mut m.subpos_z },
8403        ));
8404        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
8405            "facing",
8406            |m: &UnitDefinition| { &m.facing },
8407            |m: &mut UnitDefinition| { &mut m.facing },
8408        ));
8409        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8410            "age",
8411            |m: &UnitDefinition| { &m.age },
8412            |m: &mut UnitDefinition| { &mut m.age },
8413        ));
8414        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
8415            "wounds",
8416            |m: &UnitDefinition| { &m.wounds },
8417            |m: &mut UnitDefinition| { &mut m.wounds },
8418        ));
8419        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<UnitDefinition>(
8420            "UnitDefinition",
8421            fields,
8422            oneofs,
8423        )
8424    }
8425}
8426
8427impl ::protobuf::Message for UnitDefinition {
8428    const NAME: &'static str = "UnitDefinition";
8429
8430    fn is_initialized(&self) -> bool {
8431        if self.id.is_none() {
8432            return false;
8433        }
8434        for v in &self.race {
8435            if !v.is_initialized() {
8436                return false;
8437            }
8438        };
8439        for v in &self.profession_color {
8440            if !v.is_initialized() {
8441                return false;
8442            }
8443        };
8444        for v in &self.size_info {
8445            if !v.is_initialized() {
8446                return false;
8447            }
8448        };
8449        for v in &self.appearance {
8450            if !v.is_initialized() {
8451                return false;
8452            }
8453        };
8454        for v in &self.inventory {
8455            if !v.is_initialized() {
8456                return false;
8457            }
8458        };
8459        for v in &self.facing {
8460            if !v.is_initialized() {
8461                return false;
8462            }
8463        };
8464        for v in &self.wounds {
8465            if !v.is_initialized() {
8466                return false;
8467            }
8468        };
8469        true
8470    }
8471
8472    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
8473        while let Some(tag) = is.read_raw_tag_or_eof()? {
8474            match tag {
8475                8 => {
8476                    self.id = ::std::option::Option::Some(is.read_int32()?);
8477                },
8478                16 => {
8479                    self.isValid = ::std::option::Option::Some(is.read_bool()?);
8480                },
8481                24 => {
8482                    self.pos_x = ::std::option::Option::Some(is.read_int32()?);
8483                },
8484                32 => {
8485                    self.pos_y = ::std::option::Option::Some(is.read_int32()?);
8486                },
8487                40 => {
8488                    self.pos_z = ::std::option::Option::Some(is.read_int32()?);
8489                },
8490                50 => {
8491                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.race)?;
8492                },
8493                58 => {
8494                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.profession_color)?;
8495                },
8496                64 => {
8497                    self.flags1 = ::std::option::Option::Some(is.read_uint32()?);
8498                },
8499                72 => {
8500                    self.flags2 = ::std::option::Option::Some(is.read_uint32()?);
8501                },
8502                80 => {
8503                    self.flags3 = ::std::option::Option::Some(is.read_uint32()?);
8504                },
8505                88 => {
8506                    self.is_soldier = ::std::option::Option::Some(is.read_bool()?);
8507                },
8508                98 => {
8509                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.size_info)?;
8510                },
8511                106 => {
8512                    self.name = ::std::option::Option::Some(is.read_string()?);
8513                },
8514                112 => {
8515                    self.blood_max = ::std::option::Option::Some(is.read_int32()?);
8516                },
8517                120 => {
8518                    self.blood_count = ::std::option::Option::Some(is.read_int32()?);
8519                },
8520                130 => {
8521                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.appearance)?;
8522                },
8523                136 => {
8524                    self.profession_id = ::std::option::Option::Some(is.read_int32()?);
8525                },
8526                146 => {
8527                    self.noble_positions.push(is.read_string()?);
8528                },
8529                152 => {
8530                    self.rider_id = ::std::option::Option::Some(is.read_int32()?);
8531                },
8532                162 => {
8533                    self.inventory.push(is.read_message()?);
8534                },
8535                173 => {
8536                    self.subpos_x = ::std::option::Option::Some(is.read_float()?);
8537                },
8538                181 => {
8539                    self.subpos_y = ::std::option::Option::Some(is.read_float()?);
8540                },
8541                189 => {
8542                    self.subpos_z = ::std::option::Option::Some(is.read_float()?);
8543                },
8544                194 => {
8545                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.facing)?;
8546                },
8547                200 => {
8548                    self.age = ::std::option::Option::Some(is.read_int32()?);
8549                },
8550                210 => {
8551                    self.wounds.push(is.read_message()?);
8552                },
8553                tag => {
8554                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
8555                },
8556            };
8557        }
8558        ::std::result::Result::Ok(())
8559    }
8560
8561    // Compute sizes of nested messages
8562    #[allow(unused_variables)]
8563    fn compute_size(&self) -> u64 {
8564        let mut my_size = 0;
8565        if let Some(v) = self.id {
8566            my_size += ::protobuf::rt::int32_size(1, v);
8567        }
8568        if let Some(v) = self.isValid {
8569            my_size += 1 + 1;
8570        }
8571        if let Some(v) = self.pos_x {
8572            my_size += ::protobuf::rt::int32_size(3, v);
8573        }
8574        if let Some(v) = self.pos_y {
8575            my_size += ::protobuf::rt::int32_size(4, v);
8576        }
8577        if let Some(v) = self.pos_z {
8578            my_size += ::protobuf::rt::int32_size(5, v);
8579        }
8580        if let Some(v) = self.race.as_ref() {
8581            let len = v.compute_size();
8582            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
8583        }
8584        if let Some(v) = self.profession_color.as_ref() {
8585            let len = v.compute_size();
8586            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
8587        }
8588        if let Some(v) = self.flags1 {
8589            my_size += ::protobuf::rt::uint32_size(8, v);
8590        }
8591        if let Some(v) = self.flags2 {
8592            my_size += ::protobuf::rt::uint32_size(9, v);
8593        }
8594        if let Some(v) = self.flags3 {
8595            my_size += ::protobuf::rt::uint32_size(10, v);
8596        }
8597        if let Some(v) = self.is_soldier {
8598            my_size += 1 + 1;
8599        }
8600        if let Some(v) = self.size_info.as_ref() {
8601            let len = v.compute_size();
8602            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
8603        }
8604        if let Some(v) = self.name.as_ref() {
8605            my_size += ::protobuf::rt::string_size(13, &v);
8606        }
8607        if let Some(v) = self.blood_max {
8608            my_size += ::protobuf::rt::int32_size(14, v);
8609        }
8610        if let Some(v) = self.blood_count {
8611            my_size += ::protobuf::rt::int32_size(15, v);
8612        }
8613        if let Some(v) = self.appearance.as_ref() {
8614            let len = v.compute_size();
8615            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
8616        }
8617        if let Some(v) = self.profession_id {
8618            my_size += ::protobuf::rt::int32_size(17, v);
8619        }
8620        for value in &self.noble_positions {
8621            my_size += ::protobuf::rt::string_size(18, &value);
8622        };
8623        if let Some(v) = self.rider_id {
8624            my_size += ::protobuf::rt::int32_size(19, v);
8625        }
8626        for value in &self.inventory {
8627            let len = value.compute_size();
8628            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
8629        };
8630        if let Some(v) = self.subpos_x {
8631            my_size += 2 + 4;
8632        }
8633        if let Some(v) = self.subpos_y {
8634            my_size += 2 + 4;
8635        }
8636        if let Some(v) = self.subpos_z {
8637            my_size += 2 + 4;
8638        }
8639        if let Some(v) = self.facing.as_ref() {
8640            let len = v.compute_size();
8641            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
8642        }
8643        if let Some(v) = self.age {
8644            my_size += ::protobuf::rt::int32_size(25, v);
8645        }
8646        for value in &self.wounds {
8647            let len = value.compute_size();
8648            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
8649        };
8650        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
8651        self.special_fields.cached_size().set(my_size as u32);
8652        my_size
8653    }
8654
8655    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
8656        if let Some(v) = self.id {
8657            os.write_int32(1, v)?;
8658        }
8659        if let Some(v) = self.isValid {
8660            os.write_bool(2, v)?;
8661        }
8662        if let Some(v) = self.pos_x {
8663            os.write_int32(3, v)?;
8664        }
8665        if let Some(v) = self.pos_y {
8666            os.write_int32(4, v)?;
8667        }
8668        if let Some(v) = self.pos_z {
8669            os.write_int32(5, v)?;
8670        }
8671        if let Some(v) = self.race.as_ref() {
8672            ::protobuf::rt::write_message_field_with_cached_size(6, v, os)?;
8673        }
8674        if let Some(v) = self.profession_color.as_ref() {
8675            ::protobuf::rt::write_message_field_with_cached_size(7, v, os)?;
8676        }
8677        if let Some(v) = self.flags1 {
8678            os.write_uint32(8, v)?;
8679        }
8680        if let Some(v) = self.flags2 {
8681            os.write_uint32(9, v)?;
8682        }
8683        if let Some(v) = self.flags3 {
8684            os.write_uint32(10, v)?;
8685        }
8686        if let Some(v) = self.is_soldier {
8687            os.write_bool(11, v)?;
8688        }
8689        if let Some(v) = self.size_info.as_ref() {
8690            ::protobuf::rt::write_message_field_with_cached_size(12, v, os)?;
8691        }
8692        if let Some(v) = self.name.as_ref() {
8693            os.write_string(13, v)?;
8694        }
8695        if let Some(v) = self.blood_max {
8696            os.write_int32(14, v)?;
8697        }
8698        if let Some(v) = self.blood_count {
8699            os.write_int32(15, v)?;
8700        }
8701        if let Some(v) = self.appearance.as_ref() {
8702            ::protobuf::rt::write_message_field_with_cached_size(16, v, os)?;
8703        }
8704        if let Some(v) = self.profession_id {
8705            os.write_int32(17, v)?;
8706        }
8707        for v in &self.noble_positions {
8708            os.write_string(18, &v)?;
8709        };
8710        if let Some(v) = self.rider_id {
8711            os.write_int32(19, v)?;
8712        }
8713        for v in &self.inventory {
8714            ::protobuf::rt::write_message_field_with_cached_size(20, v, os)?;
8715        };
8716        if let Some(v) = self.subpos_x {
8717            os.write_float(21, v)?;
8718        }
8719        if let Some(v) = self.subpos_y {
8720            os.write_float(22, v)?;
8721        }
8722        if let Some(v) = self.subpos_z {
8723            os.write_float(23, v)?;
8724        }
8725        if let Some(v) = self.facing.as_ref() {
8726            ::protobuf::rt::write_message_field_with_cached_size(24, v, os)?;
8727        }
8728        if let Some(v) = self.age {
8729            os.write_int32(25, v)?;
8730        }
8731        for v in &self.wounds {
8732            ::protobuf::rt::write_message_field_with_cached_size(26, v, os)?;
8733        };
8734        os.write_unknown_fields(self.special_fields.unknown_fields())?;
8735        ::std::result::Result::Ok(())
8736    }
8737
8738    fn special_fields(&self) -> &::protobuf::SpecialFields {
8739        &self.special_fields
8740    }
8741
8742    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
8743        &mut self.special_fields
8744    }
8745
8746    fn new() -> UnitDefinition {
8747        UnitDefinition::new()
8748    }
8749
8750    fn clear(&mut self) {
8751        self.id = ::std::option::Option::None;
8752        self.isValid = ::std::option::Option::None;
8753        self.pos_x = ::std::option::Option::None;
8754        self.pos_y = ::std::option::Option::None;
8755        self.pos_z = ::std::option::Option::None;
8756        self.race.clear();
8757        self.profession_color.clear();
8758        self.flags1 = ::std::option::Option::None;
8759        self.flags2 = ::std::option::Option::None;
8760        self.flags3 = ::std::option::Option::None;
8761        self.is_soldier = ::std::option::Option::None;
8762        self.size_info.clear();
8763        self.name = ::std::option::Option::None;
8764        self.blood_max = ::std::option::Option::None;
8765        self.blood_count = ::std::option::Option::None;
8766        self.appearance.clear();
8767        self.profession_id = ::std::option::Option::None;
8768        self.noble_positions.clear();
8769        self.rider_id = ::std::option::Option::None;
8770        self.inventory.clear();
8771        self.subpos_x = ::std::option::Option::None;
8772        self.subpos_y = ::std::option::Option::None;
8773        self.subpos_z = ::std::option::Option::None;
8774        self.facing.clear();
8775        self.age = ::std::option::Option::None;
8776        self.wounds.clear();
8777        self.special_fields.clear();
8778    }
8779
8780    fn default_instance() -> &'static UnitDefinition {
8781        static instance: UnitDefinition = UnitDefinition {
8782            id: ::std::option::Option::None,
8783            isValid: ::std::option::Option::None,
8784            pos_x: ::std::option::Option::None,
8785            pos_y: ::std::option::Option::None,
8786            pos_z: ::std::option::Option::None,
8787            race: ::protobuf::MessageField::none(),
8788            profession_color: ::protobuf::MessageField::none(),
8789            flags1: ::std::option::Option::None,
8790            flags2: ::std::option::Option::None,
8791            flags3: ::std::option::Option::None,
8792            is_soldier: ::std::option::Option::None,
8793            size_info: ::protobuf::MessageField::none(),
8794            name: ::std::option::Option::None,
8795            blood_max: ::std::option::Option::None,
8796            blood_count: ::std::option::Option::None,
8797            appearance: ::protobuf::MessageField::none(),
8798            profession_id: ::std::option::Option::None,
8799            noble_positions: ::std::vec::Vec::new(),
8800            rider_id: ::std::option::Option::None,
8801            inventory: ::std::vec::Vec::new(),
8802            subpos_x: ::std::option::Option::None,
8803            subpos_y: ::std::option::Option::None,
8804            subpos_z: ::std::option::Option::None,
8805            facing: ::protobuf::MessageField::none(),
8806            age: ::std::option::Option::None,
8807            wounds: ::std::vec::Vec::new(),
8808            special_fields: ::protobuf::SpecialFields::new(),
8809        };
8810        &instance
8811    }
8812}
8813
8814impl ::protobuf::MessageFull for UnitDefinition {
8815    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
8816        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
8817        descriptor.get(|| file_descriptor().message_by_package_relative_name("UnitDefinition").unwrap()).clone()
8818    }
8819}
8820
8821impl ::std::fmt::Display for UnitDefinition {
8822    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8823        ::protobuf::text_format::fmt(self, f)
8824    }
8825}
8826
8827impl ::protobuf::reflect::ProtobufValue for UnitDefinition {
8828    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
8829}
8830
8831// @@protoc_insertion_point(message:RemoteFortressReader.UnitList)
8832#[derive(PartialEq,Clone,Default,Debug)]
8833pub struct UnitList {
8834    // message fields
8835    // @@protoc_insertion_point(field:RemoteFortressReader.UnitList.creature_list)
8836    pub creature_list: ::std::vec::Vec<UnitDefinition>,
8837    // special fields
8838    // @@protoc_insertion_point(special_field:RemoteFortressReader.UnitList.special_fields)
8839    pub special_fields: ::protobuf::SpecialFields,
8840}
8841
8842impl<'a> ::std::default::Default for &'a UnitList {
8843    fn default() -> &'a UnitList {
8844        <UnitList as ::protobuf::Message>::default_instance()
8845    }
8846}
8847
8848impl UnitList {
8849    pub fn new() -> UnitList {
8850        ::std::default::Default::default()
8851    }
8852
8853    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
8854        let mut fields = ::std::vec::Vec::with_capacity(1);
8855        let mut oneofs = ::std::vec::Vec::with_capacity(0);
8856        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
8857            "creature_list",
8858            |m: &UnitList| { &m.creature_list },
8859            |m: &mut UnitList| { &mut m.creature_list },
8860        ));
8861        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<UnitList>(
8862            "UnitList",
8863            fields,
8864            oneofs,
8865        )
8866    }
8867}
8868
8869impl ::protobuf::Message for UnitList {
8870    const NAME: &'static str = "UnitList";
8871
8872    fn is_initialized(&self) -> bool {
8873        for v in &self.creature_list {
8874            if !v.is_initialized() {
8875                return false;
8876            }
8877        };
8878        true
8879    }
8880
8881    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
8882        while let Some(tag) = is.read_raw_tag_or_eof()? {
8883            match tag {
8884                10 => {
8885                    self.creature_list.push(is.read_message()?);
8886                },
8887                tag => {
8888                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
8889                },
8890            };
8891        }
8892        ::std::result::Result::Ok(())
8893    }
8894
8895    // Compute sizes of nested messages
8896    #[allow(unused_variables)]
8897    fn compute_size(&self) -> u64 {
8898        let mut my_size = 0;
8899        for value in &self.creature_list {
8900            let len = value.compute_size();
8901            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
8902        };
8903        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
8904        self.special_fields.cached_size().set(my_size as u32);
8905        my_size
8906    }
8907
8908    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
8909        for v in &self.creature_list {
8910            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
8911        };
8912        os.write_unknown_fields(self.special_fields.unknown_fields())?;
8913        ::std::result::Result::Ok(())
8914    }
8915
8916    fn special_fields(&self) -> &::protobuf::SpecialFields {
8917        &self.special_fields
8918    }
8919
8920    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
8921        &mut self.special_fields
8922    }
8923
8924    fn new() -> UnitList {
8925        UnitList::new()
8926    }
8927
8928    fn clear(&mut self) {
8929        self.creature_list.clear();
8930        self.special_fields.clear();
8931    }
8932
8933    fn default_instance() -> &'static UnitList {
8934        static instance: UnitList = UnitList {
8935            creature_list: ::std::vec::Vec::new(),
8936            special_fields: ::protobuf::SpecialFields::new(),
8937        };
8938        &instance
8939    }
8940}
8941
8942impl ::protobuf::MessageFull for UnitList {
8943    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
8944        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
8945        descriptor.get(|| file_descriptor().message_by_package_relative_name("UnitList").unwrap()).clone()
8946    }
8947}
8948
8949impl ::std::fmt::Display for UnitList {
8950    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8951        ::protobuf::text_format::fmt(self, f)
8952    }
8953}
8954
8955impl ::protobuf::reflect::ProtobufValue for UnitList {
8956    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
8957}
8958
8959// @@protoc_insertion_point(message:RemoteFortressReader.BlockRequest)
8960#[derive(PartialEq,Clone,Default,Debug)]
8961pub struct BlockRequest {
8962    // message fields
8963    // @@protoc_insertion_point(field:RemoteFortressReader.BlockRequest.blocks_needed)
8964    pub blocks_needed: ::std::option::Option<i32>,
8965    // @@protoc_insertion_point(field:RemoteFortressReader.BlockRequest.min_x)
8966    pub min_x: ::std::option::Option<i32>,
8967    // @@protoc_insertion_point(field:RemoteFortressReader.BlockRequest.max_x)
8968    pub max_x: ::std::option::Option<i32>,
8969    // @@protoc_insertion_point(field:RemoteFortressReader.BlockRequest.min_y)
8970    pub min_y: ::std::option::Option<i32>,
8971    // @@protoc_insertion_point(field:RemoteFortressReader.BlockRequest.max_y)
8972    pub max_y: ::std::option::Option<i32>,
8973    // @@protoc_insertion_point(field:RemoteFortressReader.BlockRequest.min_z)
8974    pub min_z: ::std::option::Option<i32>,
8975    // @@protoc_insertion_point(field:RemoteFortressReader.BlockRequest.max_z)
8976    pub max_z: ::std::option::Option<i32>,
8977    // special fields
8978    // @@protoc_insertion_point(special_field:RemoteFortressReader.BlockRequest.special_fields)
8979    pub special_fields: ::protobuf::SpecialFields,
8980}
8981
8982impl<'a> ::std::default::Default for &'a BlockRequest {
8983    fn default() -> &'a BlockRequest {
8984        <BlockRequest as ::protobuf::Message>::default_instance()
8985    }
8986}
8987
8988impl BlockRequest {
8989    pub fn new() -> BlockRequest {
8990        ::std::default::Default::default()
8991    }
8992
8993    // optional int32 blocks_needed = 1;
8994
8995    pub fn blocks_needed(&self) -> i32 {
8996        self.blocks_needed.unwrap_or(0)
8997    }
8998
8999    pub fn clear_blocks_needed(&mut self) {
9000        self.blocks_needed = ::std::option::Option::None;
9001    }
9002
9003    pub fn has_blocks_needed(&self) -> bool {
9004        self.blocks_needed.is_some()
9005    }
9006
9007    // Param is passed by value, moved
9008    pub fn set_blocks_needed(&mut self, v: i32) {
9009        self.blocks_needed = ::std::option::Option::Some(v);
9010    }
9011
9012    // optional int32 min_x = 2;
9013
9014    pub fn min_x(&self) -> i32 {
9015        self.min_x.unwrap_or(0)
9016    }
9017
9018    pub fn clear_min_x(&mut self) {
9019        self.min_x = ::std::option::Option::None;
9020    }
9021
9022    pub fn has_min_x(&self) -> bool {
9023        self.min_x.is_some()
9024    }
9025
9026    // Param is passed by value, moved
9027    pub fn set_min_x(&mut self, v: i32) {
9028        self.min_x = ::std::option::Option::Some(v);
9029    }
9030
9031    // optional int32 max_x = 3;
9032
9033    pub fn max_x(&self) -> i32 {
9034        self.max_x.unwrap_or(0)
9035    }
9036
9037    pub fn clear_max_x(&mut self) {
9038        self.max_x = ::std::option::Option::None;
9039    }
9040
9041    pub fn has_max_x(&self) -> bool {
9042        self.max_x.is_some()
9043    }
9044
9045    // Param is passed by value, moved
9046    pub fn set_max_x(&mut self, v: i32) {
9047        self.max_x = ::std::option::Option::Some(v);
9048    }
9049
9050    // optional int32 min_y = 4;
9051
9052    pub fn min_y(&self) -> i32 {
9053        self.min_y.unwrap_or(0)
9054    }
9055
9056    pub fn clear_min_y(&mut self) {
9057        self.min_y = ::std::option::Option::None;
9058    }
9059
9060    pub fn has_min_y(&self) -> bool {
9061        self.min_y.is_some()
9062    }
9063
9064    // Param is passed by value, moved
9065    pub fn set_min_y(&mut self, v: i32) {
9066        self.min_y = ::std::option::Option::Some(v);
9067    }
9068
9069    // optional int32 max_y = 5;
9070
9071    pub fn max_y(&self) -> i32 {
9072        self.max_y.unwrap_or(0)
9073    }
9074
9075    pub fn clear_max_y(&mut self) {
9076        self.max_y = ::std::option::Option::None;
9077    }
9078
9079    pub fn has_max_y(&self) -> bool {
9080        self.max_y.is_some()
9081    }
9082
9083    // Param is passed by value, moved
9084    pub fn set_max_y(&mut self, v: i32) {
9085        self.max_y = ::std::option::Option::Some(v);
9086    }
9087
9088    // optional int32 min_z = 6;
9089
9090    pub fn min_z(&self) -> i32 {
9091        self.min_z.unwrap_or(0)
9092    }
9093
9094    pub fn clear_min_z(&mut self) {
9095        self.min_z = ::std::option::Option::None;
9096    }
9097
9098    pub fn has_min_z(&self) -> bool {
9099        self.min_z.is_some()
9100    }
9101
9102    // Param is passed by value, moved
9103    pub fn set_min_z(&mut self, v: i32) {
9104        self.min_z = ::std::option::Option::Some(v);
9105    }
9106
9107    // optional int32 max_z = 7;
9108
9109    pub fn max_z(&self) -> i32 {
9110        self.max_z.unwrap_or(0)
9111    }
9112
9113    pub fn clear_max_z(&mut self) {
9114        self.max_z = ::std::option::Option::None;
9115    }
9116
9117    pub fn has_max_z(&self) -> bool {
9118        self.max_z.is_some()
9119    }
9120
9121    // Param is passed by value, moved
9122    pub fn set_max_z(&mut self, v: i32) {
9123        self.max_z = ::std::option::Option::Some(v);
9124    }
9125
9126    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
9127        let mut fields = ::std::vec::Vec::with_capacity(7);
9128        let mut oneofs = ::std::vec::Vec::with_capacity(0);
9129        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9130            "blocks_needed",
9131            |m: &BlockRequest| { &m.blocks_needed },
9132            |m: &mut BlockRequest| { &mut m.blocks_needed },
9133        ));
9134        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9135            "min_x",
9136            |m: &BlockRequest| { &m.min_x },
9137            |m: &mut BlockRequest| { &mut m.min_x },
9138        ));
9139        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9140            "max_x",
9141            |m: &BlockRequest| { &m.max_x },
9142            |m: &mut BlockRequest| { &mut m.max_x },
9143        ));
9144        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9145            "min_y",
9146            |m: &BlockRequest| { &m.min_y },
9147            |m: &mut BlockRequest| { &mut m.min_y },
9148        ));
9149        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9150            "max_y",
9151            |m: &BlockRequest| { &m.max_y },
9152            |m: &mut BlockRequest| { &mut m.max_y },
9153        ));
9154        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9155            "min_z",
9156            |m: &BlockRequest| { &m.min_z },
9157            |m: &mut BlockRequest| { &mut m.min_z },
9158        ));
9159        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9160            "max_z",
9161            |m: &BlockRequest| { &m.max_z },
9162            |m: &mut BlockRequest| { &mut m.max_z },
9163        ));
9164        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BlockRequest>(
9165            "BlockRequest",
9166            fields,
9167            oneofs,
9168        )
9169    }
9170}
9171
9172impl ::protobuf::Message for BlockRequest {
9173    const NAME: &'static str = "BlockRequest";
9174
9175    fn is_initialized(&self) -> bool {
9176        true
9177    }
9178
9179    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
9180        while let Some(tag) = is.read_raw_tag_or_eof()? {
9181            match tag {
9182                8 => {
9183                    self.blocks_needed = ::std::option::Option::Some(is.read_int32()?);
9184                },
9185                16 => {
9186                    self.min_x = ::std::option::Option::Some(is.read_int32()?);
9187                },
9188                24 => {
9189                    self.max_x = ::std::option::Option::Some(is.read_int32()?);
9190                },
9191                32 => {
9192                    self.min_y = ::std::option::Option::Some(is.read_int32()?);
9193                },
9194                40 => {
9195                    self.max_y = ::std::option::Option::Some(is.read_int32()?);
9196                },
9197                48 => {
9198                    self.min_z = ::std::option::Option::Some(is.read_int32()?);
9199                },
9200                56 => {
9201                    self.max_z = ::std::option::Option::Some(is.read_int32()?);
9202                },
9203                tag => {
9204                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
9205                },
9206            };
9207        }
9208        ::std::result::Result::Ok(())
9209    }
9210
9211    // Compute sizes of nested messages
9212    #[allow(unused_variables)]
9213    fn compute_size(&self) -> u64 {
9214        let mut my_size = 0;
9215        if let Some(v) = self.blocks_needed {
9216            my_size += ::protobuf::rt::int32_size(1, v);
9217        }
9218        if let Some(v) = self.min_x {
9219            my_size += ::protobuf::rt::int32_size(2, v);
9220        }
9221        if let Some(v) = self.max_x {
9222            my_size += ::protobuf::rt::int32_size(3, v);
9223        }
9224        if let Some(v) = self.min_y {
9225            my_size += ::protobuf::rt::int32_size(4, v);
9226        }
9227        if let Some(v) = self.max_y {
9228            my_size += ::protobuf::rt::int32_size(5, v);
9229        }
9230        if let Some(v) = self.min_z {
9231            my_size += ::protobuf::rt::int32_size(6, v);
9232        }
9233        if let Some(v) = self.max_z {
9234            my_size += ::protobuf::rt::int32_size(7, v);
9235        }
9236        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
9237        self.special_fields.cached_size().set(my_size as u32);
9238        my_size
9239    }
9240
9241    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
9242        if let Some(v) = self.blocks_needed {
9243            os.write_int32(1, v)?;
9244        }
9245        if let Some(v) = self.min_x {
9246            os.write_int32(2, v)?;
9247        }
9248        if let Some(v) = self.max_x {
9249            os.write_int32(3, v)?;
9250        }
9251        if let Some(v) = self.min_y {
9252            os.write_int32(4, v)?;
9253        }
9254        if let Some(v) = self.max_y {
9255            os.write_int32(5, v)?;
9256        }
9257        if let Some(v) = self.min_z {
9258            os.write_int32(6, v)?;
9259        }
9260        if let Some(v) = self.max_z {
9261            os.write_int32(7, v)?;
9262        }
9263        os.write_unknown_fields(self.special_fields.unknown_fields())?;
9264        ::std::result::Result::Ok(())
9265    }
9266
9267    fn special_fields(&self) -> &::protobuf::SpecialFields {
9268        &self.special_fields
9269    }
9270
9271    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
9272        &mut self.special_fields
9273    }
9274
9275    fn new() -> BlockRequest {
9276        BlockRequest::new()
9277    }
9278
9279    fn clear(&mut self) {
9280        self.blocks_needed = ::std::option::Option::None;
9281        self.min_x = ::std::option::Option::None;
9282        self.max_x = ::std::option::Option::None;
9283        self.min_y = ::std::option::Option::None;
9284        self.max_y = ::std::option::Option::None;
9285        self.min_z = ::std::option::Option::None;
9286        self.max_z = ::std::option::Option::None;
9287        self.special_fields.clear();
9288    }
9289
9290    fn default_instance() -> &'static BlockRequest {
9291        static instance: BlockRequest = BlockRequest {
9292            blocks_needed: ::std::option::Option::None,
9293            min_x: ::std::option::Option::None,
9294            max_x: ::std::option::Option::None,
9295            min_y: ::std::option::Option::None,
9296            max_y: ::std::option::Option::None,
9297            min_z: ::std::option::Option::None,
9298            max_z: ::std::option::Option::None,
9299            special_fields: ::protobuf::SpecialFields::new(),
9300        };
9301        &instance
9302    }
9303}
9304
9305impl ::protobuf::MessageFull for BlockRequest {
9306    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
9307        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
9308        descriptor.get(|| file_descriptor().message_by_package_relative_name("BlockRequest").unwrap()).clone()
9309    }
9310}
9311
9312impl ::std::fmt::Display for BlockRequest {
9313    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9314        ::protobuf::text_format::fmt(self, f)
9315    }
9316}
9317
9318impl ::protobuf::reflect::ProtobufValue for BlockRequest {
9319    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
9320}
9321
9322// @@protoc_insertion_point(message:RemoteFortressReader.BlockList)
9323#[derive(PartialEq,Clone,Default,Debug)]
9324pub struct BlockList {
9325    // message fields
9326    // @@protoc_insertion_point(field:RemoteFortressReader.BlockList.map_blocks)
9327    pub map_blocks: ::std::vec::Vec<MapBlock>,
9328    // @@protoc_insertion_point(field:RemoteFortressReader.BlockList.map_x)
9329    pub map_x: ::std::option::Option<i32>,
9330    // @@protoc_insertion_point(field:RemoteFortressReader.BlockList.map_y)
9331    pub map_y: ::std::option::Option<i32>,
9332    // @@protoc_insertion_point(field:RemoteFortressReader.BlockList.engravings)
9333    pub engravings: ::std::vec::Vec<Engraving>,
9334    // @@protoc_insertion_point(field:RemoteFortressReader.BlockList.ocean_waves)
9335    pub ocean_waves: ::std::vec::Vec<Wave>,
9336    // special fields
9337    // @@protoc_insertion_point(special_field:RemoteFortressReader.BlockList.special_fields)
9338    pub special_fields: ::protobuf::SpecialFields,
9339}
9340
9341impl<'a> ::std::default::Default for &'a BlockList {
9342    fn default() -> &'a BlockList {
9343        <BlockList as ::protobuf::Message>::default_instance()
9344    }
9345}
9346
9347impl BlockList {
9348    pub fn new() -> BlockList {
9349        ::std::default::Default::default()
9350    }
9351
9352    // optional int32 map_x = 2;
9353
9354    pub fn map_x(&self) -> i32 {
9355        self.map_x.unwrap_or(0)
9356    }
9357
9358    pub fn clear_map_x(&mut self) {
9359        self.map_x = ::std::option::Option::None;
9360    }
9361
9362    pub fn has_map_x(&self) -> bool {
9363        self.map_x.is_some()
9364    }
9365
9366    // Param is passed by value, moved
9367    pub fn set_map_x(&mut self, v: i32) {
9368        self.map_x = ::std::option::Option::Some(v);
9369    }
9370
9371    // optional int32 map_y = 3;
9372
9373    pub fn map_y(&self) -> i32 {
9374        self.map_y.unwrap_or(0)
9375    }
9376
9377    pub fn clear_map_y(&mut self) {
9378        self.map_y = ::std::option::Option::None;
9379    }
9380
9381    pub fn has_map_y(&self) -> bool {
9382        self.map_y.is_some()
9383    }
9384
9385    // Param is passed by value, moved
9386    pub fn set_map_y(&mut self, v: i32) {
9387        self.map_y = ::std::option::Option::Some(v);
9388    }
9389
9390    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
9391        let mut fields = ::std::vec::Vec::with_capacity(5);
9392        let mut oneofs = ::std::vec::Vec::with_capacity(0);
9393        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
9394            "map_blocks",
9395            |m: &BlockList| { &m.map_blocks },
9396            |m: &mut BlockList| { &mut m.map_blocks },
9397        ));
9398        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9399            "map_x",
9400            |m: &BlockList| { &m.map_x },
9401            |m: &mut BlockList| { &mut m.map_x },
9402        ));
9403        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9404            "map_y",
9405            |m: &BlockList| { &m.map_y },
9406            |m: &mut BlockList| { &mut m.map_y },
9407        ));
9408        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
9409            "engravings",
9410            |m: &BlockList| { &m.engravings },
9411            |m: &mut BlockList| { &mut m.engravings },
9412        ));
9413        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
9414            "ocean_waves",
9415            |m: &BlockList| { &m.ocean_waves },
9416            |m: &mut BlockList| { &mut m.ocean_waves },
9417        ));
9418        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BlockList>(
9419            "BlockList",
9420            fields,
9421            oneofs,
9422        )
9423    }
9424}
9425
9426impl ::protobuf::Message for BlockList {
9427    const NAME: &'static str = "BlockList";
9428
9429    fn is_initialized(&self) -> bool {
9430        for v in &self.map_blocks {
9431            if !v.is_initialized() {
9432                return false;
9433            }
9434        };
9435        for v in &self.engravings {
9436            if !v.is_initialized() {
9437                return false;
9438            }
9439        };
9440        for v in &self.ocean_waves {
9441            if !v.is_initialized() {
9442                return false;
9443            }
9444        };
9445        true
9446    }
9447
9448    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
9449        while let Some(tag) = is.read_raw_tag_or_eof()? {
9450            match tag {
9451                10 => {
9452                    self.map_blocks.push(is.read_message()?);
9453                },
9454                16 => {
9455                    self.map_x = ::std::option::Option::Some(is.read_int32()?);
9456                },
9457                24 => {
9458                    self.map_y = ::std::option::Option::Some(is.read_int32()?);
9459                },
9460                34 => {
9461                    self.engravings.push(is.read_message()?);
9462                },
9463                42 => {
9464                    self.ocean_waves.push(is.read_message()?);
9465                },
9466                tag => {
9467                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
9468                },
9469            };
9470        }
9471        ::std::result::Result::Ok(())
9472    }
9473
9474    // Compute sizes of nested messages
9475    #[allow(unused_variables)]
9476    fn compute_size(&self) -> u64 {
9477        let mut my_size = 0;
9478        for value in &self.map_blocks {
9479            let len = value.compute_size();
9480            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
9481        };
9482        if let Some(v) = self.map_x {
9483            my_size += ::protobuf::rt::int32_size(2, v);
9484        }
9485        if let Some(v) = self.map_y {
9486            my_size += ::protobuf::rt::int32_size(3, v);
9487        }
9488        for value in &self.engravings {
9489            let len = value.compute_size();
9490            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
9491        };
9492        for value in &self.ocean_waves {
9493            let len = value.compute_size();
9494            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
9495        };
9496        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
9497        self.special_fields.cached_size().set(my_size as u32);
9498        my_size
9499    }
9500
9501    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
9502        for v in &self.map_blocks {
9503            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
9504        };
9505        if let Some(v) = self.map_x {
9506            os.write_int32(2, v)?;
9507        }
9508        if let Some(v) = self.map_y {
9509            os.write_int32(3, v)?;
9510        }
9511        for v in &self.engravings {
9512            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
9513        };
9514        for v in &self.ocean_waves {
9515            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
9516        };
9517        os.write_unknown_fields(self.special_fields.unknown_fields())?;
9518        ::std::result::Result::Ok(())
9519    }
9520
9521    fn special_fields(&self) -> &::protobuf::SpecialFields {
9522        &self.special_fields
9523    }
9524
9525    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
9526        &mut self.special_fields
9527    }
9528
9529    fn new() -> BlockList {
9530        BlockList::new()
9531    }
9532
9533    fn clear(&mut self) {
9534        self.map_blocks.clear();
9535        self.map_x = ::std::option::Option::None;
9536        self.map_y = ::std::option::Option::None;
9537        self.engravings.clear();
9538        self.ocean_waves.clear();
9539        self.special_fields.clear();
9540    }
9541
9542    fn default_instance() -> &'static BlockList {
9543        static instance: BlockList = BlockList {
9544            map_blocks: ::std::vec::Vec::new(),
9545            map_x: ::std::option::Option::None,
9546            map_y: ::std::option::Option::None,
9547            engravings: ::std::vec::Vec::new(),
9548            ocean_waves: ::std::vec::Vec::new(),
9549            special_fields: ::protobuf::SpecialFields::new(),
9550        };
9551        &instance
9552    }
9553}
9554
9555impl ::protobuf::MessageFull for BlockList {
9556    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
9557        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
9558        descriptor.get(|| file_descriptor().message_by_package_relative_name("BlockList").unwrap()).clone()
9559    }
9560}
9561
9562impl ::std::fmt::Display for BlockList {
9563    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9564        ::protobuf::text_format::fmt(self, f)
9565    }
9566}
9567
9568impl ::protobuf::reflect::ProtobufValue for BlockList {
9569    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
9570}
9571
9572// @@protoc_insertion_point(message:RemoteFortressReader.PlantDef)
9573#[derive(PartialEq,Clone,Default,Debug)]
9574pub struct PlantDef {
9575    // message fields
9576    // @@protoc_insertion_point(field:RemoteFortressReader.PlantDef.pos_x)
9577    pub pos_x: ::std::option::Option<i32>,
9578    // @@protoc_insertion_point(field:RemoteFortressReader.PlantDef.pos_y)
9579    pub pos_y: ::std::option::Option<i32>,
9580    // @@protoc_insertion_point(field:RemoteFortressReader.PlantDef.pos_z)
9581    pub pos_z: ::std::option::Option<i32>,
9582    // @@protoc_insertion_point(field:RemoteFortressReader.PlantDef.index)
9583    pub index: ::std::option::Option<i32>,
9584    // special fields
9585    // @@protoc_insertion_point(special_field:RemoteFortressReader.PlantDef.special_fields)
9586    pub special_fields: ::protobuf::SpecialFields,
9587}
9588
9589impl<'a> ::std::default::Default for &'a PlantDef {
9590    fn default() -> &'a PlantDef {
9591        <PlantDef as ::protobuf::Message>::default_instance()
9592    }
9593}
9594
9595impl PlantDef {
9596    pub fn new() -> PlantDef {
9597        ::std::default::Default::default()
9598    }
9599
9600    // required int32 pos_x = 1;
9601
9602    pub fn pos_x(&self) -> i32 {
9603        self.pos_x.unwrap_or(0)
9604    }
9605
9606    pub fn clear_pos_x(&mut self) {
9607        self.pos_x = ::std::option::Option::None;
9608    }
9609
9610    pub fn has_pos_x(&self) -> bool {
9611        self.pos_x.is_some()
9612    }
9613
9614    // Param is passed by value, moved
9615    pub fn set_pos_x(&mut self, v: i32) {
9616        self.pos_x = ::std::option::Option::Some(v);
9617    }
9618
9619    // required int32 pos_y = 2;
9620
9621    pub fn pos_y(&self) -> i32 {
9622        self.pos_y.unwrap_or(0)
9623    }
9624
9625    pub fn clear_pos_y(&mut self) {
9626        self.pos_y = ::std::option::Option::None;
9627    }
9628
9629    pub fn has_pos_y(&self) -> bool {
9630        self.pos_y.is_some()
9631    }
9632
9633    // Param is passed by value, moved
9634    pub fn set_pos_y(&mut self, v: i32) {
9635        self.pos_y = ::std::option::Option::Some(v);
9636    }
9637
9638    // required int32 pos_z = 3;
9639
9640    pub fn pos_z(&self) -> i32 {
9641        self.pos_z.unwrap_or(0)
9642    }
9643
9644    pub fn clear_pos_z(&mut self) {
9645        self.pos_z = ::std::option::Option::None;
9646    }
9647
9648    pub fn has_pos_z(&self) -> bool {
9649        self.pos_z.is_some()
9650    }
9651
9652    // Param is passed by value, moved
9653    pub fn set_pos_z(&mut self, v: i32) {
9654        self.pos_z = ::std::option::Option::Some(v);
9655    }
9656
9657    // required int32 index = 4;
9658
9659    pub fn index(&self) -> i32 {
9660        self.index.unwrap_or(0)
9661    }
9662
9663    pub fn clear_index(&mut self) {
9664        self.index = ::std::option::Option::None;
9665    }
9666
9667    pub fn has_index(&self) -> bool {
9668        self.index.is_some()
9669    }
9670
9671    // Param is passed by value, moved
9672    pub fn set_index(&mut self, v: i32) {
9673        self.index = ::std::option::Option::Some(v);
9674    }
9675
9676    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
9677        let mut fields = ::std::vec::Vec::with_capacity(4);
9678        let mut oneofs = ::std::vec::Vec::with_capacity(0);
9679        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9680            "pos_x",
9681            |m: &PlantDef| { &m.pos_x },
9682            |m: &mut PlantDef| { &mut m.pos_x },
9683        ));
9684        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9685            "pos_y",
9686            |m: &PlantDef| { &m.pos_y },
9687            |m: &mut PlantDef| { &mut m.pos_y },
9688        ));
9689        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9690            "pos_z",
9691            |m: &PlantDef| { &m.pos_z },
9692            |m: &mut PlantDef| { &mut m.pos_z },
9693        ));
9694        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9695            "index",
9696            |m: &PlantDef| { &m.index },
9697            |m: &mut PlantDef| { &mut m.index },
9698        ));
9699        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PlantDef>(
9700            "PlantDef",
9701            fields,
9702            oneofs,
9703        )
9704    }
9705}
9706
9707impl ::protobuf::Message for PlantDef {
9708    const NAME: &'static str = "PlantDef";
9709
9710    fn is_initialized(&self) -> bool {
9711        if self.pos_x.is_none() {
9712            return false;
9713        }
9714        if self.pos_y.is_none() {
9715            return false;
9716        }
9717        if self.pos_z.is_none() {
9718            return false;
9719        }
9720        if self.index.is_none() {
9721            return false;
9722        }
9723        true
9724    }
9725
9726    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
9727        while let Some(tag) = is.read_raw_tag_or_eof()? {
9728            match tag {
9729                8 => {
9730                    self.pos_x = ::std::option::Option::Some(is.read_int32()?);
9731                },
9732                16 => {
9733                    self.pos_y = ::std::option::Option::Some(is.read_int32()?);
9734                },
9735                24 => {
9736                    self.pos_z = ::std::option::Option::Some(is.read_int32()?);
9737                },
9738                32 => {
9739                    self.index = ::std::option::Option::Some(is.read_int32()?);
9740                },
9741                tag => {
9742                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
9743                },
9744            };
9745        }
9746        ::std::result::Result::Ok(())
9747    }
9748
9749    // Compute sizes of nested messages
9750    #[allow(unused_variables)]
9751    fn compute_size(&self) -> u64 {
9752        let mut my_size = 0;
9753        if let Some(v) = self.pos_x {
9754            my_size += ::protobuf::rt::int32_size(1, v);
9755        }
9756        if let Some(v) = self.pos_y {
9757            my_size += ::protobuf::rt::int32_size(2, v);
9758        }
9759        if let Some(v) = self.pos_z {
9760            my_size += ::protobuf::rt::int32_size(3, v);
9761        }
9762        if let Some(v) = self.index {
9763            my_size += ::protobuf::rt::int32_size(4, v);
9764        }
9765        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
9766        self.special_fields.cached_size().set(my_size as u32);
9767        my_size
9768    }
9769
9770    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
9771        if let Some(v) = self.pos_x {
9772            os.write_int32(1, v)?;
9773        }
9774        if let Some(v) = self.pos_y {
9775            os.write_int32(2, v)?;
9776        }
9777        if let Some(v) = self.pos_z {
9778            os.write_int32(3, v)?;
9779        }
9780        if let Some(v) = self.index {
9781            os.write_int32(4, v)?;
9782        }
9783        os.write_unknown_fields(self.special_fields.unknown_fields())?;
9784        ::std::result::Result::Ok(())
9785    }
9786
9787    fn special_fields(&self) -> &::protobuf::SpecialFields {
9788        &self.special_fields
9789    }
9790
9791    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
9792        &mut self.special_fields
9793    }
9794
9795    fn new() -> PlantDef {
9796        PlantDef::new()
9797    }
9798
9799    fn clear(&mut self) {
9800        self.pos_x = ::std::option::Option::None;
9801        self.pos_y = ::std::option::Option::None;
9802        self.pos_z = ::std::option::Option::None;
9803        self.index = ::std::option::Option::None;
9804        self.special_fields.clear();
9805    }
9806
9807    fn default_instance() -> &'static PlantDef {
9808        static instance: PlantDef = PlantDef {
9809            pos_x: ::std::option::Option::None,
9810            pos_y: ::std::option::Option::None,
9811            pos_z: ::std::option::Option::None,
9812            index: ::std::option::Option::None,
9813            special_fields: ::protobuf::SpecialFields::new(),
9814        };
9815        &instance
9816    }
9817}
9818
9819impl ::protobuf::MessageFull for PlantDef {
9820    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
9821        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
9822        descriptor.get(|| file_descriptor().message_by_package_relative_name("PlantDef").unwrap()).clone()
9823    }
9824}
9825
9826impl ::std::fmt::Display for PlantDef {
9827    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9828        ::protobuf::text_format::fmt(self, f)
9829    }
9830}
9831
9832impl ::protobuf::reflect::ProtobufValue for PlantDef {
9833    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
9834}
9835
9836// @@protoc_insertion_point(message:RemoteFortressReader.PlantList)
9837#[derive(PartialEq,Clone,Default,Debug)]
9838pub struct PlantList {
9839    // message fields
9840    // @@protoc_insertion_point(field:RemoteFortressReader.PlantList.plant_list)
9841    pub plant_list: ::std::vec::Vec<PlantDef>,
9842    // special fields
9843    // @@protoc_insertion_point(special_field:RemoteFortressReader.PlantList.special_fields)
9844    pub special_fields: ::protobuf::SpecialFields,
9845}
9846
9847impl<'a> ::std::default::Default for &'a PlantList {
9848    fn default() -> &'a PlantList {
9849        <PlantList as ::protobuf::Message>::default_instance()
9850    }
9851}
9852
9853impl PlantList {
9854    pub fn new() -> PlantList {
9855        ::std::default::Default::default()
9856    }
9857
9858    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
9859        let mut fields = ::std::vec::Vec::with_capacity(1);
9860        let mut oneofs = ::std::vec::Vec::with_capacity(0);
9861        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
9862            "plant_list",
9863            |m: &PlantList| { &m.plant_list },
9864            |m: &mut PlantList| { &mut m.plant_list },
9865        ));
9866        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PlantList>(
9867            "PlantList",
9868            fields,
9869            oneofs,
9870        )
9871    }
9872}
9873
9874impl ::protobuf::Message for PlantList {
9875    const NAME: &'static str = "PlantList";
9876
9877    fn is_initialized(&self) -> bool {
9878        for v in &self.plant_list {
9879            if !v.is_initialized() {
9880                return false;
9881            }
9882        };
9883        true
9884    }
9885
9886    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
9887        while let Some(tag) = is.read_raw_tag_or_eof()? {
9888            match tag {
9889                10 => {
9890                    self.plant_list.push(is.read_message()?);
9891                },
9892                tag => {
9893                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
9894                },
9895            };
9896        }
9897        ::std::result::Result::Ok(())
9898    }
9899
9900    // Compute sizes of nested messages
9901    #[allow(unused_variables)]
9902    fn compute_size(&self) -> u64 {
9903        let mut my_size = 0;
9904        for value in &self.plant_list {
9905            let len = value.compute_size();
9906            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
9907        };
9908        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
9909        self.special_fields.cached_size().set(my_size as u32);
9910        my_size
9911    }
9912
9913    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
9914        for v in &self.plant_list {
9915            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
9916        };
9917        os.write_unknown_fields(self.special_fields.unknown_fields())?;
9918        ::std::result::Result::Ok(())
9919    }
9920
9921    fn special_fields(&self) -> &::protobuf::SpecialFields {
9922        &self.special_fields
9923    }
9924
9925    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
9926        &mut self.special_fields
9927    }
9928
9929    fn new() -> PlantList {
9930        PlantList::new()
9931    }
9932
9933    fn clear(&mut self) {
9934        self.plant_list.clear();
9935        self.special_fields.clear();
9936    }
9937
9938    fn default_instance() -> &'static PlantList {
9939        static instance: PlantList = PlantList {
9940            plant_list: ::std::vec::Vec::new(),
9941            special_fields: ::protobuf::SpecialFields::new(),
9942        };
9943        &instance
9944    }
9945}
9946
9947impl ::protobuf::MessageFull for PlantList {
9948    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
9949        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
9950        descriptor.get(|| file_descriptor().message_by_package_relative_name("PlantList").unwrap()).clone()
9951    }
9952}
9953
9954impl ::std::fmt::Display for PlantList {
9955    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9956        ::protobuf::text_format::fmt(self, f)
9957    }
9958}
9959
9960impl ::protobuf::reflect::ProtobufValue for PlantList {
9961    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
9962}
9963
9964// @@protoc_insertion_point(message:RemoteFortressReader.ViewInfo)
9965#[derive(PartialEq,Clone,Default,Debug)]
9966pub struct ViewInfo {
9967    // message fields
9968    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.view_pos_x)
9969    pub view_pos_x: ::std::option::Option<i32>,
9970    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.view_pos_y)
9971    pub view_pos_y: ::std::option::Option<i32>,
9972    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.view_pos_z)
9973    pub view_pos_z: ::std::option::Option<i32>,
9974    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.view_size_x)
9975    pub view_size_x: ::std::option::Option<i32>,
9976    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.view_size_y)
9977    pub view_size_y: ::std::option::Option<i32>,
9978    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.cursor_pos_x)
9979    pub cursor_pos_x: ::std::option::Option<i32>,
9980    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.cursor_pos_y)
9981    pub cursor_pos_y: ::std::option::Option<i32>,
9982    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.cursor_pos_z)
9983    pub cursor_pos_z: ::std::option::Option<i32>,
9984    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.follow_unit_id)
9985    pub follow_unit_id: ::std::option::Option<i32>,
9986    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.follow_item_id)
9987    pub follow_item_id: ::std::option::Option<i32>,
9988    // special fields
9989    // @@protoc_insertion_point(special_field:RemoteFortressReader.ViewInfo.special_fields)
9990    pub special_fields: ::protobuf::SpecialFields,
9991}
9992
9993impl<'a> ::std::default::Default for &'a ViewInfo {
9994    fn default() -> &'a ViewInfo {
9995        <ViewInfo as ::protobuf::Message>::default_instance()
9996    }
9997}
9998
9999impl ViewInfo {
10000    pub fn new() -> ViewInfo {
10001        ::std::default::Default::default()
10002    }
10003
10004    // optional int32 view_pos_x = 1;
10005
10006    pub fn view_pos_x(&self) -> i32 {
10007        self.view_pos_x.unwrap_or(0)
10008    }
10009
10010    pub fn clear_view_pos_x(&mut self) {
10011        self.view_pos_x = ::std::option::Option::None;
10012    }
10013
10014    pub fn has_view_pos_x(&self) -> bool {
10015        self.view_pos_x.is_some()
10016    }
10017
10018    // Param is passed by value, moved
10019    pub fn set_view_pos_x(&mut self, v: i32) {
10020        self.view_pos_x = ::std::option::Option::Some(v);
10021    }
10022
10023    // optional int32 view_pos_y = 2;
10024
10025    pub fn view_pos_y(&self) -> i32 {
10026        self.view_pos_y.unwrap_or(0)
10027    }
10028
10029    pub fn clear_view_pos_y(&mut self) {
10030        self.view_pos_y = ::std::option::Option::None;
10031    }
10032
10033    pub fn has_view_pos_y(&self) -> bool {
10034        self.view_pos_y.is_some()
10035    }
10036
10037    // Param is passed by value, moved
10038    pub fn set_view_pos_y(&mut self, v: i32) {
10039        self.view_pos_y = ::std::option::Option::Some(v);
10040    }
10041
10042    // optional int32 view_pos_z = 3;
10043
10044    pub fn view_pos_z(&self) -> i32 {
10045        self.view_pos_z.unwrap_or(0)
10046    }
10047
10048    pub fn clear_view_pos_z(&mut self) {
10049        self.view_pos_z = ::std::option::Option::None;
10050    }
10051
10052    pub fn has_view_pos_z(&self) -> bool {
10053        self.view_pos_z.is_some()
10054    }
10055
10056    // Param is passed by value, moved
10057    pub fn set_view_pos_z(&mut self, v: i32) {
10058        self.view_pos_z = ::std::option::Option::Some(v);
10059    }
10060
10061    // optional int32 view_size_x = 4;
10062
10063    pub fn view_size_x(&self) -> i32 {
10064        self.view_size_x.unwrap_or(0)
10065    }
10066
10067    pub fn clear_view_size_x(&mut self) {
10068        self.view_size_x = ::std::option::Option::None;
10069    }
10070
10071    pub fn has_view_size_x(&self) -> bool {
10072        self.view_size_x.is_some()
10073    }
10074
10075    // Param is passed by value, moved
10076    pub fn set_view_size_x(&mut self, v: i32) {
10077        self.view_size_x = ::std::option::Option::Some(v);
10078    }
10079
10080    // optional int32 view_size_y = 5;
10081
10082    pub fn view_size_y(&self) -> i32 {
10083        self.view_size_y.unwrap_or(0)
10084    }
10085
10086    pub fn clear_view_size_y(&mut self) {
10087        self.view_size_y = ::std::option::Option::None;
10088    }
10089
10090    pub fn has_view_size_y(&self) -> bool {
10091        self.view_size_y.is_some()
10092    }
10093
10094    // Param is passed by value, moved
10095    pub fn set_view_size_y(&mut self, v: i32) {
10096        self.view_size_y = ::std::option::Option::Some(v);
10097    }
10098
10099    // optional int32 cursor_pos_x = 6;
10100
10101    pub fn cursor_pos_x(&self) -> i32 {
10102        self.cursor_pos_x.unwrap_or(0)
10103    }
10104
10105    pub fn clear_cursor_pos_x(&mut self) {
10106        self.cursor_pos_x = ::std::option::Option::None;
10107    }
10108
10109    pub fn has_cursor_pos_x(&self) -> bool {
10110        self.cursor_pos_x.is_some()
10111    }
10112
10113    // Param is passed by value, moved
10114    pub fn set_cursor_pos_x(&mut self, v: i32) {
10115        self.cursor_pos_x = ::std::option::Option::Some(v);
10116    }
10117
10118    // optional int32 cursor_pos_y = 7;
10119
10120    pub fn cursor_pos_y(&self) -> i32 {
10121        self.cursor_pos_y.unwrap_or(0)
10122    }
10123
10124    pub fn clear_cursor_pos_y(&mut self) {
10125        self.cursor_pos_y = ::std::option::Option::None;
10126    }
10127
10128    pub fn has_cursor_pos_y(&self) -> bool {
10129        self.cursor_pos_y.is_some()
10130    }
10131
10132    // Param is passed by value, moved
10133    pub fn set_cursor_pos_y(&mut self, v: i32) {
10134        self.cursor_pos_y = ::std::option::Option::Some(v);
10135    }
10136
10137    // optional int32 cursor_pos_z = 8;
10138
10139    pub fn cursor_pos_z(&self) -> i32 {
10140        self.cursor_pos_z.unwrap_or(0)
10141    }
10142
10143    pub fn clear_cursor_pos_z(&mut self) {
10144        self.cursor_pos_z = ::std::option::Option::None;
10145    }
10146
10147    pub fn has_cursor_pos_z(&self) -> bool {
10148        self.cursor_pos_z.is_some()
10149    }
10150
10151    // Param is passed by value, moved
10152    pub fn set_cursor_pos_z(&mut self, v: i32) {
10153        self.cursor_pos_z = ::std::option::Option::Some(v);
10154    }
10155
10156    // optional int32 follow_unit_id = 9;
10157
10158    pub fn follow_unit_id(&self) -> i32 {
10159        self.follow_unit_id.unwrap_or(-1i32)
10160    }
10161
10162    pub fn clear_follow_unit_id(&mut self) {
10163        self.follow_unit_id = ::std::option::Option::None;
10164    }
10165
10166    pub fn has_follow_unit_id(&self) -> bool {
10167        self.follow_unit_id.is_some()
10168    }
10169
10170    // Param is passed by value, moved
10171    pub fn set_follow_unit_id(&mut self, v: i32) {
10172        self.follow_unit_id = ::std::option::Option::Some(v);
10173    }
10174
10175    // optional int32 follow_item_id = 10;
10176
10177    pub fn follow_item_id(&self) -> i32 {
10178        self.follow_item_id.unwrap_or(-1i32)
10179    }
10180
10181    pub fn clear_follow_item_id(&mut self) {
10182        self.follow_item_id = ::std::option::Option::None;
10183    }
10184
10185    pub fn has_follow_item_id(&self) -> bool {
10186        self.follow_item_id.is_some()
10187    }
10188
10189    // Param is passed by value, moved
10190    pub fn set_follow_item_id(&mut self, v: i32) {
10191        self.follow_item_id = ::std::option::Option::Some(v);
10192    }
10193
10194    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
10195        let mut fields = ::std::vec::Vec::with_capacity(10);
10196        let mut oneofs = ::std::vec::Vec::with_capacity(0);
10197        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10198            "view_pos_x",
10199            |m: &ViewInfo| { &m.view_pos_x },
10200            |m: &mut ViewInfo| { &mut m.view_pos_x },
10201        ));
10202        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10203            "view_pos_y",
10204            |m: &ViewInfo| { &m.view_pos_y },
10205            |m: &mut ViewInfo| { &mut m.view_pos_y },
10206        ));
10207        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10208            "view_pos_z",
10209            |m: &ViewInfo| { &m.view_pos_z },
10210            |m: &mut ViewInfo| { &mut m.view_pos_z },
10211        ));
10212        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10213            "view_size_x",
10214            |m: &ViewInfo| { &m.view_size_x },
10215            |m: &mut ViewInfo| { &mut m.view_size_x },
10216        ));
10217        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10218            "view_size_y",
10219            |m: &ViewInfo| { &m.view_size_y },
10220            |m: &mut ViewInfo| { &mut m.view_size_y },
10221        ));
10222        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10223            "cursor_pos_x",
10224            |m: &ViewInfo| { &m.cursor_pos_x },
10225            |m: &mut ViewInfo| { &mut m.cursor_pos_x },
10226        ));
10227        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10228            "cursor_pos_y",
10229            |m: &ViewInfo| { &m.cursor_pos_y },
10230            |m: &mut ViewInfo| { &mut m.cursor_pos_y },
10231        ));
10232        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10233            "cursor_pos_z",
10234            |m: &ViewInfo| { &m.cursor_pos_z },
10235            |m: &mut ViewInfo| { &mut m.cursor_pos_z },
10236        ));
10237        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10238            "follow_unit_id",
10239            |m: &ViewInfo| { &m.follow_unit_id },
10240            |m: &mut ViewInfo| { &mut m.follow_unit_id },
10241        ));
10242        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10243            "follow_item_id",
10244            |m: &ViewInfo| { &m.follow_item_id },
10245            |m: &mut ViewInfo| { &mut m.follow_item_id },
10246        ));
10247        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ViewInfo>(
10248            "ViewInfo",
10249            fields,
10250            oneofs,
10251        )
10252    }
10253}
10254
10255impl ::protobuf::Message for ViewInfo {
10256    const NAME: &'static str = "ViewInfo";
10257
10258    fn is_initialized(&self) -> bool {
10259        true
10260    }
10261
10262    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
10263        while let Some(tag) = is.read_raw_tag_or_eof()? {
10264            match tag {
10265                8 => {
10266                    self.view_pos_x = ::std::option::Option::Some(is.read_int32()?);
10267                },
10268                16 => {
10269                    self.view_pos_y = ::std::option::Option::Some(is.read_int32()?);
10270                },
10271                24 => {
10272                    self.view_pos_z = ::std::option::Option::Some(is.read_int32()?);
10273                },
10274                32 => {
10275                    self.view_size_x = ::std::option::Option::Some(is.read_int32()?);
10276                },
10277                40 => {
10278                    self.view_size_y = ::std::option::Option::Some(is.read_int32()?);
10279                },
10280                48 => {
10281                    self.cursor_pos_x = ::std::option::Option::Some(is.read_int32()?);
10282                },
10283                56 => {
10284                    self.cursor_pos_y = ::std::option::Option::Some(is.read_int32()?);
10285                },
10286                64 => {
10287                    self.cursor_pos_z = ::std::option::Option::Some(is.read_int32()?);
10288                },
10289                72 => {
10290                    self.follow_unit_id = ::std::option::Option::Some(is.read_int32()?);
10291                },
10292                80 => {
10293                    self.follow_item_id = ::std::option::Option::Some(is.read_int32()?);
10294                },
10295                tag => {
10296                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
10297                },
10298            };
10299        }
10300        ::std::result::Result::Ok(())
10301    }
10302
10303    // Compute sizes of nested messages
10304    #[allow(unused_variables)]
10305    fn compute_size(&self) -> u64 {
10306        let mut my_size = 0;
10307        if let Some(v) = self.view_pos_x {
10308            my_size += ::protobuf::rt::int32_size(1, v);
10309        }
10310        if let Some(v) = self.view_pos_y {
10311            my_size += ::protobuf::rt::int32_size(2, v);
10312        }
10313        if let Some(v) = self.view_pos_z {
10314            my_size += ::protobuf::rt::int32_size(3, v);
10315        }
10316        if let Some(v) = self.view_size_x {
10317            my_size += ::protobuf::rt::int32_size(4, v);
10318        }
10319        if let Some(v) = self.view_size_y {
10320            my_size += ::protobuf::rt::int32_size(5, v);
10321        }
10322        if let Some(v) = self.cursor_pos_x {
10323            my_size += ::protobuf::rt::int32_size(6, v);
10324        }
10325        if let Some(v) = self.cursor_pos_y {
10326            my_size += ::protobuf::rt::int32_size(7, v);
10327        }
10328        if let Some(v) = self.cursor_pos_z {
10329            my_size += ::protobuf::rt::int32_size(8, v);
10330        }
10331        if let Some(v) = self.follow_unit_id {
10332            my_size += ::protobuf::rt::int32_size(9, v);
10333        }
10334        if let Some(v) = self.follow_item_id {
10335            my_size += ::protobuf::rt::int32_size(10, v);
10336        }
10337        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
10338        self.special_fields.cached_size().set(my_size as u32);
10339        my_size
10340    }
10341
10342    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
10343        if let Some(v) = self.view_pos_x {
10344            os.write_int32(1, v)?;
10345        }
10346        if let Some(v) = self.view_pos_y {
10347            os.write_int32(2, v)?;
10348        }
10349        if let Some(v) = self.view_pos_z {
10350            os.write_int32(3, v)?;
10351        }
10352        if let Some(v) = self.view_size_x {
10353            os.write_int32(4, v)?;
10354        }
10355        if let Some(v) = self.view_size_y {
10356            os.write_int32(5, v)?;
10357        }
10358        if let Some(v) = self.cursor_pos_x {
10359            os.write_int32(6, v)?;
10360        }
10361        if let Some(v) = self.cursor_pos_y {
10362            os.write_int32(7, v)?;
10363        }
10364        if let Some(v) = self.cursor_pos_z {
10365            os.write_int32(8, v)?;
10366        }
10367        if let Some(v) = self.follow_unit_id {
10368            os.write_int32(9, v)?;
10369        }
10370        if let Some(v) = self.follow_item_id {
10371            os.write_int32(10, v)?;
10372        }
10373        os.write_unknown_fields(self.special_fields.unknown_fields())?;
10374        ::std::result::Result::Ok(())
10375    }
10376
10377    fn special_fields(&self) -> &::protobuf::SpecialFields {
10378        &self.special_fields
10379    }
10380
10381    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
10382        &mut self.special_fields
10383    }
10384
10385    fn new() -> ViewInfo {
10386        ViewInfo::new()
10387    }
10388
10389    fn clear(&mut self) {
10390        self.view_pos_x = ::std::option::Option::None;
10391        self.view_pos_y = ::std::option::Option::None;
10392        self.view_pos_z = ::std::option::Option::None;
10393        self.view_size_x = ::std::option::Option::None;
10394        self.view_size_y = ::std::option::Option::None;
10395        self.cursor_pos_x = ::std::option::Option::None;
10396        self.cursor_pos_y = ::std::option::Option::None;
10397        self.cursor_pos_z = ::std::option::Option::None;
10398        self.follow_unit_id = ::std::option::Option::None;
10399        self.follow_item_id = ::std::option::Option::None;
10400        self.special_fields.clear();
10401    }
10402
10403    fn default_instance() -> &'static ViewInfo {
10404        static instance: ViewInfo = ViewInfo {
10405            view_pos_x: ::std::option::Option::None,
10406            view_pos_y: ::std::option::Option::None,
10407            view_pos_z: ::std::option::Option::None,
10408            view_size_x: ::std::option::Option::None,
10409            view_size_y: ::std::option::Option::None,
10410            cursor_pos_x: ::std::option::Option::None,
10411            cursor_pos_y: ::std::option::Option::None,
10412            cursor_pos_z: ::std::option::Option::None,
10413            follow_unit_id: ::std::option::Option::None,
10414            follow_item_id: ::std::option::Option::None,
10415            special_fields: ::protobuf::SpecialFields::new(),
10416        };
10417        &instance
10418    }
10419}
10420
10421impl ::protobuf::MessageFull for ViewInfo {
10422    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
10423        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
10424        descriptor.get(|| file_descriptor().message_by_package_relative_name("ViewInfo").unwrap()).clone()
10425    }
10426}
10427
10428impl ::std::fmt::Display for ViewInfo {
10429    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10430        ::protobuf::text_format::fmt(self, f)
10431    }
10432}
10433
10434impl ::protobuf::reflect::ProtobufValue for ViewInfo {
10435    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
10436}
10437
10438// @@protoc_insertion_point(message:RemoteFortressReader.MapInfo)
10439#[derive(PartialEq,Clone,Default,Debug)]
10440pub struct MapInfo {
10441    // message fields
10442    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.block_size_x)
10443    pub block_size_x: ::std::option::Option<i32>,
10444    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.block_size_y)
10445    pub block_size_y: ::std::option::Option<i32>,
10446    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.block_size_z)
10447    pub block_size_z: ::std::option::Option<i32>,
10448    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.block_pos_x)
10449    pub block_pos_x: ::std::option::Option<i32>,
10450    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.block_pos_y)
10451    pub block_pos_y: ::std::option::Option<i32>,
10452    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.block_pos_z)
10453    pub block_pos_z: ::std::option::Option<i32>,
10454    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.world_name)
10455    pub world_name: ::std::option::Option<::std::string::String>,
10456    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.world_name_english)
10457    pub world_name_english: ::std::option::Option<::std::string::String>,
10458    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.save_name)
10459    pub save_name: ::std::option::Option<::std::string::String>,
10460    // special fields
10461    // @@protoc_insertion_point(special_field:RemoteFortressReader.MapInfo.special_fields)
10462    pub special_fields: ::protobuf::SpecialFields,
10463}
10464
10465impl<'a> ::std::default::Default for &'a MapInfo {
10466    fn default() -> &'a MapInfo {
10467        <MapInfo as ::protobuf::Message>::default_instance()
10468    }
10469}
10470
10471impl MapInfo {
10472    pub fn new() -> MapInfo {
10473        ::std::default::Default::default()
10474    }
10475
10476    // optional int32 block_size_x = 1;
10477
10478    pub fn block_size_x(&self) -> i32 {
10479        self.block_size_x.unwrap_or(0)
10480    }
10481
10482    pub fn clear_block_size_x(&mut self) {
10483        self.block_size_x = ::std::option::Option::None;
10484    }
10485
10486    pub fn has_block_size_x(&self) -> bool {
10487        self.block_size_x.is_some()
10488    }
10489
10490    // Param is passed by value, moved
10491    pub fn set_block_size_x(&mut self, v: i32) {
10492        self.block_size_x = ::std::option::Option::Some(v);
10493    }
10494
10495    // optional int32 block_size_y = 2;
10496
10497    pub fn block_size_y(&self) -> i32 {
10498        self.block_size_y.unwrap_or(0)
10499    }
10500
10501    pub fn clear_block_size_y(&mut self) {
10502        self.block_size_y = ::std::option::Option::None;
10503    }
10504
10505    pub fn has_block_size_y(&self) -> bool {
10506        self.block_size_y.is_some()
10507    }
10508
10509    // Param is passed by value, moved
10510    pub fn set_block_size_y(&mut self, v: i32) {
10511        self.block_size_y = ::std::option::Option::Some(v);
10512    }
10513
10514    // optional int32 block_size_z = 3;
10515
10516    pub fn block_size_z(&self) -> i32 {
10517        self.block_size_z.unwrap_or(0)
10518    }
10519
10520    pub fn clear_block_size_z(&mut self) {
10521        self.block_size_z = ::std::option::Option::None;
10522    }
10523
10524    pub fn has_block_size_z(&self) -> bool {
10525        self.block_size_z.is_some()
10526    }
10527
10528    // Param is passed by value, moved
10529    pub fn set_block_size_z(&mut self, v: i32) {
10530        self.block_size_z = ::std::option::Option::Some(v);
10531    }
10532
10533    // optional int32 block_pos_x = 4;
10534
10535    pub fn block_pos_x(&self) -> i32 {
10536        self.block_pos_x.unwrap_or(0)
10537    }
10538
10539    pub fn clear_block_pos_x(&mut self) {
10540        self.block_pos_x = ::std::option::Option::None;
10541    }
10542
10543    pub fn has_block_pos_x(&self) -> bool {
10544        self.block_pos_x.is_some()
10545    }
10546
10547    // Param is passed by value, moved
10548    pub fn set_block_pos_x(&mut self, v: i32) {
10549        self.block_pos_x = ::std::option::Option::Some(v);
10550    }
10551
10552    // optional int32 block_pos_y = 5;
10553
10554    pub fn block_pos_y(&self) -> i32 {
10555        self.block_pos_y.unwrap_or(0)
10556    }
10557
10558    pub fn clear_block_pos_y(&mut self) {
10559        self.block_pos_y = ::std::option::Option::None;
10560    }
10561
10562    pub fn has_block_pos_y(&self) -> bool {
10563        self.block_pos_y.is_some()
10564    }
10565
10566    // Param is passed by value, moved
10567    pub fn set_block_pos_y(&mut self, v: i32) {
10568        self.block_pos_y = ::std::option::Option::Some(v);
10569    }
10570
10571    // optional int32 block_pos_z = 6;
10572
10573    pub fn block_pos_z(&self) -> i32 {
10574        self.block_pos_z.unwrap_or(0)
10575    }
10576
10577    pub fn clear_block_pos_z(&mut self) {
10578        self.block_pos_z = ::std::option::Option::None;
10579    }
10580
10581    pub fn has_block_pos_z(&self) -> bool {
10582        self.block_pos_z.is_some()
10583    }
10584
10585    // Param is passed by value, moved
10586    pub fn set_block_pos_z(&mut self, v: i32) {
10587        self.block_pos_z = ::std::option::Option::Some(v);
10588    }
10589
10590    // optional string world_name = 7;
10591
10592    pub fn world_name(&self) -> &str {
10593        match self.world_name.as_ref() {
10594            Some(v) => v,
10595            None => "",
10596        }
10597    }
10598
10599    pub fn clear_world_name(&mut self) {
10600        self.world_name = ::std::option::Option::None;
10601    }
10602
10603    pub fn has_world_name(&self) -> bool {
10604        self.world_name.is_some()
10605    }
10606
10607    // Param is passed by value, moved
10608    pub fn set_world_name(&mut self, v: ::std::string::String) {
10609        self.world_name = ::std::option::Option::Some(v);
10610    }
10611
10612    // Mutable pointer to the field.
10613    // If field is not initialized, it is initialized with default value first.
10614    pub fn mut_world_name(&mut self) -> &mut ::std::string::String {
10615        if self.world_name.is_none() {
10616            self.world_name = ::std::option::Option::Some(::std::string::String::new());
10617        }
10618        self.world_name.as_mut().unwrap()
10619    }
10620
10621    // Take field
10622    pub fn take_world_name(&mut self) -> ::std::string::String {
10623        self.world_name.take().unwrap_or_else(|| ::std::string::String::new())
10624    }
10625
10626    // optional string world_name_english = 8;
10627
10628    pub fn world_name_english(&self) -> &str {
10629        match self.world_name_english.as_ref() {
10630            Some(v) => v,
10631            None => "",
10632        }
10633    }
10634
10635    pub fn clear_world_name_english(&mut self) {
10636        self.world_name_english = ::std::option::Option::None;
10637    }
10638
10639    pub fn has_world_name_english(&self) -> bool {
10640        self.world_name_english.is_some()
10641    }
10642
10643    // Param is passed by value, moved
10644    pub fn set_world_name_english(&mut self, v: ::std::string::String) {
10645        self.world_name_english = ::std::option::Option::Some(v);
10646    }
10647
10648    // Mutable pointer to the field.
10649    // If field is not initialized, it is initialized with default value first.
10650    pub fn mut_world_name_english(&mut self) -> &mut ::std::string::String {
10651        if self.world_name_english.is_none() {
10652            self.world_name_english = ::std::option::Option::Some(::std::string::String::new());
10653        }
10654        self.world_name_english.as_mut().unwrap()
10655    }
10656
10657    // Take field
10658    pub fn take_world_name_english(&mut self) -> ::std::string::String {
10659        self.world_name_english.take().unwrap_or_else(|| ::std::string::String::new())
10660    }
10661
10662    // optional string save_name = 9;
10663
10664    pub fn save_name(&self) -> &str {
10665        match self.save_name.as_ref() {
10666            Some(v) => v,
10667            None => "",
10668        }
10669    }
10670
10671    pub fn clear_save_name(&mut self) {
10672        self.save_name = ::std::option::Option::None;
10673    }
10674
10675    pub fn has_save_name(&self) -> bool {
10676        self.save_name.is_some()
10677    }
10678
10679    // Param is passed by value, moved
10680    pub fn set_save_name(&mut self, v: ::std::string::String) {
10681        self.save_name = ::std::option::Option::Some(v);
10682    }
10683
10684    // Mutable pointer to the field.
10685    // If field is not initialized, it is initialized with default value first.
10686    pub fn mut_save_name(&mut self) -> &mut ::std::string::String {
10687        if self.save_name.is_none() {
10688            self.save_name = ::std::option::Option::Some(::std::string::String::new());
10689        }
10690        self.save_name.as_mut().unwrap()
10691    }
10692
10693    // Take field
10694    pub fn take_save_name(&mut self) -> ::std::string::String {
10695        self.save_name.take().unwrap_or_else(|| ::std::string::String::new())
10696    }
10697
10698    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
10699        let mut fields = ::std::vec::Vec::with_capacity(9);
10700        let mut oneofs = ::std::vec::Vec::with_capacity(0);
10701        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10702            "block_size_x",
10703            |m: &MapInfo| { &m.block_size_x },
10704            |m: &mut MapInfo| { &mut m.block_size_x },
10705        ));
10706        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10707            "block_size_y",
10708            |m: &MapInfo| { &m.block_size_y },
10709            |m: &mut MapInfo| { &mut m.block_size_y },
10710        ));
10711        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10712            "block_size_z",
10713            |m: &MapInfo| { &m.block_size_z },
10714            |m: &mut MapInfo| { &mut m.block_size_z },
10715        ));
10716        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10717            "block_pos_x",
10718            |m: &MapInfo| { &m.block_pos_x },
10719            |m: &mut MapInfo| { &mut m.block_pos_x },
10720        ));
10721        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10722            "block_pos_y",
10723            |m: &MapInfo| { &m.block_pos_y },
10724            |m: &mut MapInfo| { &mut m.block_pos_y },
10725        ));
10726        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10727            "block_pos_z",
10728            |m: &MapInfo| { &m.block_pos_z },
10729            |m: &mut MapInfo| { &mut m.block_pos_z },
10730        ));
10731        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10732            "world_name",
10733            |m: &MapInfo| { &m.world_name },
10734            |m: &mut MapInfo| { &mut m.world_name },
10735        ));
10736        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10737            "world_name_english",
10738            |m: &MapInfo| { &m.world_name_english },
10739            |m: &mut MapInfo| { &mut m.world_name_english },
10740        ));
10741        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10742            "save_name",
10743            |m: &MapInfo| { &m.save_name },
10744            |m: &mut MapInfo| { &mut m.save_name },
10745        ));
10746        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<MapInfo>(
10747            "MapInfo",
10748            fields,
10749            oneofs,
10750        )
10751    }
10752}
10753
10754impl ::protobuf::Message for MapInfo {
10755    const NAME: &'static str = "MapInfo";
10756
10757    fn is_initialized(&self) -> bool {
10758        true
10759    }
10760
10761    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
10762        while let Some(tag) = is.read_raw_tag_or_eof()? {
10763            match tag {
10764                8 => {
10765                    self.block_size_x = ::std::option::Option::Some(is.read_int32()?);
10766                },
10767                16 => {
10768                    self.block_size_y = ::std::option::Option::Some(is.read_int32()?);
10769                },
10770                24 => {
10771                    self.block_size_z = ::std::option::Option::Some(is.read_int32()?);
10772                },
10773                32 => {
10774                    self.block_pos_x = ::std::option::Option::Some(is.read_int32()?);
10775                },
10776                40 => {
10777                    self.block_pos_y = ::std::option::Option::Some(is.read_int32()?);
10778                },
10779                48 => {
10780                    self.block_pos_z = ::std::option::Option::Some(is.read_int32()?);
10781                },
10782                58 => {
10783                    self.world_name = ::std::option::Option::Some(is.read_string()?);
10784                },
10785                66 => {
10786                    self.world_name_english = ::std::option::Option::Some(is.read_string()?);
10787                },
10788                74 => {
10789                    self.save_name = ::std::option::Option::Some(is.read_string()?);
10790                },
10791                tag => {
10792                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
10793                },
10794            };
10795        }
10796        ::std::result::Result::Ok(())
10797    }
10798
10799    // Compute sizes of nested messages
10800    #[allow(unused_variables)]
10801    fn compute_size(&self) -> u64 {
10802        let mut my_size = 0;
10803        if let Some(v) = self.block_size_x {
10804            my_size += ::protobuf::rt::int32_size(1, v);
10805        }
10806        if let Some(v) = self.block_size_y {
10807            my_size += ::protobuf::rt::int32_size(2, v);
10808        }
10809        if let Some(v) = self.block_size_z {
10810            my_size += ::protobuf::rt::int32_size(3, v);
10811        }
10812        if let Some(v) = self.block_pos_x {
10813            my_size += ::protobuf::rt::int32_size(4, v);
10814        }
10815        if let Some(v) = self.block_pos_y {
10816            my_size += ::protobuf::rt::int32_size(5, v);
10817        }
10818        if let Some(v) = self.block_pos_z {
10819            my_size += ::protobuf::rt::int32_size(6, v);
10820        }
10821        if let Some(v) = self.world_name.as_ref() {
10822            my_size += ::protobuf::rt::string_size(7, &v);
10823        }
10824        if let Some(v) = self.world_name_english.as_ref() {
10825            my_size += ::protobuf::rt::string_size(8, &v);
10826        }
10827        if let Some(v) = self.save_name.as_ref() {
10828            my_size += ::protobuf::rt::string_size(9, &v);
10829        }
10830        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
10831        self.special_fields.cached_size().set(my_size as u32);
10832        my_size
10833    }
10834
10835    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
10836        if let Some(v) = self.block_size_x {
10837            os.write_int32(1, v)?;
10838        }
10839        if let Some(v) = self.block_size_y {
10840            os.write_int32(2, v)?;
10841        }
10842        if let Some(v) = self.block_size_z {
10843            os.write_int32(3, v)?;
10844        }
10845        if let Some(v) = self.block_pos_x {
10846            os.write_int32(4, v)?;
10847        }
10848        if let Some(v) = self.block_pos_y {
10849            os.write_int32(5, v)?;
10850        }
10851        if let Some(v) = self.block_pos_z {
10852            os.write_int32(6, v)?;
10853        }
10854        if let Some(v) = self.world_name.as_ref() {
10855            os.write_string(7, v)?;
10856        }
10857        if let Some(v) = self.world_name_english.as_ref() {
10858            os.write_string(8, v)?;
10859        }
10860        if let Some(v) = self.save_name.as_ref() {
10861            os.write_string(9, v)?;
10862        }
10863        os.write_unknown_fields(self.special_fields.unknown_fields())?;
10864        ::std::result::Result::Ok(())
10865    }
10866
10867    fn special_fields(&self) -> &::protobuf::SpecialFields {
10868        &self.special_fields
10869    }
10870
10871    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
10872        &mut self.special_fields
10873    }
10874
10875    fn new() -> MapInfo {
10876        MapInfo::new()
10877    }
10878
10879    fn clear(&mut self) {
10880        self.block_size_x = ::std::option::Option::None;
10881        self.block_size_y = ::std::option::Option::None;
10882        self.block_size_z = ::std::option::Option::None;
10883        self.block_pos_x = ::std::option::Option::None;
10884        self.block_pos_y = ::std::option::Option::None;
10885        self.block_pos_z = ::std::option::Option::None;
10886        self.world_name = ::std::option::Option::None;
10887        self.world_name_english = ::std::option::Option::None;
10888        self.save_name = ::std::option::Option::None;
10889        self.special_fields.clear();
10890    }
10891
10892    fn default_instance() -> &'static MapInfo {
10893        static instance: MapInfo = MapInfo {
10894            block_size_x: ::std::option::Option::None,
10895            block_size_y: ::std::option::Option::None,
10896            block_size_z: ::std::option::Option::None,
10897            block_pos_x: ::std::option::Option::None,
10898            block_pos_y: ::std::option::Option::None,
10899            block_pos_z: ::std::option::Option::None,
10900            world_name: ::std::option::Option::None,
10901            world_name_english: ::std::option::Option::None,
10902            save_name: ::std::option::Option::None,
10903            special_fields: ::protobuf::SpecialFields::new(),
10904        };
10905        &instance
10906    }
10907}
10908
10909impl ::protobuf::MessageFull for MapInfo {
10910    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
10911        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
10912        descriptor.get(|| file_descriptor().message_by_package_relative_name("MapInfo").unwrap()).clone()
10913    }
10914}
10915
10916impl ::std::fmt::Display for MapInfo {
10917    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10918        ::protobuf::text_format::fmt(self, f)
10919    }
10920}
10921
10922impl ::protobuf::reflect::ProtobufValue for MapInfo {
10923    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
10924}
10925
10926// @@protoc_insertion_point(message:RemoteFortressReader.Cloud)
10927#[derive(PartialEq,Clone,Default,Debug)]
10928pub struct Cloud {
10929    // message fields
10930    // @@protoc_insertion_point(field:RemoteFortressReader.Cloud.front)
10931    pub front: ::std::option::Option<::protobuf::EnumOrUnknown<FrontType>>,
10932    // @@protoc_insertion_point(field:RemoteFortressReader.Cloud.cumulus)
10933    pub cumulus: ::std::option::Option<::protobuf::EnumOrUnknown<CumulusType>>,
10934    // @@protoc_insertion_point(field:RemoteFortressReader.Cloud.cirrus)
10935    pub cirrus: ::std::option::Option<bool>,
10936    // @@protoc_insertion_point(field:RemoteFortressReader.Cloud.stratus)
10937    pub stratus: ::std::option::Option<::protobuf::EnumOrUnknown<StratusType>>,
10938    // @@protoc_insertion_point(field:RemoteFortressReader.Cloud.fog)
10939    pub fog: ::std::option::Option<::protobuf::EnumOrUnknown<FogType>>,
10940    // special fields
10941    // @@protoc_insertion_point(special_field:RemoteFortressReader.Cloud.special_fields)
10942    pub special_fields: ::protobuf::SpecialFields,
10943}
10944
10945impl<'a> ::std::default::Default for &'a Cloud {
10946    fn default() -> &'a Cloud {
10947        <Cloud as ::protobuf::Message>::default_instance()
10948    }
10949}
10950
10951impl Cloud {
10952    pub fn new() -> Cloud {
10953        ::std::default::Default::default()
10954    }
10955
10956    // optional .RemoteFortressReader.FrontType front = 1;
10957
10958    pub fn front(&self) -> FrontType {
10959        match self.front {
10960            Some(e) => e.enum_value_or(FrontType::FRONT_NONE),
10961            None => FrontType::FRONT_NONE,
10962        }
10963    }
10964
10965    pub fn clear_front(&mut self) {
10966        self.front = ::std::option::Option::None;
10967    }
10968
10969    pub fn has_front(&self) -> bool {
10970        self.front.is_some()
10971    }
10972
10973    // Param is passed by value, moved
10974    pub fn set_front(&mut self, v: FrontType) {
10975        self.front = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
10976    }
10977
10978    // optional .RemoteFortressReader.CumulusType cumulus = 2;
10979
10980    pub fn cumulus(&self) -> CumulusType {
10981        match self.cumulus {
10982            Some(e) => e.enum_value_or(CumulusType::CUMULUS_NONE),
10983            None => CumulusType::CUMULUS_NONE,
10984        }
10985    }
10986
10987    pub fn clear_cumulus(&mut self) {
10988        self.cumulus = ::std::option::Option::None;
10989    }
10990
10991    pub fn has_cumulus(&self) -> bool {
10992        self.cumulus.is_some()
10993    }
10994
10995    // Param is passed by value, moved
10996    pub fn set_cumulus(&mut self, v: CumulusType) {
10997        self.cumulus = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
10998    }
10999
11000    // optional bool cirrus = 3;
11001
11002    pub fn cirrus(&self) -> bool {
11003        self.cirrus.unwrap_or(false)
11004    }
11005
11006    pub fn clear_cirrus(&mut self) {
11007        self.cirrus = ::std::option::Option::None;
11008    }
11009
11010    pub fn has_cirrus(&self) -> bool {
11011        self.cirrus.is_some()
11012    }
11013
11014    // Param is passed by value, moved
11015    pub fn set_cirrus(&mut self, v: bool) {
11016        self.cirrus = ::std::option::Option::Some(v);
11017    }
11018
11019    // optional .RemoteFortressReader.StratusType stratus = 4;
11020
11021    pub fn stratus(&self) -> StratusType {
11022        match self.stratus {
11023            Some(e) => e.enum_value_or(StratusType::STRATUS_NONE),
11024            None => StratusType::STRATUS_NONE,
11025        }
11026    }
11027
11028    pub fn clear_stratus(&mut self) {
11029        self.stratus = ::std::option::Option::None;
11030    }
11031
11032    pub fn has_stratus(&self) -> bool {
11033        self.stratus.is_some()
11034    }
11035
11036    // Param is passed by value, moved
11037    pub fn set_stratus(&mut self, v: StratusType) {
11038        self.stratus = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
11039    }
11040
11041    // optional .RemoteFortressReader.FogType fog = 5;
11042
11043    pub fn fog(&self) -> FogType {
11044        match self.fog {
11045            Some(e) => e.enum_value_or(FogType::FOG_NONE),
11046            None => FogType::FOG_NONE,
11047        }
11048    }
11049
11050    pub fn clear_fog(&mut self) {
11051        self.fog = ::std::option::Option::None;
11052    }
11053
11054    pub fn has_fog(&self) -> bool {
11055        self.fog.is_some()
11056    }
11057
11058    // Param is passed by value, moved
11059    pub fn set_fog(&mut self, v: FogType) {
11060        self.fog = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
11061    }
11062
11063    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
11064        let mut fields = ::std::vec::Vec::with_capacity(5);
11065        let mut oneofs = ::std::vec::Vec::with_capacity(0);
11066        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11067            "front",
11068            |m: &Cloud| { &m.front },
11069            |m: &mut Cloud| { &mut m.front },
11070        ));
11071        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11072            "cumulus",
11073            |m: &Cloud| { &m.cumulus },
11074            |m: &mut Cloud| { &mut m.cumulus },
11075        ));
11076        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11077            "cirrus",
11078            |m: &Cloud| { &m.cirrus },
11079            |m: &mut Cloud| { &mut m.cirrus },
11080        ));
11081        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11082            "stratus",
11083            |m: &Cloud| { &m.stratus },
11084            |m: &mut Cloud| { &mut m.stratus },
11085        ));
11086        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11087            "fog",
11088            |m: &Cloud| { &m.fog },
11089            |m: &mut Cloud| { &mut m.fog },
11090        ));
11091        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Cloud>(
11092            "Cloud",
11093            fields,
11094            oneofs,
11095        )
11096    }
11097}
11098
11099impl ::protobuf::Message for Cloud {
11100    const NAME: &'static str = "Cloud";
11101
11102    fn is_initialized(&self) -> bool {
11103        true
11104    }
11105
11106    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
11107        while let Some(tag) = is.read_raw_tag_or_eof()? {
11108            match tag {
11109                8 => {
11110                    self.front = ::std::option::Option::Some(is.read_enum_or_unknown()?);
11111                },
11112                16 => {
11113                    self.cumulus = ::std::option::Option::Some(is.read_enum_or_unknown()?);
11114                },
11115                24 => {
11116                    self.cirrus = ::std::option::Option::Some(is.read_bool()?);
11117                },
11118                32 => {
11119                    self.stratus = ::std::option::Option::Some(is.read_enum_or_unknown()?);
11120                },
11121                40 => {
11122                    self.fog = ::std::option::Option::Some(is.read_enum_or_unknown()?);
11123                },
11124                tag => {
11125                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
11126                },
11127            };
11128        }
11129        ::std::result::Result::Ok(())
11130    }
11131
11132    // Compute sizes of nested messages
11133    #[allow(unused_variables)]
11134    fn compute_size(&self) -> u64 {
11135        let mut my_size = 0;
11136        if let Some(v) = self.front {
11137            my_size += ::protobuf::rt::int32_size(1, v.value());
11138        }
11139        if let Some(v) = self.cumulus {
11140            my_size += ::protobuf::rt::int32_size(2, v.value());
11141        }
11142        if let Some(v) = self.cirrus {
11143            my_size += 1 + 1;
11144        }
11145        if let Some(v) = self.stratus {
11146            my_size += ::protobuf::rt::int32_size(4, v.value());
11147        }
11148        if let Some(v) = self.fog {
11149            my_size += ::protobuf::rt::int32_size(5, v.value());
11150        }
11151        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
11152        self.special_fields.cached_size().set(my_size as u32);
11153        my_size
11154    }
11155
11156    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
11157        if let Some(v) = self.front {
11158            os.write_enum(1, ::protobuf::EnumOrUnknown::value(&v))?;
11159        }
11160        if let Some(v) = self.cumulus {
11161            os.write_enum(2, ::protobuf::EnumOrUnknown::value(&v))?;
11162        }
11163        if let Some(v) = self.cirrus {
11164            os.write_bool(3, v)?;
11165        }
11166        if let Some(v) = self.stratus {
11167            os.write_enum(4, ::protobuf::EnumOrUnknown::value(&v))?;
11168        }
11169        if let Some(v) = self.fog {
11170            os.write_enum(5, ::protobuf::EnumOrUnknown::value(&v))?;
11171        }
11172        os.write_unknown_fields(self.special_fields.unknown_fields())?;
11173        ::std::result::Result::Ok(())
11174    }
11175
11176    fn special_fields(&self) -> &::protobuf::SpecialFields {
11177        &self.special_fields
11178    }
11179
11180    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
11181        &mut self.special_fields
11182    }
11183
11184    fn new() -> Cloud {
11185        Cloud::new()
11186    }
11187
11188    fn clear(&mut self) {
11189        self.front = ::std::option::Option::None;
11190        self.cumulus = ::std::option::Option::None;
11191        self.cirrus = ::std::option::Option::None;
11192        self.stratus = ::std::option::Option::None;
11193        self.fog = ::std::option::Option::None;
11194        self.special_fields.clear();
11195    }
11196
11197    fn default_instance() -> &'static Cloud {
11198        static instance: Cloud = Cloud {
11199            front: ::std::option::Option::None,
11200            cumulus: ::std::option::Option::None,
11201            cirrus: ::std::option::Option::None,
11202            stratus: ::std::option::Option::None,
11203            fog: ::std::option::Option::None,
11204            special_fields: ::protobuf::SpecialFields::new(),
11205        };
11206        &instance
11207    }
11208}
11209
11210impl ::protobuf::MessageFull for Cloud {
11211    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
11212        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
11213        descriptor.get(|| file_descriptor().message_by_package_relative_name("Cloud").unwrap()).clone()
11214    }
11215}
11216
11217impl ::std::fmt::Display for Cloud {
11218    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11219        ::protobuf::text_format::fmt(self, f)
11220    }
11221}
11222
11223impl ::protobuf::reflect::ProtobufValue for Cloud {
11224    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
11225}
11226
11227// @@protoc_insertion_point(message:RemoteFortressReader.WorldMap)
11228#[derive(PartialEq,Clone,Default,Debug)]
11229pub struct WorldMap {
11230    // message fields
11231    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.world_width)
11232    pub world_width: ::std::option::Option<i32>,
11233    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.world_height)
11234    pub world_height: ::std::option::Option<i32>,
11235    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.name)
11236    pub name: ::std::option::Option<::std::vec::Vec<u8>>,
11237    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.name_english)
11238    pub name_english: ::std::option::Option<::std::string::String>,
11239    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.elevation)
11240    pub elevation: ::std::vec::Vec<i32>,
11241    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.rainfall)
11242    pub rainfall: ::std::vec::Vec<i32>,
11243    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.vegetation)
11244    pub vegetation: ::std::vec::Vec<i32>,
11245    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.temperature)
11246    pub temperature: ::std::vec::Vec<i32>,
11247    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.evilness)
11248    pub evilness: ::std::vec::Vec<i32>,
11249    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.drainage)
11250    pub drainage: ::std::vec::Vec<i32>,
11251    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.volcanism)
11252    pub volcanism: ::std::vec::Vec<i32>,
11253    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.savagery)
11254    pub savagery: ::std::vec::Vec<i32>,
11255    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.clouds)
11256    pub clouds: ::std::vec::Vec<Cloud>,
11257    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.salinity)
11258    pub salinity: ::std::vec::Vec<i32>,
11259    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.map_x)
11260    pub map_x: ::std::option::Option<i32>,
11261    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.map_y)
11262    pub map_y: ::std::option::Option<i32>,
11263    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.center_x)
11264    pub center_x: ::std::option::Option<i32>,
11265    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.center_y)
11266    pub center_y: ::std::option::Option<i32>,
11267    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.center_z)
11268    pub center_z: ::std::option::Option<i32>,
11269    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.cur_year)
11270    pub cur_year: ::std::option::Option<i32>,
11271    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.cur_year_tick)
11272    pub cur_year_tick: ::std::option::Option<i32>,
11273    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.world_poles)
11274    pub world_poles: ::std::option::Option<::protobuf::EnumOrUnknown<WorldPoles>>,
11275    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.river_tiles)
11276    pub river_tiles: ::std::vec::Vec<RiverTile>,
11277    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.water_elevation)
11278    pub water_elevation: ::std::vec::Vec<i32>,
11279    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.region_tiles)
11280    pub region_tiles: ::std::vec::Vec<RegionTile>,
11281    // special fields
11282    // @@protoc_insertion_point(special_field:RemoteFortressReader.WorldMap.special_fields)
11283    pub special_fields: ::protobuf::SpecialFields,
11284}
11285
11286impl<'a> ::std::default::Default for &'a WorldMap {
11287    fn default() -> &'a WorldMap {
11288        <WorldMap as ::protobuf::Message>::default_instance()
11289    }
11290}
11291
11292impl WorldMap {
11293    pub fn new() -> WorldMap {
11294        ::std::default::Default::default()
11295    }
11296
11297    // required int32 world_width = 1;
11298
11299    pub fn world_width(&self) -> i32 {
11300        self.world_width.unwrap_or(0)
11301    }
11302
11303    pub fn clear_world_width(&mut self) {
11304        self.world_width = ::std::option::Option::None;
11305    }
11306
11307    pub fn has_world_width(&self) -> bool {
11308        self.world_width.is_some()
11309    }
11310
11311    // Param is passed by value, moved
11312    pub fn set_world_width(&mut self, v: i32) {
11313        self.world_width = ::std::option::Option::Some(v);
11314    }
11315
11316    // required int32 world_height = 2;
11317
11318    pub fn world_height(&self) -> i32 {
11319        self.world_height.unwrap_or(0)
11320    }
11321
11322    pub fn clear_world_height(&mut self) {
11323        self.world_height = ::std::option::Option::None;
11324    }
11325
11326    pub fn has_world_height(&self) -> bool {
11327        self.world_height.is_some()
11328    }
11329
11330    // Param is passed by value, moved
11331    pub fn set_world_height(&mut self, v: i32) {
11332        self.world_height = ::std::option::Option::Some(v);
11333    }
11334
11335    // optional bytes name = 3;
11336
11337    pub fn name(&self) -> &[u8] {
11338        match self.name.as_ref() {
11339            Some(v) => v,
11340            None => &[],
11341        }
11342    }
11343
11344    pub fn clear_name(&mut self) {
11345        self.name = ::std::option::Option::None;
11346    }
11347
11348    pub fn has_name(&self) -> bool {
11349        self.name.is_some()
11350    }
11351
11352    // Param is passed by value, moved
11353    pub fn set_name(&mut self, v: ::std::vec::Vec<u8>) {
11354        self.name = ::std::option::Option::Some(v);
11355    }
11356
11357    // Mutable pointer to the field.
11358    // If field is not initialized, it is initialized with default value first.
11359    pub fn mut_name(&mut self) -> &mut ::std::vec::Vec<u8> {
11360        if self.name.is_none() {
11361            self.name = ::std::option::Option::Some(::std::vec::Vec::new());
11362        }
11363        self.name.as_mut().unwrap()
11364    }
11365
11366    // Take field
11367    pub fn take_name(&mut self) -> ::std::vec::Vec<u8> {
11368        self.name.take().unwrap_or_else(|| ::std::vec::Vec::new())
11369    }
11370
11371    // optional string name_english = 4;
11372
11373    pub fn name_english(&self) -> &str {
11374        match self.name_english.as_ref() {
11375            Some(v) => v,
11376            None => "",
11377        }
11378    }
11379
11380    pub fn clear_name_english(&mut self) {
11381        self.name_english = ::std::option::Option::None;
11382    }
11383
11384    pub fn has_name_english(&self) -> bool {
11385        self.name_english.is_some()
11386    }
11387
11388    // Param is passed by value, moved
11389    pub fn set_name_english(&mut self, v: ::std::string::String) {
11390        self.name_english = ::std::option::Option::Some(v);
11391    }
11392
11393    // Mutable pointer to the field.
11394    // If field is not initialized, it is initialized with default value first.
11395    pub fn mut_name_english(&mut self) -> &mut ::std::string::String {
11396        if self.name_english.is_none() {
11397            self.name_english = ::std::option::Option::Some(::std::string::String::new());
11398        }
11399        self.name_english.as_mut().unwrap()
11400    }
11401
11402    // Take field
11403    pub fn take_name_english(&mut self) -> ::std::string::String {
11404        self.name_english.take().unwrap_or_else(|| ::std::string::String::new())
11405    }
11406
11407    // optional int32 map_x = 15;
11408
11409    pub fn map_x(&self) -> i32 {
11410        self.map_x.unwrap_or(0)
11411    }
11412
11413    pub fn clear_map_x(&mut self) {
11414        self.map_x = ::std::option::Option::None;
11415    }
11416
11417    pub fn has_map_x(&self) -> bool {
11418        self.map_x.is_some()
11419    }
11420
11421    // Param is passed by value, moved
11422    pub fn set_map_x(&mut self, v: i32) {
11423        self.map_x = ::std::option::Option::Some(v);
11424    }
11425
11426    // optional int32 map_y = 16;
11427
11428    pub fn map_y(&self) -> i32 {
11429        self.map_y.unwrap_or(0)
11430    }
11431
11432    pub fn clear_map_y(&mut self) {
11433        self.map_y = ::std::option::Option::None;
11434    }
11435
11436    pub fn has_map_y(&self) -> bool {
11437        self.map_y.is_some()
11438    }
11439
11440    // Param is passed by value, moved
11441    pub fn set_map_y(&mut self, v: i32) {
11442        self.map_y = ::std::option::Option::Some(v);
11443    }
11444
11445    // optional int32 center_x = 17;
11446
11447    pub fn center_x(&self) -> i32 {
11448        self.center_x.unwrap_or(0)
11449    }
11450
11451    pub fn clear_center_x(&mut self) {
11452        self.center_x = ::std::option::Option::None;
11453    }
11454
11455    pub fn has_center_x(&self) -> bool {
11456        self.center_x.is_some()
11457    }
11458
11459    // Param is passed by value, moved
11460    pub fn set_center_x(&mut self, v: i32) {
11461        self.center_x = ::std::option::Option::Some(v);
11462    }
11463
11464    // optional int32 center_y = 18;
11465
11466    pub fn center_y(&self) -> i32 {
11467        self.center_y.unwrap_or(0)
11468    }
11469
11470    pub fn clear_center_y(&mut self) {
11471        self.center_y = ::std::option::Option::None;
11472    }
11473
11474    pub fn has_center_y(&self) -> bool {
11475        self.center_y.is_some()
11476    }
11477
11478    // Param is passed by value, moved
11479    pub fn set_center_y(&mut self, v: i32) {
11480        self.center_y = ::std::option::Option::Some(v);
11481    }
11482
11483    // optional int32 center_z = 19;
11484
11485    pub fn center_z(&self) -> i32 {
11486        self.center_z.unwrap_or(0)
11487    }
11488
11489    pub fn clear_center_z(&mut self) {
11490        self.center_z = ::std::option::Option::None;
11491    }
11492
11493    pub fn has_center_z(&self) -> bool {
11494        self.center_z.is_some()
11495    }
11496
11497    // Param is passed by value, moved
11498    pub fn set_center_z(&mut self, v: i32) {
11499        self.center_z = ::std::option::Option::Some(v);
11500    }
11501
11502    // optional int32 cur_year = 20;
11503
11504    pub fn cur_year(&self) -> i32 {
11505        self.cur_year.unwrap_or(0)
11506    }
11507
11508    pub fn clear_cur_year(&mut self) {
11509        self.cur_year = ::std::option::Option::None;
11510    }
11511
11512    pub fn has_cur_year(&self) -> bool {
11513        self.cur_year.is_some()
11514    }
11515
11516    // Param is passed by value, moved
11517    pub fn set_cur_year(&mut self, v: i32) {
11518        self.cur_year = ::std::option::Option::Some(v);
11519    }
11520
11521    // optional int32 cur_year_tick = 21;
11522
11523    pub fn cur_year_tick(&self) -> i32 {
11524        self.cur_year_tick.unwrap_or(0)
11525    }
11526
11527    pub fn clear_cur_year_tick(&mut self) {
11528        self.cur_year_tick = ::std::option::Option::None;
11529    }
11530
11531    pub fn has_cur_year_tick(&self) -> bool {
11532        self.cur_year_tick.is_some()
11533    }
11534
11535    // Param is passed by value, moved
11536    pub fn set_cur_year_tick(&mut self, v: i32) {
11537        self.cur_year_tick = ::std::option::Option::Some(v);
11538    }
11539
11540    // optional .RemoteFortressReader.WorldPoles world_poles = 22;
11541
11542    pub fn world_poles(&self) -> WorldPoles {
11543        match self.world_poles {
11544            Some(e) => e.enum_value_or(WorldPoles::NO_POLES),
11545            None => WorldPoles::NO_POLES,
11546        }
11547    }
11548
11549    pub fn clear_world_poles(&mut self) {
11550        self.world_poles = ::std::option::Option::None;
11551    }
11552
11553    pub fn has_world_poles(&self) -> bool {
11554        self.world_poles.is_some()
11555    }
11556
11557    // Param is passed by value, moved
11558    pub fn set_world_poles(&mut self, v: WorldPoles) {
11559        self.world_poles = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
11560    }
11561
11562    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
11563        let mut fields = ::std::vec::Vec::with_capacity(25);
11564        let mut oneofs = ::std::vec::Vec::with_capacity(0);
11565        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11566            "world_width",
11567            |m: &WorldMap| { &m.world_width },
11568            |m: &mut WorldMap| { &mut m.world_width },
11569        ));
11570        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11571            "world_height",
11572            |m: &WorldMap| { &m.world_height },
11573            |m: &mut WorldMap| { &mut m.world_height },
11574        ));
11575        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11576            "name",
11577            |m: &WorldMap| { &m.name },
11578            |m: &mut WorldMap| { &mut m.name },
11579        ));
11580        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11581            "name_english",
11582            |m: &WorldMap| { &m.name_english },
11583            |m: &mut WorldMap| { &mut m.name_english },
11584        ));
11585        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11586            "elevation",
11587            |m: &WorldMap| { &m.elevation },
11588            |m: &mut WorldMap| { &mut m.elevation },
11589        ));
11590        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11591            "rainfall",
11592            |m: &WorldMap| { &m.rainfall },
11593            |m: &mut WorldMap| { &mut m.rainfall },
11594        ));
11595        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11596            "vegetation",
11597            |m: &WorldMap| { &m.vegetation },
11598            |m: &mut WorldMap| { &mut m.vegetation },
11599        ));
11600        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11601            "temperature",
11602            |m: &WorldMap| { &m.temperature },
11603            |m: &mut WorldMap| { &mut m.temperature },
11604        ));
11605        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11606            "evilness",
11607            |m: &WorldMap| { &m.evilness },
11608            |m: &mut WorldMap| { &mut m.evilness },
11609        ));
11610        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11611            "drainage",
11612            |m: &WorldMap| { &m.drainage },
11613            |m: &mut WorldMap| { &mut m.drainage },
11614        ));
11615        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11616            "volcanism",
11617            |m: &WorldMap| { &m.volcanism },
11618            |m: &mut WorldMap| { &mut m.volcanism },
11619        ));
11620        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11621            "savagery",
11622            |m: &WorldMap| { &m.savagery },
11623            |m: &mut WorldMap| { &mut m.savagery },
11624        ));
11625        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11626            "clouds",
11627            |m: &WorldMap| { &m.clouds },
11628            |m: &mut WorldMap| { &mut m.clouds },
11629        ));
11630        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11631            "salinity",
11632            |m: &WorldMap| { &m.salinity },
11633            |m: &mut WorldMap| { &mut m.salinity },
11634        ));
11635        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11636            "map_x",
11637            |m: &WorldMap| { &m.map_x },
11638            |m: &mut WorldMap| { &mut m.map_x },
11639        ));
11640        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11641            "map_y",
11642            |m: &WorldMap| { &m.map_y },
11643            |m: &mut WorldMap| { &mut m.map_y },
11644        ));
11645        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11646            "center_x",
11647            |m: &WorldMap| { &m.center_x },
11648            |m: &mut WorldMap| { &mut m.center_x },
11649        ));
11650        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11651            "center_y",
11652            |m: &WorldMap| { &m.center_y },
11653            |m: &mut WorldMap| { &mut m.center_y },
11654        ));
11655        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11656            "center_z",
11657            |m: &WorldMap| { &m.center_z },
11658            |m: &mut WorldMap| { &mut m.center_z },
11659        ));
11660        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11661            "cur_year",
11662            |m: &WorldMap| { &m.cur_year },
11663            |m: &mut WorldMap| { &mut m.cur_year },
11664        ));
11665        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11666            "cur_year_tick",
11667            |m: &WorldMap| { &m.cur_year_tick },
11668            |m: &mut WorldMap| { &mut m.cur_year_tick },
11669        ));
11670        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11671            "world_poles",
11672            |m: &WorldMap| { &m.world_poles },
11673            |m: &mut WorldMap| { &mut m.world_poles },
11674        ));
11675        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11676            "river_tiles",
11677            |m: &WorldMap| { &m.river_tiles },
11678            |m: &mut WorldMap| { &mut m.river_tiles },
11679        ));
11680        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11681            "water_elevation",
11682            |m: &WorldMap| { &m.water_elevation },
11683            |m: &mut WorldMap| { &mut m.water_elevation },
11684        ));
11685        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11686            "region_tiles",
11687            |m: &WorldMap| { &m.region_tiles },
11688            |m: &mut WorldMap| { &mut m.region_tiles },
11689        ));
11690        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<WorldMap>(
11691            "WorldMap",
11692            fields,
11693            oneofs,
11694        )
11695    }
11696}
11697
11698impl ::protobuf::Message for WorldMap {
11699    const NAME: &'static str = "WorldMap";
11700
11701    fn is_initialized(&self) -> bool {
11702        if self.world_width.is_none() {
11703            return false;
11704        }
11705        if self.world_height.is_none() {
11706            return false;
11707        }
11708        for v in &self.clouds {
11709            if !v.is_initialized() {
11710                return false;
11711            }
11712        };
11713        for v in &self.river_tiles {
11714            if !v.is_initialized() {
11715                return false;
11716            }
11717        };
11718        for v in &self.region_tiles {
11719            if !v.is_initialized() {
11720                return false;
11721            }
11722        };
11723        true
11724    }
11725
11726    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
11727        while let Some(tag) = is.read_raw_tag_or_eof()? {
11728            match tag {
11729                8 => {
11730                    self.world_width = ::std::option::Option::Some(is.read_int32()?);
11731                },
11732                16 => {
11733                    self.world_height = ::std::option::Option::Some(is.read_int32()?);
11734                },
11735                26 => {
11736                    self.name = ::std::option::Option::Some(is.read_bytes()?);
11737                },
11738                34 => {
11739                    self.name_english = ::std::option::Option::Some(is.read_string()?);
11740                },
11741                42 => {
11742                    is.read_repeated_packed_int32_into(&mut self.elevation)?;
11743                },
11744                40 => {
11745                    self.elevation.push(is.read_int32()?);
11746                },
11747                50 => {
11748                    is.read_repeated_packed_int32_into(&mut self.rainfall)?;
11749                },
11750                48 => {
11751                    self.rainfall.push(is.read_int32()?);
11752                },
11753                58 => {
11754                    is.read_repeated_packed_int32_into(&mut self.vegetation)?;
11755                },
11756                56 => {
11757                    self.vegetation.push(is.read_int32()?);
11758                },
11759                66 => {
11760                    is.read_repeated_packed_int32_into(&mut self.temperature)?;
11761                },
11762                64 => {
11763                    self.temperature.push(is.read_int32()?);
11764                },
11765                74 => {
11766                    is.read_repeated_packed_int32_into(&mut self.evilness)?;
11767                },
11768                72 => {
11769                    self.evilness.push(is.read_int32()?);
11770                },
11771                82 => {
11772                    is.read_repeated_packed_int32_into(&mut self.drainage)?;
11773                },
11774                80 => {
11775                    self.drainage.push(is.read_int32()?);
11776                },
11777                90 => {
11778                    is.read_repeated_packed_int32_into(&mut self.volcanism)?;
11779                },
11780                88 => {
11781                    self.volcanism.push(is.read_int32()?);
11782                },
11783                98 => {
11784                    is.read_repeated_packed_int32_into(&mut self.savagery)?;
11785                },
11786                96 => {
11787                    self.savagery.push(is.read_int32()?);
11788                },
11789                106 => {
11790                    self.clouds.push(is.read_message()?);
11791                },
11792                114 => {
11793                    is.read_repeated_packed_int32_into(&mut self.salinity)?;
11794                },
11795                112 => {
11796                    self.salinity.push(is.read_int32()?);
11797                },
11798                120 => {
11799                    self.map_x = ::std::option::Option::Some(is.read_int32()?);
11800                },
11801                128 => {
11802                    self.map_y = ::std::option::Option::Some(is.read_int32()?);
11803                },
11804                136 => {
11805                    self.center_x = ::std::option::Option::Some(is.read_int32()?);
11806                },
11807                144 => {
11808                    self.center_y = ::std::option::Option::Some(is.read_int32()?);
11809                },
11810                152 => {
11811                    self.center_z = ::std::option::Option::Some(is.read_int32()?);
11812                },
11813                160 => {
11814                    self.cur_year = ::std::option::Option::Some(is.read_int32()?);
11815                },
11816                168 => {
11817                    self.cur_year_tick = ::std::option::Option::Some(is.read_int32()?);
11818                },
11819                176 => {
11820                    self.world_poles = ::std::option::Option::Some(is.read_enum_or_unknown()?);
11821                },
11822                186 => {
11823                    self.river_tiles.push(is.read_message()?);
11824                },
11825                194 => {
11826                    is.read_repeated_packed_int32_into(&mut self.water_elevation)?;
11827                },
11828                192 => {
11829                    self.water_elevation.push(is.read_int32()?);
11830                },
11831                202 => {
11832                    self.region_tiles.push(is.read_message()?);
11833                },
11834                tag => {
11835                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
11836                },
11837            };
11838        }
11839        ::std::result::Result::Ok(())
11840    }
11841
11842    // Compute sizes of nested messages
11843    #[allow(unused_variables)]
11844    fn compute_size(&self) -> u64 {
11845        let mut my_size = 0;
11846        if let Some(v) = self.world_width {
11847            my_size += ::protobuf::rt::int32_size(1, v);
11848        }
11849        if let Some(v) = self.world_height {
11850            my_size += ::protobuf::rt::int32_size(2, v);
11851        }
11852        if let Some(v) = self.name.as_ref() {
11853            my_size += ::protobuf::rt::bytes_size(3, &v);
11854        }
11855        if let Some(v) = self.name_english.as_ref() {
11856            my_size += ::protobuf::rt::string_size(4, &v);
11857        }
11858        for value in &self.elevation {
11859            my_size += ::protobuf::rt::int32_size(5, *value);
11860        };
11861        for value in &self.rainfall {
11862            my_size += ::protobuf::rt::int32_size(6, *value);
11863        };
11864        for value in &self.vegetation {
11865            my_size += ::protobuf::rt::int32_size(7, *value);
11866        };
11867        for value in &self.temperature {
11868            my_size += ::protobuf::rt::int32_size(8, *value);
11869        };
11870        for value in &self.evilness {
11871            my_size += ::protobuf::rt::int32_size(9, *value);
11872        };
11873        for value in &self.drainage {
11874            my_size += ::protobuf::rt::int32_size(10, *value);
11875        };
11876        for value in &self.volcanism {
11877            my_size += ::protobuf::rt::int32_size(11, *value);
11878        };
11879        for value in &self.savagery {
11880            my_size += ::protobuf::rt::int32_size(12, *value);
11881        };
11882        for value in &self.clouds {
11883            let len = value.compute_size();
11884            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
11885        };
11886        for value in &self.salinity {
11887            my_size += ::protobuf::rt::int32_size(14, *value);
11888        };
11889        if let Some(v) = self.map_x {
11890            my_size += ::protobuf::rt::int32_size(15, v);
11891        }
11892        if let Some(v) = self.map_y {
11893            my_size += ::protobuf::rt::int32_size(16, v);
11894        }
11895        if let Some(v) = self.center_x {
11896            my_size += ::protobuf::rt::int32_size(17, v);
11897        }
11898        if let Some(v) = self.center_y {
11899            my_size += ::protobuf::rt::int32_size(18, v);
11900        }
11901        if let Some(v) = self.center_z {
11902            my_size += ::protobuf::rt::int32_size(19, v);
11903        }
11904        if let Some(v) = self.cur_year {
11905            my_size += ::protobuf::rt::int32_size(20, v);
11906        }
11907        if let Some(v) = self.cur_year_tick {
11908            my_size += ::protobuf::rt::int32_size(21, v);
11909        }
11910        if let Some(v) = self.world_poles {
11911            my_size += ::protobuf::rt::int32_size(22, v.value());
11912        }
11913        for value in &self.river_tiles {
11914            let len = value.compute_size();
11915            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
11916        };
11917        for value in &self.water_elevation {
11918            my_size += ::protobuf::rt::int32_size(24, *value);
11919        };
11920        for value in &self.region_tiles {
11921            let len = value.compute_size();
11922            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
11923        };
11924        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
11925        self.special_fields.cached_size().set(my_size as u32);
11926        my_size
11927    }
11928
11929    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
11930        if let Some(v) = self.world_width {
11931            os.write_int32(1, v)?;
11932        }
11933        if let Some(v) = self.world_height {
11934            os.write_int32(2, v)?;
11935        }
11936        if let Some(v) = self.name.as_ref() {
11937            os.write_bytes(3, v)?;
11938        }
11939        if let Some(v) = self.name_english.as_ref() {
11940            os.write_string(4, v)?;
11941        }
11942        for v in &self.elevation {
11943            os.write_int32(5, *v)?;
11944        };
11945        for v in &self.rainfall {
11946            os.write_int32(6, *v)?;
11947        };
11948        for v in &self.vegetation {
11949            os.write_int32(7, *v)?;
11950        };
11951        for v in &self.temperature {
11952            os.write_int32(8, *v)?;
11953        };
11954        for v in &self.evilness {
11955            os.write_int32(9, *v)?;
11956        };
11957        for v in &self.drainage {
11958            os.write_int32(10, *v)?;
11959        };
11960        for v in &self.volcanism {
11961            os.write_int32(11, *v)?;
11962        };
11963        for v in &self.savagery {
11964            os.write_int32(12, *v)?;
11965        };
11966        for v in &self.clouds {
11967            ::protobuf::rt::write_message_field_with_cached_size(13, v, os)?;
11968        };
11969        for v in &self.salinity {
11970            os.write_int32(14, *v)?;
11971        };
11972        if let Some(v) = self.map_x {
11973            os.write_int32(15, v)?;
11974        }
11975        if let Some(v) = self.map_y {
11976            os.write_int32(16, v)?;
11977        }
11978        if let Some(v) = self.center_x {
11979            os.write_int32(17, v)?;
11980        }
11981        if let Some(v) = self.center_y {
11982            os.write_int32(18, v)?;
11983        }
11984        if let Some(v) = self.center_z {
11985            os.write_int32(19, v)?;
11986        }
11987        if let Some(v) = self.cur_year {
11988            os.write_int32(20, v)?;
11989        }
11990        if let Some(v) = self.cur_year_tick {
11991            os.write_int32(21, v)?;
11992        }
11993        if let Some(v) = self.world_poles {
11994            os.write_enum(22, ::protobuf::EnumOrUnknown::value(&v))?;
11995        }
11996        for v in &self.river_tiles {
11997            ::protobuf::rt::write_message_field_with_cached_size(23, v, os)?;
11998        };
11999        for v in &self.water_elevation {
12000            os.write_int32(24, *v)?;
12001        };
12002        for v in &self.region_tiles {
12003            ::protobuf::rt::write_message_field_with_cached_size(25, v, os)?;
12004        };
12005        os.write_unknown_fields(self.special_fields.unknown_fields())?;
12006        ::std::result::Result::Ok(())
12007    }
12008
12009    fn special_fields(&self) -> &::protobuf::SpecialFields {
12010        &self.special_fields
12011    }
12012
12013    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
12014        &mut self.special_fields
12015    }
12016
12017    fn new() -> WorldMap {
12018        WorldMap::new()
12019    }
12020
12021    fn clear(&mut self) {
12022        self.world_width = ::std::option::Option::None;
12023        self.world_height = ::std::option::Option::None;
12024        self.name = ::std::option::Option::None;
12025        self.name_english = ::std::option::Option::None;
12026        self.elevation.clear();
12027        self.rainfall.clear();
12028        self.vegetation.clear();
12029        self.temperature.clear();
12030        self.evilness.clear();
12031        self.drainage.clear();
12032        self.volcanism.clear();
12033        self.savagery.clear();
12034        self.clouds.clear();
12035        self.salinity.clear();
12036        self.map_x = ::std::option::Option::None;
12037        self.map_y = ::std::option::Option::None;
12038        self.center_x = ::std::option::Option::None;
12039        self.center_y = ::std::option::Option::None;
12040        self.center_z = ::std::option::Option::None;
12041        self.cur_year = ::std::option::Option::None;
12042        self.cur_year_tick = ::std::option::Option::None;
12043        self.world_poles = ::std::option::Option::None;
12044        self.river_tiles.clear();
12045        self.water_elevation.clear();
12046        self.region_tiles.clear();
12047        self.special_fields.clear();
12048    }
12049
12050    fn default_instance() -> &'static WorldMap {
12051        static instance: WorldMap = WorldMap {
12052            world_width: ::std::option::Option::None,
12053            world_height: ::std::option::Option::None,
12054            name: ::std::option::Option::None,
12055            name_english: ::std::option::Option::None,
12056            elevation: ::std::vec::Vec::new(),
12057            rainfall: ::std::vec::Vec::new(),
12058            vegetation: ::std::vec::Vec::new(),
12059            temperature: ::std::vec::Vec::new(),
12060            evilness: ::std::vec::Vec::new(),
12061            drainage: ::std::vec::Vec::new(),
12062            volcanism: ::std::vec::Vec::new(),
12063            savagery: ::std::vec::Vec::new(),
12064            clouds: ::std::vec::Vec::new(),
12065            salinity: ::std::vec::Vec::new(),
12066            map_x: ::std::option::Option::None,
12067            map_y: ::std::option::Option::None,
12068            center_x: ::std::option::Option::None,
12069            center_y: ::std::option::Option::None,
12070            center_z: ::std::option::Option::None,
12071            cur_year: ::std::option::Option::None,
12072            cur_year_tick: ::std::option::Option::None,
12073            world_poles: ::std::option::Option::None,
12074            river_tiles: ::std::vec::Vec::new(),
12075            water_elevation: ::std::vec::Vec::new(),
12076            region_tiles: ::std::vec::Vec::new(),
12077            special_fields: ::protobuf::SpecialFields::new(),
12078        };
12079        &instance
12080    }
12081}
12082
12083impl ::protobuf::MessageFull for WorldMap {
12084    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
12085        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
12086        descriptor.get(|| file_descriptor().message_by_package_relative_name("WorldMap").unwrap()).clone()
12087    }
12088}
12089
12090impl ::std::fmt::Display for WorldMap {
12091    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12092        ::protobuf::text_format::fmt(self, f)
12093    }
12094}
12095
12096impl ::protobuf::reflect::ProtobufValue for WorldMap {
12097    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
12098}
12099
12100// @@protoc_insertion_point(message:RemoteFortressReader.SiteRealizationBuildingWall)
12101#[derive(PartialEq,Clone,Default,Debug)]
12102pub struct SiteRealizationBuildingWall {
12103    // message fields
12104    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingWall.start_x)
12105    pub start_x: ::std::option::Option<i32>,
12106    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingWall.start_y)
12107    pub start_y: ::std::option::Option<i32>,
12108    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingWall.start_z)
12109    pub start_z: ::std::option::Option<i32>,
12110    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingWall.end_x)
12111    pub end_x: ::std::option::Option<i32>,
12112    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingWall.end_y)
12113    pub end_y: ::std::option::Option<i32>,
12114    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingWall.end_z)
12115    pub end_z: ::std::option::Option<i32>,
12116    // special fields
12117    // @@protoc_insertion_point(special_field:RemoteFortressReader.SiteRealizationBuildingWall.special_fields)
12118    pub special_fields: ::protobuf::SpecialFields,
12119}
12120
12121impl<'a> ::std::default::Default for &'a SiteRealizationBuildingWall {
12122    fn default() -> &'a SiteRealizationBuildingWall {
12123        <SiteRealizationBuildingWall as ::protobuf::Message>::default_instance()
12124    }
12125}
12126
12127impl SiteRealizationBuildingWall {
12128    pub fn new() -> SiteRealizationBuildingWall {
12129        ::std::default::Default::default()
12130    }
12131
12132    // optional int32 start_x = 1;
12133
12134    pub fn start_x(&self) -> i32 {
12135        self.start_x.unwrap_or(0)
12136    }
12137
12138    pub fn clear_start_x(&mut self) {
12139        self.start_x = ::std::option::Option::None;
12140    }
12141
12142    pub fn has_start_x(&self) -> bool {
12143        self.start_x.is_some()
12144    }
12145
12146    // Param is passed by value, moved
12147    pub fn set_start_x(&mut self, v: i32) {
12148        self.start_x = ::std::option::Option::Some(v);
12149    }
12150
12151    // optional int32 start_y = 2;
12152
12153    pub fn start_y(&self) -> i32 {
12154        self.start_y.unwrap_or(0)
12155    }
12156
12157    pub fn clear_start_y(&mut self) {
12158        self.start_y = ::std::option::Option::None;
12159    }
12160
12161    pub fn has_start_y(&self) -> bool {
12162        self.start_y.is_some()
12163    }
12164
12165    // Param is passed by value, moved
12166    pub fn set_start_y(&mut self, v: i32) {
12167        self.start_y = ::std::option::Option::Some(v);
12168    }
12169
12170    // optional int32 start_z = 3;
12171
12172    pub fn start_z(&self) -> i32 {
12173        self.start_z.unwrap_or(0)
12174    }
12175
12176    pub fn clear_start_z(&mut self) {
12177        self.start_z = ::std::option::Option::None;
12178    }
12179
12180    pub fn has_start_z(&self) -> bool {
12181        self.start_z.is_some()
12182    }
12183
12184    // Param is passed by value, moved
12185    pub fn set_start_z(&mut self, v: i32) {
12186        self.start_z = ::std::option::Option::Some(v);
12187    }
12188
12189    // optional int32 end_x = 4;
12190
12191    pub fn end_x(&self) -> i32 {
12192        self.end_x.unwrap_or(0)
12193    }
12194
12195    pub fn clear_end_x(&mut self) {
12196        self.end_x = ::std::option::Option::None;
12197    }
12198
12199    pub fn has_end_x(&self) -> bool {
12200        self.end_x.is_some()
12201    }
12202
12203    // Param is passed by value, moved
12204    pub fn set_end_x(&mut self, v: i32) {
12205        self.end_x = ::std::option::Option::Some(v);
12206    }
12207
12208    // optional int32 end_y = 5;
12209
12210    pub fn end_y(&self) -> i32 {
12211        self.end_y.unwrap_or(0)
12212    }
12213
12214    pub fn clear_end_y(&mut self) {
12215        self.end_y = ::std::option::Option::None;
12216    }
12217
12218    pub fn has_end_y(&self) -> bool {
12219        self.end_y.is_some()
12220    }
12221
12222    // Param is passed by value, moved
12223    pub fn set_end_y(&mut self, v: i32) {
12224        self.end_y = ::std::option::Option::Some(v);
12225    }
12226
12227    // optional int32 end_z = 6;
12228
12229    pub fn end_z(&self) -> i32 {
12230        self.end_z.unwrap_or(0)
12231    }
12232
12233    pub fn clear_end_z(&mut self) {
12234        self.end_z = ::std::option::Option::None;
12235    }
12236
12237    pub fn has_end_z(&self) -> bool {
12238        self.end_z.is_some()
12239    }
12240
12241    // Param is passed by value, moved
12242    pub fn set_end_z(&mut self, v: i32) {
12243        self.end_z = ::std::option::Option::Some(v);
12244    }
12245
12246    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
12247        let mut fields = ::std::vec::Vec::with_capacity(6);
12248        let mut oneofs = ::std::vec::Vec::with_capacity(0);
12249        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12250            "start_x",
12251            |m: &SiteRealizationBuildingWall| { &m.start_x },
12252            |m: &mut SiteRealizationBuildingWall| { &mut m.start_x },
12253        ));
12254        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12255            "start_y",
12256            |m: &SiteRealizationBuildingWall| { &m.start_y },
12257            |m: &mut SiteRealizationBuildingWall| { &mut m.start_y },
12258        ));
12259        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12260            "start_z",
12261            |m: &SiteRealizationBuildingWall| { &m.start_z },
12262            |m: &mut SiteRealizationBuildingWall| { &mut m.start_z },
12263        ));
12264        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12265            "end_x",
12266            |m: &SiteRealizationBuildingWall| { &m.end_x },
12267            |m: &mut SiteRealizationBuildingWall| { &mut m.end_x },
12268        ));
12269        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12270            "end_y",
12271            |m: &SiteRealizationBuildingWall| { &m.end_y },
12272            |m: &mut SiteRealizationBuildingWall| { &mut m.end_y },
12273        ));
12274        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12275            "end_z",
12276            |m: &SiteRealizationBuildingWall| { &m.end_z },
12277            |m: &mut SiteRealizationBuildingWall| { &mut m.end_z },
12278        ));
12279        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SiteRealizationBuildingWall>(
12280            "SiteRealizationBuildingWall",
12281            fields,
12282            oneofs,
12283        )
12284    }
12285}
12286
12287impl ::protobuf::Message for SiteRealizationBuildingWall {
12288    const NAME: &'static str = "SiteRealizationBuildingWall";
12289
12290    fn is_initialized(&self) -> bool {
12291        true
12292    }
12293
12294    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
12295        while let Some(tag) = is.read_raw_tag_or_eof()? {
12296            match tag {
12297                8 => {
12298                    self.start_x = ::std::option::Option::Some(is.read_int32()?);
12299                },
12300                16 => {
12301                    self.start_y = ::std::option::Option::Some(is.read_int32()?);
12302                },
12303                24 => {
12304                    self.start_z = ::std::option::Option::Some(is.read_int32()?);
12305                },
12306                32 => {
12307                    self.end_x = ::std::option::Option::Some(is.read_int32()?);
12308                },
12309                40 => {
12310                    self.end_y = ::std::option::Option::Some(is.read_int32()?);
12311                },
12312                48 => {
12313                    self.end_z = ::std::option::Option::Some(is.read_int32()?);
12314                },
12315                tag => {
12316                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
12317                },
12318            };
12319        }
12320        ::std::result::Result::Ok(())
12321    }
12322
12323    // Compute sizes of nested messages
12324    #[allow(unused_variables)]
12325    fn compute_size(&self) -> u64 {
12326        let mut my_size = 0;
12327        if let Some(v) = self.start_x {
12328            my_size += ::protobuf::rt::int32_size(1, v);
12329        }
12330        if let Some(v) = self.start_y {
12331            my_size += ::protobuf::rt::int32_size(2, v);
12332        }
12333        if let Some(v) = self.start_z {
12334            my_size += ::protobuf::rt::int32_size(3, v);
12335        }
12336        if let Some(v) = self.end_x {
12337            my_size += ::protobuf::rt::int32_size(4, v);
12338        }
12339        if let Some(v) = self.end_y {
12340            my_size += ::protobuf::rt::int32_size(5, v);
12341        }
12342        if let Some(v) = self.end_z {
12343            my_size += ::protobuf::rt::int32_size(6, v);
12344        }
12345        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
12346        self.special_fields.cached_size().set(my_size as u32);
12347        my_size
12348    }
12349
12350    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
12351        if let Some(v) = self.start_x {
12352            os.write_int32(1, v)?;
12353        }
12354        if let Some(v) = self.start_y {
12355            os.write_int32(2, v)?;
12356        }
12357        if let Some(v) = self.start_z {
12358            os.write_int32(3, v)?;
12359        }
12360        if let Some(v) = self.end_x {
12361            os.write_int32(4, v)?;
12362        }
12363        if let Some(v) = self.end_y {
12364            os.write_int32(5, v)?;
12365        }
12366        if let Some(v) = self.end_z {
12367            os.write_int32(6, v)?;
12368        }
12369        os.write_unknown_fields(self.special_fields.unknown_fields())?;
12370        ::std::result::Result::Ok(())
12371    }
12372
12373    fn special_fields(&self) -> &::protobuf::SpecialFields {
12374        &self.special_fields
12375    }
12376
12377    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
12378        &mut self.special_fields
12379    }
12380
12381    fn new() -> SiteRealizationBuildingWall {
12382        SiteRealizationBuildingWall::new()
12383    }
12384
12385    fn clear(&mut self) {
12386        self.start_x = ::std::option::Option::None;
12387        self.start_y = ::std::option::Option::None;
12388        self.start_z = ::std::option::Option::None;
12389        self.end_x = ::std::option::Option::None;
12390        self.end_y = ::std::option::Option::None;
12391        self.end_z = ::std::option::Option::None;
12392        self.special_fields.clear();
12393    }
12394
12395    fn default_instance() -> &'static SiteRealizationBuildingWall {
12396        static instance: SiteRealizationBuildingWall = SiteRealizationBuildingWall {
12397            start_x: ::std::option::Option::None,
12398            start_y: ::std::option::Option::None,
12399            start_z: ::std::option::Option::None,
12400            end_x: ::std::option::Option::None,
12401            end_y: ::std::option::Option::None,
12402            end_z: ::std::option::Option::None,
12403            special_fields: ::protobuf::SpecialFields::new(),
12404        };
12405        &instance
12406    }
12407}
12408
12409impl ::protobuf::MessageFull for SiteRealizationBuildingWall {
12410    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
12411        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
12412        descriptor.get(|| file_descriptor().message_by_package_relative_name("SiteRealizationBuildingWall").unwrap()).clone()
12413    }
12414}
12415
12416impl ::std::fmt::Display for SiteRealizationBuildingWall {
12417    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12418        ::protobuf::text_format::fmt(self, f)
12419    }
12420}
12421
12422impl ::protobuf::reflect::ProtobufValue for SiteRealizationBuildingWall {
12423    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
12424}
12425
12426// @@protoc_insertion_point(message:RemoteFortressReader.SiteRealizationBuildingTower)
12427#[derive(PartialEq,Clone,Default,Debug)]
12428pub struct SiteRealizationBuildingTower {
12429    // message fields
12430    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingTower.roof_z)
12431    pub roof_z: ::std::option::Option<i32>,
12432    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingTower.round)
12433    pub round: ::std::option::Option<bool>,
12434    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingTower.goblin)
12435    pub goblin: ::std::option::Option<bool>,
12436    // special fields
12437    // @@protoc_insertion_point(special_field:RemoteFortressReader.SiteRealizationBuildingTower.special_fields)
12438    pub special_fields: ::protobuf::SpecialFields,
12439}
12440
12441impl<'a> ::std::default::Default for &'a SiteRealizationBuildingTower {
12442    fn default() -> &'a SiteRealizationBuildingTower {
12443        <SiteRealizationBuildingTower as ::protobuf::Message>::default_instance()
12444    }
12445}
12446
12447impl SiteRealizationBuildingTower {
12448    pub fn new() -> SiteRealizationBuildingTower {
12449        ::std::default::Default::default()
12450    }
12451
12452    // optional int32 roof_z = 1;
12453
12454    pub fn roof_z(&self) -> i32 {
12455        self.roof_z.unwrap_or(0)
12456    }
12457
12458    pub fn clear_roof_z(&mut self) {
12459        self.roof_z = ::std::option::Option::None;
12460    }
12461
12462    pub fn has_roof_z(&self) -> bool {
12463        self.roof_z.is_some()
12464    }
12465
12466    // Param is passed by value, moved
12467    pub fn set_roof_z(&mut self, v: i32) {
12468        self.roof_z = ::std::option::Option::Some(v);
12469    }
12470
12471    // optional bool round = 2;
12472
12473    pub fn round(&self) -> bool {
12474        self.round.unwrap_or(false)
12475    }
12476
12477    pub fn clear_round(&mut self) {
12478        self.round = ::std::option::Option::None;
12479    }
12480
12481    pub fn has_round(&self) -> bool {
12482        self.round.is_some()
12483    }
12484
12485    // Param is passed by value, moved
12486    pub fn set_round(&mut self, v: bool) {
12487        self.round = ::std::option::Option::Some(v);
12488    }
12489
12490    // optional bool goblin = 3;
12491
12492    pub fn goblin(&self) -> bool {
12493        self.goblin.unwrap_or(false)
12494    }
12495
12496    pub fn clear_goblin(&mut self) {
12497        self.goblin = ::std::option::Option::None;
12498    }
12499
12500    pub fn has_goblin(&self) -> bool {
12501        self.goblin.is_some()
12502    }
12503
12504    // Param is passed by value, moved
12505    pub fn set_goblin(&mut self, v: bool) {
12506        self.goblin = ::std::option::Option::Some(v);
12507    }
12508
12509    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
12510        let mut fields = ::std::vec::Vec::with_capacity(3);
12511        let mut oneofs = ::std::vec::Vec::with_capacity(0);
12512        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12513            "roof_z",
12514            |m: &SiteRealizationBuildingTower| { &m.roof_z },
12515            |m: &mut SiteRealizationBuildingTower| { &mut m.roof_z },
12516        ));
12517        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12518            "round",
12519            |m: &SiteRealizationBuildingTower| { &m.round },
12520            |m: &mut SiteRealizationBuildingTower| { &mut m.round },
12521        ));
12522        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12523            "goblin",
12524            |m: &SiteRealizationBuildingTower| { &m.goblin },
12525            |m: &mut SiteRealizationBuildingTower| { &mut m.goblin },
12526        ));
12527        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SiteRealizationBuildingTower>(
12528            "SiteRealizationBuildingTower",
12529            fields,
12530            oneofs,
12531        )
12532    }
12533}
12534
12535impl ::protobuf::Message for SiteRealizationBuildingTower {
12536    const NAME: &'static str = "SiteRealizationBuildingTower";
12537
12538    fn is_initialized(&self) -> bool {
12539        true
12540    }
12541
12542    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
12543        while let Some(tag) = is.read_raw_tag_or_eof()? {
12544            match tag {
12545                8 => {
12546                    self.roof_z = ::std::option::Option::Some(is.read_int32()?);
12547                },
12548                16 => {
12549                    self.round = ::std::option::Option::Some(is.read_bool()?);
12550                },
12551                24 => {
12552                    self.goblin = ::std::option::Option::Some(is.read_bool()?);
12553                },
12554                tag => {
12555                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
12556                },
12557            };
12558        }
12559        ::std::result::Result::Ok(())
12560    }
12561
12562    // Compute sizes of nested messages
12563    #[allow(unused_variables)]
12564    fn compute_size(&self) -> u64 {
12565        let mut my_size = 0;
12566        if let Some(v) = self.roof_z {
12567            my_size += ::protobuf::rt::int32_size(1, v);
12568        }
12569        if let Some(v) = self.round {
12570            my_size += 1 + 1;
12571        }
12572        if let Some(v) = self.goblin {
12573            my_size += 1 + 1;
12574        }
12575        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
12576        self.special_fields.cached_size().set(my_size as u32);
12577        my_size
12578    }
12579
12580    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
12581        if let Some(v) = self.roof_z {
12582            os.write_int32(1, v)?;
12583        }
12584        if let Some(v) = self.round {
12585            os.write_bool(2, v)?;
12586        }
12587        if let Some(v) = self.goblin {
12588            os.write_bool(3, v)?;
12589        }
12590        os.write_unknown_fields(self.special_fields.unknown_fields())?;
12591        ::std::result::Result::Ok(())
12592    }
12593
12594    fn special_fields(&self) -> &::protobuf::SpecialFields {
12595        &self.special_fields
12596    }
12597
12598    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
12599        &mut self.special_fields
12600    }
12601
12602    fn new() -> SiteRealizationBuildingTower {
12603        SiteRealizationBuildingTower::new()
12604    }
12605
12606    fn clear(&mut self) {
12607        self.roof_z = ::std::option::Option::None;
12608        self.round = ::std::option::Option::None;
12609        self.goblin = ::std::option::Option::None;
12610        self.special_fields.clear();
12611    }
12612
12613    fn default_instance() -> &'static SiteRealizationBuildingTower {
12614        static instance: SiteRealizationBuildingTower = SiteRealizationBuildingTower {
12615            roof_z: ::std::option::Option::None,
12616            round: ::std::option::Option::None,
12617            goblin: ::std::option::Option::None,
12618            special_fields: ::protobuf::SpecialFields::new(),
12619        };
12620        &instance
12621    }
12622}
12623
12624impl ::protobuf::MessageFull for SiteRealizationBuildingTower {
12625    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
12626        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
12627        descriptor.get(|| file_descriptor().message_by_package_relative_name("SiteRealizationBuildingTower").unwrap()).clone()
12628    }
12629}
12630
12631impl ::std::fmt::Display for SiteRealizationBuildingTower {
12632    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12633        ::protobuf::text_format::fmt(self, f)
12634    }
12635}
12636
12637impl ::protobuf::reflect::ProtobufValue for SiteRealizationBuildingTower {
12638    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
12639}
12640
12641// @@protoc_insertion_point(message:RemoteFortressReader.TrenchSpoke)
12642#[derive(PartialEq,Clone,Default,Debug)]
12643pub struct TrenchSpoke {
12644    // message fields
12645    // @@protoc_insertion_point(field:RemoteFortressReader.TrenchSpoke.mound_start)
12646    pub mound_start: ::std::option::Option<i32>,
12647    // @@protoc_insertion_point(field:RemoteFortressReader.TrenchSpoke.trench_start)
12648    pub trench_start: ::std::option::Option<i32>,
12649    // @@protoc_insertion_point(field:RemoteFortressReader.TrenchSpoke.trench_end)
12650    pub trench_end: ::std::option::Option<i32>,
12651    // @@protoc_insertion_point(field:RemoteFortressReader.TrenchSpoke.mound_end)
12652    pub mound_end: ::std::option::Option<i32>,
12653    // special fields
12654    // @@protoc_insertion_point(special_field:RemoteFortressReader.TrenchSpoke.special_fields)
12655    pub special_fields: ::protobuf::SpecialFields,
12656}
12657
12658impl<'a> ::std::default::Default for &'a TrenchSpoke {
12659    fn default() -> &'a TrenchSpoke {
12660        <TrenchSpoke as ::protobuf::Message>::default_instance()
12661    }
12662}
12663
12664impl TrenchSpoke {
12665    pub fn new() -> TrenchSpoke {
12666        ::std::default::Default::default()
12667    }
12668
12669    // optional int32 mound_start = 1;
12670
12671    pub fn mound_start(&self) -> i32 {
12672        self.mound_start.unwrap_or(0)
12673    }
12674
12675    pub fn clear_mound_start(&mut self) {
12676        self.mound_start = ::std::option::Option::None;
12677    }
12678
12679    pub fn has_mound_start(&self) -> bool {
12680        self.mound_start.is_some()
12681    }
12682
12683    // Param is passed by value, moved
12684    pub fn set_mound_start(&mut self, v: i32) {
12685        self.mound_start = ::std::option::Option::Some(v);
12686    }
12687
12688    // optional int32 trench_start = 2;
12689
12690    pub fn trench_start(&self) -> i32 {
12691        self.trench_start.unwrap_or(0)
12692    }
12693
12694    pub fn clear_trench_start(&mut self) {
12695        self.trench_start = ::std::option::Option::None;
12696    }
12697
12698    pub fn has_trench_start(&self) -> bool {
12699        self.trench_start.is_some()
12700    }
12701
12702    // Param is passed by value, moved
12703    pub fn set_trench_start(&mut self, v: i32) {
12704        self.trench_start = ::std::option::Option::Some(v);
12705    }
12706
12707    // optional int32 trench_end = 3;
12708
12709    pub fn trench_end(&self) -> i32 {
12710        self.trench_end.unwrap_or(0)
12711    }
12712
12713    pub fn clear_trench_end(&mut self) {
12714        self.trench_end = ::std::option::Option::None;
12715    }
12716
12717    pub fn has_trench_end(&self) -> bool {
12718        self.trench_end.is_some()
12719    }
12720
12721    // Param is passed by value, moved
12722    pub fn set_trench_end(&mut self, v: i32) {
12723        self.trench_end = ::std::option::Option::Some(v);
12724    }
12725
12726    // optional int32 mound_end = 4;
12727
12728    pub fn mound_end(&self) -> i32 {
12729        self.mound_end.unwrap_or(0)
12730    }
12731
12732    pub fn clear_mound_end(&mut self) {
12733        self.mound_end = ::std::option::Option::None;
12734    }
12735
12736    pub fn has_mound_end(&self) -> bool {
12737        self.mound_end.is_some()
12738    }
12739
12740    // Param is passed by value, moved
12741    pub fn set_mound_end(&mut self, v: i32) {
12742        self.mound_end = ::std::option::Option::Some(v);
12743    }
12744
12745    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
12746        let mut fields = ::std::vec::Vec::with_capacity(4);
12747        let mut oneofs = ::std::vec::Vec::with_capacity(0);
12748        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12749            "mound_start",
12750            |m: &TrenchSpoke| { &m.mound_start },
12751            |m: &mut TrenchSpoke| { &mut m.mound_start },
12752        ));
12753        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12754            "trench_start",
12755            |m: &TrenchSpoke| { &m.trench_start },
12756            |m: &mut TrenchSpoke| { &mut m.trench_start },
12757        ));
12758        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12759            "trench_end",
12760            |m: &TrenchSpoke| { &m.trench_end },
12761            |m: &mut TrenchSpoke| { &mut m.trench_end },
12762        ));
12763        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12764            "mound_end",
12765            |m: &TrenchSpoke| { &m.mound_end },
12766            |m: &mut TrenchSpoke| { &mut m.mound_end },
12767        ));
12768        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<TrenchSpoke>(
12769            "TrenchSpoke",
12770            fields,
12771            oneofs,
12772        )
12773    }
12774}
12775
12776impl ::protobuf::Message for TrenchSpoke {
12777    const NAME: &'static str = "TrenchSpoke";
12778
12779    fn is_initialized(&self) -> bool {
12780        true
12781    }
12782
12783    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
12784        while let Some(tag) = is.read_raw_tag_or_eof()? {
12785            match tag {
12786                8 => {
12787                    self.mound_start = ::std::option::Option::Some(is.read_int32()?);
12788                },
12789                16 => {
12790                    self.trench_start = ::std::option::Option::Some(is.read_int32()?);
12791                },
12792                24 => {
12793                    self.trench_end = ::std::option::Option::Some(is.read_int32()?);
12794                },
12795                32 => {
12796                    self.mound_end = ::std::option::Option::Some(is.read_int32()?);
12797                },
12798                tag => {
12799                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
12800                },
12801            };
12802        }
12803        ::std::result::Result::Ok(())
12804    }
12805
12806    // Compute sizes of nested messages
12807    #[allow(unused_variables)]
12808    fn compute_size(&self) -> u64 {
12809        let mut my_size = 0;
12810        if let Some(v) = self.mound_start {
12811            my_size += ::protobuf::rt::int32_size(1, v);
12812        }
12813        if let Some(v) = self.trench_start {
12814            my_size += ::protobuf::rt::int32_size(2, v);
12815        }
12816        if let Some(v) = self.trench_end {
12817            my_size += ::protobuf::rt::int32_size(3, v);
12818        }
12819        if let Some(v) = self.mound_end {
12820            my_size += ::protobuf::rt::int32_size(4, v);
12821        }
12822        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
12823        self.special_fields.cached_size().set(my_size as u32);
12824        my_size
12825    }
12826
12827    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
12828        if let Some(v) = self.mound_start {
12829            os.write_int32(1, v)?;
12830        }
12831        if let Some(v) = self.trench_start {
12832            os.write_int32(2, v)?;
12833        }
12834        if let Some(v) = self.trench_end {
12835            os.write_int32(3, v)?;
12836        }
12837        if let Some(v) = self.mound_end {
12838            os.write_int32(4, v)?;
12839        }
12840        os.write_unknown_fields(self.special_fields.unknown_fields())?;
12841        ::std::result::Result::Ok(())
12842    }
12843
12844    fn special_fields(&self) -> &::protobuf::SpecialFields {
12845        &self.special_fields
12846    }
12847
12848    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
12849        &mut self.special_fields
12850    }
12851
12852    fn new() -> TrenchSpoke {
12853        TrenchSpoke::new()
12854    }
12855
12856    fn clear(&mut self) {
12857        self.mound_start = ::std::option::Option::None;
12858        self.trench_start = ::std::option::Option::None;
12859        self.trench_end = ::std::option::Option::None;
12860        self.mound_end = ::std::option::Option::None;
12861        self.special_fields.clear();
12862    }
12863
12864    fn default_instance() -> &'static TrenchSpoke {
12865        static instance: TrenchSpoke = TrenchSpoke {
12866            mound_start: ::std::option::Option::None,
12867            trench_start: ::std::option::Option::None,
12868            trench_end: ::std::option::Option::None,
12869            mound_end: ::std::option::Option::None,
12870            special_fields: ::protobuf::SpecialFields::new(),
12871        };
12872        &instance
12873    }
12874}
12875
12876impl ::protobuf::MessageFull for TrenchSpoke {
12877    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
12878        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
12879        descriptor.get(|| file_descriptor().message_by_package_relative_name("TrenchSpoke").unwrap()).clone()
12880    }
12881}
12882
12883impl ::std::fmt::Display for TrenchSpoke {
12884    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12885        ::protobuf::text_format::fmt(self, f)
12886    }
12887}
12888
12889impl ::protobuf::reflect::ProtobufValue for TrenchSpoke {
12890    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
12891}
12892
12893// @@protoc_insertion_point(message:RemoteFortressReader.SiteRealizationBuildingTrenches)
12894#[derive(PartialEq,Clone,Default,Debug)]
12895pub struct SiteRealizationBuildingTrenches {
12896    // message fields
12897    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingTrenches.spokes)
12898    pub spokes: ::std::vec::Vec<TrenchSpoke>,
12899    // special fields
12900    // @@protoc_insertion_point(special_field:RemoteFortressReader.SiteRealizationBuildingTrenches.special_fields)
12901    pub special_fields: ::protobuf::SpecialFields,
12902}
12903
12904impl<'a> ::std::default::Default for &'a SiteRealizationBuildingTrenches {
12905    fn default() -> &'a SiteRealizationBuildingTrenches {
12906        <SiteRealizationBuildingTrenches as ::protobuf::Message>::default_instance()
12907    }
12908}
12909
12910impl SiteRealizationBuildingTrenches {
12911    pub fn new() -> SiteRealizationBuildingTrenches {
12912        ::std::default::Default::default()
12913    }
12914
12915    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
12916        let mut fields = ::std::vec::Vec::with_capacity(1);
12917        let mut oneofs = ::std::vec::Vec::with_capacity(0);
12918        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
12919            "spokes",
12920            |m: &SiteRealizationBuildingTrenches| { &m.spokes },
12921            |m: &mut SiteRealizationBuildingTrenches| { &mut m.spokes },
12922        ));
12923        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SiteRealizationBuildingTrenches>(
12924            "SiteRealizationBuildingTrenches",
12925            fields,
12926            oneofs,
12927        )
12928    }
12929}
12930
12931impl ::protobuf::Message for SiteRealizationBuildingTrenches {
12932    const NAME: &'static str = "SiteRealizationBuildingTrenches";
12933
12934    fn is_initialized(&self) -> bool {
12935        true
12936    }
12937
12938    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
12939        while let Some(tag) = is.read_raw_tag_or_eof()? {
12940            match tag {
12941                10 => {
12942                    self.spokes.push(is.read_message()?);
12943                },
12944                tag => {
12945                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
12946                },
12947            };
12948        }
12949        ::std::result::Result::Ok(())
12950    }
12951
12952    // Compute sizes of nested messages
12953    #[allow(unused_variables)]
12954    fn compute_size(&self) -> u64 {
12955        let mut my_size = 0;
12956        for value in &self.spokes {
12957            let len = value.compute_size();
12958            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
12959        };
12960        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
12961        self.special_fields.cached_size().set(my_size as u32);
12962        my_size
12963    }
12964
12965    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
12966        for v in &self.spokes {
12967            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
12968        };
12969        os.write_unknown_fields(self.special_fields.unknown_fields())?;
12970        ::std::result::Result::Ok(())
12971    }
12972
12973    fn special_fields(&self) -> &::protobuf::SpecialFields {
12974        &self.special_fields
12975    }
12976
12977    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
12978        &mut self.special_fields
12979    }
12980
12981    fn new() -> SiteRealizationBuildingTrenches {
12982        SiteRealizationBuildingTrenches::new()
12983    }
12984
12985    fn clear(&mut self) {
12986        self.spokes.clear();
12987        self.special_fields.clear();
12988    }
12989
12990    fn default_instance() -> &'static SiteRealizationBuildingTrenches {
12991        static instance: SiteRealizationBuildingTrenches = SiteRealizationBuildingTrenches {
12992            spokes: ::std::vec::Vec::new(),
12993            special_fields: ::protobuf::SpecialFields::new(),
12994        };
12995        &instance
12996    }
12997}
12998
12999impl ::protobuf::MessageFull for SiteRealizationBuildingTrenches {
13000    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
13001        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
13002        descriptor.get(|| file_descriptor().message_by_package_relative_name("SiteRealizationBuildingTrenches").unwrap()).clone()
13003    }
13004}
13005
13006impl ::std::fmt::Display for SiteRealizationBuildingTrenches {
13007    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13008        ::protobuf::text_format::fmt(self, f)
13009    }
13010}
13011
13012impl ::protobuf::reflect::ProtobufValue for SiteRealizationBuildingTrenches {
13013    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
13014}
13015
13016// @@protoc_insertion_point(message:RemoteFortressReader.SiteRealizationBuilding)
13017#[derive(PartialEq,Clone,Default,Debug)]
13018pub struct SiteRealizationBuilding {
13019    // message fields
13020    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.id)
13021    pub id: ::std::option::Option<i32>,
13022    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.min_x)
13023    pub min_x: ::std::option::Option<i32>,
13024    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.min_y)
13025    pub min_y: ::std::option::Option<i32>,
13026    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.max_x)
13027    pub max_x: ::std::option::Option<i32>,
13028    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.max_y)
13029    pub max_y: ::std::option::Option<i32>,
13030    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.material)
13031    pub material: ::protobuf::MessageField<MatPair>,
13032    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.wall_info)
13033    pub wall_info: ::protobuf::MessageField<SiteRealizationBuildingWall>,
13034    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.tower_info)
13035    pub tower_info: ::protobuf::MessageField<SiteRealizationBuildingTower>,
13036    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.trench_info)
13037    pub trench_info: ::protobuf::MessageField<SiteRealizationBuildingTrenches>,
13038    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.type)
13039    pub type_: ::std::option::Option<i32>,
13040    // special fields
13041    // @@protoc_insertion_point(special_field:RemoteFortressReader.SiteRealizationBuilding.special_fields)
13042    pub special_fields: ::protobuf::SpecialFields,
13043}
13044
13045impl<'a> ::std::default::Default for &'a SiteRealizationBuilding {
13046    fn default() -> &'a SiteRealizationBuilding {
13047        <SiteRealizationBuilding as ::protobuf::Message>::default_instance()
13048    }
13049}
13050
13051impl SiteRealizationBuilding {
13052    pub fn new() -> SiteRealizationBuilding {
13053        ::std::default::Default::default()
13054    }
13055
13056    // optional int32 id = 1;
13057
13058    pub fn id(&self) -> i32 {
13059        self.id.unwrap_or(0)
13060    }
13061
13062    pub fn clear_id(&mut self) {
13063        self.id = ::std::option::Option::None;
13064    }
13065
13066    pub fn has_id(&self) -> bool {
13067        self.id.is_some()
13068    }
13069
13070    // Param is passed by value, moved
13071    pub fn set_id(&mut self, v: i32) {
13072        self.id = ::std::option::Option::Some(v);
13073    }
13074
13075    // optional int32 min_x = 3;
13076
13077    pub fn min_x(&self) -> i32 {
13078        self.min_x.unwrap_or(0)
13079    }
13080
13081    pub fn clear_min_x(&mut self) {
13082        self.min_x = ::std::option::Option::None;
13083    }
13084
13085    pub fn has_min_x(&self) -> bool {
13086        self.min_x.is_some()
13087    }
13088
13089    // Param is passed by value, moved
13090    pub fn set_min_x(&mut self, v: i32) {
13091        self.min_x = ::std::option::Option::Some(v);
13092    }
13093
13094    // optional int32 min_y = 4;
13095
13096    pub fn min_y(&self) -> i32 {
13097        self.min_y.unwrap_or(0)
13098    }
13099
13100    pub fn clear_min_y(&mut self) {
13101        self.min_y = ::std::option::Option::None;
13102    }
13103
13104    pub fn has_min_y(&self) -> bool {
13105        self.min_y.is_some()
13106    }
13107
13108    // Param is passed by value, moved
13109    pub fn set_min_y(&mut self, v: i32) {
13110        self.min_y = ::std::option::Option::Some(v);
13111    }
13112
13113    // optional int32 max_x = 5;
13114
13115    pub fn max_x(&self) -> i32 {
13116        self.max_x.unwrap_or(0)
13117    }
13118
13119    pub fn clear_max_x(&mut self) {
13120        self.max_x = ::std::option::Option::None;
13121    }
13122
13123    pub fn has_max_x(&self) -> bool {
13124        self.max_x.is_some()
13125    }
13126
13127    // Param is passed by value, moved
13128    pub fn set_max_x(&mut self, v: i32) {
13129        self.max_x = ::std::option::Option::Some(v);
13130    }
13131
13132    // optional int32 max_y = 6;
13133
13134    pub fn max_y(&self) -> i32 {
13135        self.max_y.unwrap_or(0)
13136    }
13137
13138    pub fn clear_max_y(&mut self) {
13139        self.max_y = ::std::option::Option::None;
13140    }
13141
13142    pub fn has_max_y(&self) -> bool {
13143        self.max_y.is_some()
13144    }
13145
13146    // Param is passed by value, moved
13147    pub fn set_max_y(&mut self, v: i32) {
13148        self.max_y = ::std::option::Option::Some(v);
13149    }
13150
13151    // optional int32 type = 11;
13152
13153    pub fn type_(&self) -> i32 {
13154        self.type_.unwrap_or(0)
13155    }
13156
13157    pub fn clear_type_(&mut self) {
13158        self.type_ = ::std::option::Option::None;
13159    }
13160
13161    pub fn has_type(&self) -> bool {
13162        self.type_.is_some()
13163    }
13164
13165    // Param is passed by value, moved
13166    pub fn set_type(&mut self, v: i32) {
13167        self.type_ = ::std::option::Option::Some(v);
13168    }
13169
13170    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
13171        let mut fields = ::std::vec::Vec::with_capacity(10);
13172        let mut oneofs = ::std::vec::Vec::with_capacity(0);
13173        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13174            "id",
13175            |m: &SiteRealizationBuilding| { &m.id },
13176            |m: &mut SiteRealizationBuilding| { &mut m.id },
13177        ));
13178        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13179            "min_x",
13180            |m: &SiteRealizationBuilding| { &m.min_x },
13181            |m: &mut SiteRealizationBuilding| { &mut m.min_x },
13182        ));
13183        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13184            "min_y",
13185            |m: &SiteRealizationBuilding| { &m.min_y },
13186            |m: &mut SiteRealizationBuilding| { &mut m.min_y },
13187        ));
13188        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13189            "max_x",
13190            |m: &SiteRealizationBuilding| { &m.max_x },
13191            |m: &mut SiteRealizationBuilding| { &mut m.max_x },
13192        ));
13193        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13194            "max_y",
13195            |m: &SiteRealizationBuilding| { &m.max_y },
13196            |m: &mut SiteRealizationBuilding| { &mut m.max_y },
13197        ));
13198        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
13199            "material",
13200            |m: &SiteRealizationBuilding| { &m.material },
13201            |m: &mut SiteRealizationBuilding| { &mut m.material },
13202        ));
13203        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, SiteRealizationBuildingWall>(
13204            "wall_info",
13205            |m: &SiteRealizationBuilding| { &m.wall_info },
13206            |m: &mut SiteRealizationBuilding| { &mut m.wall_info },
13207        ));
13208        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, SiteRealizationBuildingTower>(
13209            "tower_info",
13210            |m: &SiteRealizationBuilding| { &m.tower_info },
13211            |m: &mut SiteRealizationBuilding| { &mut m.tower_info },
13212        ));
13213        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, SiteRealizationBuildingTrenches>(
13214            "trench_info",
13215            |m: &SiteRealizationBuilding| { &m.trench_info },
13216            |m: &mut SiteRealizationBuilding| { &mut m.trench_info },
13217        ));
13218        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13219            "type",
13220            |m: &SiteRealizationBuilding| { &m.type_ },
13221            |m: &mut SiteRealizationBuilding| { &mut m.type_ },
13222        ));
13223        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SiteRealizationBuilding>(
13224            "SiteRealizationBuilding",
13225            fields,
13226            oneofs,
13227        )
13228    }
13229}
13230
13231impl ::protobuf::Message for SiteRealizationBuilding {
13232    const NAME: &'static str = "SiteRealizationBuilding";
13233
13234    fn is_initialized(&self) -> bool {
13235        for v in &self.material {
13236            if !v.is_initialized() {
13237                return false;
13238            }
13239        };
13240        for v in &self.wall_info {
13241            if !v.is_initialized() {
13242                return false;
13243            }
13244        };
13245        for v in &self.tower_info {
13246            if !v.is_initialized() {
13247                return false;
13248            }
13249        };
13250        for v in &self.trench_info {
13251            if !v.is_initialized() {
13252                return false;
13253            }
13254        };
13255        true
13256    }
13257
13258    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
13259        while let Some(tag) = is.read_raw_tag_or_eof()? {
13260            match tag {
13261                8 => {
13262                    self.id = ::std::option::Option::Some(is.read_int32()?);
13263                },
13264                24 => {
13265                    self.min_x = ::std::option::Option::Some(is.read_int32()?);
13266                },
13267                32 => {
13268                    self.min_y = ::std::option::Option::Some(is.read_int32()?);
13269                },
13270                40 => {
13271                    self.max_x = ::std::option::Option::Some(is.read_int32()?);
13272                },
13273                48 => {
13274                    self.max_y = ::std::option::Option::Some(is.read_int32()?);
13275                },
13276                58 => {
13277                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
13278                },
13279                66 => {
13280                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.wall_info)?;
13281                },
13282                74 => {
13283                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.tower_info)?;
13284                },
13285                82 => {
13286                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.trench_info)?;
13287                },
13288                88 => {
13289                    self.type_ = ::std::option::Option::Some(is.read_int32()?);
13290                },
13291                tag => {
13292                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
13293                },
13294            };
13295        }
13296        ::std::result::Result::Ok(())
13297    }
13298
13299    // Compute sizes of nested messages
13300    #[allow(unused_variables)]
13301    fn compute_size(&self) -> u64 {
13302        let mut my_size = 0;
13303        if let Some(v) = self.id {
13304            my_size += ::protobuf::rt::int32_size(1, v);
13305        }
13306        if let Some(v) = self.min_x {
13307            my_size += ::protobuf::rt::int32_size(3, v);
13308        }
13309        if let Some(v) = self.min_y {
13310            my_size += ::protobuf::rt::int32_size(4, v);
13311        }
13312        if let Some(v) = self.max_x {
13313            my_size += ::protobuf::rt::int32_size(5, v);
13314        }
13315        if let Some(v) = self.max_y {
13316            my_size += ::protobuf::rt::int32_size(6, v);
13317        }
13318        if let Some(v) = self.material.as_ref() {
13319            let len = v.compute_size();
13320            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13321        }
13322        if let Some(v) = self.wall_info.as_ref() {
13323            let len = v.compute_size();
13324            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13325        }
13326        if let Some(v) = self.tower_info.as_ref() {
13327            let len = v.compute_size();
13328            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13329        }
13330        if let Some(v) = self.trench_info.as_ref() {
13331            let len = v.compute_size();
13332            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13333        }
13334        if let Some(v) = self.type_ {
13335            my_size += ::protobuf::rt::int32_size(11, v);
13336        }
13337        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
13338        self.special_fields.cached_size().set(my_size as u32);
13339        my_size
13340    }
13341
13342    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
13343        if let Some(v) = self.id {
13344            os.write_int32(1, v)?;
13345        }
13346        if let Some(v) = self.min_x {
13347            os.write_int32(3, v)?;
13348        }
13349        if let Some(v) = self.min_y {
13350            os.write_int32(4, v)?;
13351        }
13352        if let Some(v) = self.max_x {
13353            os.write_int32(5, v)?;
13354        }
13355        if let Some(v) = self.max_y {
13356            os.write_int32(6, v)?;
13357        }
13358        if let Some(v) = self.material.as_ref() {
13359            ::protobuf::rt::write_message_field_with_cached_size(7, v, os)?;
13360        }
13361        if let Some(v) = self.wall_info.as_ref() {
13362            ::protobuf::rt::write_message_field_with_cached_size(8, v, os)?;
13363        }
13364        if let Some(v) = self.tower_info.as_ref() {
13365            ::protobuf::rt::write_message_field_with_cached_size(9, v, os)?;
13366        }
13367        if let Some(v) = self.trench_info.as_ref() {
13368            ::protobuf::rt::write_message_field_with_cached_size(10, v, os)?;
13369        }
13370        if let Some(v) = self.type_ {
13371            os.write_int32(11, v)?;
13372        }
13373        os.write_unknown_fields(self.special_fields.unknown_fields())?;
13374        ::std::result::Result::Ok(())
13375    }
13376
13377    fn special_fields(&self) -> &::protobuf::SpecialFields {
13378        &self.special_fields
13379    }
13380
13381    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
13382        &mut self.special_fields
13383    }
13384
13385    fn new() -> SiteRealizationBuilding {
13386        SiteRealizationBuilding::new()
13387    }
13388
13389    fn clear(&mut self) {
13390        self.id = ::std::option::Option::None;
13391        self.min_x = ::std::option::Option::None;
13392        self.min_y = ::std::option::Option::None;
13393        self.max_x = ::std::option::Option::None;
13394        self.max_y = ::std::option::Option::None;
13395        self.material.clear();
13396        self.wall_info.clear();
13397        self.tower_info.clear();
13398        self.trench_info.clear();
13399        self.type_ = ::std::option::Option::None;
13400        self.special_fields.clear();
13401    }
13402
13403    fn default_instance() -> &'static SiteRealizationBuilding {
13404        static instance: SiteRealizationBuilding = SiteRealizationBuilding {
13405            id: ::std::option::Option::None,
13406            min_x: ::std::option::Option::None,
13407            min_y: ::std::option::Option::None,
13408            max_x: ::std::option::Option::None,
13409            max_y: ::std::option::Option::None,
13410            material: ::protobuf::MessageField::none(),
13411            wall_info: ::protobuf::MessageField::none(),
13412            tower_info: ::protobuf::MessageField::none(),
13413            trench_info: ::protobuf::MessageField::none(),
13414            type_: ::std::option::Option::None,
13415            special_fields: ::protobuf::SpecialFields::new(),
13416        };
13417        &instance
13418    }
13419}
13420
13421impl ::protobuf::MessageFull for SiteRealizationBuilding {
13422    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
13423        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
13424        descriptor.get(|| file_descriptor().message_by_package_relative_name("SiteRealizationBuilding").unwrap()).clone()
13425    }
13426}
13427
13428impl ::std::fmt::Display for SiteRealizationBuilding {
13429    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13430        ::protobuf::text_format::fmt(self, f)
13431    }
13432}
13433
13434impl ::protobuf::reflect::ProtobufValue for SiteRealizationBuilding {
13435    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
13436}
13437
13438// @@protoc_insertion_point(message:RemoteFortressReader.RegionTile)
13439#[derive(PartialEq,Clone,Default,Debug)]
13440pub struct RegionTile {
13441    // message fields
13442    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.elevation)
13443    pub elevation: ::std::option::Option<i32>,
13444    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.rainfall)
13445    pub rainfall: ::std::option::Option<i32>,
13446    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.vegetation)
13447    pub vegetation: ::std::option::Option<i32>,
13448    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.temperature)
13449    pub temperature: ::std::option::Option<i32>,
13450    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.evilness)
13451    pub evilness: ::std::option::Option<i32>,
13452    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.drainage)
13453    pub drainage: ::std::option::Option<i32>,
13454    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.volcanism)
13455    pub volcanism: ::std::option::Option<i32>,
13456    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.savagery)
13457    pub savagery: ::std::option::Option<i32>,
13458    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.salinity)
13459    pub salinity: ::std::option::Option<i32>,
13460    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.river_tiles)
13461    pub river_tiles: ::protobuf::MessageField<RiverTile>,
13462    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.water_elevation)
13463    pub water_elevation: ::std::option::Option<i32>,
13464    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.surface_material)
13465    pub surface_material: ::protobuf::MessageField<MatPair>,
13466    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.plant_materials)
13467    pub plant_materials: ::std::vec::Vec<MatPair>,
13468    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.buildings)
13469    pub buildings: ::std::vec::Vec<SiteRealizationBuilding>,
13470    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.stone_materials)
13471    pub stone_materials: ::std::vec::Vec<MatPair>,
13472    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.tree_materials)
13473    pub tree_materials: ::std::vec::Vec<MatPair>,
13474    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.snow)
13475    pub snow: ::std::option::Option<i32>,
13476    // special fields
13477    // @@protoc_insertion_point(special_field:RemoteFortressReader.RegionTile.special_fields)
13478    pub special_fields: ::protobuf::SpecialFields,
13479}
13480
13481impl<'a> ::std::default::Default for &'a RegionTile {
13482    fn default() -> &'a RegionTile {
13483        <RegionTile as ::protobuf::Message>::default_instance()
13484    }
13485}
13486
13487impl RegionTile {
13488    pub fn new() -> RegionTile {
13489        ::std::default::Default::default()
13490    }
13491
13492    // optional int32 elevation = 1;
13493
13494    pub fn elevation(&self) -> i32 {
13495        self.elevation.unwrap_or(0)
13496    }
13497
13498    pub fn clear_elevation(&mut self) {
13499        self.elevation = ::std::option::Option::None;
13500    }
13501
13502    pub fn has_elevation(&self) -> bool {
13503        self.elevation.is_some()
13504    }
13505
13506    // Param is passed by value, moved
13507    pub fn set_elevation(&mut self, v: i32) {
13508        self.elevation = ::std::option::Option::Some(v);
13509    }
13510
13511    // optional int32 rainfall = 2;
13512
13513    pub fn rainfall(&self) -> i32 {
13514        self.rainfall.unwrap_or(0)
13515    }
13516
13517    pub fn clear_rainfall(&mut self) {
13518        self.rainfall = ::std::option::Option::None;
13519    }
13520
13521    pub fn has_rainfall(&self) -> bool {
13522        self.rainfall.is_some()
13523    }
13524
13525    // Param is passed by value, moved
13526    pub fn set_rainfall(&mut self, v: i32) {
13527        self.rainfall = ::std::option::Option::Some(v);
13528    }
13529
13530    // optional int32 vegetation = 3;
13531
13532    pub fn vegetation(&self) -> i32 {
13533        self.vegetation.unwrap_or(0)
13534    }
13535
13536    pub fn clear_vegetation(&mut self) {
13537        self.vegetation = ::std::option::Option::None;
13538    }
13539
13540    pub fn has_vegetation(&self) -> bool {
13541        self.vegetation.is_some()
13542    }
13543
13544    // Param is passed by value, moved
13545    pub fn set_vegetation(&mut self, v: i32) {
13546        self.vegetation = ::std::option::Option::Some(v);
13547    }
13548
13549    // optional int32 temperature = 4;
13550
13551    pub fn temperature(&self) -> i32 {
13552        self.temperature.unwrap_or(0)
13553    }
13554
13555    pub fn clear_temperature(&mut self) {
13556        self.temperature = ::std::option::Option::None;
13557    }
13558
13559    pub fn has_temperature(&self) -> bool {
13560        self.temperature.is_some()
13561    }
13562
13563    // Param is passed by value, moved
13564    pub fn set_temperature(&mut self, v: i32) {
13565        self.temperature = ::std::option::Option::Some(v);
13566    }
13567
13568    // optional int32 evilness = 5;
13569
13570    pub fn evilness(&self) -> i32 {
13571        self.evilness.unwrap_or(0)
13572    }
13573
13574    pub fn clear_evilness(&mut self) {
13575        self.evilness = ::std::option::Option::None;
13576    }
13577
13578    pub fn has_evilness(&self) -> bool {
13579        self.evilness.is_some()
13580    }
13581
13582    // Param is passed by value, moved
13583    pub fn set_evilness(&mut self, v: i32) {
13584        self.evilness = ::std::option::Option::Some(v);
13585    }
13586
13587    // optional int32 drainage = 6;
13588
13589    pub fn drainage(&self) -> i32 {
13590        self.drainage.unwrap_or(0)
13591    }
13592
13593    pub fn clear_drainage(&mut self) {
13594        self.drainage = ::std::option::Option::None;
13595    }
13596
13597    pub fn has_drainage(&self) -> bool {
13598        self.drainage.is_some()
13599    }
13600
13601    // Param is passed by value, moved
13602    pub fn set_drainage(&mut self, v: i32) {
13603        self.drainage = ::std::option::Option::Some(v);
13604    }
13605
13606    // optional int32 volcanism = 7;
13607
13608    pub fn volcanism(&self) -> i32 {
13609        self.volcanism.unwrap_or(0)
13610    }
13611
13612    pub fn clear_volcanism(&mut self) {
13613        self.volcanism = ::std::option::Option::None;
13614    }
13615
13616    pub fn has_volcanism(&self) -> bool {
13617        self.volcanism.is_some()
13618    }
13619
13620    // Param is passed by value, moved
13621    pub fn set_volcanism(&mut self, v: i32) {
13622        self.volcanism = ::std::option::Option::Some(v);
13623    }
13624
13625    // optional int32 savagery = 8;
13626
13627    pub fn savagery(&self) -> i32 {
13628        self.savagery.unwrap_or(0)
13629    }
13630
13631    pub fn clear_savagery(&mut self) {
13632        self.savagery = ::std::option::Option::None;
13633    }
13634
13635    pub fn has_savagery(&self) -> bool {
13636        self.savagery.is_some()
13637    }
13638
13639    // Param is passed by value, moved
13640    pub fn set_savagery(&mut self, v: i32) {
13641        self.savagery = ::std::option::Option::Some(v);
13642    }
13643
13644    // optional int32 salinity = 9;
13645
13646    pub fn salinity(&self) -> i32 {
13647        self.salinity.unwrap_or(0)
13648    }
13649
13650    pub fn clear_salinity(&mut self) {
13651        self.salinity = ::std::option::Option::None;
13652    }
13653
13654    pub fn has_salinity(&self) -> bool {
13655        self.salinity.is_some()
13656    }
13657
13658    // Param is passed by value, moved
13659    pub fn set_salinity(&mut self, v: i32) {
13660        self.salinity = ::std::option::Option::Some(v);
13661    }
13662
13663    // optional int32 water_elevation = 11;
13664
13665    pub fn water_elevation(&self) -> i32 {
13666        self.water_elevation.unwrap_or(0)
13667    }
13668
13669    pub fn clear_water_elevation(&mut self) {
13670        self.water_elevation = ::std::option::Option::None;
13671    }
13672
13673    pub fn has_water_elevation(&self) -> bool {
13674        self.water_elevation.is_some()
13675    }
13676
13677    // Param is passed by value, moved
13678    pub fn set_water_elevation(&mut self, v: i32) {
13679        self.water_elevation = ::std::option::Option::Some(v);
13680    }
13681
13682    // optional int32 snow = 17;
13683
13684    pub fn snow(&self) -> i32 {
13685        self.snow.unwrap_or(0)
13686    }
13687
13688    pub fn clear_snow(&mut self) {
13689        self.snow = ::std::option::Option::None;
13690    }
13691
13692    pub fn has_snow(&self) -> bool {
13693        self.snow.is_some()
13694    }
13695
13696    // Param is passed by value, moved
13697    pub fn set_snow(&mut self, v: i32) {
13698        self.snow = ::std::option::Option::Some(v);
13699    }
13700
13701    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
13702        let mut fields = ::std::vec::Vec::with_capacity(17);
13703        let mut oneofs = ::std::vec::Vec::with_capacity(0);
13704        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13705            "elevation",
13706            |m: &RegionTile| { &m.elevation },
13707            |m: &mut RegionTile| { &mut m.elevation },
13708        ));
13709        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13710            "rainfall",
13711            |m: &RegionTile| { &m.rainfall },
13712            |m: &mut RegionTile| { &mut m.rainfall },
13713        ));
13714        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13715            "vegetation",
13716            |m: &RegionTile| { &m.vegetation },
13717            |m: &mut RegionTile| { &mut m.vegetation },
13718        ));
13719        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13720            "temperature",
13721            |m: &RegionTile| { &m.temperature },
13722            |m: &mut RegionTile| { &mut m.temperature },
13723        ));
13724        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13725            "evilness",
13726            |m: &RegionTile| { &m.evilness },
13727            |m: &mut RegionTile| { &mut m.evilness },
13728        ));
13729        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13730            "drainage",
13731            |m: &RegionTile| { &m.drainage },
13732            |m: &mut RegionTile| { &mut m.drainage },
13733        ));
13734        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13735            "volcanism",
13736            |m: &RegionTile| { &m.volcanism },
13737            |m: &mut RegionTile| { &mut m.volcanism },
13738        ));
13739        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13740            "savagery",
13741            |m: &RegionTile| { &m.savagery },
13742            |m: &mut RegionTile| { &mut m.savagery },
13743        ));
13744        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13745            "salinity",
13746            |m: &RegionTile| { &m.salinity },
13747            |m: &mut RegionTile| { &mut m.salinity },
13748        ));
13749        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, RiverTile>(
13750            "river_tiles",
13751            |m: &RegionTile| { &m.river_tiles },
13752            |m: &mut RegionTile| { &mut m.river_tiles },
13753        ));
13754        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13755            "water_elevation",
13756            |m: &RegionTile| { &m.water_elevation },
13757            |m: &mut RegionTile| { &mut m.water_elevation },
13758        ));
13759        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
13760            "surface_material",
13761            |m: &RegionTile| { &m.surface_material },
13762            |m: &mut RegionTile| { &mut m.surface_material },
13763        ));
13764        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
13765            "plant_materials",
13766            |m: &RegionTile| { &m.plant_materials },
13767            |m: &mut RegionTile| { &mut m.plant_materials },
13768        ));
13769        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
13770            "buildings",
13771            |m: &RegionTile| { &m.buildings },
13772            |m: &mut RegionTile| { &mut m.buildings },
13773        ));
13774        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
13775            "stone_materials",
13776            |m: &RegionTile| { &m.stone_materials },
13777            |m: &mut RegionTile| { &mut m.stone_materials },
13778        ));
13779        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
13780            "tree_materials",
13781            |m: &RegionTile| { &m.tree_materials },
13782            |m: &mut RegionTile| { &mut m.tree_materials },
13783        ));
13784        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13785            "snow",
13786            |m: &RegionTile| { &m.snow },
13787            |m: &mut RegionTile| { &mut m.snow },
13788        ));
13789        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<RegionTile>(
13790            "RegionTile",
13791            fields,
13792            oneofs,
13793        )
13794    }
13795}
13796
13797impl ::protobuf::Message for RegionTile {
13798    const NAME: &'static str = "RegionTile";
13799
13800    fn is_initialized(&self) -> bool {
13801        for v in &self.river_tiles {
13802            if !v.is_initialized() {
13803                return false;
13804            }
13805        };
13806        for v in &self.surface_material {
13807            if !v.is_initialized() {
13808                return false;
13809            }
13810        };
13811        for v in &self.plant_materials {
13812            if !v.is_initialized() {
13813                return false;
13814            }
13815        };
13816        for v in &self.buildings {
13817            if !v.is_initialized() {
13818                return false;
13819            }
13820        };
13821        for v in &self.stone_materials {
13822            if !v.is_initialized() {
13823                return false;
13824            }
13825        };
13826        for v in &self.tree_materials {
13827            if !v.is_initialized() {
13828                return false;
13829            }
13830        };
13831        true
13832    }
13833
13834    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
13835        while let Some(tag) = is.read_raw_tag_or_eof()? {
13836            match tag {
13837                8 => {
13838                    self.elevation = ::std::option::Option::Some(is.read_int32()?);
13839                },
13840                16 => {
13841                    self.rainfall = ::std::option::Option::Some(is.read_int32()?);
13842                },
13843                24 => {
13844                    self.vegetation = ::std::option::Option::Some(is.read_int32()?);
13845                },
13846                32 => {
13847                    self.temperature = ::std::option::Option::Some(is.read_int32()?);
13848                },
13849                40 => {
13850                    self.evilness = ::std::option::Option::Some(is.read_int32()?);
13851                },
13852                48 => {
13853                    self.drainage = ::std::option::Option::Some(is.read_int32()?);
13854                },
13855                56 => {
13856                    self.volcanism = ::std::option::Option::Some(is.read_int32()?);
13857                },
13858                64 => {
13859                    self.savagery = ::std::option::Option::Some(is.read_int32()?);
13860                },
13861                72 => {
13862                    self.salinity = ::std::option::Option::Some(is.read_int32()?);
13863                },
13864                82 => {
13865                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.river_tiles)?;
13866                },
13867                88 => {
13868                    self.water_elevation = ::std::option::Option::Some(is.read_int32()?);
13869                },
13870                98 => {
13871                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.surface_material)?;
13872                },
13873                106 => {
13874                    self.plant_materials.push(is.read_message()?);
13875                },
13876                114 => {
13877                    self.buildings.push(is.read_message()?);
13878                },
13879                122 => {
13880                    self.stone_materials.push(is.read_message()?);
13881                },
13882                130 => {
13883                    self.tree_materials.push(is.read_message()?);
13884                },
13885                136 => {
13886                    self.snow = ::std::option::Option::Some(is.read_int32()?);
13887                },
13888                tag => {
13889                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
13890                },
13891            };
13892        }
13893        ::std::result::Result::Ok(())
13894    }
13895
13896    // Compute sizes of nested messages
13897    #[allow(unused_variables)]
13898    fn compute_size(&self) -> u64 {
13899        let mut my_size = 0;
13900        if let Some(v) = self.elevation {
13901            my_size += ::protobuf::rt::int32_size(1, v);
13902        }
13903        if let Some(v) = self.rainfall {
13904            my_size += ::protobuf::rt::int32_size(2, v);
13905        }
13906        if let Some(v) = self.vegetation {
13907            my_size += ::protobuf::rt::int32_size(3, v);
13908        }
13909        if let Some(v) = self.temperature {
13910            my_size += ::protobuf::rt::int32_size(4, v);
13911        }
13912        if let Some(v) = self.evilness {
13913            my_size += ::protobuf::rt::int32_size(5, v);
13914        }
13915        if let Some(v) = self.drainage {
13916            my_size += ::protobuf::rt::int32_size(6, v);
13917        }
13918        if let Some(v) = self.volcanism {
13919            my_size += ::protobuf::rt::int32_size(7, v);
13920        }
13921        if let Some(v) = self.savagery {
13922            my_size += ::protobuf::rt::int32_size(8, v);
13923        }
13924        if let Some(v) = self.salinity {
13925            my_size += ::protobuf::rt::int32_size(9, v);
13926        }
13927        if let Some(v) = self.river_tiles.as_ref() {
13928            let len = v.compute_size();
13929            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13930        }
13931        if let Some(v) = self.water_elevation {
13932            my_size += ::protobuf::rt::int32_size(11, v);
13933        }
13934        if let Some(v) = self.surface_material.as_ref() {
13935            let len = v.compute_size();
13936            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13937        }
13938        for value in &self.plant_materials {
13939            let len = value.compute_size();
13940            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13941        };
13942        for value in &self.buildings {
13943            let len = value.compute_size();
13944            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13945        };
13946        for value in &self.stone_materials {
13947            let len = value.compute_size();
13948            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13949        };
13950        for value in &self.tree_materials {
13951            let len = value.compute_size();
13952            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13953        };
13954        if let Some(v) = self.snow {
13955            my_size += ::protobuf::rt::int32_size(17, v);
13956        }
13957        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
13958        self.special_fields.cached_size().set(my_size as u32);
13959        my_size
13960    }
13961
13962    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
13963        if let Some(v) = self.elevation {
13964            os.write_int32(1, v)?;
13965        }
13966        if let Some(v) = self.rainfall {
13967            os.write_int32(2, v)?;
13968        }
13969        if let Some(v) = self.vegetation {
13970            os.write_int32(3, v)?;
13971        }
13972        if let Some(v) = self.temperature {
13973            os.write_int32(4, v)?;
13974        }
13975        if let Some(v) = self.evilness {
13976            os.write_int32(5, v)?;
13977        }
13978        if let Some(v) = self.drainage {
13979            os.write_int32(6, v)?;
13980        }
13981        if let Some(v) = self.volcanism {
13982            os.write_int32(7, v)?;
13983        }
13984        if let Some(v) = self.savagery {
13985            os.write_int32(8, v)?;
13986        }
13987        if let Some(v) = self.salinity {
13988            os.write_int32(9, v)?;
13989        }
13990        if let Some(v) = self.river_tiles.as_ref() {
13991            ::protobuf::rt::write_message_field_with_cached_size(10, v, os)?;
13992        }
13993        if let Some(v) = self.water_elevation {
13994            os.write_int32(11, v)?;
13995        }
13996        if let Some(v) = self.surface_material.as_ref() {
13997            ::protobuf::rt::write_message_field_with_cached_size(12, v, os)?;
13998        }
13999        for v in &self.plant_materials {
14000            ::protobuf::rt::write_message_field_with_cached_size(13, v, os)?;
14001        };
14002        for v in &self.buildings {
14003            ::protobuf::rt::write_message_field_with_cached_size(14, v, os)?;
14004        };
14005        for v in &self.stone_materials {
14006            ::protobuf::rt::write_message_field_with_cached_size(15, v, os)?;
14007        };
14008        for v in &self.tree_materials {
14009            ::protobuf::rt::write_message_field_with_cached_size(16, v, os)?;
14010        };
14011        if let Some(v) = self.snow {
14012            os.write_int32(17, v)?;
14013        }
14014        os.write_unknown_fields(self.special_fields.unknown_fields())?;
14015        ::std::result::Result::Ok(())
14016    }
14017
14018    fn special_fields(&self) -> &::protobuf::SpecialFields {
14019        &self.special_fields
14020    }
14021
14022    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
14023        &mut self.special_fields
14024    }
14025
14026    fn new() -> RegionTile {
14027        RegionTile::new()
14028    }
14029
14030    fn clear(&mut self) {
14031        self.elevation = ::std::option::Option::None;
14032        self.rainfall = ::std::option::Option::None;
14033        self.vegetation = ::std::option::Option::None;
14034        self.temperature = ::std::option::Option::None;
14035        self.evilness = ::std::option::Option::None;
14036        self.drainage = ::std::option::Option::None;
14037        self.volcanism = ::std::option::Option::None;
14038        self.savagery = ::std::option::Option::None;
14039        self.salinity = ::std::option::Option::None;
14040        self.river_tiles.clear();
14041        self.water_elevation = ::std::option::Option::None;
14042        self.surface_material.clear();
14043        self.plant_materials.clear();
14044        self.buildings.clear();
14045        self.stone_materials.clear();
14046        self.tree_materials.clear();
14047        self.snow = ::std::option::Option::None;
14048        self.special_fields.clear();
14049    }
14050
14051    fn default_instance() -> &'static RegionTile {
14052        static instance: RegionTile = RegionTile {
14053            elevation: ::std::option::Option::None,
14054            rainfall: ::std::option::Option::None,
14055            vegetation: ::std::option::Option::None,
14056            temperature: ::std::option::Option::None,
14057            evilness: ::std::option::Option::None,
14058            drainage: ::std::option::Option::None,
14059            volcanism: ::std::option::Option::None,
14060            savagery: ::std::option::Option::None,
14061            salinity: ::std::option::Option::None,
14062            river_tiles: ::protobuf::MessageField::none(),
14063            water_elevation: ::std::option::Option::None,
14064            surface_material: ::protobuf::MessageField::none(),
14065            plant_materials: ::std::vec::Vec::new(),
14066            buildings: ::std::vec::Vec::new(),
14067            stone_materials: ::std::vec::Vec::new(),
14068            tree_materials: ::std::vec::Vec::new(),
14069            snow: ::std::option::Option::None,
14070            special_fields: ::protobuf::SpecialFields::new(),
14071        };
14072        &instance
14073    }
14074}
14075
14076impl ::protobuf::MessageFull for RegionTile {
14077    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
14078        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
14079        descriptor.get(|| file_descriptor().message_by_package_relative_name("RegionTile").unwrap()).clone()
14080    }
14081}
14082
14083impl ::std::fmt::Display for RegionTile {
14084    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14085        ::protobuf::text_format::fmt(self, f)
14086    }
14087}
14088
14089impl ::protobuf::reflect::ProtobufValue for RegionTile {
14090    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
14091}
14092
14093// @@protoc_insertion_point(message:RemoteFortressReader.RegionMap)
14094#[derive(PartialEq,Clone,Default,Debug)]
14095pub struct RegionMap {
14096    // message fields
14097    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMap.map_x)
14098    pub map_x: ::std::option::Option<i32>,
14099    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMap.map_y)
14100    pub map_y: ::std::option::Option<i32>,
14101    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMap.name)
14102    pub name: ::std::option::Option<::std::string::String>,
14103    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMap.name_english)
14104    pub name_english: ::std::option::Option<::std::string::String>,
14105    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMap.tiles)
14106    pub tiles: ::std::vec::Vec<RegionTile>,
14107    // special fields
14108    // @@protoc_insertion_point(special_field:RemoteFortressReader.RegionMap.special_fields)
14109    pub special_fields: ::protobuf::SpecialFields,
14110}
14111
14112impl<'a> ::std::default::Default for &'a RegionMap {
14113    fn default() -> &'a RegionMap {
14114        <RegionMap as ::protobuf::Message>::default_instance()
14115    }
14116}
14117
14118impl RegionMap {
14119    pub fn new() -> RegionMap {
14120        ::std::default::Default::default()
14121    }
14122
14123    // optional int32 map_x = 1;
14124
14125    pub fn map_x(&self) -> i32 {
14126        self.map_x.unwrap_or(0)
14127    }
14128
14129    pub fn clear_map_x(&mut self) {
14130        self.map_x = ::std::option::Option::None;
14131    }
14132
14133    pub fn has_map_x(&self) -> bool {
14134        self.map_x.is_some()
14135    }
14136
14137    // Param is passed by value, moved
14138    pub fn set_map_x(&mut self, v: i32) {
14139        self.map_x = ::std::option::Option::Some(v);
14140    }
14141
14142    // optional int32 map_y = 2;
14143
14144    pub fn map_y(&self) -> i32 {
14145        self.map_y.unwrap_or(0)
14146    }
14147
14148    pub fn clear_map_y(&mut self) {
14149        self.map_y = ::std::option::Option::None;
14150    }
14151
14152    pub fn has_map_y(&self) -> bool {
14153        self.map_y.is_some()
14154    }
14155
14156    // Param is passed by value, moved
14157    pub fn set_map_y(&mut self, v: i32) {
14158        self.map_y = ::std::option::Option::Some(v);
14159    }
14160
14161    // optional string name = 3;
14162
14163    pub fn name(&self) -> &str {
14164        match self.name.as_ref() {
14165            Some(v) => v,
14166            None => "",
14167        }
14168    }
14169
14170    pub fn clear_name(&mut self) {
14171        self.name = ::std::option::Option::None;
14172    }
14173
14174    pub fn has_name(&self) -> bool {
14175        self.name.is_some()
14176    }
14177
14178    // Param is passed by value, moved
14179    pub fn set_name(&mut self, v: ::std::string::String) {
14180        self.name = ::std::option::Option::Some(v);
14181    }
14182
14183    // Mutable pointer to the field.
14184    // If field is not initialized, it is initialized with default value first.
14185    pub fn mut_name(&mut self) -> &mut ::std::string::String {
14186        if self.name.is_none() {
14187            self.name = ::std::option::Option::Some(::std::string::String::new());
14188        }
14189        self.name.as_mut().unwrap()
14190    }
14191
14192    // Take field
14193    pub fn take_name(&mut self) -> ::std::string::String {
14194        self.name.take().unwrap_or_else(|| ::std::string::String::new())
14195    }
14196
14197    // optional string name_english = 4;
14198
14199    pub fn name_english(&self) -> &str {
14200        match self.name_english.as_ref() {
14201            Some(v) => v,
14202            None => "",
14203        }
14204    }
14205
14206    pub fn clear_name_english(&mut self) {
14207        self.name_english = ::std::option::Option::None;
14208    }
14209
14210    pub fn has_name_english(&self) -> bool {
14211        self.name_english.is_some()
14212    }
14213
14214    // Param is passed by value, moved
14215    pub fn set_name_english(&mut self, v: ::std::string::String) {
14216        self.name_english = ::std::option::Option::Some(v);
14217    }
14218
14219    // Mutable pointer to the field.
14220    // If field is not initialized, it is initialized with default value first.
14221    pub fn mut_name_english(&mut self) -> &mut ::std::string::String {
14222        if self.name_english.is_none() {
14223            self.name_english = ::std::option::Option::Some(::std::string::String::new());
14224        }
14225        self.name_english.as_mut().unwrap()
14226    }
14227
14228    // Take field
14229    pub fn take_name_english(&mut self) -> ::std::string::String {
14230        self.name_english.take().unwrap_or_else(|| ::std::string::String::new())
14231    }
14232
14233    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
14234        let mut fields = ::std::vec::Vec::with_capacity(5);
14235        let mut oneofs = ::std::vec::Vec::with_capacity(0);
14236        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14237            "map_x",
14238            |m: &RegionMap| { &m.map_x },
14239            |m: &mut RegionMap| { &mut m.map_x },
14240        ));
14241        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14242            "map_y",
14243            |m: &RegionMap| { &m.map_y },
14244            |m: &mut RegionMap| { &mut m.map_y },
14245        ));
14246        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14247            "name",
14248            |m: &RegionMap| { &m.name },
14249            |m: &mut RegionMap| { &mut m.name },
14250        ));
14251        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14252            "name_english",
14253            |m: &RegionMap| { &m.name_english },
14254            |m: &mut RegionMap| { &mut m.name_english },
14255        ));
14256        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14257            "tiles",
14258            |m: &RegionMap| { &m.tiles },
14259            |m: &mut RegionMap| { &mut m.tiles },
14260        ));
14261        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<RegionMap>(
14262            "RegionMap",
14263            fields,
14264            oneofs,
14265        )
14266    }
14267}
14268
14269impl ::protobuf::Message for RegionMap {
14270    const NAME: &'static str = "RegionMap";
14271
14272    fn is_initialized(&self) -> bool {
14273        for v in &self.tiles {
14274            if !v.is_initialized() {
14275                return false;
14276            }
14277        };
14278        true
14279    }
14280
14281    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
14282        while let Some(tag) = is.read_raw_tag_or_eof()? {
14283            match tag {
14284                8 => {
14285                    self.map_x = ::std::option::Option::Some(is.read_int32()?);
14286                },
14287                16 => {
14288                    self.map_y = ::std::option::Option::Some(is.read_int32()?);
14289                },
14290                26 => {
14291                    self.name = ::std::option::Option::Some(is.read_string()?);
14292                },
14293                34 => {
14294                    self.name_english = ::std::option::Option::Some(is.read_string()?);
14295                },
14296                42 => {
14297                    self.tiles.push(is.read_message()?);
14298                },
14299                tag => {
14300                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
14301                },
14302            };
14303        }
14304        ::std::result::Result::Ok(())
14305    }
14306
14307    // Compute sizes of nested messages
14308    #[allow(unused_variables)]
14309    fn compute_size(&self) -> u64 {
14310        let mut my_size = 0;
14311        if let Some(v) = self.map_x {
14312            my_size += ::protobuf::rt::int32_size(1, v);
14313        }
14314        if let Some(v) = self.map_y {
14315            my_size += ::protobuf::rt::int32_size(2, v);
14316        }
14317        if let Some(v) = self.name.as_ref() {
14318            my_size += ::protobuf::rt::string_size(3, &v);
14319        }
14320        if let Some(v) = self.name_english.as_ref() {
14321            my_size += ::protobuf::rt::string_size(4, &v);
14322        }
14323        for value in &self.tiles {
14324            let len = value.compute_size();
14325            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
14326        };
14327        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
14328        self.special_fields.cached_size().set(my_size as u32);
14329        my_size
14330    }
14331
14332    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
14333        if let Some(v) = self.map_x {
14334            os.write_int32(1, v)?;
14335        }
14336        if let Some(v) = self.map_y {
14337            os.write_int32(2, v)?;
14338        }
14339        if let Some(v) = self.name.as_ref() {
14340            os.write_string(3, v)?;
14341        }
14342        if let Some(v) = self.name_english.as_ref() {
14343            os.write_string(4, v)?;
14344        }
14345        for v in &self.tiles {
14346            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
14347        };
14348        os.write_unknown_fields(self.special_fields.unknown_fields())?;
14349        ::std::result::Result::Ok(())
14350    }
14351
14352    fn special_fields(&self) -> &::protobuf::SpecialFields {
14353        &self.special_fields
14354    }
14355
14356    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
14357        &mut self.special_fields
14358    }
14359
14360    fn new() -> RegionMap {
14361        RegionMap::new()
14362    }
14363
14364    fn clear(&mut self) {
14365        self.map_x = ::std::option::Option::None;
14366        self.map_y = ::std::option::Option::None;
14367        self.name = ::std::option::Option::None;
14368        self.name_english = ::std::option::Option::None;
14369        self.tiles.clear();
14370        self.special_fields.clear();
14371    }
14372
14373    fn default_instance() -> &'static RegionMap {
14374        static instance: RegionMap = RegionMap {
14375            map_x: ::std::option::Option::None,
14376            map_y: ::std::option::Option::None,
14377            name: ::std::option::Option::None,
14378            name_english: ::std::option::Option::None,
14379            tiles: ::std::vec::Vec::new(),
14380            special_fields: ::protobuf::SpecialFields::new(),
14381        };
14382        &instance
14383    }
14384}
14385
14386impl ::protobuf::MessageFull for RegionMap {
14387    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
14388        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
14389        descriptor.get(|| file_descriptor().message_by_package_relative_name("RegionMap").unwrap()).clone()
14390    }
14391}
14392
14393impl ::std::fmt::Display for RegionMap {
14394    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14395        ::protobuf::text_format::fmt(self, f)
14396    }
14397}
14398
14399impl ::protobuf::reflect::ProtobufValue for RegionMap {
14400    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
14401}
14402
14403// @@protoc_insertion_point(message:RemoteFortressReader.RegionMaps)
14404#[derive(PartialEq,Clone,Default,Debug)]
14405pub struct RegionMaps {
14406    // message fields
14407    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMaps.world_maps)
14408    pub world_maps: ::std::vec::Vec<WorldMap>,
14409    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMaps.region_maps)
14410    pub region_maps: ::std::vec::Vec<RegionMap>,
14411    // special fields
14412    // @@protoc_insertion_point(special_field:RemoteFortressReader.RegionMaps.special_fields)
14413    pub special_fields: ::protobuf::SpecialFields,
14414}
14415
14416impl<'a> ::std::default::Default for &'a RegionMaps {
14417    fn default() -> &'a RegionMaps {
14418        <RegionMaps as ::protobuf::Message>::default_instance()
14419    }
14420}
14421
14422impl RegionMaps {
14423    pub fn new() -> RegionMaps {
14424        ::std::default::Default::default()
14425    }
14426
14427    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
14428        let mut fields = ::std::vec::Vec::with_capacity(2);
14429        let mut oneofs = ::std::vec::Vec::with_capacity(0);
14430        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14431            "world_maps",
14432            |m: &RegionMaps| { &m.world_maps },
14433            |m: &mut RegionMaps| { &mut m.world_maps },
14434        ));
14435        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14436            "region_maps",
14437            |m: &RegionMaps| { &m.region_maps },
14438            |m: &mut RegionMaps| { &mut m.region_maps },
14439        ));
14440        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<RegionMaps>(
14441            "RegionMaps",
14442            fields,
14443            oneofs,
14444        )
14445    }
14446}
14447
14448impl ::protobuf::Message for RegionMaps {
14449    const NAME: &'static str = "RegionMaps";
14450
14451    fn is_initialized(&self) -> bool {
14452        for v in &self.world_maps {
14453            if !v.is_initialized() {
14454                return false;
14455            }
14456        };
14457        for v in &self.region_maps {
14458            if !v.is_initialized() {
14459                return false;
14460            }
14461        };
14462        true
14463    }
14464
14465    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
14466        while let Some(tag) = is.read_raw_tag_or_eof()? {
14467            match tag {
14468                10 => {
14469                    self.world_maps.push(is.read_message()?);
14470                },
14471                18 => {
14472                    self.region_maps.push(is.read_message()?);
14473                },
14474                tag => {
14475                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
14476                },
14477            };
14478        }
14479        ::std::result::Result::Ok(())
14480    }
14481
14482    // Compute sizes of nested messages
14483    #[allow(unused_variables)]
14484    fn compute_size(&self) -> u64 {
14485        let mut my_size = 0;
14486        for value in &self.world_maps {
14487            let len = value.compute_size();
14488            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
14489        };
14490        for value in &self.region_maps {
14491            let len = value.compute_size();
14492            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
14493        };
14494        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
14495        self.special_fields.cached_size().set(my_size as u32);
14496        my_size
14497    }
14498
14499    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
14500        for v in &self.world_maps {
14501            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
14502        };
14503        for v in &self.region_maps {
14504            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
14505        };
14506        os.write_unknown_fields(self.special_fields.unknown_fields())?;
14507        ::std::result::Result::Ok(())
14508    }
14509
14510    fn special_fields(&self) -> &::protobuf::SpecialFields {
14511        &self.special_fields
14512    }
14513
14514    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
14515        &mut self.special_fields
14516    }
14517
14518    fn new() -> RegionMaps {
14519        RegionMaps::new()
14520    }
14521
14522    fn clear(&mut self) {
14523        self.world_maps.clear();
14524        self.region_maps.clear();
14525        self.special_fields.clear();
14526    }
14527
14528    fn default_instance() -> &'static RegionMaps {
14529        static instance: RegionMaps = RegionMaps {
14530            world_maps: ::std::vec::Vec::new(),
14531            region_maps: ::std::vec::Vec::new(),
14532            special_fields: ::protobuf::SpecialFields::new(),
14533        };
14534        &instance
14535    }
14536}
14537
14538impl ::protobuf::MessageFull for RegionMaps {
14539    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
14540        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
14541        descriptor.get(|| file_descriptor().message_by_package_relative_name("RegionMaps").unwrap()).clone()
14542    }
14543}
14544
14545impl ::std::fmt::Display for RegionMaps {
14546    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14547        ::protobuf::text_format::fmt(self, f)
14548    }
14549}
14550
14551impl ::protobuf::reflect::ProtobufValue for RegionMaps {
14552    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
14553}
14554
14555// @@protoc_insertion_point(message:RemoteFortressReader.PatternDescriptor)
14556#[derive(PartialEq,Clone,Default,Debug)]
14557pub struct PatternDescriptor {
14558    // message fields
14559    // @@protoc_insertion_point(field:RemoteFortressReader.PatternDescriptor.id)
14560    pub id: ::std::option::Option<::std::string::String>,
14561    // @@protoc_insertion_point(field:RemoteFortressReader.PatternDescriptor.colors)
14562    pub colors: ::std::vec::Vec<ColorDefinition>,
14563    // @@protoc_insertion_point(field:RemoteFortressReader.PatternDescriptor.pattern)
14564    pub pattern: ::std::option::Option<::protobuf::EnumOrUnknown<PatternType>>,
14565    // special fields
14566    // @@protoc_insertion_point(special_field:RemoteFortressReader.PatternDescriptor.special_fields)
14567    pub special_fields: ::protobuf::SpecialFields,
14568}
14569
14570impl<'a> ::std::default::Default for &'a PatternDescriptor {
14571    fn default() -> &'a PatternDescriptor {
14572        <PatternDescriptor as ::protobuf::Message>::default_instance()
14573    }
14574}
14575
14576impl PatternDescriptor {
14577    pub fn new() -> PatternDescriptor {
14578        ::std::default::Default::default()
14579    }
14580
14581    // optional string id = 1;
14582
14583    pub fn id(&self) -> &str {
14584        match self.id.as_ref() {
14585            Some(v) => v,
14586            None => "",
14587        }
14588    }
14589
14590    pub fn clear_id(&mut self) {
14591        self.id = ::std::option::Option::None;
14592    }
14593
14594    pub fn has_id(&self) -> bool {
14595        self.id.is_some()
14596    }
14597
14598    // Param is passed by value, moved
14599    pub fn set_id(&mut self, v: ::std::string::String) {
14600        self.id = ::std::option::Option::Some(v);
14601    }
14602
14603    // Mutable pointer to the field.
14604    // If field is not initialized, it is initialized with default value first.
14605    pub fn mut_id(&mut self) -> &mut ::std::string::String {
14606        if self.id.is_none() {
14607            self.id = ::std::option::Option::Some(::std::string::String::new());
14608        }
14609        self.id.as_mut().unwrap()
14610    }
14611
14612    // Take field
14613    pub fn take_id(&mut self) -> ::std::string::String {
14614        self.id.take().unwrap_or_else(|| ::std::string::String::new())
14615    }
14616
14617    // optional .RemoteFortressReader.PatternType pattern = 3;
14618
14619    pub fn pattern(&self) -> PatternType {
14620        match self.pattern {
14621            Some(e) => e.enum_value_or(PatternType::MONOTONE),
14622            None => PatternType::MONOTONE,
14623        }
14624    }
14625
14626    pub fn clear_pattern(&mut self) {
14627        self.pattern = ::std::option::Option::None;
14628    }
14629
14630    pub fn has_pattern(&self) -> bool {
14631        self.pattern.is_some()
14632    }
14633
14634    // Param is passed by value, moved
14635    pub fn set_pattern(&mut self, v: PatternType) {
14636        self.pattern = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
14637    }
14638
14639    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
14640        let mut fields = ::std::vec::Vec::with_capacity(3);
14641        let mut oneofs = ::std::vec::Vec::with_capacity(0);
14642        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14643            "id",
14644            |m: &PatternDescriptor| { &m.id },
14645            |m: &mut PatternDescriptor| { &mut m.id },
14646        ));
14647        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14648            "colors",
14649            |m: &PatternDescriptor| { &m.colors },
14650            |m: &mut PatternDescriptor| { &mut m.colors },
14651        ));
14652        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14653            "pattern",
14654            |m: &PatternDescriptor| { &m.pattern },
14655            |m: &mut PatternDescriptor| { &mut m.pattern },
14656        ));
14657        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PatternDescriptor>(
14658            "PatternDescriptor",
14659            fields,
14660            oneofs,
14661        )
14662    }
14663}
14664
14665impl ::protobuf::Message for PatternDescriptor {
14666    const NAME: &'static str = "PatternDescriptor";
14667
14668    fn is_initialized(&self) -> bool {
14669        for v in &self.colors {
14670            if !v.is_initialized() {
14671                return false;
14672            }
14673        };
14674        true
14675    }
14676
14677    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
14678        while let Some(tag) = is.read_raw_tag_or_eof()? {
14679            match tag {
14680                10 => {
14681                    self.id = ::std::option::Option::Some(is.read_string()?);
14682                },
14683                18 => {
14684                    self.colors.push(is.read_message()?);
14685                },
14686                24 => {
14687                    self.pattern = ::std::option::Option::Some(is.read_enum_or_unknown()?);
14688                },
14689                tag => {
14690                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
14691                },
14692            };
14693        }
14694        ::std::result::Result::Ok(())
14695    }
14696
14697    // Compute sizes of nested messages
14698    #[allow(unused_variables)]
14699    fn compute_size(&self) -> u64 {
14700        let mut my_size = 0;
14701        if let Some(v) = self.id.as_ref() {
14702            my_size += ::protobuf::rt::string_size(1, &v);
14703        }
14704        for value in &self.colors {
14705            let len = value.compute_size();
14706            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
14707        };
14708        if let Some(v) = self.pattern {
14709            my_size += ::protobuf::rt::int32_size(3, v.value());
14710        }
14711        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
14712        self.special_fields.cached_size().set(my_size as u32);
14713        my_size
14714    }
14715
14716    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
14717        if let Some(v) = self.id.as_ref() {
14718            os.write_string(1, v)?;
14719        }
14720        for v in &self.colors {
14721            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
14722        };
14723        if let Some(v) = self.pattern {
14724            os.write_enum(3, ::protobuf::EnumOrUnknown::value(&v))?;
14725        }
14726        os.write_unknown_fields(self.special_fields.unknown_fields())?;
14727        ::std::result::Result::Ok(())
14728    }
14729
14730    fn special_fields(&self) -> &::protobuf::SpecialFields {
14731        &self.special_fields
14732    }
14733
14734    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
14735        &mut self.special_fields
14736    }
14737
14738    fn new() -> PatternDescriptor {
14739        PatternDescriptor::new()
14740    }
14741
14742    fn clear(&mut self) {
14743        self.id = ::std::option::Option::None;
14744        self.colors.clear();
14745        self.pattern = ::std::option::Option::None;
14746        self.special_fields.clear();
14747    }
14748
14749    fn default_instance() -> &'static PatternDescriptor {
14750        static instance: PatternDescriptor = PatternDescriptor {
14751            id: ::std::option::Option::None,
14752            colors: ::std::vec::Vec::new(),
14753            pattern: ::std::option::Option::None,
14754            special_fields: ::protobuf::SpecialFields::new(),
14755        };
14756        &instance
14757    }
14758}
14759
14760impl ::protobuf::MessageFull for PatternDescriptor {
14761    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
14762        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
14763        descriptor.get(|| file_descriptor().message_by_package_relative_name("PatternDescriptor").unwrap()).clone()
14764    }
14765}
14766
14767impl ::std::fmt::Display for PatternDescriptor {
14768    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14769        ::protobuf::text_format::fmt(self, f)
14770    }
14771}
14772
14773impl ::protobuf::reflect::ProtobufValue for PatternDescriptor {
14774    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
14775}
14776
14777// @@protoc_insertion_point(message:RemoteFortressReader.ColorModifierRaw)
14778#[derive(PartialEq,Clone,Default,Debug)]
14779pub struct ColorModifierRaw {
14780    // message fields
14781    // @@protoc_insertion_point(field:RemoteFortressReader.ColorModifierRaw.patterns)
14782    pub patterns: ::std::vec::Vec<PatternDescriptor>,
14783    // @@protoc_insertion_point(field:RemoteFortressReader.ColorModifierRaw.body_part_id)
14784    pub body_part_id: ::std::vec::Vec<i32>,
14785    // @@protoc_insertion_point(field:RemoteFortressReader.ColorModifierRaw.tissue_layer_id)
14786    pub tissue_layer_id: ::std::vec::Vec<i32>,
14787    // @@protoc_insertion_point(field:RemoteFortressReader.ColorModifierRaw.start_date)
14788    pub start_date: ::std::option::Option<i32>,
14789    // @@protoc_insertion_point(field:RemoteFortressReader.ColorModifierRaw.end_date)
14790    pub end_date: ::std::option::Option<i32>,
14791    // @@protoc_insertion_point(field:RemoteFortressReader.ColorModifierRaw.part)
14792    pub part: ::std::option::Option<::std::string::String>,
14793    // special fields
14794    // @@protoc_insertion_point(special_field:RemoteFortressReader.ColorModifierRaw.special_fields)
14795    pub special_fields: ::protobuf::SpecialFields,
14796}
14797
14798impl<'a> ::std::default::Default for &'a ColorModifierRaw {
14799    fn default() -> &'a ColorModifierRaw {
14800        <ColorModifierRaw as ::protobuf::Message>::default_instance()
14801    }
14802}
14803
14804impl ColorModifierRaw {
14805    pub fn new() -> ColorModifierRaw {
14806        ::std::default::Default::default()
14807    }
14808
14809    // optional int32 start_date = 4;
14810
14811    pub fn start_date(&self) -> i32 {
14812        self.start_date.unwrap_or(0)
14813    }
14814
14815    pub fn clear_start_date(&mut self) {
14816        self.start_date = ::std::option::Option::None;
14817    }
14818
14819    pub fn has_start_date(&self) -> bool {
14820        self.start_date.is_some()
14821    }
14822
14823    // Param is passed by value, moved
14824    pub fn set_start_date(&mut self, v: i32) {
14825        self.start_date = ::std::option::Option::Some(v);
14826    }
14827
14828    // optional int32 end_date = 5;
14829
14830    pub fn end_date(&self) -> i32 {
14831        self.end_date.unwrap_or(0)
14832    }
14833
14834    pub fn clear_end_date(&mut self) {
14835        self.end_date = ::std::option::Option::None;
14836    }
14837
14838    pub fn has_end_date(&self) -> bool {
14839        self.end_date.is_some()
14840    }
14841
14842    // Param is passed by value, moved
14843    pub fn set_end_date(&mut self, v: i32) {
14844        self.end_date = ::std::option::Option::Some(v);
14845    }
14846
14847    // optional string part = 6;
14848
14849    pub fn part(&self) -> &str {
14850        match self.part.as_ref() {
14851            Some(v) => v,
14852            None => "",
14853        }
14854    }
14855
14856    pub fn clear_part(&mut self) {
14857        self.part = ::std::option::Option::None;
14858    }
14859
14860    pub fn has_part(&self) -> bool {
14861        self.part.is_some()
14862    }
14863
14864    // Param is passed by value, moved
14865    pub fn set_part(&mut self, v: ::std::string::String) {
14866        self.part = ::std::option::Option::Some(v);
14867    }
14868
14869    // Mutable pointer to the field.
14870    // If field is not initialized, it is initialized with default value first.
14871    pub fn mut_part(&mut self) -> &mut ::std::string::String {
14872        if self.part.is_none() {
14873            self.part = ::std::option::Option::Some(::std::string::String::new());
14874        }
14875        self.part.as_mut().unwrap()
14876    }
14877
14878    // Take field
14879    pub fn take_part(&mut self) -> ::std::string::String {
14880        self.part.take().unwrap_or_else(|| ::std::string::String::new())
14881    }
14882
14883    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
14884        let mut fields = ::std::vec::Vec::with_capacity(6);
14885        let mut oneofs = ::std::vec::Vec::with_capacity(0);
14886        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14887            "patterns",
14888            |m: &ColorModifierRaw| { &m.patterns },
14889            |m: &mut ColorModifierRaw| { &mut m.patterns },
14890        ));
14891        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14892            "body_part_id",
14893            |m: &ColorModifierRaw| { &m.body_part_id },
14894            |m: &mut ColorModifierRaw| { &mut m.body_part_id },
14895        ));
14896        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14897            "tissue_layer_id",
14898            |m: &ColorModifierRaw| { &m.tissue_layer_id },
14899            |m: &mut ColorModifierRaw| { &mut m.tissue_layer_id },
14900        ));
14901        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14902            "start_date",
14903            |m: &ColorModifierRaw| { &m.start_date },
14904            |m: &mut ColorModifierRaw| { &mut m.start_date },
14905        ));
14906        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14907            "end_date",
14908            |m: &ColorModifierRaw| { &m.end_date },
14909            |m: &mut ColorModifierRaw| { &mut m.end_date },
14910        ));
14911        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14912            "part",
14913            |m: &ColorModifierRaw| { &m.part },
14914            |m: &mut ColorModifierRaw| { &mut m.part },
14915        ));
14916        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ColorModifierRaw>(
14917            "ColorModifierRaw",
14918            fields,
14919            oneofs,
14920        )
14921    }
14922}
14923
14924impl ::protobuf::Message for ColorModifierRaw {
14925    const NAME: &'static str = "ColorModifierRaw";
14926
14927    fn is_initialized(&self) -> bool {
14928        for v in &self.patterns {
14929            if !v.is_initialized() {
14930                return false;
14931            }
14932        };
14933        true
14934    }
14935
14936    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
14937        while let Some(tag) = is.read_raw_tag_or_eof()? {
14938            match tag {
14939                10 => {
14940                    self.patterns.push(is.read_message()?);
14941                },
14942                18 => {
14943                    is.read_repeated_packed_int32_into(&mut self.body_part_id)?;
14944                },
14945                16 => {
14946                    self.body_part_id.push(is.read_int32()?);
14947                },
14948                26 => {
14949                    is.read_repeated_packed_int32_into(&mut self.tissue_layer_id)?;
14950                },
14951                24 => {
14952                    self.tissue_layer_id.push(is.read_int32()?);
14953                },
14954                32 => {
14955                    self.start_date = ::std::option::Option::Some(is.read_int32()?);
14956                },
14957                40 => {
14958                    self.end_date = ::std::option::Option::Some(is.read_int32()?);
14959                },
14960                50 => {
14961                    self.part = ::std::option::Option::Some(is.read_string()?);
14962                },
14963                tag => {
14964                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
14965                },
14966            };
14967        }
14968        ::std::result::Result::Ok(())
14969    }
14970
14971    // Compute sizes of nested messages
14972    #[allow(unused_variables)]
14973    fn compute_size(&self) -> u64 {
14974        let mut my_size = 0;
14975        for value in &self.patterns {
14976            let len = value.compute_size();
14977            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
14978        };
14979        for value in &self.body_part_id {
14980            my_size += ::protobuf::rt::int32_size(2, *value);
14981        };
14982        for value in &self.tissue_layer_id {
14983            my_size += ::protobuf::rt::int32_size(3, *value);
14984        };
14985        if let Some(v) = self.start_date {
14986            my_size += ::protobuf::rt::int32_size(4, v);
14987        }
14988        if let Some(v) = self.end_date {
14989            my_size += ::protobuf::rt::int32_size(5, v);
14990        }
14991        if let Some(v) = self.part.as_ref() {
14992            my_size += ::protobuf::rt::string_size(6, &v);
14993        }
14994        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
14995        self.special_fields.cached_size().set(my_size as u32);
14996        my_size
14997    }
14998
14999    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
15000        for v in &self.patterns {
15001            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
15002        };
15003        for v in &self.body_part_id {
15004            os.write_int32(2, *v)?;
15005        };
15006        for v in &self.tissue_layer_id {
15007            os.write_int32(3, *v)?;
15008        };
15009        if let Some(v) = self.start_date {
15010            os.write_int32(4, v)?;
15011        }
15012        if let Some(v) = self.end_date {
15013            os.write_int32(5, v)?;
15014        }
15015        if let Some(v) = self.part.as_ref() {
15016            os.write_string(6, v)?;
15017        }
15018        os.write_unknown_fields(self.special_fields.unknown_fields())?;
15019        ::std::result::Result::Ok(())
15020    }
15021
15022    fn special_fields(&self) -> &::protobuf::SpecialFields {
15023        &self.special_fields
15024    }
15025
15026    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
15027        &mut self.special_fields
15028    }
15029
15030    fn new() -> ColorModifierRaw {
15031        ColorModifierRaw::new()
15032    }
15033
15034    fn clear(&mut self) {
15035        self.patterns.clear();
15036        self.body_part_id.clear();
15037        self.tissue_layer_id.clear();
15038        self.start_date = ::std::option::Option::None;
15039        self.end_date = ::std::option::Option::None;
15040        self.part = ::std::option::Option::None;
15041        self.special_fields.clear();
15042    }
15043
15044    fn default_instance() -> &'static ColorModifierRaw {
15045        static instance: ColorModifierRaw = ColorModifierRaw {
15046            patterns: ::std::vec::Vec::new(),
15047            body_part_id: ::std::vec::Vec::new(),
15048            tissue_layer_id: ::std::vec::Vec::new(),
15049            start_date: ::std::option::Option::None,
15050            end_date: ::std::option::Option::None,
15051            part: ::std::option::Option::None,
15052            special_fields: ::protobuf::SpecialFields::new(),
15053        };
15054        &instance
15055    }
15056}
15057
15058impl ::protobuf::MessageFull for ColorModifierRaw {
15059    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
15060        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
15061        descriptor.get(|| file_descriptor().message_by_package_relative_name("ColorModifierRaw").unwrap()).clone()
15062    }
15063}
15064
15065impl ::std::fmt::Display for ColorModifierRaw {
15066    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15067        ::protobuf::text_format::fmt(self, f)
15068    }
15069}
15070
15071impl ::protobuf::reflect::ProtobufValue for ColorModifierRaw {
15072    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
15073}
15074
15075// @@protoc_insertion_point(message:RemoteFortressReader.BodyPartLayerRaw)
15076#[derive(PartialEq,Clone,Default,Debug)]
15077pub struct BodyPartLayerRaw {
15078    // message fields
15079    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartLayerRaw.layer_name)
15080    pub layer_name: ::std::option::Option<::std::string::String>,
15081    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartLayerRaw.tissue_id)
15082    pub tissue_id: ::std::option::Option<i32>,
15083    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartLayerRaw.layer_depth)
15084    pub layer_depth: ::std::option::Option<i32>,
15085    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartLayerRaw.bp_modifiers)
15086    pub bp_modifiers: ::std::vec::Vec<i32>,
15087    // special fields
15088    // @@protoc_insertion_point(special_field:RemoteFortressReader.BodyPartLayerRaw.special_fields)
15089    pub special_fields: ::protobuf::SpecialFields,
15090}
15091
15092impl<'a> ::std::default::Default for &'a BodyPartLayerRaw {
15093    fn default() -> &'a BodyPartLayerRaw {
15094        <BodyPartLayerRaw as ::protobuf::Message>::default_instance()
15095    }
15096}
15097
15098impl BodyPartLayerRaw {
15099    pub fn new() -> BodyPartLayerRaw {
15100        ::std::default::Default::default()
15101    }
15102
15103    // optional string layer_name = 1;
15104
15105    pub fn layer_name(&self) -> &str {
15106        match self.layer_name.as_ref() {
15107            Some(v) => v,
15108            None => "",
15109        }
15110    }
15111
15112    pub fn clear_layer_name(&mut self) {
15113        self.layer_name = ::std::option::Option::None;
15114    }
15115
15116    pub fn has_layer_name(&self) -> bool {
15117        self.layer_name.is_some()
15118    }
15119
15120    // Param is passed by value, moved
15121    pub fn set_layer_name(&mut self, v: ::std::string::String) {
15122        self.layer_name = ::std::option::Option::Some(v);
15123    }
15124
15125    // Mutable pointer to the field.
15126    // If field is not initialized, it is initialized with default value first.
15127    pub fn mut_layer_name(&mut self) -> &mut ::std::string::String {
15128        if self.layer_name.is_none() {
15129            self.layer_name = ::std::option::Option::Some(::std::string::String::new());
15130        }
15131        self.layer_name.as_mut().unwrap()
15132    }
15133
15134    // Take field
15135    pub fn take_layer_name(&mut self) -> ::std::string::String {
15136        self.layer_name.take().unwrap_or_else(|| ::std::string::String::new())
15137    }
15138
15139    // optional int32 tissue_id = 2;
15140
15141    pub fn tissue_id(&self) -> i32 {
15142        self.tissue_id.unwrap_or(0)
15143    }
15144
15145    pub fn clear_tissue_id(&mut self) {
15146        self.tissue_id = ::std::option::Option::None;
15147    }
15148
15149    pub fn has_tissue_id(&self) -> bool {
15150        self.tissue_id.is_some()
15151    }
15152
15153    // Param is passed by value, moved
15154    pub fn set_tissue_id(&mut self, v: i32) {
15155        self.tissue_id = ::std::option::Option::Some(v);
15156    }
15157
15158    // optional int32 layer_depth = 3;
15159
15160    pub fn layer_depth(&self) -> i32 {
15161        self.layer_depth.unwrap_or(0)
15162    }
15163
15164    pub fn clear_layer_depth(&mut self) {
15165        self.layer_depth = ::std::option::Option::None;
15166    }
15167
15168    pub fn has_layer_depth(&self) -> bool {
15169        self.layer_depth.is_some()
15170    }
15171
15172    // Param is passed by value, moved
15173    pub fn set_layer_depth(&mut self, v: i32) {
15174        self.layer_depth = ::std::option::Option::Some(v);
15175    }
15176
15177    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
15178        let mut fields = ::std::vec::Vec::with_capacity(4);
15179        let mut oneofs = ::std::vec::Vec::with_capacity(0);
15180        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15181            "layer_name",
15182            |m: &BodyPartLayerRaw| { &m.layer_name },
15183            |m: &mut BodyPartLayerRaw| { &mut m.layer_name },
15184        ));
15185        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15186            "tissue_id",
15187            |m: &BodyPartLayerRaw| { &m.tissue_id },
15188            |m: &mut BodyPartLayerRaw| { &mut m.tissue_id },
15189        ));
15190        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15191            "layer_depth",
15192            |m: &BodyPartLayerRaw| { &m.layer_depth },
15193            |m: &mut BodyPartLayerRaw| { &mut m.layer_depth },
15194        ));
15195        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
15196            "bp_modifiers",
15197            |m: &BodyPartLayerRaw| { &m.bp_modifiers },
15198            |m: &mut BodyPartLayerRaw| { &mut m.bp_modifiers },
15199        ));
15200        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BodyPartLayerRaw>(
15201            "BodyPartLayerRaw",
15202            fields,
15203            oneofs,
15204        )
15205    }
15206}
15207
15208impl ::protobuf::Message for BodyPartLayerRaw {
15209    const NAME: &'static str = "BodyPartLayerRaw";
15210
15211    fn is_initialized(&self) -> bool {
15212        true
15213    }
15214
15215    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
15216        while let Some(tag) = is.read_raw_tag_or_eof()? {
15217            match tag {
15218                10 => {
15219                    self.layer_name = ::std::option::Option::Some(is.read_string()?);
15220                },
15221                16 => {
15222                    self.tissue_id = ::std::option::Option::Some(is.read_int32()?);
15223                },
15224                24 => {
15225                    self.layer_depth = ::std::option::Option::Some(is.read_int32()?);
15226                },
15227                34 => {
15228                    is.read_repeated_packed_int32_into(&mut self.bp_modifiers)?;
15229                },
15230                32 => {
15231                    self.bp_modifiers.push(is.read_int32()?);
15232                },
15233                tag => {
15234                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
15235                },
15236            };
15237        }
15238        ::std::result::Result::Ok(())
15239    }
15240
15241    // Compute sizes of nested messages
15242    #[allow(unused_variables)]
15243    fn compute_size(&self) -> u64 {
15244        let mut my_size = 0;
15245        if let Some(v) = self.layer_name.as_ref() {
15246            my_size += ::protobuf::rt::string_size(1, &v);
15247        }
15248        if let Some(v) = self.tissue_id {
15249            my_size += ::protobuf::rt::int32_size(2, v);
15250        }
15251        if let Some(v) = self.layer_depth {
15252            my_size += ::protobuf::rt::int32_size(3, v);
15253        }
15254        for value in &self.bp_modifiers {
15255            my_size += ::protobuf::rt::int32_size(4, *value);
15256        };
15257        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
15258        self.special_fields.cached_size().set(my_size as u32);
15259        my_size
15260    }
15261
15262    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
15263        if let Some(v) = self.layer_name.as_ref() {
15264            os.write_string(1, v)?;
15265        }
15266        if let Some(v) = self.tissue_id {
15267            os.write_int32(2, v)?;
15268        }
15269        if let Some(v) = self.layer_depth {
15270            os.write_int32(3, v)?;
15271        }
15272        for v in &self.bp_modifiers {
15273            os.write_int32(4, *v)?;
15274        };
15275        os.write_unknown_fields(self.special_fields.unknown_fields())?;
15276        ::std::result::Result::Ok(())
15277    }
15278
15279    fn special_fields(&self) -> &::protobuf::SpecialFields {
15280        &self.special_fields
15281    }
15282
15283    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
15284        &mut self.special_fields
15285    }
15286
15287    fn new() -> BodyPartLayerRaw {
15288        BodyPartLayerRaw::new()
15289    }
15290
15291    fn clear(&mut self) {
15292        self.layer_name = ::std::option::Option::None;
15293        self.tissue_id = ::std::option::Option::None;
15294        self.layer_depth = ::std::option::Option::None;
15295        self.bp_modifiers.clear();
15296        self.special_fields.clear();
15297    }
15298
15299    fn default_instance() -> &'static BodyPartLayerRaw {
15300        static instance: BodyPartLayerRaw = BodyPartLayerRaw {
15301            layer_name: ::std::option::Option::None,
15302            tissue_id: ::std::option::Option::None,
15303            layer_depth: ::std::option::Option::None,
15304            bp_modifiers: ::std::vec::Vec::new(),
15305            special_fields: ::protobuf::SpecialFields::new(),
15306        };
15307        &instance
15308    }
15309}
15310
15311impl ::protobuf::MessageFull for BodyPartLayerRaw {
15312    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
15313        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
15314        descriptor.get(|| file_descriptor().message_by_package_relative_name("BodyPartLayerRaw").unwrap()).clone()
15315    }
15316}
15317
15318impl ::std::fmt::Display for BodyPartLayerRaw {
15319    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15320        ::protobuf::text_format::fmt(self, f)
15321    }
15322}
15323
15324impl ::protobuf::reflect::ProtobufValue for BodyPartLayerRaw {
15325    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
15326}
15327
15328// @@protoc_insertion_point(message:RemoteFortressReader.BodyPartRaw)
15329#[derive(PartialEq,Clone,Default,Debug)]
15330pub struct BodyPartRaw {
15331    // message fields
15332    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartRaw.token)
15333    pub token: ::std::option::Option<::std::string::String>,
15334    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartRaw.category)
15335    pub category: ::std::option::Option<::std::string::String>,
15336    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartRaw.parent)
15337    pub parent: ::std::option::Option<i32>,
15338    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartRaw.flags)
15339    pub flags: ::std::vec::Vec<bool>,
15340    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartRaw.layers)
15341    pub layers: ::std::vec::Vec<BodyPartLayerRaw>,
15342    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartRaw.relsize)
15343    pub relsize: ::std::option::Option<i32>,
15344    // special fields
15345    // @@protoc_insertion_point(special_field:RemoteFortressReader.BodyPartRaw.special_fields)
15346    pub special_fields: ::protobuf::SpecialFields,
15347}
15348
15349impl<'a> ::std::default::Default for &'a BodyPartRaw {
15350    fn default() -> &'a BodyPartRaw {
15351        <BodyPartRaw as ::protobuf::Message>::default_instance()
15352    }
15353}
15354
15355impl BodyPartRaw {
15356    pub fn new() -> BodyPartRaw {
15357        ::std::default::Default::default()
15358    }
15359
15360    // optional string token = 1;
15361
15362    pub fn token(&self) -> &str {
15363        match self.token.as_ref() {
15364            Some(v) => v,
15365            None => "",
15366        }
15367    }
15368
15369    pub fn clear_token(&mut self) {
15370        self.token = ::std::option::Option::None;
15371    }
15372
15373    pub fn has_token(&self) -> bool {
15374        self.token.is_some()
15375    }
15376
15377    // Param is passed by value, moved
15378    pub fn set_token(&mut self, v: ::std::string::String) {
15379        self.token = ::std::option::Option::Some(v);
15380    }
15381
15382    // Mutable pointer to the field.
15383    // If field is not initialized, it is initialized with default value first.
15384    pub fn mut_token(&mut self) -> &mut ::std::string::String {
15385        if self.token.is_none() {
15386            self.token = ::std::option::Option::Some(::std::string::String::new());
15387        }
15388        self.token.as_mut().unwrap()
15389    }
15390
15391    // Take field
15392    pub fn take_token(&mut self) -> ::std::string::String {
15393        self.token.take().unwrap_or_else(|| ::std::string::String::new())
15394    }
15395
15396    // optional string category = 2;
15397
15398    pub fn category(&self) -> &str {
15399        match self.category.as_ref() {
15400            Some(v) => v,
15401            None => "",
15402        }
15403    }
15404
15405    pub fn clear_category(&mut self) {
15406        self.category = ::std::option::Option::None;
15407    }
15408
15409    pub fn has_category(&self) -> bool {
15410        self.category.is_some()
15411    }
15412
15413    // Param is passed by value, moved
15414    pub fn set_category(&mut self, v: ::std::string::String) {
15415        self.category = ::std::option::Option::Some(v);
15416    }
15417
15418    // Mutable pointer to the field.
15419    // If field is not initialized, it is initialized with default value first.
15420    pub fn mut_category(&mut self) -> &mut ::std::string::String {
15421        if self.category.is_none() {
15422            self.category = ::std::option::Option::Some(::std::string::String::new());
15423        }
15424        self.category.as_mut().unwrap()
15425    }
15426
15427    // Take field
15428    pub fn take_category(&mut self) -> ::std::string::String {
15429        self.category.take().unwrap_or_else(|| ::std::string::String::new())
15430    }
15431
15432    // optional int32 parent = 3;
15433
15434    pub fn parent(&self) -> i32 {
15435        self.parent.unwrap_or(0)
15436    }
15437
15438    pub fn clear_parent(&mut self) {
15439        self.parent = ::std::option::Option::None;
15440    }
15441
15442    pub fn has_parent(&self) -> bool {
15443        self.parent.is_some()
15444    }
15445
15446    // Param is passed by value, moved
15447    pub fn set_parent(&mut self, v: i32) {
15448        self.parent = ::std::option::Option::Some(v);
15449    }
15450
15451    // optional int32 relsize = 6;
15452
15453    pub fn relsize(&self) -> i32 {
15454        self.relsize.unwrap_or(0)
15455    }
15456
15457    pub fn clear_relsize(&mut self) {
15458        self.relsize = ::std::option::Option::None;
15459    }
15460
15461    pub fn has_relsize(&self) -> bool {
15462        self.relsize.is_some()
15463    }
15464
15465    // Param is passed by value, moved
15466    pub fn set_relsize(&mut self, v: i32) {
15467        self.relsize = ::std::option::Option::Some(v);
15468    }
15469
15470    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
15471        let mut fields = ::std::vec::Vec::with_capacity(6);
15472        let mut oneofs = ::std::vec::Vec::with_capacity(0);
15473        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15474            "token",
15475            |m: &BodyPartRaw| { &m.token },
15476            |m: &mut BodyPartRaw| { &mut m.token },
15477        ));
15478        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15479            "category",
15480            |m: &BodyPartRaw| { &m.category },
15481            |m: &mut BodyPartRaw| { &mut m.category },
15482        ));
15483        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15484            "parent",
15485            |m: &BodyPartRaw| { &m.parent },
15486            |m: &mut BodyPartRaw| { &mut m.parent },
15487        ));
15488        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
15489            "flags",
15490            |m: &BodyPartRaw| { &m.flags },
15491            |m: &mut BodyPartRaw| { &mut m.flags },
15492        ));
15493        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
15494            "layers",
15495            |m: &BodyPartRaw| { &m.layers },
15496            |m: &mut BodyPartRaw| { &mut m.layers },
15497        ));
15498        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15499            "relsize",
15500            |m: &BodyPartRaw| { &m.relsize },
15501            |m: &mut BodyPartRaw| { &mut m.relsize },
15502        ));
15503        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BodyPartRaw>(
15504            "BodyPartRaw",
15505            fields,
15506            oneofs,
15507        )
15508    }
15509}
15510
15511impl ::protobuf::Message for BodyPartRaw {
15512    const NAME: &'static str = "BodyPartRaw";
15513
15514    fn is_initialized(&self) -> bool {
15515        true
15516    }
15517
15518    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
15519        while let Some(tag) = is.read_raw_tag_or_eof()? {
15520            match tag {
15521                10 => {
15522                    self.token = ::std::option::Option::Some(is.read_string()?);
15523                },
15524                18 => {
15525                    self.category = ::std::option::Option::Some(is.read_string()?);
15526                },
15527                24 => {
15528                    self.parent = ::std::option::Option::Some(is.read_int32()?);
15529                },
15530                34 => {
15531                    is.read_repeated_packed_bool_into(&mut self.flags)?;
15532                },
15533                32 => {
15534                    self.flags.push(is.read_bool()?);
15535                },
15536                42 => {
15537                    self.layers.push(is.read_message()?);
15538                },
15539                48 => {
15540                    self.relsize = ::std::option::Option::Some(is.read_int32()?);
15541                },
15542                tag => {
15543                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
15544                },
15545            };
15546        }
15547        ::std::result::Result::Ok(())
15548    }
15549
15550    // Compute sizes of nested messages
15551    #[allow(unused_variables)]
15552    fn compute_size(&self) -> u64 {
15553        let mut my_size = 0;
15554        if let Some(v) = self.token.as_ref() {
15555            my_size += ::protobuf::rt::string_size(1, &v);
15556        }
15557        if let Some(v) = self.category.as_ref() {
15558            my_size += ::protobuf::rt::string_size(2, &v);
15559        }
15560        if let Some(v) = self.parent {
15561            my_size += ::protobuf::rt::int32_size(3, v);
15562        }
15563        my_size += 2 * self.flags.len() as u64;
15564        for value in &self.layers {
15565            let len = value.compute_size();
15566            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
15567        };
15568        if let Some(v) = self.relsize {
15569            my_size += ::protobuf::rt::int32_size(6, v);
15570        }
15571        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
15572        self.special_fields.cached_size().set(my_size as u32);
15573        my_size
15574    }
15575
15576    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
15577        if let Some(v) = self.token.as_ref() {
15578            os.write_string(1, v)?;
15579        }
15580        if let Some(v) = self.category.as_ref() {
15581            os.write_string(2, v)?;
15582        }
15583        if let Some(v) = self.parent {
15584            os.write_int32(3, v)?;
15585        }
15586        for v in &self.flags {
15587            os.write_bool(4, *v)?;
15588        };
15589        for v in &self.layers {
15590            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
15591        };
15592        if let Some(v) = self.relsize {
15593            os.write_int32(6, v)?;
15594        }
15595        os.write_unknown_fields(self.special_fields.unknown_fields())?;
15596        ::std::result::Result::Ok(())
15597    }
15598
15599    fn special_fields(&self) -> &::protobuf::SpecialFields {
15600        &self.special_fields
15601    }
15602
15603    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
15604        &mut self.special_fields
15605    }
15606
15607    fn new() -> BodyPartRaw {
15608        BodyPartRaw::new()
15609    }
15610
15611    fn clear(&mut self) {
15612        self.token = ::std::option::Option::None;
15613        self.category = ::std::option::Option::None;
15614        self.parent = ::std::option::Option::None;
15615        self.flags.clear();
15616        self.layers.clear();
15617        self.relsize = ::std::option::Option::None;
15618        self.special_fields.clear();
15619    }
15620
15621    fn default_instance() -> &'static BodyPartRaw {
15622        static instance: BodyPartRaw = BodyPartRaw {
15623            token: ::std::option::Option::None,
15624            category: ::std::option::Option::None,
15625            parent: ::std::option::Option::None,
15626            flags: ::std::vec::Vec::new(),
15627            layers: ::std::vec::Vec::new(),
15628            relsize: ::std::option::Option::None,
15629            special_fields: ::protobuf::SpecialFields::new(),
15630        };
15631        &instance
15632    }
15633}
15634
15635impl ::protobuf::MessageFull for BodyPartRaw {
15636    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
15637        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
15638        descriptor.get(|| file_descriptor().message_by_package_relative_name("BodyPartRaw").unwrap()).clone()
15639    }
15640}
15641
15642impl ::std::fmt::Display for BodyPartRaw {
15643    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15644        ::protobuf::text_format::fmt(self, f)
15645    }
15646}
15647
15648impl ::protobuf::reflect::ProtobufValue for BodyPartRaw {
15649    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
15650}
15651
15652// @@protoc_insertion_point(message:RemoteFortressReader.BpAppearanceModifier)
15653#[derive(PartialEq,Clone,Default,Debug)]
15654pub struct BpAppearanceModifier {
15655    // message fields
15656    // @@protoc_insertion_point(field:RemoteFortressReader.BpAppearanceModifier.type)
15657    pub type_: ::std::option::Option<::std::string::String>,
15658    // @@protoc_insertion_point(field:RemoteFortressReader.BpAppearanceModifier.mod_min)
15659    pub mod_min: ::std::option::Option<i32>,
15660    // @@protoc_insertion_point(field:RemoteFortressReader.BpAppearanceModifier.mod_max)
15661    pub mod_max: ::std::option::Option<i32>,
15662    // special fields
15663    // @@protoc_insertion_point(special_field:RemoteFortressReader.BpAppearanceModifier.special_fields)
15664    pub special_fields: ::protobuf::SpecialFields,
15665}
15666
15667impl<'a> ::std::default::Default for &'a BpAppearanceModifier {
15668    fn default() -> &'a BpAppearanceModifier {
15669        <BpAppearanceModifier as ::protobuf::Message>::default_instance()
15670    }
15671}
15672
15673impl BpAppearanceModifier {
15674    pub fn new() -> BpAppearanceModifier {
15675        ::std::default::Default::default()
15676    }
15677
15678    // optional string type = 1;
15679
15680    pub fn type_(&self) -> &str {
15681        match self.type_.as_ref() {
15682            Some(v) => v,
15683            None => "",
15684        }
15685    }
15686
15687    pub fn clear_type_(&mut self) {
15688        self.type_ = ::std::option::Option::None;
15689    }
15690
15691    pub fn has_type(&self) -> bool {
15692        self.type_.is_some()
15693    }
15694
15695    // Param is passed by value, moved
15696    pub fn set_type(&mut self, v: ::std::string::String) {
15697        self.type_ = ::std::option::Option::Some(v);
15698    }
15699
15700    // Mutable pointer to the field.
15701    // If field is not initialized, it is initialized with default value first.
15702    pub fn mut_type(&mut self) -> &mut ::std::string::String {
15703        if self.type_.is_none() {
15704            self.type_ = ::std::option::Option::Some(::std::string::String::new());
15705        }
15706        self.type_.as_mut().unwrap()
15707    }
15708
15709    // Take field
15710    pub fn take_type_(&mut self) -> ::std::string::String {
15711        self.type_.take().unwrap_or_else(|| ::std::string::String::new())
15712    }
15713
15714    // optional int32 mod_min = 2;
15715
15716    pub fn mod_min(&self) -> i32 {
15717        self.mod_min.unwrap_or(0)
15718    }
15719
15720    pub fn clear_mod_min(&mut self) {
15721        self.mod_min = ::std::option::Option::None;
15722    }
15723
15724    pub fn has_mod_min(&self) -> bool {
15725        self.mod_min.is_some()
15726    }
15727
15728    // Param is passed by value, moved
15729    pub fn set_mod_min(&mut self, v: i32) {
15730        self.mod_min = ::std::option::Option::Some(v);
15731    }
15732
15733    // optional int32 mod_max = 3;
15734
15735    pub fn mod_max(&self) -> i32 {
15736        self.mod_max.unwrap_or(0)
15737    }
15738
15739    pub fn clear_mod_max(&mut self) {
15740        self.mod_max = ::std::option::Option::None;
15741    }
15742
15743    pub fn has_mod_max(&self) -> bool {
15744        self.mod_max.is_some()
15745    }
15746
15747    // Param is passed by value, moved
15748    pub fn set_mod_max(&mut self, v: i32) {
15749        self.mod_max = ::std::option::Option::Some(v);
15750    }
15751
15752    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
15753        let mut fields = ::std::vec::Vec::with_capacity(3);
15754        let mut oneofs = ::std::vec::Vec::with_capacity(0);
15755        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15756            "type",
15757            |m: &BpAppearanceModifier| { &m.type_ },
15758            |m: &mut BpAppearanceModifier| { &mut m.type_ },
15759        ));
15760        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15761            "mod_min",
15762            |m: &BpAppearanceModifier| { &m.mod_min },
15763            |m: &mut BpAppearanceModifier| { &mut m.mod_min },
15764        ));
15765        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15766            "mod_max",
15767            |m: &BpAppearanceModifier| { &m.mod_max },
15768            |m: &mut BpAppearanceModifier| { &mut m.mod_max },
15769        ));
15770        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BpAppearanceModifier>(
15771            "BpAppearanceModifier",
15772            fields,
15773            oneofs,
15774        )
15775    }
15776}
15777
15778impl ::protobuf::Message for BpAppearanceModifier {
15779    const NAME: &'static str = "BpAppearanceModifier";
15780
15781    fn is_initialized(&self) -> bool {
15782        true
15783    }
15784
15785    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
15786        while let Some(tag) = is.read_raw_tag_or_eof()? {
15787            match tag {
15788                10 => {
15789                    self.type_ = ::std::option::Option::Some(is.read_string()?);
15790                },
15791                16 => {
15792                    self.mod_min = ::std::option::Option::Some(is.read_int32()?);
15793                },
15794                24 => {
15795                    self.mod_max = ::std::option::Option::Some(is.read_int32()?);
15796                },
15797                tag => {
15798                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
15799                },
15800            };
15801        }
15802        ::std::result::Result::Ok(())
15803    }
15804
15805    // Compute sizes of nested messages
15806    #[allow(unused_variables)]
15807    fn compute_size(&self) -> u64 {
15808        let mut my_size = 0;
15809        if let Some(v) = self.type_.as_ref() {
15810            my_size += ::protobuf::rt::string_size(1, &v);
15811        }
15812        if let Some(v) = self.mod_min {
15813            my_size += ::protobuf::rt::int32_size(2, v);
15814        }
15815        if let Some(v) = self.mod_max {
15816            my_size += ::protobuf::rt::int32_size(3, v);
15817        }
15818        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
15819        self.special_fields.cached_size().set(my_size as u32);
15820        my_size
15821    }
15822
15823    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
15824        if let Some(v) = self.type_.as_ref() {
15825            os.write_string(1, v)?;
15826        }
15827        if let Some(v) = self.mod_min {
15828            os.write_int32(2, v)?;
15829        }
15830        if let Some(v) = self.mod_max {
15831            os.write_int32(3, v)?;
15832        }
15833        os.write_unknown_fields(self.special_fields.unknown_fields())?;
15834        ::std::result::Result::Ok(())
15835    }
15836
15837    fn special_fields(&self) -> &::protobuf::SpecialFields {
15838        &self.special_fields
15839    }
15840
15841    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
15842        &mut self.special_fields
15843    }
15844
15845    fn new() -> BpAppearanceModifier {
15846        BpAppearanceModifier::new()
15847    }
15848
15849    fn clear(&mut self) {
15850        self.type_ = ::std::option::Option::None;
15851        self.mod_min = ::std::option::Option::None;
15852        self.mod_max = ::std::option::Option::None;
15853        self.special_fields.clear();
15854    }
15855
15856    fn default_instance() -> &'static BpAppearanceModifier {
15857        static instance: BpAppearanceModifier = BpAppearanceModifier {
15858            type_: ::std::option::Option::None,
15859            mod_min: ::std::option::Option::None,
15860            mod_max: ::std::option::Option::None,
15861            special_fields: ::protobuf::SpecialFields::new(),
15862        };
15863        &instance
15864    }
15865}
15866
15867impl ::protobuf::MessageFull for BpAppearanceModifier {
15868    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
15869        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
15870        descriptor.get(|| file_descriptor().message_by_package_relative_name("BpAppearanceModifier").unwrap()).clone()
15871    }
15872}
15873
15874impl ::std::fmt::Display for BpAppearanceModifier {
15875    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15876        ::protobuf::text_format::fmt(self, f)
15877    }
15878}
15879
15880impl ::protobuf::reflect::ProtobufValue for BpAppearanceModifier {
15881    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
15882}
15883
15884// @@protoc_insertion_point(message:RemoteFortressReader.TissueRaw)
15885#[derive(PartialEq,Clone,Default,Debug)]
15886pub struct TissueRaw {
15887    // message fields
15888    // @@protoc_insertion_point(field:RemoteFortressReader.TissueRaw.id)
15889    pub id: ::std::option::Option<::std::string::String>,
15890    // @@protoc_insertion_point(field:RemoteFortressReader.TissueRaw.name)
15891    pub name: ::std::option::Option<::std::string::String>,
15892    // @@protoc_insertion_point(field:RemoteFortressReader.TissueRaw.material)
15893    pub material: ::protobuf::MessageField<MatPair>,
15894    // @@protoc_insertion_point(field:RemoteFortressReader.TissueRaw.subordinate_to_tissue)
15895    pub subordinate_to_tissue: ::std::option::Option<::std::string::String>,
15896    // special fields
15897    // @@protoc_insertion_point(special_field:RemoteFortressReader.TissueRaw.special_fields)
15898    pub special_fields: ::protobuf::SpecialFields,
15899}
15900
15901impl<'a> ::std::default::Default for &'a TissueRaw {
15902    fn default() -> &'a TissueRaw {
15903        <TissueRaw as ::protobuf::Message>::default_instance()
15904    }
15905}
15906
15907impl TissueRaw {
15908    pub fn new() -> TissueRaw {
15909        ::std::default::Default::default()
15910    }
15911
15912    // optional string id = 1;
15913
15914    pub fn id(&self) -> &str {
15915        match self.id.as_ref() {
15916            Some(v) => v,
15917            None => "",
15918        }
15919    }
15920
15921    pub fn clear_id(&mut self) {
15922        self.id = ::std::option::Option::None;
15923    }
15924
15925    pub fn has_id(&self) -> bool {
15926        self.id.is_some()
15927    }
15928
15929    // Param is passed by value, moved
15930    pub fn set_id(&mut self, v: ::std::string::String) {
15931        self.id = ::std::option::Option::Some(v);
15932    }
15933
15934    // Mutable pointer to the field.
15935    // If field is not initialized, it is initialized with default value first.
15936    pub fn mut_id(&mut self) -> &mut ::std::string::String {
15937        if self.id.is_none() {
15938            self.id = ::std::option::Option::Some(::std::string::String::new());
15939        }
15940        self.id.as_mut().unwrap()
15941    }
15942
15943    // Take field
15944    pub fn take_id(&mut self) -> ::std::string::String {
15945        self.id.take().unwrap_or_else(|| ::std::string::String::new())
15946    }
15947
15948    // optional string name = 2;
15949
15950    pub fn name(&self) -> &str {
15951        match self.name.as_ref() {
15952            Some(v) => v,
15953            None => "",
15954        }
15955    }
15956
15957    pub fn clear_name(&mut self) {
15958        self.name = ::std::option::Option::None;
15959    }
15960
15961    pub fn has_name(&self) -> bool {
15962        self.name.is_some()
15963    }
15964
15965    // Param is passed by value, moved
15966    pub fn set_name(&mut self, v: ::std::string::String) {
15967        self.name = ::std::option::Option::Some(v);
15968    }
15969
15970    // Mutable pointer to the field.
15971    // If field is not initialized, it is initialized with default value first.
15972    pub fn mut_name(&mut self) -> &mut ::std::string::String {
15973        if self.name.is_none() {
15974            self.name = ::std::option::Option::Some(::std::string::String::new());
15975        }
15976        self.name.as_mut().unwrap()
15977    }
15978
15979    // Take field
15980    pub fn take_name(&mut self) -> ::std::string::String {
15981        self.name.take().unwrap_or_else(|| ::std::string::String::new())
15982    }
15983
15984    // optional string subordinate_to_tissue = 4;
15985
15986    pub fn subordinate_to_tissue(&self) -> &str {
15987        match self.subordinate_to_tissue.as_ref() {
15988            Some(v) => v,
15989            None => "",
15990        }
15991    }
15992
15993    pub fn clear_subordinate_to_tissue(&mut self) {
15994        self.subordinate_to_tissue = ::std::option::Option::None;
15995    }
15996
15997    pub fn has_subordinate_to_tissue(&self) -> bool {
15998        self.subordinate_to_tissue.is_some()
15999    }
16000
16001    // Param is passed by value, moved
16002    pub fn set_subordinate_to_tissue(&mut self, v: ::std::string::String) {
16003        self.subordinate_to_tissue = ::std::option::Option::Some(v);
16004    }
16005
16006    // Mutable pointer to the field.
16007    // If field is not initialized, it is initialized with default value first.
16008    pub fn mut_subordinate_to_tissue(&mut self) -> &mut ::std::string::String {
16009        if self.subordinate_to_tissue.is_none() {
16010            self.subordinate_to_tissue = ::std::option::Option::Some(::std::string::String::new());
16011        }
16012        self.subordinate_to_tissue.as_mut().unwrap()
16013    }
16014
16015    // Take field
16016    pub fn take_subordinate_to_tissue(&mut self) -> ::std::string::String {
16017        self.subordinate_to_tissue.take().unwrap_or_else(|| ::std::string::String::new())
16018    }
16019
16020    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
16021        let mut fields = ::std::vec::Vec::with_capacity(4);
16022        let mut oneofs = ::std::vec::Vec::with_capacity(0);
16023        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16024            "id",
16025            |m: &TissueRaw| { &m.id },
16026            |m: &mut TissueRaw| { &mut m.id },
16027        ));
16028        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16029            "name",
16030            |m: &TissueRaw| { &m.name },
16031            |m: &mut TissueRaw| { &mut m.name },
16032        ));
16033        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
16034            "material",
16035            |m: &TissueRaw| { &m.material },
16036            |m: &mut TissueRaw| { &mut m.material },
16037        ));
16038        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16039            "subordinate_to_tissue",
16040            |m: &TissueRaw| { &m.subordinate_to_tissue },
16041            |m: &mut TissueRaw| { &mut m.subordinate_to_tissue },
16042        ));
16043        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<TissueRaw>(
16044            "TissueRaw",
16045            fields,
16046            oneofs,
16047        )
16048    }
16049}
16050
16051impl ::protobuf::Message for TissueRaw {
16052    const NAME: &'static str = "TissueRaw";
16053
16054    fn is_initialized(&self) -> bool {
16055        for v in &self.material {
16056            if !v.is_initialized() {
16057                return false;
16058            }
16059        };
16060        true
16061    }
16062
16063    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
16064        while let Some(tag) = is.read_raw_tag_or_eof()? {
16065            match tag {
16066                10 => {
16067                    self.id = ::std::option::Option::Some(is.read_string()?);
16068                },
16069                18 => {
16070                    self.name = ::std::option::Option::Some(is.read_string()?);
16071                },
16072                26 => {
16073                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
16074                },
16075                34 => {
16076                    self.subordinate_to_tissue = ::std::option::Option::Some(is.read_string()?);
16077                },
16078                tag => {
16079                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
16080                },
16081            };
16082        }
16083        ::std::result::Result::Ok(())
16084    }
16085
16086    // Compute sizes of nested messages
16087    #[allow(unused_variables)]
16088    fn compute_size(&self) -> u64 {
16089        let mut my_size = 0;
16090        if let Some(v) = self.id.as_ref() {
16091            my_size += ::protobuf::rt::string_size(1, &v);
16092        }
16093        if let Some(v) = self.name.as_ref() {
16094            my_size += ::protobuf::rt::string_size(2, &v);
16095        }
16096        if let Some(v) = self.material.as_ref() {
16097            let len = v.compute_size();
16098            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
16099        }
16100        if let Some(v) = self.subordinate_to_tissue.as_ref() {
16101            my_size += ::protobuf::rt::string_size(4, &v);
16102        }
16103        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
16104        self.special_fields.cached_size().set(my_size as u32);
16105        my_size
16106    }
16107
16108    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
16109        if let Some(v) = self.id.as_ref() {
16110            os.write_string(1, v)?;
16111        }
16112        if let Some(v) = self.name.as_ref() {
16113            os.write_string(2, v)?;
16114        }
16115        if let Some(v) = self.material.as_ref() {
16116            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
16117        }
16118        if let Some(v) = self.subordinate_to_tissue.as_ref() {
16119            os.write_string(4, v)?;
16120        }
16121        os.write_unknown_fields(self.special_fields.unknown_fields())?;
16122        ::std::result::Result::Ok(())
16123    }
16124
16125    fn special_fields(&self) -> &::protobuf::SpecialFields {
16126        &self.special_fields
16127    }
16128
16129    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
16130        &mut self.special_fields
16131    }
16132
16133    fn new() -> TissueRaw {
16134        TissueRaw::new()
16135    }
16136
16137    fn clear(&mut self) {
16138        self.id = ::std::option::Option::None;
16139        self.name = ::std::option::Option::None;
16140        self.material.clear();
16141        self.subordinate_to_tissue = ::std::option::Option::None;
16142        self.special_fields.clear();
16143    }
16144
16145    fn default_instance() -> &'static TissueRaw {
16146        static instance: TissueRaw = TissueRaw {
16147            id: ::std::option::Option::None,
16148            name: ::std::option::Option::None,
16149            material: ::protobuf::MessageField::none(),
16150            subordinate_to_tissue: ::std::option::Option::None,
16151            special_fields: ::protobuf::SpecialFields::new(),
16152        };
16153        &instance
16154    }
16155}
16156
16157impl ::protobuf::MessageFull for TissueRaw {
16158    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
16159        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
16160        descriptor.get(|| file_descriptor().message_by_package_relative_name("TissueRaw").unwrap()).clone()
16161    }
16162}
16163
16164impl ::std::fmt::Display for TissueRaw {
16165    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16166        ::protobuf::text_format::fmt(self, f)
16167    }
16168}
16169
16170impl ::protobuf::reflect::ProtobufValue for TissueRaw {
16171    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
16172}
16173
16174// @@protoc_insertion_point(message:RemoteFortressReader.CasteRaw)
16175#[derive(PartialEq,Clone,Default,Debug)]
16176pub struct CasteRaw {
16177    // message fields
16178    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.index)
16179    pub index: ::std::option::Option<i32>,
16180    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.caste_id)
16181    pub caste_id: ::std::option::Option<::std::string::String>,
16182    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.caste_name)
16183    pub caste_name: ::std::vec::Vec<::std::string::String>,
16184    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.baby_name)
16185    pub baby_name: ::std::vec::Vec<::std::string::String>,
16186    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.child_name)
16187    pub child_name: ::std::vec::Vec<::std::string::String>,
16188    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.gender)
16189    pub gender: ::std::option::Option<i32>,
16190    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.body_parts)
16191    pub body_parts: ::std::vec::Vec<BodyPartRaw>,
16192    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.total_relsize)
16193    pub total_relsize: ::std::option::Option<i32>,
16194    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.modifiers)
16195    pub modifiers: ::std::vec::Vec<BpAppearanceModifier>,
16196    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.modifier_idx)
16197    pub modifier_idx: ::std::vec::Vec<i32>,
16198    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.part_idx)
16199    pub part_idx: ::std::vec::Vec<i32>,
16200    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.layer_idx)
16201    pub layer_idx: ::std::vec::Vec<i32>,
16202    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.body_appearance_modifiers)
16203    pub body_appearance_modifiers: ::std::vec::Vec<BpAppearanceModifier>,
16204    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.color_modifiers)
16205    pub color_modifiers: ::std::vec::Vec<ColorModifierRaw>,
16206    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.description)
16207    pub description: ::std::option::Option<::std::string::String>,
16208    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.adult_size)
16209    pub adult_size: ::std::option::Option<i32>,
16210    // special fields
16211    // @@protoc_insertion_point(special_field:RemoteFortressReader.CasteRaw.special_fields)
16212    pub special_fields: ::protobuf::SpecialFields,
16213}
16214
16215impl<'a> ::std::default::Default for &'a CasteRaw {
16216    fn default() -> &'a CasteRaw {
16217        <CasteRaw as ::protobuf::Message>::default_instance()
16218    }
16219}
16220
16221impl CasteRaw {
16222    pub fn new() -> CasteRaw {
16223        ::std::default::Default::default()
16224    }
16225
16226    // optional int32 index = 1;
16227
16228    pub fn index(&self) -> i32 {
16229        self.index.unwrap_or(0)
16230    }
16231
16232    pub fn clear_index(&mut self) {
16233        self.index = ::std::option::Option::None;
16234    }
16235
16236    pub fn has_index(&self) -> bool {
16237        self.index.is_some()
16238    }
16239
16240    // Param is passed by value, moved
16241    pub fn set_index(&mut self, v: i32) {
16242        self.index = ::std::option::Option::Some(v);
16243    }
16244
16245    // optional string caste_id = 2;
16246
16247    pub fn caste_id(&self) -> &str {
16248        match self.caste_id.as_ref() {
16249            Some(v) => v,
16250            None => "",
16251        }
16252    }
16253
16254    pub fn clear_caste_id(&mut self) {
16255        self.caste_id = ::std::option::Option::None;
16256    }
16257
16258    pub fn has_caste_id(&self) -> bool {
16259        self.caste_id.is_some()
16260    }
16261
16262    // Param is passed by value, moved
16263    pub fn set_caste_id(&mut self, v: ::std::string::String) {
16264        self.caste_id = ::std::option::Option::Some(v);
16265    }
16266
16267    // Mutable pointer to the field.
16268    // If field is not initialized, it is initialized with default value first.
16269    pub fn mut_caste_id(&mut self) -> &mut ::std::string::String {
16270        if self.caste_id.is_none() {
16271            self.caste_id = ::std::option::Option::Some(::std::string::String::new());
16272        }
16273        self.caste_id.as_mut().unwrap()
16274    }
16275
16276    // Take field
16277    pub fn take_caste_id(&mut self) -> ::std::string::String {
16278        self.caste_id.take().unwrap_or_else(|| ::std::string::String::new())
16279    }
16280
16281    // optional int32 gender = 6;
16282
16283    pub fn gender(&self) -> i32 {
16284        self.gender.unwrap_or(0)
16285    }
16286
16287    pub fn clear_gender(&mut self) {
16288        self.gender = ::std::option::Option::None;
16289    }
16290
16291    pub fn has_gender(&self) -> bool {
16292        self.gender.is_some()
16293    }
16294
16295    // Param is passed by value, moved
16296    pub fn set_gender(&mut self, v: i32) {
16297        self.gender = ::std::option::Option::Some(v);
16298    }
16299
16300    // optional int32 total_relsize = 8;
16301
16302    pub fn total_relsize(&self) -> i32 {
16303        self.total_relsize.unwrap_or(0)
16304    }
16305
16306    pub fn clear_total_relsize(&mut self) {
16307        self.total_relsize = ::std::option::Option::None;
16308    }
16309
16310    pub fn has_total_relsize(&self) -> bool {
16311        self.total_relsize.is_some()
16312    }
16313
16314    // Param is passed by value, moved
16315    pub fn set_total_relsize(&mut self, v: i32) {
16316        self.total_relsize = ::std::option::Option::Some(v);
16317    }
16318
16319    // optional string description = 15;
16320
16321    pub fn description(&self) -> &str {
16322        match self.description.as_ref() {
16323            Some(v) => v,
16324            None => "",
16325        }
16326    }
16327
16328    pub fn clear_description(&mut self) {
16329        self.description = ::std::option::Option::None;
16330    }
16331
16332    pub fn has_description(&self) -> bool {
16333        self.description.is_some()
16334    }
16335
16336    // Param is passed by value, moved
16337    pub fn set_description(&mut self, v: ::std::string::String) {
16338        self.description = ::std::option::Option::Some(v);
16339    }
16340
16341    // Mutable pointer to the field.
16342    // If field is not initialized, it is initialized with default value first.
16343    pub fn mut_description(&mut self) -> &mut ::std::string::String {
16344        if self.description.is_none() {
16345            self.description = ::std::option::Option::Some(::std::string::String::new());
16346        }
16347        self.description.as_mut().unwrap()
16348    }
16349
16350    // Take field
16351    pub fn take_description(&mut self) -> ::std::string::String {
16352        self.description.take().unwrap_or_else(|| ::std::string::String::new())
16353    }
16354
16355    // optional int32 adult_size = 16;
16356
16357    pub fn adult_size(&self) -> i32 {
16358        self.adult_size.unwrap_or(0)
16359    }
16360
16361    pub fn clear_adult_size(&mut self) {
16362        self.adult_size = ::std::option::Option::None;
16363    }
16364
16365    pub fn has_adult_size(&self) -> bool {
16366        self.adult_size.is_some()
16367    }
16368
16369    // Param is passed by value, moved
16370    pub fn set_adult_size(&mut self, v: i32) {
16371        self.adult_size = ::std::option::Option::Some(v);
16372    }
16373
16374    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
16375        let mut fields = ::std::vec::Vec::with_capacity(16);
16376        let mut oneofs = ::std::vec::Vec::with_capacity(0);
16377        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16378            "index",
16379            |m: &CasteRaw| { &m.index },
16380            |m: &mut CasteRaw| { &mut m.index },
16381        ));
16382        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16383            "caste_id",
16384            |m: &CasteRaw| { &m.caste_id },
16385            |m: &mut CasteRaw| { &mut m.caste_id },
16386        ));
16387        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16388            "caste_name",
16389            |m: &CasteRaw| { &m.caste_name },
16390            |m: &mut CasteRaw| { &mut m.caste_name },
16391        ));
16392        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16393            "baby_name",
16394            |m: &CasteRaw| { &m.baby_name },
16395            |m: &mut CasteRaw| { &mut m.baby_name },
16396        ));
16397        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16398            "child_name",
16399            |m: &CasteRaw| { &m.child_name },
16400            |m: &mut CasteRaw| { &mut m.child_name },
16401        ));
16402        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16403            "gender",
16404            |m: &CasteRaw| { &m.gender },
16405            |m: &mut CasteRaw| { &mut m.gender },
16406        ));
16407        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16408            "body_parts",
16409            |m: &CasteRaw| { &m.body_parts },
16410            |m: &mut CasteRaw| { &mut m.body_parts },
16411        ));
16412        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16413            "total_relsize",
16414            |m: &CasteRaw| { &m.total_relsize },
16415            |m: &mut CasteRaw| { &mut m.total_relsize },
16416        ));
16417        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16418            "modifiers",
16419            |m: &CasteRaw| { &m.modifiers },
16420            |m: &mut CasteRaw| { &mut m.modifiers },
16421        ));
16422        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16423            "modifier_idx",
16424            |m: &CasteRaw| { &m.modifier_idx },
16425            |m: &mut CasteRaw| { &mut m.modifier_idx },
16426        ));
16427        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16428            "part_idx",
16429            |m: &CasteRaw| { &m.part_idx },
16430            |m: &mut CasteRaw| { &mut m.part_idx },
16431        ));
16432        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16433            "layer_idx",
16434            |m: &CasteRaw| { &m.layer_idx },
16435            |m: &mut CasteRaw| { &mut m.layer_idx },
16436        ));
16437        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16438            "body_appearance_modifiers",
16439            |m: &CasteRaw| { &m.body_appearance_modifiers },
16440            |m: &mut CasteRaw| { &mut m.body_appearance_modifiers },
16441        ));
16442        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16443            "color_modifiers",
16444            |m: &CasteRaw| { &m.color_modifiers },
16445            |m: &mut CasteRaw| { &mut m.color_modifiers },
16446        ));
16447        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16448            "description",
16449            |m: &CasteRaw| { &m.description },
16450            |m: &mut CasteRaw| { &mut m.description },
16451        ));
16452        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16453            "adult_size",
16454            |m: &CasteRaw| { &m.adult_size },
16455            |m: &mut CasteRaw| { &mut m.adult_size },
16456        ));
16457        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<CasteRaw>(
16458            "CasteRaw",
16459            fields,
16460            oneofs,
16461        )
16462    }
16463}
16464
16465impl ::protobuf::Message for CasteRaw {
16466    const NAME: &'static str = "CasteRaw";
16467
16468    fn is_initialized(&self) -> bool {
16469        for v in &self.body_parts {
16470            if !v.is_initialized() {
16471                return false;
16472            }
16473        };
16474        for v in &self.modifiers {
16475            if !v.is_initialized() {
16476                return false;
16477            }
16478        };
16479        for v in &self.body_appearance_modifiers {
16480            if !v.is_initialized() {
16481                return false;
16482            }
16483        };
16484        for v in &self.color_modifiers {
16485            if !v.is_initialized() {
16486                return false;
16487            }
16488        };
16489        true
16490    }
16491
16492    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
16493        while let Some(tag) = is.read_raw_tag_or_eof()? {
16494            match tag {
16495                8 => {
16496                    self.index = ::std::option::Option::Some(is.read_int32()?);
16497                },
16498                18 => {
16499                    self.caste_id = ::std::option::Option::Some(is.read_string()?);
16500                },
16501                26 => {
16502                    self.caste_name.push(is.read_string()?);
16503                },
16504                34 => {
16505                    self.baby_name.push(is.read_string()?);
16506                },
16507                42 => {
16508                    self.child_name.push(is.read_string()?);
16509                },
16510                48 => {
16511                    self.gender = ::std::option::Option::Some(is.read_int32()?);
16512                },
16513                58 => {
16514                    self.body_parts.push(is.read_message()?);
16515                },
16516                64 => {
16517                    self.total_relsize = ::std::option::Option::Some(is.read_int32()?);
16518                },
16519                74 => {
16520                    self.modifiers.push(is.read_message()?);
16521                },
16522                82 => {
16523                    is.read_repeated_packed_int32_into(&mut self.modifier_idx)?;
16524                },
16525                80 => {
16526                    self.modifier_idx.push(is.read_int32()?);
16527                },
16528                90 => {
16529                    is.read_repeated_packed_int32_into(&mut self.part_idx)?;
16530                },
16531                88 => {
16532                    self.part_idx.push(is.read_int32()?);
16533                },
16534                98 => {
16535                    is.read_repeated_packed_int32_into(&mut self.layer_idx)?;
16536                },
16537                96 => {
16538                    self.layer_idx.push(is.read_int32()?);
16539                },
16540                106 => {
16541                    self.body_appearance_modifiers.push(is.read_message()?);
16542                },
16543                114 => {
16544                    self.color_modifiers.push(is.read_message()?);
16545                },
16546                122 => {
16547                    self.description = ::std::option::Option::Some(is.read_string()?);
16548                },
16549                128 => {
16550                    self.adult_size = ::std::option::Option::Some(is.read_int32()?);
16551                },
16552                tag => {
16553                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
16554                },
16555            };
16556        }
16557        ::std::result::Result::Ok(())
16558    }
16559
16560    // Compute sizes of nested messages
16561    #[allow(unused_variables)]
16562    fn compute_size(&self) -> u64 {
16563        let mut my_size = 0;
16564        if let Some(v) = self.index {
16565            my_size += ::protobuf::rt::int32_size(1, v);
16566        }
16567        if let Some(v) = self.caste_id.as_ref() {
16568            my_size += ::protobuf::rt::string_size(2, &v);
16569        }
16570        for value in &self.caste_name {
16571            my_size += ::protobuf::rt::string_size(3, &value);
16572        };
16573        for value in &self.baby_name {
16574            my_size += ::protobuf::rt::string_size(4, &value);
16575        };
16576        for value in &self.child_name {
16577            my_size += ::protobuf::rt::string_size(5, &value);
16578        };
16579        if let Some(v) = self.gender {
16580            my_size += ::protobuf::rt::int32_size(6, v);
16581        }
16582        for value in &self.body_parts {
16583            let len = value.compute_size();
16584            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
16585        };
16586        if let Some(v) = self.total_relsize {
16587            my_size += ::protobuf::rt::int32_size(8, v);
16588        }
16589        for value in &self.modifiers {
16590            let len = value.compute_size();
16591            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
16592        };
16593        for value in &self.modifier_idx {
16594            my_size += ::protobuf::rt::int32_size(10, *value);
16595        };
16596        for value in &self.part_idx {
16597            my_size += ::protobuf::rt::int32_size(11, *value);
16598        };
16599        for value in &self.layer_idx {
16600            my_size += ::protobuf::rt::int32_size(12, *value);
16601        };
16602        for value in &self.body_appearance_modifiers {
16603            let len = value.compute_size();
16604            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
16605        };
16606        for value in &self.color_modifiers {
16607            let len = value.compute_size();
16608            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
16609        };
16610        if let Some(v) = self.description.as_ref() {
16611            my_size += ::protobuf::rt::string_size(15, &v);
16612        }
16613        if let Some(v) = self.adult_size {
16614            my_size += ::protobuf::rt::int32_size(16, v);
16615        }
16616        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
16617        self.special_fields.cached_size().set(my_size as u32);
16618        my_size
16619    }
16620
16621    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
16622        if let Some(v) = self.index {
16623            os.write_int32(1, v)?;
16624        }
16625        if let Some(v) = self.caste_id.as_ref() {
16626            os.write_string(2, v)?;
16627        }
16628        for v in &self.caste_name {
16629            os.write_string(3, &v)?;
16630        };
16631        for v in &self.baby_name {
16632            os.write_string(4, &v)?;
16633        };
16634        for v in &self.child_name {
16635            os.write_string(5, &v)?;
16636        };
16637        if let Some(v) = self.gender {
16638            os.write_int32(6, v)?;
16639        }
16640        for v in &self.body_parts {
16641            ::protobuf::rt::write_message_field_with_cached_size(7, v, os)?;
16642        };
16643        if let Some(v) = self.total_relsize {
16644            os.write_int32(8, v)?;
16645        }
16646        for v in &self.modifiers {
16647            ::protobuf::rt::write_message_field_with_cached_size(9, v, os)?;
16648        };
16649        for v in &self.modifier_idx {
16650            os.write_int32(10, *v)?;
16651        };
16652        for v in &self.part_idx {
16653            os.write_int32(11, *v)?;
16654        };
16655        for v in &self.layer_idx {
16656            os.write_int32(12, *v)?;
16657        };
16658        for v in &self.body_appearance_modifiers {
16659            ::protobuf::rt::write_message_field_with_cached_size(13, v, os)?;
16660        };
16661        for v in &self.color_modifiers {
16662            ::protobuf::rt::write_message_field_with_cached_size(14, v, os)?;
16663        };
16664        if let Some(v) = self.description.as_ref() {
16665            os.write_string(15, v)?;
16666        }
16667        if let Some(v) = self.adult_size {
16668            os.write_int32(16, v)?;
16669        }
16670        os.write_unknown_fields(self.special_fields.unknown_fields())?;
16671        ::std::result::Result::Ok(())
16672    }
16673
16674    fn special_fields(&self) -> &::protobuf::SpecialFields {
16675        &self.special_fields
16676    }
16677
16678    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
16679        &mut self.special_fields
16680    }
16681
16682    fn new() -> CasteRaw {
16683        CasteRaw::new()
16684    }
16685
16686    fn clear(&mut self) {
16687        self.index = ::std::option::Option::None;
16688        self.caste_id = ::std::option::Option::None;
16689        self.caste_name.clear();
16690        self.baby_name.clear();
16691        self.child_name.clear();
16692        self.gender = ::std::option::Option::None;
16693        self.body_parts.clear();
16694        self.total_relsize = ::std::option::Option::None;
16695        self.modifiers.clear();
16696        self.modifier_idx.clear();
16697        self.part_idx.clear();
16698        self.layer_idx.clear();
16699        self.body_appearance_modifiers.clear();
16700        self.color_modifiers.clear();
16701        self.description = ::std::option::Option::None;
16702        self.adult_size = ::std::option::Option::None;
16703        self.special_fields.clear();
16704    }
16705
16706    fn default_instance() -> &'static CasteRaw {
16707        static instance: CasteRaw = CasteRaw {
16708            index: ::std::option::Option::None,
16709            caste_id: ::std::option::Option::None,
16710            caste_name: ::std::vec::Vec::new(),
16711            baby_name: ::std::vec::Vec::new(),
16712            child_name: ::std::vec::Vec::new(),
16713            gender: ::std::option::Option::None,
16714            body_parts: ::std::vec::Vec::new(),
16715            total_relsize: ::std::option::Option::None,
16716            modifiers: ::std::vec::Vec::new(),
16717            modifier_idx: ::std::vec::Vec::new(),
16718            part_idx: ::std::vec::Vec::new(),
16719            layer_idx: ::std::vec::Vec::new(),
16720            body_appearance_modifiers: ::std::vec::Vec::new(),
16721            color_modifiers: ::std::vec::Vec::new(),
16722            description: ::std::option::Option::None,
16723            adult_size: ::std::option::Option::None,
16724            special_fields: ::protobuf::SpecialFields::new(),
16725        };
16726        &instance
16727    }
16728}
16729
16730impl ::protobuf::MessageFull for CasteRaw {
16731    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
16732        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
16733        descriptor.get(|| file_descriptor().message_by_package_relative_name("CasteRaw").unwrap()).clone()
16734    }
16735}
16736
16737impl ::std::fmt::Display for CasteRaw {
16738    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16739        ::protobuf::text_format::fmt(self, f)
16740    }
16741}
16742
16743impl ::protobuf::reflect::ProtobufValue for CasteRaw {
16744    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
16745}
16746
16747// @@protoc_insertion_point(message:RemoteFortressReader.CreatureRaw)
16748#[derive(PartialEq,Clone,Default,Debug)]
16749pub struct CreatureRaw {
16750    // message fields
16751    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.index)
16752    pub index: ::std::option::Option<i32>,
16753    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.creature_id)
16754    pub creature_id: ::std::option::Option<::std::string::String>,
16755    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.name)
16756    pub name: ::std::vec::Vec<::std::string::String>,
16757    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.general_baby_name)
16758    pub general_baby_name: ::std::vec::Vec<::std::string::String>,
16759    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.general_child_name)
16760    pub general_child_name: ::std::vec::Vec<::std::string::String>,
16761    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.creature_tile)
16762    pub creature_tile: ::std::option::Option<i32>,
16763    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.creature_soldier_tile)
16764    pub creature_soldier_tile: ::std::option::Option<i32>,
16765    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.color)
16766    pub color: ::protobuf::MessageField<ColorDefinition>,
16767    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.adultsize)
16768    pub adultsize: ::std::option::Option<i32>,
16769    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.caste)
16770    pub caste: ::std::vec::Vec<CasteRaw>,
16771    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.tissues)
16772    pub tissues: ::std::vec::Vec<TissueRaw>,
16773    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.flags)
16774    pub flags: ::std::vec::Vec<bool>,
16775    // special fields
16776    // @@protoc_insertion_point(special_field:RemoteFortressReader.CreatureRaw.special_fields)
16777    pub special_fields: ::protobuf::SpecialFields,
16778}
16779
16780impl<'a> ::std::default::Default for &'a CreatureRaw {
16781    fn default() -> &'a CreatureRaw {
16782        <CreatureRaw as ::protobuf::Message>::default_instance()
16783    }
16784}
16785
16786impl CreatureRaw {
16787    pub fn new() -> CreatureRaw {
16788        ::std::default::Default::default()
16789    }
16790
16791    // optional int32 index = 1;
16792
16793    pub fn index(&self) -> i32 {
16794        self.index.unwrap_or(0)
16795    }
16796
16797    pub fn clear_index(&mut self) {
16798        self.index = ::std::option::Option::None;
16799    }
16800
16801    pub fn has_index(&self) -> bool {
16802        self.index.is_some()
16803    }
16804
16805    // Param is passed by value, moved
16806    pub fn set_index(&mut self, v: i32) {
16807        self.index = ::std::option::Option::Some(v);
16808    }
16809
16810    // optional string creature_id = 2;
16811
16812    pub fn creature_id(&self) -> &str {
16813        match self.creature_id.as_ref() {
16814            Some(v) => v,
16815            None => "",
16816        }
16817    }
16818
16819    pub fn clear_creature_id(&mut self) {
16820        self.creature_id = ::std::option::Option::None;
16821    }
16822
16823    pub fn has_creature_id(&self) -> bool {
16824        self.creature_id.is_some()
16825    }
16826
16827    // Param is passed by value, moved
16828    pub fn set_creature_id(&mut self, v: ::std::string::String) {
16829        self.creature_id = ::std::option::Option::Some(v);
16830    }
16831
16832    // Mutable pointer to the field.
16833    // If field is not initialized, it is initialized with default value first.
16834    pub fn mut_creature_id(&mut self) -> &mut ::std::string::String {
16835        if self.creature_id.is_none() {
16836            self.creature_id = ::std::option::Option::Some(::std::string::String::new());
16837        }
16838        self.creature_id.as_mut().unwrap()
16839    }
16840
16841    // Take field
16842    pub fn take_creature_id(&mut self) -> ::std::string::String {
16843        self.creature_id.take().unwrap_or_else(|| ::std::string::String::new())
16844    }
16845
16846    // optional int32 creature_tile = 6;
16847
16848    pub fn creature_tile(&self) -> i32 {
16849        self.creature_tile.unwrap_or(0)
16850    }
16851
16852    pub fn clear_creature_tile(&mut self) {
16853        self.creature_tile = ::std::option::Option::None;
16854    }
16855
16856    pub fn has_creature_tile(&self) -> bool {
16857        self.creature_tile.is_some()
16858    }
16859
16860    // Param is passed by value, moved
16861    pub fn set_creature_tile(&mut self, v: i32) {
16862        self.creature_tile = ::std::option::Option::Some(v);
16863    }
16864
16865    // optional int32 creature_soldier_tile = 7;
16866
16867    pub fn creature_soldier_tile(&self) -> i32 {
16868        self.creature_soldier_tile.unwrap_or(0)
16869    }
16870
16871    pub fn clear_creature_soldier_tile(&mut self) {
16872        self.creature_soldier_tile = ::std::option::Option::None;
16873    }
16874
16875    pub fn has_creature_soldier_tile(&self) -> bool {
16876        self.creature_soldier_tile.is_some()
16877    }
16878
16879    // Param is passed by value, moved
16880    pub fn set_creature_soldier_tile(&mut self, v: i32) {
16881        self.creature_soldier_tile = ::std::option::Option::Some(v);
16882    }
16883
16884    // optional int32 adultsize = 9;
16885
16886    pub fn adultsize(&self) -> i32 {
16887        self.adultsize.unwrap_or(0)
16888    }
16889
16890    pub fn clear_adultsize(&mut self) {
16891        self.adultsize = ::std::option::Option::None;
16892    }
16893
16894    pub fn has_adultsize(&self) -> bool {
16895        self.adultsize.is_some()
16896    }
16897
16898    // Param is passed by value, moved
16899    pub fn set_adultsize(&mut self, v: i32) {
16900        self.adultsize = ::std::option::Option::Some(v);
16901    }
16902
16903    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
16904        let mut fields = ::std::vec::Vec::with_capacity(12);
16905        let mut oneofs = ::std::vec::Vec::with_capacity(0);
16906        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16907            "index",
16908            |m: &CreatureRaw| { &m.index },
16909            |m: &mut CreatureRaw| { &mut m.index },
16910        ));
16911        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16912            "creature_id",
16913            |m: &CreatureRaw| { &m.creature_id },
16914            |m: &mut CreatureRaw| { &mut m.creature_id },
16915        ));
16916        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16917            "name",
16918            |m: &CreatureRaw| { &m.name },
16919            |m: &mut CreatureRaw| { &mut m.name },
16920        ));
16921        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16922            "general_baby_name",
16923            |m: &CreatureRaw| { &m.general_baby_name },
16924            |m: &mut CreatureRaw| { &mut m.general_baby_name },
16925        ));
16926        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16927            "general_child_name",
16928            |m: &CreatureRaw| { &m.general_child_name },
16929            |m: &mut CreatureRaw| { &mut m.general_child_name },
16930        ));
16931        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16932            "creature_tile",
16933            |m: &CreatureRaw| { &m.creature_tile },
16934            |m: &mut CreatureRaw| { &mut m.creature_tile },
16935        ));
16936        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16937            "creature_soldier_tile",
16938            |m: &CreatureRaw| { &m.creature_soldier_tile },
16939            |m: &mut CreatureRaw| { &mut m.creature_soldier_tile },
16940        ));
16941        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ColorDefinition>(
16942            "color",
16943            |m: &CreatureRaw| { &m.color },
16944            |m: &mut CreatureRaw| { &mut m.color },
16945        ));
16946        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16947            "adultsize",
16948            |m: &CreatureRaw| { &m.adultsize },
16949            |m: &mut CreatureRaw| { &mut m.adultsize },
16950        ));
16951        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16952            "caste",
16953            |m: &CreatureRaw| { &m.caste },
16954            |m: &mut CreatureRaw| { &mut m.caste },
16955        ));
16956        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16957            "tissues",
16958            |m: &CreatureRaw| { &m.tissues },
16959            |m: &mut CreatureRaw| { &mut m.tissues },
16960        ));
16961        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16962            "flags",
16963            |m: &CreatureRaw| { &m.flags },
16964            |m: &mut CreatureRaw| { &mut m.flags },
16965        ));
16966        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<CreatureRaw>(
16967            "CreatureRaw",
16968            fields,
16969            oneofs,
16970        )
16971    }
16972}
16973
16974impl ::protobuf::Message for CreatureRaw {
16975    const NAME: &'static str = "CreatureRaw";
16976
16977    fn is_initialized(&self) -> bool {
16978        for v in &self.color {
16979            if !v.is_initialized() {
16980                return false;
16981            }
16982        };
16983        for v in &self.caste {
16984            if !v.is_initialized() {
16985                return false;
16986            }
16987        };
16988        for v in &self.tissues {
16989            if !v.is_initialized() {
16990                return false;
16991            }
16992        };
16993        true
16994    }
16995
16996    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
16997        while let Some(tag) = is.read_raw_tag_or_eof()? {
16998            match tag {
16999                8 => {
17000                    self.index = ::std::option::Option::Some(is.read_int32()?);
17001                },
17002                18 => {
17003                    self.creature_id = ::std::option::Option::Some(is.read_string()?);
17004                },
17005                26 => {
17006                    self.name.push(is.read_string()?);
17007                },
17008                34 => {
17009                    self.general_baby_name.push(is.read_string()?);
17010                },
17011                42 => {
17012                    self.general_child_name.push(is.read_string()?);
17013                },
17014                48 => {
17015                    self.creature_tile = ::std::option::Option::Some(is.read_int32()?);
17016                },
17017                56 => {
17018                    self.creature_soldier_tile = ::std::option::Option::Some(is.read_int32()?);
17019                },
17020                66 => {
17021                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.color)?;
17022                },
17023                72 => {
17024                    self.adultsize = ::std::option::Option::Some(is.read_int32()?);
17025                },
17026                82 => {
17027                    self.caste.push(is.read_message()?);
17028                },
17029                90 => {
17030                    self.tissues.push(is.read_message()?);
17031                },
17032                98 => {
17033                    is.read_repeated_packed_bool_into(&mut self.flags)?;
17034                },
17035                96 => {
17036                    self.flags.push(is.read_bool()?);
17037                },
17038                tag => {
17039                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
17040                },
17041            };
17042        }
17043        ::std::result::Result::Ok(())
17044    }
17045
17046    // Compute sizes of nested messages
17047    #[allow(unused_variables)]
17048    fn compute_size(&self) -> u64 {
17049        let mut my_size = 0;
17050        if let Some(v) = self.index {
17051            my_size += ::protobuf::rt::int32_size(1, v);
17052        }
17053        if let Some(v) = self.creature_id.as_ref() {
17054            my_size += ::protobuf::rt::string_size(2, &v);
17055        }
17056        for value in &self.name {
17057            my_size += ::protobuf::rt::string_size(3, &value);
17058        };
17059        for value in &self.general_baby_name {
17060            my_size += ::protobuf::rt::string_size(4, &value);
17061        };
17062        for value in &self.general_child_name {
17063            my_size += ::protobuf::rt::string_size(5, &value);
17064        };
17065        if let Some(v) = self.creature_tile {
17066            my_size += ::protobuf::rt::int32_size(6, v);
17067        }
17068        if let Some(v) = self.creature_soldier_tile {
17069            my_size += ::protobuf::rt::int32_size(7, v);
17070        }
17071        if let Some(v) = self.color.as_ref() {
17072            let len = v.compute_size();
17073            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17074        }
17075        if let Some(v) = self.adultsize {
17076            my_size += ::protobuf::rt::int32_size(9, v);
17077        }
17078        for value in &self.caste {
17079            let len = value.compute_size();
17080            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17081        };
17082        for value in &self.tissues {
17083            let len = value.compute_size();
17084            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17085        };
17086        my_size += 2 * self.flags.len() as u64;
17087        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
17088        self.special_fields.cached_size().set(my_size as u32);
17089        my_size
17090    }
17091
17092    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
17093        if let Some(v) = self.index {
17094            os.write_int32(1, v)?;
17095        }
17096        if let Some(v) = self.creature_id.as_ref() {
17097            os.write_string(2, v)?;
17098        }
17099        for v in &self.name {
17100            os.write_string(3, &v)?;
17101        };
17102        for v in &self.general_baby_name {
17103            os.write_string(4, &v)?;
17104        };
17105        for v in &self.general_child_name {
17106            os.write_string(5, &v)?;
17107        };
17108        if let Some(v) = self.creature_tile {
17109            os.write_int32(6, v)?;
17110        }
17111        if let Some(v) = self.creature_soldier_tile {
17112            os.write_int32(7, v)?;
17113        }
17114        if let Some(v) = self.color.as_ref() {
17115            ::protobuf::rt::write_message_field_with_cached_size(8, v, os)?;
17116        }
17117        if let Some(v) = self.adultsize {
17118            os.write_int32(9, v)?;
17119        }
17120        for v in &self.caste {
17121            ::protobuf::rt::write_message_field_with_cached_size(10, v, os)?;
17122        };
17123        for v in &self.tissues {
17124            ::protobuf::rt::write_message_field_with_cached_size(11, v, os)?;
17125        };
17126        for v in &self.flags {
17127            os.write_bool(12, *v)?;
17128        };
17129        os.write_unknown_fields(self.special_fields.unknown_fields())?;
17130        ::std::result::Result::Ok(())
17131    }
17132
17133    fn special_fields(&self) -> &::protobuf::SpecialFields {
17134        &self.special_fields
17135    }
17136
17137    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
17138        &mut self.special_fields
17139    }
17140
17141    fn new() -> CreatureRaw {
17142        CreatureRaw::new()
17143    }
17144
17145    fn clear(&mut self) {
17146        self.index = ::std::option::Option::None;
17147        self.creature_id = ::std::option::Option::None;
17148        self.name.clear();
17149        self.general_baby_name.clear();
17150        self.general_child_name.clear();
17151        self.creature_tile = ::std::option::Option::None;
17152        self.creature_soldier_tile = ::std::option::Option::None;
17153        self.color.clear();
17154        self.adultsize = ::std::option::Option::None;
17155        self.caste.clear();
17156        self.tissues.clear();
17157        self.flags.clear();
17158        self.special_fields.clear();
17159    }
17160
17161    fn default_instance() -> &'static CreatureRaw {
17162        static instance: CreatureRaw = CreatureRaw {
17163            index: ::std::option::Option::None,
17164            creature_id: ::std::option::Option::None,
17165            name: ::std::vec::Vec::new(),
17166            general_baby_name: ::std::vec::Vec::new(),
17167            general_child_name: ::std::vec::Vec::new(),
17168            creature_tile: ::std::option::Option::None,
17169            creature_soldier_tile: ::std::option::Option::None,
17170            color: ::protobuf::MessageField::none(),
17171            adultsize: ::std::option::Option::None,
17172            caste: ::std::vec::Vec::new(),
17173            tissues: ::std::vec::Vec::new(),
17174            flags: ::std::vec::Vec::new(),
17175            special_fields: ::protobuf::SpecialFields::new(),
17176        };
17177        &instance
17178    }
17179}
17180
17181impl ::protobuf::MessageFull for CreatureRaw {
17182    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
17183        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
17184        descriptor.get(|| file_descriptor().message_by_package_relative_name("CreatureRaw").unwrap()).clone()
17185    }
17186}
17187
17188impl ::std::fmt::Display for CreatureRaw {
17189    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17190        ::protobuf::text_format::fmt(self, f)
17191    }
17192}
17193
17194impl ::protobuf::reflect::ProtobufValue for CreatureRaw {
17195    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
17196}
17197
17198// @@protoc_insertion_point(message:RemoteFortressReader.CreatureRawList)
17199#[derive(PartialEq,Clone,Default,Debug)]
17200pub struct CreatureRawList {
17201    // message fields
17202    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRawList.creature_raws)
17203    pub creature_raws: ::std::vec::Vec<CreatureRaw>,
17204    // special fields
17205    // @@protoc_insertion_point(special_field:RemoteFortressReader.CreatureRawList.special_fields)
17206    pub special_fields: ::protobuf::SpecialFields,
17207}
17208
17209impl<'a> ::std::default::Default for &'a CreatureRawList {
17210    fn default() -> &'a CreatureRawList {
17211        <CreatureRawList as ::protobuf::Message>::default_instance()
17212    }
17213}
17214
17215impl CreatureRawList {
17216    pub fn new() -> CreatureRawList {
17217        ::std::default::Default::default()
17218    }
17219
17220    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
17221        let mut fields = ::std::vec::Vec::with_capacity(1);
17222        let mut oneofs = ::std::vec::Vec::with_capacity(0);
17223        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
17224            "creature_raws",
17225            |m: &CreatureRawList| { &m.creature_raws },
17226            |m: &mut CreatureRawList| { &mut m.creature_raws },
17227        ));
17228        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<CreatureRawList>(
17229            "CreatureRawList",
17230            fields,
17231            oneofs,
17232        )
17233    }
17234}
17235
17236impl ::protobuf::Message for CreatureRawList {
17237    const NAME: &'static str = "CreatureRawList";
17238
17239    fn is_initialized(&self) -> bool {
17240        for v in &self.creature_raws {
17241            if !v.is_initialized() {
17242                return false;
17243            }
17244        };
17245        true
17246    }
17247
17248    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
17249        while let Some(tag) = is.read_raw_tag_or_eof()? {
17250            match tag {
17251                10 => {
17252                    self.creature_raws.push(is.read_message()?);
17253                },
17254                tag => {
17255                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
17256                },
17257            };
17258        }
17259        ::std::result::Result::Ok(())
17260    }
17261
17262    // Compute sizes of nested messages
17263    #[allow(unused_variables)]
17264    fn compute_size(&self) -> u64 {
17265        let mut my_size = 0;
17266        for value in &self.creature_raws {
17267            let len = value.compute_size();
17268            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17269        };
17270        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
17271        self.special_fields.cached_size().set(my_size as u32);
17272        my_size
17273    }
17274
17275    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
17276        for v in &self.creature_raws {
17277            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
17278        };
17279        os.write_unknown_fields(self.special_fields.unknown_fields())?;
17280        ::std::result::Result::Ok(())
17281    }
17282
17283    fn special_fields(&self) -> &::protobuf::SpecialFields {
17284        &self.special_fields
17285    }
17286
17287    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
17288        &mut self.special_fields
17289    }
17290
17291    fn new() -> CreatureRawList {
17292        CreatureRawList::new()
17293    }
17294
17295    fn clear(&mut self) {
17296        self.creature_raws.clear();
17297        self.special_fields.clear();
17298    }
17299
17300    fn default_instance() -> &'static CreatureRawList {
17301        static instance: CreatureRawList = CreatureRawList {
17302            creature_raws: ::std::vec::Vec::new(),
17303            special_fields: ::protobuf::SpecialFields::new(),
17304        };
17305        &instance
17306    }
17307}
17308
17309impl ::protobuf::MessageFull for CreatureRawList {
17310    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
17311        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
17312        descriptor.get(|| file_descriptor().message_by_package_relative_name("CreatureRawList").unwrap()).clone()
17313    }
17314}
17315
17316impl ::std::fmt::Display for CreatureRawList {
17317    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17318        ::protobuf::text_format::fmt(self, f)
17319    }
17320}
17321
17322impl ::protobuf::reflect::ProtobufValue for CreatureRawList {
17323    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
17324}
17325
17326// @@protoc_insertion_point(message:RemoteFortressReader.Army)
17327#[derive(PartialEq,Clone,Default,Debug)]
17328pub struct Army {
17329    // message fields
17330    // @@protoc_insertion_point(field:RemoteFortressReader.Army.id)
17331    pub id: ::std::option::Option<i32>,
17332    // @@protoc_insertion_point(field:RemoteFortressReader.Army.pos_x)
17333    pub pos_x: ::std::option::Option<i32>,
17334    // @@protoc_insertion_point(field:RemoteFortressReader.Army.pos_y)
17335    pub pos_y: ::std::option::Option<i32>,
17336    // @@protoc_insertion_point(field:RemoteFortressReader.Army.pos_z)
17337    pub pos_z: ::std::option::Option<i32>,
17338    // @@protoc_insertion_point(field:RemoteFortressReader.Army.leader)
17339    pub leader: ::protobuf::MessageField<UnitDefinition>,
17340    // @@protoc_insertion_point(field:RemoteFortressReader.Army.members)
17341    pub members: ::std::vec::Vec<UnitDefinition>,
17342    // @@protoc_insertion_point(field:RemoteFortressReader.Army.flags)
17343    pub flags: ::std::option::Option<u32>,
17344    // special fields
17345    // @@protoc_insertion_point(special_field:RemoteFortressReader.Army.special_fields)
17346    pub special_fields: ::protobuf::SpecialFields,
17347}
17348
17349impl<'a> ::std::default::Default for &'a Army {
17350    fn default() -> &'a Army {
17351        <Army as ::protobuf::Message>::default_instance()
17352    }
17353}
17354
17355impl Army {
17356    pub fn new() -> Army {
17357        ::std::default::Default::default()
17358    }
17359
17360    // optional int32 id = 1;
17361
17362    pub fn id(&self) -> i32 {
17363        self.id.unwrap_or(0)
17364    }
17365
17366    pub fn clear_id(&mut self) {
17367        self.id = ::std::option::Option::None;
17368    }
17369
17370    pub fn has_id(&self) -> bool {
17371        self.id.is_some()
17372    }
17373
17374    // Param is passed by value, moved
17375    pub fn set_id(&mut self, v: i32) {
17376        self.id = ::std::option::Option::Some(v);
17377    }
17378
17379    // optional int32 pos_x = 2;
17380
17381    pub fn pos_x(&self) -> i32 {
17382        self.pos_x.unwrap_or(0)
17383    }
17384
17385    pub fn clear_pos_x(&mut self) {
17386        self.pos_x = ::std::option::Option::None;
17387    }
17388
17389    pub fn has_pos_x(&self) -> bool {
17390        self.pos_x.is_some()
17391    }
17392
17393    // Param is passed by value, moved
17394    pub fn set_pos_x(&mut self, v: i32) {
17395        self.pos_x = ::std::option::Option::Some(v);
17396    }
17397
17398    // optional int32 pos_y = 3;
17399
17400    pub fn pos_y(&self) -> i32 {
17401        self.pos_y.unwrap_or(0)
17402    }
17403
17404    pub fn clear_pos_y(&mut self) {
17405        self.pos_y = ::std::option::Option::None;
17406    }
17407
17408    pub fn has_pos_y(&self) -> bool {
17409        self.pos_y.is_some()
17410    }
17411
17412    // Param is passed by value, moved
17413    pub fn set_pos_y(&mut self, v: i32) {
17414        self.pos_y = ::std::option::Option::Some(v);
17415    }
17416
17417    // optional int32 pos_z = 4;
17418
17419    pub fn pos_z(&self) -> i32 {
17420        self.pos_z.unwrap_or(0)
17421    }
17422
17423    pub fn clear_pos_z(&mut self) {
17424        self.pos_z = ::std::option::Option::None;
17425    }
17426
17427    pub fn has_pos_z(&self) -> bool {
17428        self.pos_z.is_some()
17429    }
17430
17431    // Param is passed by value, moved
17432    pub fn set_pos_z(&mut self, v: i32) {
17433        self.pos_z = ::std::option::Option::Some(v);
17434    }
17435
17436    // optional uint32 flags = 7;
17437
17438    pub fn flags(&self) -> u32 {
17439        self.flags.unwrap_or(0)
17440    }
17441
17442    pub fn clear_flags(&mut self) {
17443        self.flags = ::std::option::Option::None;
17444    }
17445
17446    pub fn has_flags(&self) -> bool {
17447        self.flags.is_some()
17448    }
17449
17450    // Param is passed by value, moved
17451    pub fn set_flags(&mut self, v: u32) {
17452        self.flags = ::std::option::Option::Some(v);
17453    }
17454
17455    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
17456        let mut fields = ::std::vec::Vec::with_capacity(7);
17457        let mut oneofs = ::std::vec::Vec::with_capacity(0);
17458        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17459            "id",
17460            |m: &Army| { &m.id },
17461            |m: &mut Army| { &mut m.id },
17462        ));
17463        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17464            "pos_x",
17465            |m: &Army| { &m.pos_x },
17466            |m: &mut Army| { &mut m.pos_x },
17467        ));
17468        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17469            "pos_y",
17470            |m: &Army| { &m.pos_y },
17471            |m: &mut Army| { &mut m.pos_y },
17472        ));
17473        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17474            "pos_z",
17475            |m: &Army| { &m.pos_z },
17476            |m: &mut Army| { &mut m.pos_z },
17477        ));
17478        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, UnitDefinition>(
17479            "leader",
17480            |m: &Army| { &m.leader },
17481            |m: &mut Army| { &mut m.leader },
17482        ));
17483        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
17484            "members",
17485            |m: &Army| { &m.members },
17486            |m: &mut Army| { &mut m.members },
17487        ));
17488        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17489            "flags",
17490            |m: &Army| { &m.flags },
17491            |m: &mut Army| { &mut m.flags },
17492        ));
17493        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Army>(
17494            "Army",
17495            fields,
17496            oneofs,
17497        )
17498    }
17499}
17500
17501impl ::protobuf::Message for Army {
17502    const NAME: &'static str = "Army";
17503
17504    fn is_initialized(&self) -> bool {
17505        for v in &self.leader {
17506            if !v.is_initialized() {
17507                return false;
17508            }
17509        };
17510        for v in &self.members {
17511            if !v.is_initialized() {
17512                return false;
17513            }
17514        };
17515        true
17516    }
17517
17518    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
17519        while let Some(tag) = is.read_raw_tag_or_eof()? {
17520            match tag {
17521                8 => {
17522                    self.id = ::std::option::Option::Some(is.read_int32()?);
17523                },
17524                16 => {
17525                    self.pos_x = ::std::option::Option::Some(is.read_int32()?);
17526                },
17527                24 => {
17528                    self.pos_y = ::std::option::Option::Some(is.read_int32()?);
17529                },
17530                32 => {
17531                    self.pos_z = ::std::option::Option::Some(is.read_int32()?);
17532                },
17533                42 => {
17534                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.leader)?;
17535                },
17536                50 => {
17537                    self.members.push(is.read_message()?);
17538                },
17539                56 => {
17540                    self.flags = ::std::option::Option::Some(is.read_uint32()?);
17541                },
17542                tag => {
17543                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
17544                },
17545            };
17546        }
17547        ::std::result::Result::Ok(())
17548    }
17549
17550    // Compute sizes of nested messages
17551    #[allow(unused_variables)]
17552    fn compute_size(&self) -> u64 {
17553        let mut my_size = 0;
17554        if let Some(v) = self.id {
17555            my_size += ::protobuf::rt::int32_size(1, v);
17556        }
17557        if let Some(v) = self.pos_x {
17558            my_size += ::protobuf::rt::int32_size(2, v);
17559        }
17560        if let Some(v) = self.pos_y {
17561            my_size += ::protobuf::rt::int32_size(3, v);
17562        }
17563        if let Some(v) = self.pos_z {
17564            my_size += ::protobuf::rt::int32_size(4, v);
17565        }
17566        if let Some(v) = self.leader.as_ref() {
17567            let len = v.compute_size();
17568            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17569        }
17570        for value in &self.members {
17571            let len = value.compute_size();
17572            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17573        };
17574        if let Some(v) = self.flags {
17575            my_size += ::protobuf::rt::uint32_size(7, v);
17576        }
17577        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
17578        self.special_fields.cached_size().set(my_size as u32);
17579        my_size
17580    }
17581
17582    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
17583        if let Some(v) = self.id {
17584            os.write_int32(1, v)?;
17585        }
17586        if let Some(v) = self.pos_x {
17587            os.write_int32(2, v)?;
17588        }
17589        if let Some(v) = self.pos_y {
17590            os.write_int32(3, v)?;
17591        }
17592        if let Some(v) = self.pos_z {
17593            os.write_int32(4, v)?;
17594        }
17595        if let Some(v) = self.leader.as_ref() {
17596            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
17597        }
17598        for v in &self.members {
17599            ::protobuf::rt::write_message_field_with_cached_size(6, v, os)?;
17600        };
17601        if let Some(v) = self.flags {
17602            os.write_uint32(7, v)?;
17603        }
17604        os.write_unknown_fields(self.special_fields.unknown_fields())?;
17605        ::std::result::Result::Ok(())
17606    }
17607
17608    fn special_fields(&self) -> &::protobuf::SpecialFields {
17609        &self.special_fields
17610    }
17611
17612    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
17613        &mut self.special_fields
17614    }
17615
17616    fn new() -> Army {
17617        Army::new()
17618    }
17619
17620    fn clear(&mut self) {
17621        self.id = ::std::option::Option::None;
17622        self.pos_x = ::std::option::Option::None;
17623        self.pos_y = ::std::option::Option::None;
17624        self.pos_z = ::std::option::Option::None;
17625        self.leader.clear();
17626        self.members.clear();
17627        self.flags = ::std::option::Option::None;
17628        self.special_fields.clear();
17629    }
17630
17631    fn default_instance() -> &'static Army {
17632        static instance: Army = Army {
17633            id: ::std::option::Option::None,
17634            pos_x: ::std::option::Option::None,
17635            pos_y: ::std::option::Option::None,
17636            pos_z: ::std::option::Option::None,
17637            leader: ::protobuf::MessageField::none(),
17638            members: ::std::vec::Vec::new(),
17639            flags: ::std::option::Option::None,
17640            special_fields: ::protobuf::SpecialFields::new(),
17641        };
17642        &instance
17643    }
17644}
17645
17646impl ::protobuf::MessageFull for Army {
17647    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
17648        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
17649        descriptor.get(|| file_descriptor().message_by_package_relative_name("Army").unwrap()).clone()
17650    }
17651}
17652
17653impl ::std::fmt::Display for Army {
17654    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17655        ::protobuf::text_format::fmt(self, f)
17656    }
17657}
17658
17659impl ::protobuf::reflect::ProtobufValue for Army {
17660    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
17661}
17662
17663// @@protoc_insertion_point(message:RemoteFortressReader.ArmyList)
17664#[derive(PartialEq,Clone,Default,Debug)]
17665pub struct ArmyList {
17666    // message fields
17667    // @@protoc_insertion_point(field:RemoteFortressReader.ArmyList.armies)
17668    pub armies: ::std::vec::Vec<Army>,
17669    // special fields
17670    // @@protoc_insertion_point(special_field:RemoteFortressReader.ArmyList.special_fields)
17671    pub special_fields: ::protobuf::SpecialFields,
17672}
17673
17674impl<'a> ::std::default::Default for &'a ArmyList {
17675    fn default() -> &'a ArmyList {
17676        <ArmyList as ::protobuf::Message>::default_instance()
17677    }
17678}
17679
17680impl ArmyList {
17681    pub fn new() -> ArmyList {
17682        ::std::default::Default::default()
17683    }
17684
17685    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
17686        let mut fields = ::std::vec::Vec::with_capacity(1);
17687        let mut oneofs = ::std::vec::Vec::with_capacity(0);
17688        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
17689            "armies",
17690            |m: &ArmyList| { &m.armies },
17691            |m: &mut ArmyList| { &mut m.armies },
17692        ));
17693        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ArmyList>(
17694            "ArmyList",
17695            fields,
17696            oneofs,
17697        )
17698    }
17699}
17700
17701impl ::protobuf::Message for ArmyList {
17702    const NAME: &'static str = "ArmyList";
17703
17704    fn is_initialized(&self) -> bool {
17705        for v in &self.armies {
17706            if !v.is_initialized() {
17707                return false;
17708            }
17709        };
17710        true
17711    }
17712
17713    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
17714        while let Some(tag) = is.read_raw_tag_or_eof()? {
17715            match tag {
17716                10 => {
17717                    self.armies.push(is.read_message()?);
17718                },
17719                tag => {
17720                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
17721                },
17722            };
17723        }
17724        ::std::result::Result::Ok(())
17725    }
17726
17727    // Compute sizes of nested messages
17728    #[allow(unused_variables)]
17729    fn compute_size(&self) -> u64 {
17730        let mut my_size = 0;
17731        for value in &self.armies {
17732            let len = value.compute_size();
17733            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17734        };
17735        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
17736        self.special_fields.cached_size().set(my_size as u32);
17737        my_size
17738    }
17739
17740    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
17741        for v in &self.armies {
17742            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
17743        };
17744        os.write_unknown_fields(self.special_fields.unknown_fields())?;
17745        ::std::result::Result::Ok(())
17746    }
17747
17748    fn special_fields(&self) -> &::protobuf::SpecialFields {
17749        &self.special_fields
17750    }
17751
17752    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
17753        &mut self.special_fields
17754    }
17755
17756    fn new() -> ArmyList {
17757        ArmyList::new()
17758    }
17759
17760    fn clear(&mut self) {
17761        self.armies.clear();
17762        self.special_fields.clear();
17763    }
17764
17765    fn default_instance() -> &'static ArmyList {
17766        static instance: ArmyList = ArmyList {
17767            armies: ::std::vec::Vec::new(),
17768            special_fields: ::protobuf::SpecialFields::new(),
17769        };
17770        &instance
17771    }
17772}
17773
17774impl ::protobuf::MessageFull for ArmyList {
17775    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
17776        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
17777        descriptor.get(|| file_descriptor().message_by_package_relative_name("ArmyList").unwrap()).clone()
17778    }
17779}
17780
17781impl ::std::fmt::Display for ArmyList {
17782    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17783        ::protobuf::text_format::fmt(self, f)
17784    }
17785}
17786
17787impl ::protobuf::reflect::ProtobufValue for ArmyList {
17788    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
17789}
17790
17791// @@protoc_insertion_point(message:RemoteFortressReader.GrowthPrint)
17792#[derive(PartialEq,Clone,Default,Debug)]
17793pub struct GrowthPrint {
17794    // message fields
17795    // @@protoc_insertion_point(field:RemoteFortressReader.GrowthPrint.priority)
17796    pub priority: ::std::option::Option<i32>,
17797    // @@protoc_insertion_point(field:RemoteFortressReader.GrowthPrint.color)
17798    pub color: ::std::option::Option<i32>,
17799    // @@protoc_insertion_point(field:RemoteFortressReader.GrowthPrint.timing_start)
17800    pub timing_start: ::std::option::Option<i32>,
17801    // @@protoc_insertion_point(field:RemoteFortressReader.GrowthPrint.timing_end)
17802    pub timing_end: ::std::option::Option<i32>,
17803    // @@protoc_insertion_point(field:RemoteFortressReader.GrowthPrint.tile)
17804    pub tile: ::std::option::Option<i32>,
17805    // special fields
17806    // @@protoc_insertion_point(special_field:RemoteFortressReader.GrowthPrint.special_fields)
17807    pub special_fields: ::protobuf::SpecialFields,
17808}
17809
17810impl<'a> ::std::default::Default for &'a GrowthPrint {
17811    fn default() -> &'a GrowthPrint {
17812        <GrowthPrint as ::protobuf::Message>::default_instance()
17813    }
17814}
17815
17816impl GrowthPrint {
17817    pub fn new() -> GrowthPrint {
17818        ::std::default::Default::default()
17819    }
17820
17821    // optional int32 priority = 1;
17822
17823    pub fn priority(&self) -> i32 {
17824        self.priority.unwrap_or(0)
17825    }
17826
17827    pub fn clear_priority(&mut self) {
17828        self.priority = ::std::option::Option::None;
17829    }
17830
17831    pub fn has_priority(&self) -> bool {
17832        self.priority.is_some()
17833    }
17834
17835    // Param is passed by value, moved
17836    pub fn set_priority(&mut self, v: i32) {
17837        self.priority = ::std::option::Option::Some(v);
17838    }
17839
17840    // optional int32 color = 2;
17841
17842    pub fn color(&self) -> i32 {
17843        self.color.unwrap_or(0)
17844    }
17845
17846    pub fn clear_color(&mut self) {
17847        self.color = ::std::option::Option::None;
17848    }
17849
17850    pub fn has_color(&self) -> bool {
17851        self.color.is_some()
17852    }
17853
17854    // Param is passed by value, moved
17855    pub fn set_color(&mut self, v: i32) {
17856        self.color = ::std::option::Option::Some(v);
17857    }
17858
17859    // optional int32 timing_start = 3;
17860
17861    pub fn timing_start(&self) -> i32 {
17862        self.timing_start.unwrap_or(0)
17863    }
17864
17865    pub fn clear_timing_start(&mut self) {
17866        self.timing_start = ::std::option::Option::None;
17867    }
17868
17869    pub fn has_timing_start(&self) -> bool {
17870        self.timing_start.is_some()
17871    }
17872
17873    // Param is passed by value, moved
17874    pub fn set_timing_start(&mut self, v: i32) {
17875        self.timing_start = ::std::option::Option::Some(v);
17876    }
17877
17878    // optional int32 timing_end = 4;
17879
17880    pub fn timing_end(&self) -> i32 {
17881        self.timing_end.unwrap_or(0)
17882    }
17883
17884    pub fn clear_timing_end(&mut self) {
17885        self.timing_end = ::std::option::Option::None;
17886    }
17887
17888    pub fn has_timing_end(&self) -> bool {
17889        self.timing_end.is_some()
17890    }
17891
17892    // Param is passed by value, moved
17893    pub fn set_timing_end(&mut self, v: i32) {
17894        self.timing_end = ::std::option::Option::Some(v);
17895    }
17896
17897    // optional int32 tile = 5;
17898
17899    pub fn tile(&self) -> i32 {
17900        self.tile.unwrap_or(0)
17901    }
17902
17903    pub fn clear_tile(&mut self) {
17904        self.tile = ::std::option::Option::None;
17905    }
17906
17907    pub fn has_tile(&self) -> bool {
17908        self.tile.is_some()
17909    }
17910
17911    // Param is passed by value, moved
17912    pub fn set_tile(&mut self, v: i32) {
17913        self.tile = ::std::option::Option::Some(v);
17914    }
17915
17916    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
17917        let mut fields = ::std::vec::Vec::with_capacity(5);
17918        let mut oneofs = ::std::vec::Vec::with_capacity(0);
17919        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17920            "priority",
17921            |m: &GrowthPrint| { &m.priority },
17922            |m: &mut GrowthPrint| { &mut m.priority },
17923        ));
17924        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17925            "color",
17926            |m: &GrowthPrint| { &m.color },
17927            |m: &mut GrowthPrint| { &mut m.color },
17928        ));
17929        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17930            "timing_start",
17931            |m: &GrowthPrint| { &m.timing_start },
17932            |m: &mut GrowthPrint| { &mut m.timing_start },
17933        ));
17934        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17935            "timing_end",
17936            |m: &GrowthPrint| { &m.timing_end },
17937            |m: &mut GrowthPrint| { &mut m.timing_end },
17938        ));
17939        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17940            "tile",
17941            |m: &GrowthPrint| { &m.tile },
17942            |m: &mut GrowthPrint| { &mut m.tile },
17943        ));
17944        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<GrowthPrint>(
17945            "GrowthPrint",
17946            fields,
17947            oneofs,
17948        )
17949    }
17950}
17951
17952impl ::protobuf::Message for GrowthPrint {
17953    const NAME: &'static str = "GrowthPrint";
17954
17955    fn is_initialized(&self) -> bool {
17956        true
17957    }
17958
17959    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
17960        while let Some(tag) = is.read_raw_tag_or_eof()? {
17961            match tag {
17962                8 => {
17963                    self.priority = ::std::option::Option::Some(is.read_int32()?);
17964                },
17965                16 => {
17966                    self.color = ::std::option::Option::Some(is.read_int32()?);
17967                },
17968                24 => {
17969                    self.timing_start = ::std::option::Option::Some(is.read_int32()?);
17970                },
17971                32 => {
17972                    self.timing_end = ::std::option::Option::Some(is.read_int32()?);
17973                },
17974                40 => {
17975                    self.tile = ::std::option::Option::Some(is.read_int32()?);
17976                },
17977                tag => {
17978                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
17979                },
17980            };
17981        }
17982        ::std::result::Result::Ok(())
17983    }
17984
17985    // Compute sizes of nested messages
17986    #[allow(unused_variables)]
17987    fn compute_size(&self) -> u64 {
17988        let mut my_size = 0;
17989        if let Some(v) = self.priority {
17990            my_size += ::protobuf::rt::int32_size(1, v);
17991        }
17992        if let Some(v) = self.color {
17993            my_size += ::protobuf::rt::int32_size(2, v);
17994        }
17995        if let Some(v) = self.timing_start {
17996            my_size += ::protobuf::rt::int32_size(3, v);
17997        }
17998        if let Some(v) = self.timing_end {
17999            my_size += ::protobuf::rt::int32_size(4, v);
18000        }
18001        if let Some(v) = self.tile {
18002            my_size += ::protobuf::rt::int32_size(5, v);
18003        }
18004        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
18005        self.special_fields.cached_size().set(my_size as u32);
18006        my_size
18007    }
18008
18009    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
18010        if let Some(v) = self.priority {
18011            os.write_int32(1, v)?;
18012        }
18013        if let Some(v) = self.color {
18014            os.write_int32(2, v)?;
18015        }
18016        if let Some(v) = self.timing_start {
18017            os.write_int32(3, v)?;
18018        }
18019        if let Some(v) = self.timing_end {
18020            os.write_int32(4, v)?;
18021        }
18022        if let Some(v) = self.tile {
18023            os.write_int32(5, v)?;
18024        }
18025        os.write_unknown_fields(self.special_fields.unknown_fields())?;
18026        ::std::result::Result::Ok(())
18027    }
18028
18029    fn special_fields(&self) -> &::protobuf::SpecialFields {
18030        &self.special_fields
18031    }
18032
18033    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
18034        &mut self.special_fields
18035    }
18036
18037    fn new() -> GrowthPrint {
18038        GrowthPrint::new()
18039    }
18040
18041    fn clear(&mut self) {
18042        self.priority = ::std::option::Option::None;
18043        self.color = ::std::option::Option::None;
18044        self.timing_start = ::std::option::Option::None;
18045        self.timing_end = ::std::option::Option::None;
18046        self.tile = ::std::option::Option::None;
18047        self.special_fields.clear();
18048    }
18049
18050    fn default_instance() -> &'static GrowthPrint {
18051        static instance: GrowthPrint = GrowthPrint {
18052            priority: ::std::option::Option::None,
18053            color: ::std::option::Option::None,
18054            timing_start: ::std::option::Option::None,
18055            timing_end: ::std::option::Option::None,
18056            tile: ::std::option::Option::None,
18057            special_fields: ::protobuf::SpecialFields::new(),
18058        };
18059        &instance
18060    }
18061}
18062
18063impl ::protobuf::MessageFull for GrowthPrint {
18064    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
18065        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
18066        descriptor.get(|| file_descriptor().message_by_package_relative_name("GrowthPrint").unwrap()).clone()
18067    }
18068}
18069
18070impl ::std::fmt::Display for GrowthPrint {
18071    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18072        ::protobuf::text_format::fmt(self, f)
18073    }
18074}
18075
18076impl ::protobuf::reflect::ProtobufValue for GrowthPrint {
18077    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
18078}
18079
18080// @@protoc_insertion_point(message:RemoteFortressReader.TreeGrowth)
18081#[derive(PartialEq,Clone,Default,Debug)]
18082pub struct TreeGrowth {
18083    // message fields
18084    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.index)
18085    pub index: ::std::option::Option<i32>,
18086    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.id)
18087    pub id: ::std::option::Option<::std::string::String>,
18088    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.name)
18089    pub name: ::std::option::Option<::std::string::String>,
18090    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.mat)
18091    pub mat: ::protobuf::MessageField<MatPair>,
18092    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.prints)
18093    pub prints: ::std::vec::Vec<GrowthPrint>,
18094    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.timing_start)
18095    pub timing_start: ::std::option::Option<i32>,
18096    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.timing_end)
18097    pub timing_end: ::std::option::Option<i32>,
18098    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.twigs)
18099    pub twigs: ::std::option::Option<bool>,
18100    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.light_branches)
18101    pub light_branches: ::std::option::Option<bool>,
18102    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.heavy_branches)
18103    pub heavy_branches: ::std::option::Option<bool>,
18104    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.trunk)
18105    pub trunk: ::std::option::Option<bool>,
18106    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.roots)
18107    pub roots: ::std::option::Option<bool>,
18108    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.cap)
18109    pub cap: ::std::option::Option<bool>,
18110    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.sapling)
18111    pub sapling: ::std::option::Option<bool>,
18112    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.trunk_height_start)
18113    pub trunk_height_start: ::std::option::Option<i32>,
18114    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.trunk_height_end)
18115    pub trunk_height_end: ::std::option::Option<i32>,
18116    // special fields
18117    // @@protoc_insertion_point(special_field:RemoteFortressReader.TreeGrowth.special_fields)
18118    pub special_fields: ::protobuf::SpecialFields,
18119}
18120
18121impl<'a> ::std::default::Default for &'a TreeGrowth {
18122    fn default() -> &'a TreeGrowth {
18123        <TreeGrowth as ::protobuf::Message>::default_instance()
18124    }
18125}
18126
18127impl TreeGrowth {
18128    pub fn new() -> TreeGrowth {
18129        ::std::default::Default::default()
18130    }
18131
18132    // optional int32 index = 1;
18133
18134    pub fn index(&self) -> i32 {
18135        self.index.unwrap_or(0)
18136    }
18137
18138    pub fn clear_index(&mut self) {
18139        self.index = ::std::option::Option::None;
18140    }
18141
18142    pub fn has_index(&self) -> bool {
18143        self.index.is_some()
18144    }
18145
18146    // Param is passed by value, moved
18147    pub fn set_index(&mut self, v: i32) {
18148        self.index = ::std::option::Option::Some(v);
18149    }
18150
18151    // optional string id = 2;
18152
18153    pub fn id(&self) -> &str {
18154        match self.id.as_ref() {
18155            Some(v) => v,
18156            None => "",
18157        }
18158    }
18159
18160    pub fn clear_id(&mut self) {
18161        self.id = ::std::option::Option::None;
18162    }
18163
18164    pub fn has_id(&self) -> bool {
18165        self.id.is_some()
18166    }
18167
18168    // Param is passed by value, moved
18169    pub fn set_id(&mut self, v: ::std::string::String) {
18170        self.id = ::std::option::Option::Some(v);
18171    }
18172
18173    // Mutable pointer to the field.
18174    // If field is not initialized, it is initialized with default value first.
18175    pub fn mut_id(&mut self) -> &mut ::std::string::String {
18176        if self.id.is_none() {
18177            self.id = ::std::option::Option::Some(::std::string::String::new());
18178        }
18179        self.id.as_mut().unwrap()
18180    }
18181
18182    // Take field
18183    pub fn take_id(&mut self) -> ::std::string::String {
18184        self.id.take().unwrap_or_else(|| ::std::string::String::new())
18185    }
18186
18187    // optional string name = 3;
18188
18189    pub fn name(&self) -> &str {
18190        match self.name.as_ref() {
18191            Some(v) => v,
18192            None => "",
18193        }
18194    }
18195
18196    pub fn clear_name(&mut self) {
18197        self.name = ::std::option::Option::None;
18198    }
18199
18200    pub fn has_name(&self) -> bool {
18201        self.name.is_some()
18202    }
18203
18204    // Param is passed by value, moved
18205    pub fn set_name(&mut self, v: ::std::string::String) {
18206        self.name = ::std::option::Option::Some(v);
18207    }
18208
18209    // Mutable pointer to the field.
18210    // If field is not initialized, it is initialized with default value first.
18211    pub fn mut_name(&mut self) -> &mut ::std::string::String {
18212        if self.name.is_none() {
18213            self.name = ::std::option::Option::Some(::std::string::String::new());
18214        }
18215        self.name.as_mut().unwrap()
18216    }
18217
18218    // Take field
18219    pub fn take_name(&mut self) -> ::std::string::String {
18220        self.name.take().unwrap_or_else(|| ::std::string::String::new())
18221    }
18222
18223    // optional int32 timing_start = 6;
18224
18225    pub fn timing_start(&self) -> i32 {
18226        self.timing_start.unwrap_or(0)
18227    }
18228
18229    pub fn clear_timing_start(&mut self) {
18230        self.timing_start = ::std::option::Option::None;
18231    }
18232
18233    pub fn has_timing_start(&self) -> bool {
18234        self.timing_start.is_some()
18235    }
18236
18237    // Param is passed by value, moved
18238    pub fn set_timing_start(&mut self, v: i32) {
18239        self.timing_start = ::std::option::Option::Some(v);
18240    }
18241
18242    // optional int32 timing_end = 7;
18243
18244    pub fn timing_end(&self) -> i32 {
18245        self.timing_end.unwrap_or(0)
18246    }
18247
18248    pub fn clear_timing_end(&mut self) {
18249        self.timing_end = ::std::option::Option::None;
18250    }
18251
18252    pub fn has_timing_end(&self) -> bool {
18253        self.timing_end.is_some()
18254    }
18255
18256    // Param is passed by value, moved
18257    pub fn set_timing_end(&mut self, v: i32) {
18258        self.timing_end = ::std::option::Option::Some(v);
18259    }
18260
18261    // optional bool twigs = 8;
18262
18263    pub fn twigs(&self) -> bool {
18264        self.twigs.unwrap_or(false)
18265    }
18266
18267    pub fn clear_twigs(&mut self) {
18268        self.twigs = ::std::option::Option::None;
18269    }
18270
18271    pub fn has_twigs(&self) -> bool {
18272        self.twigs.is_some()
18273    }
18274
18275    // Param is passed by value, moved
18276    pub fn set_twigs(&mut self, v: bool) {
18277        self.twigs = ::std::option::Option::Some(v);
18278    }
18279
18280    // optional bool light_branches = 9;
18281
18282    pub fn light_branches(&self) -> bool {
18283        self.light_branches.unwrap_or(false)
18284    }
18285
18286    pub fn clear_light_branches(&mut self) {
18287        self.light_branches = ::std::option::Option::None;
18288    }
18289
18290    pub fn has_light_branches(&self) -> bool {
18291        self.light_branches.is_some()
18292    }
18293
18294    // Param is passed by value, moved
18295    pub fn set_light_branches(&mut self, v: bool) {
18296        self.light_branches = ::std::option::Option::Some(v);
18297    }
18298
18299    // optional bool heavy_branches = 10;
18300
18301    pub fn heavy_branches(&self) -> bool {
18302        self.heavy_branches.unwrap_or(false)
18303    }
18304
18305    pub fn clear_heavy_branches(&mut self) {
18306        self.heavy_branches = ::std::option::Option::None;
18307    }
18308
18309    pub fn has_heavy_branches(&self) -> bool {
18310        self.heavy_branches.is_some()
18311    }
18312
18313    // Param is passed by value, moved
18314    pub fn set_heavy_branches(&mut self, v: bool) {
18315        self.heavy_branches = ::std::option::Option::Some(v);
18316    }
18317
18318    // optional bool trunk = 11;
18319
18320    pub fn trunk(&self) -> bool {
18321        self.trunk.unwrap_or(false)
18322    }
18323
18324    pub fn clear_trunk(&mut self) {
18325        self.trunk = ::std::option::Option::None;
18326    }
18327
18328    pub fn has_trunk(&self) -> bool {
18329        self.trunk.is_some()
18330    }
18331
18332    // Param is passed by value, moved
18333    pub fn set_trunk(&mut self, v: bool) {
18334        self.trunk = ::std::option::Option::Some(v);
18335    }
18336
18337    // optional bool roots = 12;
18338
18339    pub fn roots(&self) -> bool {
18340        self.roots.unwrap_or(false)
18341    }
18342
18343    pub fn clear_roots(&mut self) {
18344        self.roots = ::std::option::Option::None;
18345    }
18346
18347    pub fn has_roots(&self) -> bool {
18348        self.roots.is_some()
18349    }
18350
18351    // Param is passed by value, moved
18352    pub fn set_roots(&mut self, v: bool) {
18353        self.roots = ::std::option::Option::Some(v);
18354    }
18355
18356    // optional bool cap = 13;
18357
18358    pub fn cap(&self) -> bool {
18359        self.cap.unwrap_or(false)
18360    }
18361
18362    pub fn clear_cap(&mut self) {
18363        self.cap = ::std::option::Option::None;
18364    }
18365
18366    pub fn has_cap(&self) -> bool {
18367        self.cap.is_some()
18368    }
18369
18370    // Param is passed by value, moved
18371    pub fn set_cap(&mut self, v: bool) {
18372        self.cap = ::std::option::Option::Some(v);
18373    }
18374
18375    // optional bool sapling = 14;
18376
18377    pub fn sapling(&self) -> bool {
18378        self.sapling.unwrap_or(false)
18379    }
18380
18381    pub fn clear_sapling(&mut self) {
18382        self.sapling = ::std::option::Option::None;
18383    }
18384
18385    pub fn has_sapling(&self) -> bool {
18386        self.sapling.is_some()
18387    }
18388
18389    // Param is passed by value, moved
18390    pub fn set_sapling(&mut self, v: bool) {
18391        self.sapling = ::std::option::Option::Some(v);
18392    }
18393
18394    // optional int32 trunk_height_start = 15;
18395
18396    pub fn trunk_height_start(&self) -> i32 {
18397        self.trunk_height_start.unwrap_or(0)
18398    }
18399
18400    pub fn clear_trunk_height_start(&mut self) {
18401        self.trunk_height_start = ::std::option::Option::None;
18402    }
18403
18404    pub fn has_trunk_height_start(&self) -> bool {
18405        self.trunk_height_start.is_some()
18406    }
18407
18408    // Param is passed by value, moved
18409    pub fn set_trunk_height_start(&mut self, v: i32) {
18410        self.trunk_height_start = ::std::option::Option::Some(v);
18411    }
18412
18413    // optional int32 trunk_height_end = 16;
18414
18415    pub fn trunk_height_end(&self) -> i32 {
18416        self.trunk_height_end.unwrap_or(0)
18417    }
18418
18419    pub fn clear_trunk_height_end(&mut self) {
18420        self.trunk_height_end = ::std::option::Option::None;
18421    }
18422
18423    pub fn has_trunk_height_end(&self) -> bool {
18424        self.trunk_height_end.is_some()
18425    }
18426
18427    // Param is passed by value, moved
18428    pub fn set_trunk_height_end(&mut self, v: i32) {
18429        self.trunk_height_end = ::std::option::Option::Some(v);
18430    }
18431
18432    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
18433        let mut fields = ::std::vec::Vec::with_capacity(16);
18434        let mut oneofs = ::std::vec::Vec::with_capacity(0);
18435        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18436            "index",
18437            |m: &TreeGrowth| { &m.index },
18438            |m: &mut TreeGrowth| { &mut m.index },
18439        ));
18440        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18441            "id",
18442            |m: &TreeGrowth| { &m.id },
18443            |m: &mut TreeGrowth| { &mut m.id },
18444        ));
18445        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18446            "name",
18447            |m: &TreeGrowth| { &m.name },
18448            |m: &mut TreeGrowth| { &mut m.name },
18449        ));
18450        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
18451            "mat",
18452            |m: &TreeGrowth| { &m.mat },
18453            |m: &mut TreeGrowth| { &mut m.mat },
18454        ));
18455        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
18456            "prints",
18457            |m: &TreeGrowth| { &m.prints },
18458            |m: &mut TreeGrowth| { &mut m.prints },
18459        ));
18460        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18461            "timing_start",
18462            |m: &TreeGrowth| { &m.timing_start },
18463            |m: &mut TreeGrowth| { &mut m.timing_start },
18464        ));
18465        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18466            "timing_end",
18467            |m: &TreeGrowth| { &m.timing_end },
18468            |m: &mut TreeGrowth| { &mut m.timing_end },
18469        ));
18470        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18471            "twigs",
18472            |m: &TreeGrowth| { &m.twigs },
18473            |m: &mut TreeGrowth| { &mut m.twigs },
18474        ));
18475        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18476            "light_branches",
18477            |m: &TreeGrowth| { &m.light_branches },
18478            |m: &mut TreeGrowth| { &mut m.light_branches },
18479        ));
18480        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18481            "heavy_branches",
18482            |m: &TreeGrowth| { &m.heavy_branches },
18483            |m: &mut TreeGrowth| { &mut m.heavy_branches },
18484        ));
18485        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18486            "trunk",
18487            |m: &TreeGrowth| { &m.trunk },
18488            |m: &mut TreeGrowth| { &mut m.trunk },
18489        ));
18490        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18491            "roots",
18492            |m: &TreeGrowth| { &m.roots },
18493            |m: &mut TreeGrowth| { &mut m.roots },
18494        ));
18495        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18496            "cap",
18497            |m: &TreeGrowth| { &m.cap },
18498            |m: &mut TreeGrowth| { &mut m.cap },
18499        ));
18500        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18501            "sapling",
18502            |m: &TreeGrowth| { &m.sapling },
18503            |m: &mut TreeGrowth| { &mut m.sapling },
18504        ));
18505        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18506            "trunk_height_start",
18507            |m: &TreeGrowth| { &m.trunk_height_start },
18508            |m: &mut TreeGrowth| { &mut m.trunk_height_start },
18509        ));
18510        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18511            "trunk_height_end",
18512            |m: &TreeGrowth| { &m.trunk_height_end },
18513            |m: &mut TreeGrowth| { &mut m.trunk_height_end },
18514        ));
18515        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<TreeGrowth>(
18516            "TreeGrowth",
18517            fields,
18518            oneofs,
18519        )
18520    }
18521}
18522
18523impl ::protobuf::Message for TreeGrowth {
18524    const NAME: &'static str = "TreeGrowth";
18525
18526    fn is_initialized(&self) -> bool {
18527        for v in &self.mat {
18528            if !v.is_initialized() {
18529                return false;
18530            }
18531        };
18532        for v in &self.prints {
18533            if !v.is_initialized() {
18534                return false;
18535            }
18536        };
18537        true
18538    }
18539
18540    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
18541        while let Some(tag) = is.read_raw_tag_or_eof()? {
18542            match tag {
18543                8 => {
18544                    self.index = ::std::option::Option::Some(is.read_int32()?);
18545                },
18546                18 => {
18547                    self.id = ::std::option::Option::Some(is.read_string()?);
18548                },
18549                26 => {
18550                    self.name = ::std::option::Option::Some(is.read_string()?);
18551                },
18552                34 => {
18553                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.mat)?;
18554                },
18555                42 => {
18556                    self.prints.push(is.read_message()?);
18557                },
18558                48 => {
18559                    self.timing_start = ::std::option::Option::Some(is.read_int32()?);
18560                },
18561                56 => {
18562                    self.timing_end = ::std::option::Option::Some(is.read_int32()?);
18563                },
18564                64 => {
18565                    self.twigs = ::std::option::Option::Some(is.read_bool()?);
18566                },
18567                72 => {
18568                    self.light_branches = ::std::option::Option::Some(is.read_bool()?);
18569                },
18570                80 => {
18571                    self.heavy_branches = ::std::option::Option::Some(is.read_bool()?);
18572                },
18573                88 => {
18574                    self.trunk = ::std::option::Option::Some(is.read_bool()?);
18575                },
18576                96 => {
18577                    self.roots = ::std::option::Option::Some(is.read_bool()?);
18578                },
18579                104 => {
18580                    self.cap = ::std::option::Option::Some(is.read_bool()?);
18581                },
18582                112 => {
18583                    self.sapling = ::std::option::Option::Some(is.read_bool()?);
18584                },
18585                120 => {
18586                    self.trunk_height_start = ::std::option::Option::Some(is.read_int32()?);
18587                },
18588                128 => {
18589                    self.trunk_height_end = ::std::option::Option::Some(is.read_int32()?);
18590                },
18591                tag => {
18592                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
18593                },
18594            };
18595        }
18596        ::std::result::Result::Ok(())
18597    }
18598
18599    // Compute sizes of nested messages
18600    #[allow(unused_variables)]
18601    fn compute_size(&self) -> u64 {
18602        let mut my_size = 0;
18603        if let Some(v) = self.index {
18604            my_size += ::protobuf::rt::int32_size(1, v);
18605        }
18606        if let Some(v) = self.id.as_ref() {
18607            my_size += ::protobuf::rt::string_size(2, &v);
18608        }
18609        if let Some(v) = self.name.as_ref() {
18610            my_size += ::protobuf::rt::string_size(3, &v);
18611        }
18612        if let Some(v) = self.mat.as_ref() {
18613            let len = v.compute_size();
18614            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
18615        }
18616        for value in &self.prints {
18617            let len = value.compute_size();
18618            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
18619        };
18620        if let Some(v) = self.timing_start {
18621            my_size += ::protobuf::rt::int32_size(6, v);
18622        }
18623        if let Some(v) = self.timing_end {
18624            my_size += ::protobuf::rt::int32_size(7, v);
18625        }
18626        if let Some(v) = self.twigs {
18627            my_size += 1 + 1;
18628        }
18629        if let Some(v) = self.light_branches {
18630            my_size += 1 + 1;
18631        }
18632        if let Some(v) = self.heavy_branches {
18633            my_size += 1 + 1;
18634        }
18635        if let Some(v) = self.trunk {
18636            my_size += 1 + 1;
18637        }
18638        if let Some(v) = self.roots {
18639            my_size += 1 + 1;
18640        }
18641        if let Some(v) = self.cap {
18642            my_size += 1 + 1;
18643        }
18644        if let Some(v) = self.sapling {
18645            my_size += 1 + 1;
18646        }
18647        if let Some(v) = self.trunk_height_start {
18648            my_size += ::protobuf::rt::int32_size(15, v);
18649        }
18650        if let Some(v) = self.trunk_height_end {
18651            my_size += ::protobuf::rt::int32_size(16, v);
18652        }
18653        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
18654        self.special_fields.cached_size().set(my_size as u32);
18655        my_size
18656    }
18657
18658    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
18659        if let Some(v) = self.index {
18660            os.write_int32(1, v)?;
18661        }
18662        if let Some(v) = self.id.as_ref() {
18663            os.write_string(2, v)?;
18664        }
18665        if let Some(v) = self.name.as_ref() {
18666            os.write_string(3, v)?;
18667        }
18668        if let Some(v) = self.mat.as_ref() {
18669            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
18670        }
18671        for v in &self.prints {
18672            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
18673        };
18674        if let Some(v) = self.timing_start {
18675            os.write_int32(6, v)?;
18676        }
18677        if let Some(v) = self.timing_end {
18678            os.write_int32(7, v)?;
18679        }
18680        if let Some(v) = self.twigs {
18681            os.write_bool(8, v)?;
18682        }
18683        if let Some(v) = self.light_branches {
18684            os.write_bool(9, v)?;
18685        }
18686        if let Some(v) = self.heavy_branches {
18687            os.write_bool(10, v)?;
18688        }
18689        if let Some(v) = self.trunk {
18690            os.write_bool(11, v)?;
18691        }
18692        if let Some(v) = self.roots {
18693            os.write_bool(12, v)?;
18694        }
18695        if let Some(v) = self.cap {
18696            os.write_bool(13, v)?;
18697        }
18698        if let Some(v) = self.sapling {
18699            os.write_bool(14, v)?;
18700        }
18701        if let Some(v) = self.trunk_height_start {
18702            os.write_int32(15, v)?;
18703        }
18704        if let Some(v) = self.trunk_height_end {
18705            os.write_int32(16, v)?;
18706        }
18707        os.write_unknown_fields(self.special_fields.unknown_fields())?;
18708        ::std::result::Result::Ok(())
18709    }
18710
18711    fn special_fields(&self) -> &::protobuf::SpecialFields {
18712        &self.special_fields
18713    }
18714
18715    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
18716        &mut self.special_fields
18717    }
18718
18719    fn new() -> TreeGrowth {
18720        TreeGrowth::new()
18721    }
18722
18723    fn clear(&mut self) {
18724        self.index = ::std::option::Option::None;
18725        self.id = ::std::option::Option::None;
18726        self.name = ::std::option::Option::None;
18727        self.mat.clear();
18728        self.prints.clear();
18729        self.timing_start = ::std::option::Option::None;
18730        self.timing_end = ::std::option::Option::None;
18731        self.twigs = ::std::option::Option::None;
18732        self.light_branches = ::std::option::Option::None;
18733        self.heavy_branches = ::std::option::Option::None;
18734        self.trunk = ::std::option::Option::None;
18735        self.roots = ::std::option::Option::None;
18736        self.cap = ::std::option::Option::None;
18737        self.sapling = ::std::option::Option::None;
18738        self.trunk_height_start = ::std::option::Option::None;
18739        self.trunk_height_end = ::std::option::Option::None;
18740        self.special_fields.clear();
18741    }
18742
18743    fn default_instance() -> &'static TreeGrowth {
18744        static instance: TreeGrowth = TreeGrowth {
18745            index: ::std::option::Option::None,
18746            id: ::std::option::Option::None,
18747            name: ::std::option::Option::None,
18748            mat: ::protobuf::MessageField::none(),
18749            prints: ::std::vec::Vec::new(),
18750            timing_start: ::std::option::Option::None,
18751            timing_end: ::std::option::Option::None,
18752            twigs: ::std::option::Option::None,
18753            light_branches: ::std::option::Option::None,
18754            heavy_branches: ::std::option::Option::None,
18755            trunk: ::std::option::Option::None,
18756            roots: ::std::option::Option::None,
18757            cap: ::std::option::Option::None,
18758            sapling: ::std::option::Option::None,
18759            trunk_height_start: ::std::option::Option::None,
18760            trunk_height_end: ::std::option::Option::None,
18761            special_fields: ::protobuf::SpecialFields::new(),
18762        };
18763        &instance
18764    }
18765}
18766
18767impl ::protobuf::MessageFull for TreeGrowth {
18768    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
18769        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
18770        descriptor.get(|| file_descriptor().message_by_package_relative_name("TreeGrowth").unwrap()).clone()
18771    }
18772}
18773
18774impl ::std::fmt::Display for TreeGrowth {
18775    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18776        ::protobuf::text_format::fmt(self, f)
18777    }
18778}
18779
18780impl ::protobuf::reflect::ProtobufValue for TreeGrowth {
18781    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
18782}
18783
18784// @@protoc_insertion_point(message:RemoteFortressReader.PlantRaw)
18785#[derive(PartialEq,Clone,Default,Debug)]
18786pub struct PlantRaw {
18787    // message fields
18788    // @@protoc_insertion_point(field:RemoteFortressReader.PlantRaw.index)
18789    pub index: ::std::option::Option<i32>,
18790    // @@protoc_insertion_point(field:RemoteFortressReader.PlantRaw.id)
18791    pub id: ::std::option::Option<::std::string::String>,
18792    // @@protoc_insertion_point(field:RemoteFortressReader.PlantRaw.name)
18793    pub name: ::std::option::Option<::std::string::String>,
18794    // @@protoc_insertion_point(field:RemoteFortressReader.PlantRaw.growths)
18795    pub growths: ::std::vec::Vec<TreeGrowth>,
18796    // @@protoc_insertion_point(field:RemoteFortressReader.PlantRaw.tile)
18797    pub tile: ::std::option::Option<i32>,
18798    // special fields
18799    // @@protoc_insertion_point(special_field:RemoteFortressReader.PlantRaw.special_fields)
18800    pub special_fields: ::protobuf::SpecialFields,
18801}
18802
18803impl<'a> ::std::default::Default for &'a PlantRaw {
18804    fn default() -> &'a PlantRaw {
18805        <PlantRaw as ::protobuf::Message>::default_instance()
18806    }
18807}
18808
18809impl PlantRaw {
18810    pub fn new() -> PlantRaw {
18811        ::std::default::Default::default()
18812    }
18813
18814    // optional int32 index = 1;
18815
18816    pub fn index(&self) -> i32 {
18817        self.index.unwrap_or(0)
18818    }
18819
18820    pub fn clear_index(&mut self) {
18821        self.index = ::std::option::Option::None;
18822    }
18823
18824    pub fn has_index(&self) -> bool {
18825        self.index.is_some()
18826    }
18827
18828    // Param is passed by value, moved
18829    pub fn set_index(&mut self, v: i32) {
18830        self.index = ::std::option::Option::Some(v);
18831    }
18832
18833    // optional string id = 2;
18834
18835    pub fn id(&self) -> &str {
18836        match self.id.as_ref() {
18837            Some(v) => v,
18838            None => "",
18839        }
18840    }
18841
18842    pub fn clear_id(&mut self) {
18843        self.id = ::std::option::Option::None;
18844    }
18845
18846    pub fn has_id(&self) -> bool {
18847        self.id.is_some()
18848    }
18849
18850    // Param is passed by value, moved
18851    pub fn set_id(&mut self, v: ::std::string::String) {
18852        self.id = ::std::option::Option::Some(v);
18853    }
18854
18855    // Mutable pointer to the field.
18856    // If field is not initialized, it is initialized with default value first.
18857    pub fn mut_id(&mut self) -> &mut ::std::string::String {
18858        if self.id.is_none() {
18859            self.id = ::std::option::Option::Some(::std::string::String::new());
18860        }
18861        self.id.as_mut().unwrap()
18862    }
18863
18864    // Take field
18865    pub fn take_id(&mut self) -> ::std::string::String {
18866        self.id.take().unwrap_or_else(|| ::std::string::String::new())
18867    }
18868
18869    // optional string name = 3;
18870
18871    pub fn name(&self) -> &str {
18872        match self.name.as_ref() {
18873            Some(v) => v,
18874            None => "",
18875        }
18876    }
18877
18878    pub fn clear_name(&mut self) {
18879        self.name = ::std::option::Option::None;
18880    }
18881
18882    pub fn has_name(&self) -> bool {
18883        self.name.is_some()
18884    }
18885
18886    // Param is passed by value, moved
18887    pub fn set_name(&mut self, v: ::std::string::String) {
18888        self.name = ::std::option::Option::Some(v);
18889    }
18890
18891    // Mutable pointer to the field.
18892    // If field is not initialized, it is initialized with default value first.
18893    pub fn mut_name(&mut self) -> &mut ::std::string::String {
18894        if self.name.is_none() {
18895            self.name = ::std::option::Option::Some(::std::string::String::new());
18896        }
18897        self.name.as_mut().unwrap()
18898    }
18899
18900    // Take field
18901    pub fn take_name(&mut self) -> ::std::string::String {
18902        self.name.take().unwrap_or_else(|| ::std::string::String::new())
18903    }
18904
18905    // optional int32 tile = 5;
18906
18907    pub fn tile(&self) -> i32 {
18908        self.tile.unwrap_or(0)
18909    }
18910
18911    pub fn clear_tile(&mut self) {
18912        self.tile = ::std::option::Option::None;
18913    }
18914
18915    pub fn has_tile(&self) -> bool {
18916        self.tile.is_some()
18917    }
18918
18919    // Param is passed by value, moved
18920    pub fn set_tile(&mut self, v: i32) {
18921        self.tile = ::std::option::Option::Some(v);
18922    }
18923
18924    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
18925        let mut fields = ::std::vec::Vec::with_capacity(5);
18926        let mut oneofs = ::std::vec::Vec::with_capacity(0);
18927        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18928            "index",
18929            |m: &PlantRaw| { &m.index },
18930            |m: &mut PlantRaw| { &mut m.index },
18931        ));
18932        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18933            "id",
18934            |m: &PlantRaw| { &m.id },
18935            |m: &mut PlantRaw| { &mut m.id },
18936        ));
18937        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18938            "name",
18939            |m: &PlantRaw| { &m.name },
18940            |m: &mut PlantRaw| { &mut m.name },
18941        ));
18942        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
18943            "growths",
18944            |m: &PlantRaw| { &m.growths },
18945            |m: &mut PlantRaw| { &mut m.growths },
18946        ));
18947        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18948            "tile",
18949            |m: &PlantRaw| { &m.tile },
18950            |m: &mut PlantRaw| { &mut m.tile },
18951        ));
18952        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PlantRaw>(
18953            "PlantRaw",
18954            fields,
18955            oneofs,
18956        )
18957    }
18958}
18959
18960impl ::protobuf::Message for PlantRaw {
18961    const NAME: &'static str = "PlantRaw";
18962
18963    fn is_initialized(&self) -> bool {
18964        for v in &self.growths {
18965            if !v.is_initialized() {
18966                return false;
18967            }
18968        };
18969        true
18970    }
18971
18972    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
18973        while let Some(tag) = is.read_raw_tag_or_eof()? {
18974            match tag {
18975                8 => {
18976                    self.index = ::std::option::Option::Some(is.read_int32()?);
18977                },
18978                18 => {
18979                    self.id = ::std::option::Option::Some(is.read_string()?);
18980                },
18981                26 => {
18982                    self.name = ::std::option::Option::Some(is.read_string()?);
18983                },
18984                34 => {
18985                    self.growths.push(is.read_message()?);
18986                },
18987                40 => {
18988                    self.tile = ::std::option::Option::Some(is.read_int32()?);
18989                },
18990                tag => {
18991                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
18992                },
18993            };
18994        }
18995        ::std::result::Result::Ok(())
18996    }
18997
18998    // Compute sizes of nested messages
18999    #[allow(unused_variables)]
19000    fn compute_size(&self) -> u64 {
19001        let mut my_size = 0;
19002        if let Some(v) = self.index {
19003            my_size += ::protobuf::rt::int32_size(1, v);
19004        }
19005        if let Some(v) = self.id.as_ref() {
19006            my_size += ::protobuf::rt::string_size(2, &v);
19007        }
19008        if let Some(v) = self.name.as_ref() {
19009            my_size += ::protobuf::rt::string_size(3, &v);
19010        }
19011        for value in &self.growths {
19012            let len = value.compute_size();
19013            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
19014        };
19015        if let Some(v) = self.tile {
19016            my_size += ::protobuf::rt::int32_size(5, v);
19017        }
19018        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
19019        self.special_fields.cached_size().set(my_size as u32);
19020        my_size
19021    }
19022
19023    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
19024        if let Some(v) = self.index {
19025            os.write_int32(1, v)?;
19026        }
19027        if let Some(v) = self.id.as_ref() {
19028            os.write_string(2, v)?;
19029        }
19030        if let Some(v) = self.name.as_ref() {
19031            os.write_string(3, v)?;
19032        }
19033        for v in &self.growths {
19034            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
19035        };
19036        if let Some(v) = self.tile {
19037            os.write_int32(5, v)?;
19038        }
19039        os.write_unknown_fields(self.special_fields.unknown_fields())?;
19040        ::std::result::Result::Ok(())
19041    }
19042
19043    fn special_fields(&self) -> &::protobuf::SpecialFields {
19044        &self.special_fields
19045    }
19046
19047    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
19048        &mut self.special_fields
19049    }
19050
19051    fn new() -> PlantRaw {
19052        PlantRaw::new()
19053    }
19054
19055    fn clear(&mut self) {
19056        self.index = ::std::option::Option::None;
19057        self.id = ::std::option::Option::None;
19058        self.name = ::std::option::Option::None;
19059        self.growths.clear();
19060        self.tile = ::std::option::Option::None;
19061        self.special_fields.clear();
19062    }
19063
19064    fn default_instance() -> &'static PlantRaw {
19065        static instance: PlantRaw = PlantRaw {
19066            index: ::std::option::Option::None,
19067            id: ::std::option::Option::None,
19068            name: ::std::option::Option::None,
19069            growths: ::std::vec::Vec::new(),
19070            tile: ::std::option::Option::None,
19071            special_fields: ::protobuf::SpecialFields::new(),
19072        };
19073        &instance
19074    }
19075}
19076
19077impl ::protobuf::MessageFull for PlantRaw {
19078    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
19079        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
19080        descriptor.get(|| file_descriptor().message_by_package_relative_name("PlantRaw").unwrap()).clone()
19081    }
19082}
19083
19084impl ::std::fmt::Display for PlantRaw {
19085    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19086        ::protobuf::text_format::fmt(self, f)
19087    }
19088}
19089
19090impl ::protobuf::reflect::ProtobufValue for PlantRaw {
19091    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
19092}
19093
19094// @@protoc_insertion_point(message:RemoteFortressReader.PlantRawList)
19095#[derive(PartialEq,Clone,Default,Debug)]
19096pub struct PlantRawList {
19097    // message fields
19098    // @@protoc_insertion_point(field:RemoteFortressReader.PlantRawList.plant_raws)
19099    pub plant_raws: ::std::vec::Vec<PlantRaw>,
19100    // special fields
19101    // @@protoc_insertion_point(special_field:RemoteFortressReader.PlantRawList.special_fields)
19102    pub special_fields: ::protobuf::SpecialFields,
19103}
19104
19105impl<'a> ::std::default::Default for &'a PlantRawList {
19106    fn default() -> &'a PlantRawList {
19107        <PlantRawList as ::protobuf::Message>::default_instance()
19108    }
19109}
19110
19111impl PlantRawList {
19112    pub fn new() -> PlantRawList {
19113        ::std::default::Default::default()
19114    }
19115
19116    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
19117        let mut fields = ::std::vec::Vec::with_capacity(1);
19118        let mut oneofs = ::std::vec::Vec::with_capacity(0);
19119        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
19120            "plant_raws",
19121            |m: &PlantRawList| { &m.plant_raws },
19122            |m: &mut PlantRawList| { &mut m.plant_raws },
19123        ));
19124        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PlantRawList>(
19125            "PlantRawList",
19126            fields,
19127            oneofs,
19128        )
19129    }
19130}
19131
19132impl ::protobuf::Message for PlantRawList {
19133    const NAME: &'static str = "PlantRawList";
19134
19135    fn is_initialized(&self) -> bool {
19136        for v in &self.plant_raws {
19137            if !v.is_initialized() {
19138                return false;
19139            }
19140        };
19141        true
19142    }
19143
19144    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
19145        while let Some(tag) = is.read_raw_tag_or_eof()? {
19146            match tag {
19147                10 => {
19148                    self.plant_raws.push(is.read_message()?);
19149                },
19150                tag => {
19151                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
19152                },
19153            };
19154        }
19155        ::std::result::Result::Ok(())
19156    }
19157
19158    // Compute sizes of nested messages
19159    #[allow(unused_variables)]
19160    fn compute_size(&self) -> u64 {
19161        let mut my_size = 0;
19162        for value in &self.plant_raws {
19163            let len = value.compute_size();
19164            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
19165        };
19166        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
19167        self.special_fields.cached_size().set(my_size as u32);
19168        my_size
19169    }
19170
19171    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
19172        for v in &self.plant_raws {
19173            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
19174        };
19175        os.write_unknown_fields(self.special_fields.unknown_fields())?;
19176        ::std::result::Result::Ok(())
19177    }
19178
19179    fn special_fields(&self) -> &::protobuf::SpecialFields {
19180        &self.special_fields
19181    }
19182
19183    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
19184        &mut self.special_fields
19185    }
19186
19187    fn new() -> PlantRawList {
19188        PlantRawList::new()
19189    }
19190
19191    fn clear(&mut self) {
19192        self.plant_raws.clear();
19193        self.special_fields.clear();
19194    }
19195
19196    fn default_instance() -> &'static PlantRawList {
19197        static instance: PlantRawList = PlantRawList {
19198            plant_raws: ::std::vec::Vec::new(),
19199            special_fields: ::protobuf::SpecialFields::new(),
19200        };
19201        &instance
19202    }
19203}
19204
19205impl ::protobuf::MessageFull for PlantRawList {
19206    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
19207        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
19208        descriptor.get(|| file_descriptor().message_by_package_relative_name("PlantRawList").unwrap()).clone()
19209    }
19210}
19211
19212impl ::std::fmt::Display for PlantRawList {
19213    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19214        ::protobuf::text_format::fmt(self, f)
19215    }
19216}
19217
19218impl ::protobuf::reflect::ProtobufValue for PlantRawList {
19219    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
19220}
19221
19222// @@protoc_insertion_point(message:RemoteFortressReader.ScreenTile)
19223#[derive(PartialEq,Clone,Default,Debug)]
19224pub struct ScreenTile {
19225    // message fields
19226    // @@protoc_insertion_point(field:RemoteFortressReader.ScreenTile.character)
19227    pub character: ::std::option::Option<u32>,
19228    // @@protoc_insertion_point(field:RemoteFortressReader.ScreenTile.foreground)
19229    pub foreground: ::std::option::Option<u32>,
19230    // @@protoc_insertion_point(field:RemoteFortressReader.ScreenTile.background)
19231    pub background: ::std::option::Option<u32>,
19232    // special fields
19233    // @@protoc_insertion_point(special_field:RemoteFortressReader.ScreenTile.special_fields)
19234    pub special_fields: ::protobuf::SpecialFields,
19235}
19236
19237impl<'a> ::std::default::Default for &'a ScreenTile {
19238    fn default() -> &'a ScreenTile {
19239        <ScreenTile as ::protobuf::Message>::default_instance()
19240    }
19241}
19242
19243impl ScreenTile {
19244    pub fn new() -> ScreenTile {
19245        ::std::default::Default::default()
19246    }
19247
19248    // optional uint32 character = 1;
19249
19250    pub fn character(&self) -> u32 {
19251        self.character.unwrap_or(0)
19252    }
19253
19254    pub fn clear_character(&mut self) {
19255        self.character = ::std::option::Option::None;
19256    }
19257
19258    pub fn has_character(&self) -> bool {
19259        self.character.is_some()
19260    }
19261
19262    // Param is passed by value, moved
19263    pub fn set_character(&mut self, v: u32) {
19264        self.character = ::std::option::Option::Some(v);
19265    }
19266
19267    // optional uint32 foreground = 2;
19268
19269    pub fn foreground(&self) -> u32 {
19270        self.foreground.unwrap_or(0)
19271    }
19272
19273    pub fn clear_foreground(&mut self) {
19274        self.foreground = ::std::option::Option::None;
19275    }
19276
19277    pub fn has_foreground(&self) -> bool {
19278        self.foreground.is_some()
19279    }
19280
19281    // Param is passed by value, moved
19282    pub fn set_foreground(&mut self, v: u32) {
19283        self.foreground = ::std::option::Option::Some(v);
19284    }
19285
19286    // optional uint32 background = 3;
19287
19288    pub fn background(&self) -> u32 {
19289        self.background.unwrap_or(0)
19290    }
19291
19292    pub fn clear_background(&mut self) {
19293        self.background = ::std::option::Option::None;
19294    }
19295
19296    pub fn has_background(&self) -> bool {
19297        self.background.is_some()
19298    }
19299
19300    // Param is passed by value, moved
19301    pub fn set_background(&mut self, v: u32) {
19302        self.background = ::std::option::Option::Some(v);
19303    }
19304
19305    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
19306        let mut fields = ::std::vec::Vec::with_capacity(3);
19307        let mut oneofs = ::std::vec::Vec::with_capacity(0);
19308        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19309            "character",
19310            |m: &ScreenTile| { &m.character },
19311            |m: &mut ScreenTile| { &mut m.character },
19312        ));
19313        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19314            "foreground",
19315            |m: &ScreenTile| { &m.foreground },
19316            |m: &mut ScreenTile| { &mut m.foreground },
19317        ));
19318        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19319            "background",
19320            |m: &ScreenTile| { &m.background },
19321            |m: &mut ScreenTile| { &mut m.background },
19322        ));
19323        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ScreenTile>(
19324            "ScreenTile",
19325            fields,
19326            oneofs,
19327        )
19328    }
19329}
19330
19331impl ::protobuf::Message for ScreenTile {
19332    const NAME: &'static str = "ScreenTile";
19333
19334    fn is_initialized(&self) -> bool {
19335        true
19336    }
19337
19338    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
19339        while let Some(tag) = is.read_raw_tag_or_eof()? {
19340            match tag {
19341                8 => {
19342                    self.character = ::std::option::Option::Some(is.read_uint32()?);
19343                },
19344                16 => {
19345                    self.foreground = ::std::option::Option::Some(is.read_uint32()?);
19346                },
19347                24 => {
19348                    self.background = ::std::option::Option::Some(is.read_uint32()?);
19349                },
19350                tag => {
19351                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
19352                },
19353            };
19354        }
19355        ::std::result::Result::Ok(())
19356    }
19357
19358    // Compute sizes of nested messages
19359    #[allow(unused_variables)]
19360    fn compute_size(&self) -> u64 {
19361        let mut my_size = 0;
19362        if let Some(v) = self.character {
19363            my_size += ::protobuf::rt::uint32_size(1, v);
19364        }
19365        if let Some(v) = self.foreground {
19366            my_size += ::protobuf::rt::uint32_size(2, v);
19367        }
19368        if let Some(v) = self.background {
19369            my_size += ::protobuf::rt::uint32_size(3, v);
19370        }
19371        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
19372        self.special_fields.cached_size().set(my_size as u32);
19373        my_size
19374    }
19375
19376    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
19377        if let Some(v) = self.character {
19378            os.write_uint32(1, v)?;
19379        }
19380        if let Some(v) = self.foreground {
19381            os.write_uint32(2, v)?;
19382        }
19383        if let Some(v) = self.background {
19384            os.write_uint32(3, v)?;
19385        }
19386        os.write_unknown_fields(self.special_fields.unknown_fields())?;
19387        ::std::result::Result::Ok(())
19388    }
19389
19390    fn special_fields(&self) -> &::protobuf::SpecialFields {
19391        &self.special_fields
19392    }
19393
19394    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
19395        &mut self.special_fields
19396    }
19397
19398    fn new() -> ScreenTile {
19399        ScreenTile::new()
19400    }
19401
19402    fn clear(&mut self) {
19403        self.character = ::std::option::Option::None;
19404        self.foreground = ::std::option::Option::None;
19405        self.background = ::std::option::Option::None;
19406        self.special_fields.clear();
19407    }
19408
19409    fn default_instance() -> &'static ScreenTile {
19410        static instance: ScreenTile = ScreenTile {
19411            character: ::std::option::Option::None,
19412            foreground: ::std::option::Option::None,
19413            background: ::std::option::Option::None,
19414            special_fields: ::protobuf::SpecialFields::new(),
19415        };
19416        &instance
19417    }
19418}
19419
19420impl ::protobuf::MessageFull for ScreenTile {
19421    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
19422        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
19423        descriptor.get(|| file_descriptor().message_by_package_relative_name("ScreenTile").unwrap()).clone()
19424    }
19425}
19426
19427impl ::std::fmt::Display for ScreenTile {
19428    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19429        ::protobuf::text_format::fmt(self, f)
19430    }
19431}
19432
19433impl ::protobuf::reflect::ProtobufValue for ScreenTile {
19434    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
19435}
19436
19437// @@protoc_insertion_point(message:RemoteFortressReader.ScreenCapture)
19438#[derive(PartialEq,Clone,Default,Debug)]
19439pub struct ScreenCapture {
19440    // message fields
19441    // @@protoc_insertion_point(field:RemoteFortressReader.ScreenCapture.width)
19442    pub width: ::std::option::Option<u32>,
19443    // @@protoc_insertion_point(field:RemoteFortressReader.ScreenCapture.height)
19444    pub height: ::std::option::Option<u32>,
19445    // @@protoc_insertion_point(field:RemoteFortressReader.ScreenCapture.tiles)
19446    pub tiles: ::std::vec::Vec<ScreenTile>,
19447    // special fields
19448    // @@protoc_insertion_point(special_field:RemoteFortressReader.ScreenCapture.special_fields)
19449    pub special_fields: ::protobuf::SpecialFields,
19450}
19451
19452impl<'a> ::std::default::Default for &'a ScreenCapture {
19453    fn default() -> &'a ScreenCapture {
19454        <ScreenCapture as ::protobuf::Message>::default_instance()
19455    }
19456}
19457
19458impl ScreenCapture {
19459    pub fn new() -> ScreenCapture {
19460        ::std::default::Default::default()
19461    }
19462
19463    // optional uint32 width = 1;
19464
19465    pub fn width(&self) -> u32 {
19466        self.width.unwrap_or(0)
19467    }
19468
19469    pub fn clear_width(&mut self) {
19470        self.width = ::std::option::Option::None;
19471    }
19472
19473    pub fn has_width(&self) -> bool {
19474        self.width.is_some()
19475    }
19476
19477    // Param is passed by value, moved
19478    pub fn set_width(&mut self, v: u32) {
19479        self.width = ::std::option::Option::Some(v);
19480    }
19481
19482    // optional uint32 height = 2;
19483
19484    pub fn height(&self) -> u32 {
19485        self.height.unwrap_or(0)
19486    }
19487
19488    pub fn clear_height(&mut self) {
19489        self.height = ::std::option::Option::None;
19490    }
19491
19492    pub fn has_height(&self) -> bool {
19493        self.height.is_some()
19494    }
19495
19496    // Param is passed by value, moved
19497    pub fn set_height(&mut self, v: u32) {
19498        self.height = ::std::option::Option::Some(v);
19499    }
19500
19501    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
19502        let mut fields = ::std::vec::Vec::with_capacity(3);
19503        let mut oneofs = ::std::vec::Vec::with_capacity(0);
19504        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19505            "width",
19506            |m: &ScreenCapture| { &m.width },
19507            |m: &mut ScreenCapture| { &mut m.width },
19508        ));
19509        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19510            "height",
19511            |m: &ScreenCapture| { &m.height },
19512            |m: &mut ScreenCapture| { &mut m.height },
19513        ));
19514        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
19515            "tiles",
19516            |m: &ScreenCapture| { &m.tiles },
19517            |m: &mut ScreenCapture| { &mut m.tiles },
19518        ));
19519        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ScreenCapture>(
19520            "ScreenCapture",
19521            fields,
19522            oneofs,
19523        )
19524    }
19525}
19526
19527impl ::protobuf::Message for ScreenCapture {
19528    const NAME: &'static str = "ScreenCapture";
19529
19530    fn is_initialized(&self) -> bool {
19531        true
19532    }
19533
19534    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
19535        while let Some(tag) = is.read_raw_tag_or_eof()? {
19536            match tag {
19537                8 => {
19538                    self.width = ::std::option::Option::Some(is.read_uint32()?);
19539                },
19540                16 => {
19541                    self.height = ::std::option::Option::Some(is.read_uint32()?);
19542                },
19543                26 => {
19544                    self.tiles.push(is.read_message()?);
19545                },
19546                tag => {
19547                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
19548                },
19549            };
19550        }
19551        ::std::result::Result::Ok(())
19552    }
19553
19554    // Compute sizes of nested messages
19555    #[allow(unused_variables)]
19556    fn compute_size(&self) -> u64 {
19557        let mut my_size = 0;
19558        if let Some(v) = self.width {
19559            my_size += ::protobuf::rt::uint32_size(1, v);
19560        }
19561        if let Some(v) = self.height {
19562            my_size += ::protobuf::rt::uint32_size(2, v);
19563        }
19564        for value in &self.tiles {
19565            let len = value.compute_size();
19566            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
19567        };
19568        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
19569        self.special_fields.cached_size().set(my_size as u32);
19570        my_size
19571    }
19572
19573    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
19574        if let Some(v) = self.width {
19575            os.write_uint32(1, v)?;
19576        }
19577        if let Some(v) = self.height {
19578            os.write_uint32(2, v)?;
19579        }
19580        for v in &self.tiles {
19581            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
19582        };
19583        os.write_unknown_fields(self.special_fields.unknown_fields())?;
19584        ::std::result::Result::Ok(())
19585    }
19586
19587    fn special_fields(&self) -> &::protobuf::SpecialFields {
19588        &self.special_fields
19589    }
19590
19591    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
19592        &mut self.special_fields
19593    }
19594
19595    fn new() -> ScreenCapture {
19596        ScreenCapture::new()
19597    }
19598
19599    fn clear(&mut self) {
19600        self.width = ::std::option::Option::None;
19601        self.height = ::std::option::Option::None;
19602        self.tiles.clear();
19603        self.special_fields.clear();
19604    }
19605
19606    fn default_instance() -> &'static ScreenCapture {
19607        static instance: ScreenCapture = ScreenCapture {
19608            width: ::std::option::Option::None,
19609            height: ::std::option::Option::None,
19610            tiles: ::std::vec::Vec::new(),
19611            special_fields: ::protobuf::SpecialFields::new(),
19612        };
19613        &instance
19614    }
19615}
19616
19617impl ::protobuf::MessageFull for ScreenCapture {
19618    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
19619        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
19620        descriptor.get(|| file_descriptor().message_by_package_relative_name("ScreenCapture").unwrap()).clone()
19621    }
19622}
19623
19624impl ::std::fmt::Display for ScreenCapture {
19625    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19626        ::protobuf::text_format::fmt(self, f)
19627    }
19628}
19629
19630impl ::protobuf::reflect::ProtobufValue for ScreenCapture {
19631    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
19632}
19633
19634// @@protoc_insertion_point(message:RemoteFortressReader.KeyboardEvent)
19635#[derive(PartialEq,Clone,Default,Debug)]
19636pub struct KeyboardEvent {
19637    // message fields
19638    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.type)
19639    pub type_: ::std::option::Option<u32>,
19640    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.which)
19641    pub which: ::std::option::Option<u32>,
19642    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.state)
19643    pub state: ::std::option::Option<u32>,
19644    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.scancode)
19645    pub scancode: ::std::option::Option<u32>,
19646    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.sym)
19647    pub sym: ::std::option::Option<u32>,
19648    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.mod)
19649    pub mod_: ::std::option::Option<u32>,
19650    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.unicode)
19651    pub unicode: ::std::option::Option<u32>,
19652    // special fields
19653    // @@protoc_insertion_point(special_field:RemoteFortressReader.KeyboardEvent.special_fields)
19654    pub special_fields: ::protobuf::SpecialFields,
19655}
19656
19657impl<'a> ::std::default::Default for &'a KeyboardEvent {
19658    fn default() -> &'a KeyboardEvent {
19659        <KeyboardEvent as ::protobuf::Message>::default_instance()
19660    }
19661}
19662
19663impl KeyboardEvent {
19664    pub fn new() -> KeyboardEvent {
19665        ::std::default::Default::default()
19666    }
19667
19668    // optional uint32 type = 1;
19669
19670    pub fn type_(&self) -> u32 {
19671        self.type_.unwrap_or(0)
19672    }
19673
19674    pub fn clear_type_(&mut self) {
19675        self.type_ = ::std::option::Option::None;
19676    }
19677
19678    pub fn has_type(&self) -> bool {
19679        self.type_.is_some()
19680    }
19681
19682    // Param is passed by value, moved
19683    pub fn set_type(&mut self, v: u32) {
19684        self.type_ = ::std::option::Option::Some(v);
19685    }
19686
19687    // optional uint32 which = 2;
19688
19689    pub fn which(&self) -> u32 {
19690        self.which.unwrap_or(0)
19691    }
19692
19693    pub fn clear_which(&mut self) {
19694        self.which = ::std::option::Option::None;
19695    }
19696
19697    pub fn has_which(&self) -> bool {
19698        self.which.is_some()
19699    }
19700
19701    // Param is passed by value, moved
19702    pub fn set_which(&mut self, v: u32) {
19703        self.which = ::std::option::Option::Some(v);
19704    }
19705
19706    // optional uint32 state = 3;
19707
19708    pub fn state(&self) -> u32 {
19709        self.state.unwrap_or(0)
19710    }
19711
19712    pub fn clear_state(&mut self) {
19713        self.state = ::std::option::Option::None;
19714    }
19715
19716    pub fn has_state(&self) -> bool {
19717        self.state.is_some()
19718    }
19719
19720    // Param is passed by value, moved
19721    pub fn set_state(&mut self, v: u32) {
19722        self.state = ::std::option::Option::Some(v);
19723    }
19724
19725    // optional uint32 scancode = 4;
19726
19727    pub fn scancode(&self) -> u32 {
19728        self.scancode.unwrap_or(0)
19729    }
19730
19731    pub fn clear_scancode(&mut self) {
19732        self.scancode = ::std::option::Option::None;
19733    }
19734
19735    pub fn has_scancode(&self) -> bool {
19736        self.scancode.is_some()
19737    }
19738
19739    // Param is passed by value, moved
19740    pub fn set_scancode(&mut self, v: u32) {
19741        self.scancode = ::std::option::Option::Some(v);
19742    }
19743
19744    // optional uint32 sym = 5;
19745
19746    pub fn sym(&self) -> u32 {
19747        self.sym.unwrap_or(0)
19748    }
19749
19750    pub fn clear_sym(&mut self) {
19751        self.sym = ::std::option::Option::None;
19752    }
19753
19754    pub fn has_sym(&self) -> bool {
19755        self.sym.is_some()
19756    }
19757
19758    // Param is passed by value, moved
19759    pub fn set_sym(&mut self, v: u32) {
19760        self.sym = ::std::option::Option::Some(v);
19761    }
19762
19763    // optional uint32 mod = 6;
19764
19765    pub fn mod_(&self) -> u32 {
19766        self.mod_.unwrap_or(0)
19767    }
19768
19769    pub fn clear_mod_(&mut self) {
19770        self.mod_ = ::std::option::Option::None;
19771    }
19772
19773    pub fn has_mod(&self) -> bool {
19774        self.mod_.is_some()
19775    }
19776
19777    // Param is passed by value, moved
19778    pub fn set_mod(&mut self, v: u32) {
19779        self.mod_ = ::std::option::Option::Some(v);
19780    }
19781
19782    // optional uint32 unicode = 7;
19783
19784    pub fn unicode(&self) -> u32 {
19785        self.unicode.unwrap_or(0)
19786    }
19787
19788    pub fn clear_unicode(&mut self) {
19789        self.unicode = ::std::option::Option::None;
19790    }
19791
19792    pub fn has_unicode(&self) -> bool {
19793        self.unicode.is_some()
19794    }
19795
19796    // Param is passed by value, moved
19797    pub fn set_unicode(&mut self, v: u32) {
19798        self.unicode = ::std::option::Option::Some(v);
19799    }
19800
19801    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
19802        let mut fields = ::std::vec::Vec::with_capacity(7);
19803        let mut oneofs = ::std::vec::Vec::with_capacity(0);
19804        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19805            "type",
19806            |m: &KeyboardEvent| { &m.type_ },
19807            |m: &mut KeyboardEvent| { &mut m.type_ },
19808        ));
19809        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19810            "which",
19811            |m: &KeyboardEvent| { &m.which },
19812            |m: &mut KeyboardEvent| { &mut m.which },
19813        ));
19814        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19815            "state",
19816            |m: &KeyboardEvent| { &m.state },
19817            |m: &mut KeyboardEvent| { &mut m.state },
19818        ));
19819        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19820            "scancode",
19821            |m: &KeyboardEvent| { &m.scancode },
19822            |m: &mut KeyboardEvent| { &mut m.scancode },
19823        ));
19824        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19825            "sym",
19826            |m: &KeyboardEvent| { &m.sym },
19827            |m: &mut KeyboardEvent| { &mut m.sym },
19828        ));
19829        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19830            "mod",
19831            |m: &KeyboardEvent| { &m.mod_ },
19832            |m: &mut KeyboardEvent| { &mut m.mod_ },
19833        ));
19834        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19835            "unicode",
19836            |m: &KeyboardEvent| { &m.unicode },
19837            |m: &mut KeyboardEvent| { &mut m.unicode },
19838        ));
19839        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<KeyboardEvent>(
19840            "KeyboardEvent",
19841            fields,
19842            oneofs,
19843        )
19844    }
19845}
19846
19847impl ::protobuf::Message for KeyboardEvent {
19848    const NAME: &'static str = "KeyboardEvent";
19849
19850    fn is_initialized(&self) -> bool {
19851        true
19852    }
19853
19854    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
19855        while let Some(tag) = is.read_raw_tag_or_eof()? {
19856            match tag {
19857                8 => {
19858                    self.type_ = ::std::option::Option::Some(is.read_uint32()?);
19859                },
19860                16 => {
19861                    self.which = ::std::option::Option::Some(is.read_uint32()?);
19862                },
19863                24 => {
19864                    self.state = ::std::option::Option::Some(is.read_uint32()?);
19865                },
19866                32 => {
19867                    self.scancode = ::std::option::Option::Some(is.read_uint32()?);
19868                },
19869                40 => {
19870                    self.sym = ::std::option::Option::Some(is.read_uint32()?);
19871                },
19872                48 => {
19873                    self.mod_ = ::std::option::Option::Some(is.read_uint32()?);
19874                },
19875                56 => {
19876                    self.unicode = ::std::option::Option::Some(is.read_uint32()?);
19877                },
19878                tag => {
19879                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
19880                },
19881            };
19882        }
19883        ::std::result::Result::Ok(())
19884    }
19885
19886    // Compute sizes of nested messages
19887    #[allow(unused_variables)]
19888    fn compute_size(&self) -> u64 {
19889        let mut my_size = 0;
19890        if let Some(v) = self.type_ {
19891            my_size += ::protobuf::rt::uint32_size(1, v);
19892        }
19893        if let Some(v) = self.which {
19894            my_size += ::protobuf::rt::uint32_size(2, v);
19895        }
19896        if let Some(v) = self.state {
19897            my_size += ::protobuf::rt::uint32_size(3, v);
19898        }
19899        if let Some(v) = self.scancode {
19900            my_size += ::protobuf::rt::uint32_size(4, v);
19901        }
19902        if let Some(v) = self.sym {
19903            my_size += ::protobuf::rt::uint32_size(5, v);
19904        }
19905        if let Some(v) = self.mod_ {
19906            my_size += ::protobuf::rt::uint32_size(6, v);
19907        }
19908        if let Some(v) = self.unicode {
19909            my_size += ::protobuf::rt::uint32_size(7, v);
19910        }
19911        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
19912        self.special_fields.cached_size().set(my_size as u32);
19913        my_size
19914    }
19915
19916    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
19917        if let Some(v) = self.type_ {
19918            os.write_uint32(1, v)?;
19919        }
19920        if let Some(v) = self.which {
19921            os.write_uint32(2, v)?;
19922        }
19923        if let Some(v) = self.state {
19924            os.write_uint32(3, v)?;
19925        }
19926        if let Some(v) = self.scancode {
19927            os.write_uint32(4, v)?;
19928        }
19929        if let Some(v) = self.sym {
19930            os.write_uint32(5, v)?;
19931        }
19932        if let Some(v) = self.mod_ {
19933            os.write_uint32(6, v)?;
19934        }
19935        if let Some(v) = self.unicode {
19936            os.write_uint32(7, v)?;
19937        }
19938        os.write_unknown_fields(self.special_fields.unknown_fields())?;
19939        ::std::result::Result::Ok(())
19940    }
19941
19942    fn special_fields(&self) -> &::protobuf::SpecialFields {
19943        &self.special_fields
19944    }
19945
19946    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
19947        &mut self.special_fields
19948    }
19949
19950    fn new() -> KeyboardEvent {
19951        KeyboardEvent::new()
19952    }
19953
19954    fn clear(&mut self) {
19955        self.type_ = ::std::option::Option::None;
19956        self.which = ::std::option::Option::None;
19957        self.state = ::std::option::Option::None;
19958        self.scancode = ::std::option::Option::None;
19959        self.sym = ::std::option::Option::None;
19960        self.mod_ = ::std::option::Option::None;
19961        self.unicode = ::std::option::Option::None;
19962        self.special_fields.clear();
19963    }
19964
19965    fn default_instance() -> &'static KeyboardEvent {
19966        static instance: KeyboardEvent = KeyboardEvent {
19967            type_: ::std::option::Option::None,
19968            which: ::std::option::Option::None,
19969            state: ::std::option::Option::None,
19970            scancode: ::std::option::Option::None,
19971            sym: ::std::option::Option::None,
19972            mod_: ::std::option::Option::None,
19973            unicode: ::std::option::Option::None,
19974            special_fields: ::protobuf::SpecialFields::new(),
19975        };
19976        &instance
19977    }
19978}
19979
19980impl ::protobuf::MessageFull for KeyboardEvent {
19981    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
19982        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
19983        descriptor.get(|| file_descriptor().message_by_package_relative_name("KeyboardEvent").unwrap()).clone()
19984    }
19985}
19986
19987impl ::std::fmt::Display for KeyboardEvent {
19988    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19989        ::protobuf::text_format::fmt(self, f)
19990    }
19991}
19992
19993impl ::protobuf::reflect::ProtobufValue for KeyboardEvent {
19994    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
19995}
19996
19997// @@protoc_insertion_point(message:RemoteFortressReader.DigCommand)
19998#[derive(PartialEq,Clone,Default,Debug)]
19999pub struct DigCommand {
20000    // message fields
20001    // @@protoc_insertion_point(field:RemoteFortressReader.DigCommand.designation)
20002    pub designation: ::std::option::Option<::protobuf::EnumOrUnknown<TileDigDesignation>>,
20003    // @@protoc_insertion_point(field:RemoteFortressReader.DigCommand.locations)
20004    pub locations: ::std::vec::Vec<Coord>,
20005    // special fields
20006    // @@protoc_insertion_point(special_field:RemoteFortressReader.DigCommand.special_fields)
20007    pub special_fields: ::protobuf::SpecialFields,
20008}
20009
20010impl<'a> ::std::default::Default for &'a DigCommand {
20011    fn default() -> &'a DigCommand {
20012        <DigCommand as ::protobuf::Message>::default_instance()
20013    }
20014}
20015
20016impl DigCommand {
20017    pub fn new() -> DigCommand {
20018        ::std::default::Default::default()
20019    }
20020
20021    // optional .RemoteFortressReader.TileDigDesignation designation = 1;
20022
20023    pub fn designation(&self) -> TileDigDesignation {
20024        match self.designation {
20025            Some(e) => e.enum_value_or(TileDigDesignation::NO_DIG),
20026            None => TileDigDesignation::NO_DIG,
20027        }
20028    }
20029
20030    pub fn clear_designation(&mut self) {
20031        self.designation = ::std::option::Option::None;
20032    }
20033
20034    pub fn has_designation(&self) -> bool {
20035        self.designation.is_some()
20036    }
20037
20038    // Param is passed by value, moved
20039    pub fn set_designation(&mut self, v: TileDigDesignation) {
20040        self.designation = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
20041    }
20042
20043    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
20044        let mut fields = ::std::vec::Vec::with_capacity(2);
20045        let mut oneofs = ::std::vec::Vec::with_capacity(0);
20046        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20047            "designation",
20048            |m: &DigCommand| { &m.designation },
20049            |m: &mut DigCommand| { &mut m.designation },
20050        ));
20051        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
20052            "locations",
20053            |m: &DigCommand| { &m.locations },
20054            |m: &mut DigCommand| { &mut m.locations },
20055        ));
20056        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<DigCommand>(
20057            "DigCommand",
20058            fields,
20059            oneofs,
20060        )
20061    }
20062}
20063
20064impl ::protobuf::Message for DigCommand {
20065    const NAME: &'static str = "DigCommand";
20066
20067    fn is_initialized(&self) -> bool {
20068        true
20069    }
20070
20071    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
20072        while let Some(tag) = is.read_raw_tag_or_eof()? {
20073            match tag {
20074                8 => {
20075                    self.designation = ::std::option::Option::Some(is.read_enum_or_unknown()?);
20076                },
20077                18 => {
20078                    self.locations.push(is.read_message()?);
20079                },
20080                tag => {
20081                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
20082                },
20083            };
20084        }
20085        ::std::result::Result::Ok(())
20086    }
20087
20088    // Compute sizes of nested messages
20089    #[allow(unused_variables)]
20090    fn compute_size(&self) -> u64 {
20091        let mut my_size = 0;
20092        if let Some(v) = self.designation {
20093            my_size += ::protobuf::rt::int32_size(1, v.value());
20094        }
20095        for value in &self.locations {
20096            let len = value.compute_size();
20097            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
20098        };
20099        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
20100        self.special_fields.cached_size().set(my_size as u32);
20101        my_size
20102    }
20103
20104    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
20105        if let Some(v) = self.designation {
20106            os.write_enum(1, ::protobuf::EnumOrUnknown::value(&v))?;
20107        }
20108        for v in &self.locations {
20109            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
20110        };
20111        os.write_unknown_fields(self.special_fields.unknown_fields())?;
20112        ::std::result::Result::Ok(())
20113    }
20114
20115    fn special_fields(&self) -> &::protobuf::SpecialFields {
20116        &self.special_fields
20117    }
20118
20119    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
20120        &mut self.special_fields
20121    }
20122
20123    fn new() -> DigCommand {
20124        DigCommand::new()
20125    }
20126
20127    fn clear(&mut self) {
20128        self.designation = ::std::option::Option::None;
20129        self.locations.clear();
20130        self.special_fields.clear();
20131    }
20132
20133    fn default_instance() -> &'static DigCommand {
20134        static instance: DigCommand = DigCommand {
20135            designation: ::std::option::Option::None,
20136            locations: ::std::vec::Vec::new(),
20137            special_fields: ::protobuf::SpecialFields::new(),
20138        };
20139        &instance
20140    }
20141}
20142
20143impl ::protobuf::MessageFull for DigCommand {
20144    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
20145        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
20146        descriptor.get(|| file_descriptor().message_by_package_relative_name("DigCommand").unwrap()).clone()
20147    }
20148}
20149
20150impl ::std::fmt::Display for DigCommand {
20151    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20152        ::protobuf::text_format::fmt(self, f)
20153    }
20154}
20155
20156impl ::protobuf::reflect::ProtobufValue for DigCommand {
20157    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
20158}
20159
20160// @@protoc_insertion_point(message:RemoteFortressReader.SingleBool)
20161#[derive(PartialEq,Clone,Default,Debug)]
20162pub struct SingleBool {
20163    // message fields
20164    // @@protoc_insertion_point(field:RemoteFortressReader.SingleBool.Value)
20165    pub Value: ::std::option::Option<bool>,
20166    // special fields
20167    // @@protoc_insertion_point(special_field:RemoteFortressReader.SingleBool.special_fields)
20168    pub special_fields: ::protobuf::SpecialFields,
20169}
20170
20171impl<'a> ::std::default::Default for &'a SingleBool {
20172    fn default() -> &'a SingleBool {
20173        <SingleBool as ::protobuf::Message>::default_instance()
20174    }
20175}
20176
20177impl SingleBool {
20178    pub fn new() -> SingleBool {
20179        ::std::default::Default::default()
20180    }
20181
20182    // optional bool Value = 1;
20183
20184    pub fn Value(&self) -> bool {
20185        self.Value.unwrap_or(false)
20186    }
20187
20188    pub fn clear_Value(&mut self) {
20189        self.Value = ::std::option::Option::None;
20190    }
20191
20192    pub fn has_Value(&self) -> bool {
20193        self.Value.is_some()
20194    }
20195
20196    // Param is passed by value, moved
20197    pub fn set_Value(&mut self, v: bool) {
20198        self.Value = ::std::option::Option::Some(v);
20199    }
20200
20201    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
20202        let mut fields = ::std::vec::Vec::with_capacity(1);
20203        let mut oneofs = ::std::vec::Vec::with_capacity(0);
20204        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20205            "Value",
20206            |m: &SingleBool| { &m.Value },
20207            |m: &mut SingleBool| { &mut m.Value },
20208        ));
20209        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SingleBool>(
20210            "SingleBool",
20211            fields,
20212            oneofs,
20213        )
20214    }
20215}
20216
20217impl ::protobuf::Message for SingleBool {
20218    const NAME: &'static str = "SingleBool";
20219
20220    fn is_initialized(&self) -> bool {
20221        true
20222    }
20223
20224    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
20225        while let Some(tag) = is.read_raw_tag_or_eof()? {
20226            match tag {
20227                8 => {
20228                    self.Value = ::std::option::Option::Some(is.read_bool()?);
20229                },
20230                tag => {
20231                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
20232                },
20233            };
20234        }
20235        ::std::result::Result::Ok(())
20236    }
20237
20238    // Compute sizes of nested messages
20239    #[allow(unused_variables)]
20240    fn compute_size(&self) -> u64 {
20241        let mut my_size = 0;
20242        if let Some(v) = self.Value {
20243            my_size += 1 + 1;
20244        }
20245        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
20246        self.special_fields.cached_size().set(my_size as u32);
20247        my_size
20248    }
20249
20250    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
20251        if let Some(v) = self.Value {
20252            os.write_bool(1, v)?;
20253        }
20254        os.write_unknown_fields(self.special_fields.unknown_fields())?;
20255        ::std::result::Result::Ok(())
20256    }
20257
20258    fn special_fields(&self) -> &::protobuf::SpecialFields {
20259        &self.special_fields
20260    }
20261
20262    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
20263        &mut self.special_fields
20264    }
20265
20266    fn new() -> SingleBool {
20267        SingleBool::new()
20268    }
20269
20270    fn clear(&mut self) {
20271        self.Value = ::std::option::Option::None;
20272        self.special_fields.clear();
20273    }
20274
20275    fn default_instance() -> &'static SingleBool {
20276        static instance: SingleBool = SingleBool {
20277            Value: ::std::option::Option::None,
20278            special_fields: ::protobuf::SpecialFields::new(),
20279        };
20280        &instance
20281    }
20282}
20283
20284impl ::protobuf::MessageFull for SingleBool {
20285    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
20286        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
20287        descriptor.get(|| file_descriptor().message_by_package_relative_name("SingleBool").unwrap()).clone()
20288    }
20289}
20290
20291impl ::std::fmt::Display for SingleBool {
20292    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20293        ::protobuf::text_format::fmt(self, f)
20294    }
20295}
20296
20297impl ::protobuf::reflect::ProtobufValue for SingleBool {
20298    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
20299}
20300
20301// @@protoc_insertion_point(message:RemoteFortressReader.VersionInfo)
20302#[derive(PartialEq,Clone,Default,Debug)]
20303pub struct VersionInfo {
20304    // message fields
20305    // @@protoc_insertion_point(field:RemoteFortressReader.VersionInfo.dwarf_fortress_version)
20306    pub dwarf_fortress_version: ::std::option::Option<::std::string::String>,
20307    // @@protoc_insertion_point(field:RemoteFortressReader.VersionInfo.dfhack_version)
20308    pub dfhack_version: ::std::option::Option<::std::string::String>,
20309    // @@protoc_insertion_point(field:RemoteFortressReader.VersionInfo.remote_fortress_reader_version)
20310    pub remote_fortress_reader_version: ::std::option::Option<::std::string::String>,
20311    // special fields
20312    // @@protoc_insertion_point(special_field:RemoteFortressReader.VersionInfo.special_fields)
20313    pub special_fields: ::protobuf::SpecialFields,
20314}
20315
20316impl<'a> ::std::default::Default for &'a VersionInfo {
20317    fn default() -> &'a VersionInfo {
20318        <VersionInfo as ::protobuf::Message>::default_instance()
20319    }
20320}
20321
20322impl VersionInfo {
20323    pub fn new() -> VersionInfo {
20324        ::std::default::Default::default()
20325    }
20326
20327    // optional string dwarf_fortress_version = 1;
20328
20329    pub fn dwarf_fortress_version(&self) -> &str {
20330        match self.dwarf_fortress_version.as_ref() {
20331            Some(v) => v,
20332            None => "",
20333        }
20334    }
20335
20336    pub fn clear_dwarf_fortress_version(&mut self) {
20337        self.dwarf_fortress_version = ::std::option::Option::None;
20338    }
20339
20340    pub fn has_dwarf_fortress_version(&self) -> bool {
20341        self.dwarf_fortress_version.is_some()
20342    }
20343
20344    // Param is passed by value, moved
20345    pub fn set_dwarf_fortress_version(&mut self, v: ::std::string::String) {
20346        self.dwarf_fortress_version = ::std::option::Option::Some(v);
20347    }
20348
20349    // Mutable pointer to the field.
20350    // If field is not initialized, it is initialized with default value first.
20351    pub fn mut_dwarf_fortress_version(&mut self) -> &mut ::std::string::String {
20352        if self.dwarf_fortress_version.is_none() {
20353            self.dwarf_fortress_version = ::std::option::Option::Some(::std::string::String::new());
20354        }
20355        self.dwarf_fortress_version.as_mut().unwrap()
20356    }
20357
20358    // Take field
20359    pub fn take_dwarf_fortress_version(&mut self) -> ::std::string::String {
20360        self.dwarf_fortress_version.take().unwrap_or_else(|| ::std::string::String::new())
20361    }
20362
20363    // optional string dfhack_version = 2;
20364
20365    pub fn dfhack_version(&self) -> &str {
20366        match self.dfhack_version.as_ref() {
20367            Some(v) => v,
20368            None => "",
20369        }
20370    }
20371
20372    pub fn clear_dfhack_version(&mut self) {
20373        self.dfhack_version = ::std::option::Option::None;
20374    }
20375
20376    pub fn has_dfhack_version(&self) -> bool {
20377        self.dfhack_version.is_some()
20378    }
20379
20380    // Param is passed by value, moved
20381    pub fn set_dfhack_version(&mut self, v: ::std::string::String) {
20382        self.dfhack_version = ::std::option::Option::Some(v);
20383    }
20384
20385    // Mutable pointer to the field.
20386    // If field is not initialized, it is initialized with default value first.
20387    pub fn mut_dfhack_version(&mut self) -> &mut ::std::string::String {
20388        if self.dfhack_version.is_none() {
20389            self.dfhack_version = ::std::option::Option::Some(::std::string::String::new());
20390        }
20391        self.dfhack_version.as_mut().unwrap()
20392    }
20393
20394    // Take field
20395    pub fn take_dfhack_version(&mut self) -> ::std::string::String {
20396        self.dfhack_version.take().unwrap_or_else(|| ::std::string::String::new())
20397    }
20398
20399    // optional string remote_fortress_reader_version = 3;
20400
20401    pub fn remote_fortress_reader_version(&self) -> &str {
20402        match self.remote_fortress_reader_version.as_ref() {
20403            Some(v) => v,
20404            None => "",
20405        }
20406    }
20407
20408    pub fn clear_remote_fortress_reader_version(&mut self) {
20409        self.remote_fortress_reader_version = ::std::option::Option::None;
20410    }
20411
20412    pub fn has_remote_fortress_reader_version(&self) -> bool {
20413        self.remote_fortress_reader_version.is_some()
20414    }
20415
20416    // Param is passed by value, moved
20417    pub fn set_remote_fortress_reader_version(&mut self, v: ::std::string::String) {
20418        self.remote_fortress_reader_version = ::std::option::Option::Some(v);
20419    }
20420
20421    // Mutable pointer to the field.
20422    // If field is not initialized, it is initialized with default value first.
20423    pub fn mut_remote_fortress_reader_version(&mut self) -> &mut ::std::string::String {
20424        if self.remote_fortress_reader_version.is_none() {
20425            self.remote_fortress_reader_version = ::std::option::Option::Some(::std::string::String::new());
20426        }
20427        self.remote_fortress_reader_version.as_mut().unwrap()
20428    }
20429
20430    // Take field
20431    pub fn take_remote_fortress_reader_version(&mut self) -> ::std::string::String {
20432        self.remote_fortress_reader_version.take().unwrap_or_else(|| ::std::string::String::new())
20433    }
20434
20435    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
20436        let mut fields = ::std::vec::Vec::with_capacity(3);
20437        let mut oneofs = ::std::vec::Vec::with_capacity(0);
20438        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20439            "dwarf_fortress_version",
20440            |m: &VersionInfo| { &m.dwarf_fortress_version },
20441            |m: &mut VersionInfo| { &mut m.dwarf_fortress_version },
20442        ));
20443        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20444            "dfhack_version",
20445            |m: &VersionInfo| { &m.dfhack_version },
20446            |m: &mut VersionInfo| { &mut m.dfhack_version },
20447        ));
20448        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20449            "remote_fortress_reader_version",
20450            |m: &VersionInfo| { &m.remote_fortress_reader_version },
20451            |m: &mut VersionInfo| { &mut m.remote_fortress_reader_version },
20452        ));
20453        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<VersionInfo>(
20454            "VersionInfo",
20455            fields,
20456            oneofs,
20457        )
20458    }
20459}
20460
20461impl ::protobuf::Message for VersionInfo {
20462    const NAME: &'static str = "VersionInfo";
20463
20464    fn is_initialized(&self) -> bool {
20465        true
20466    }
20467
20468    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
20469        while let Some(tag) = is.read_raw_tag_or_eof()? {
20470            match tag {
20471                10 => {
20472                    self.dwarf_fortress_version = ::std::option::Option::Some(is.read_string()?);
20473                },
20474                18 => {
20475                    self.dfhack_version = ::std::option::Option::Some(is.read_string()?);
20476                },
20477                26 => {
20478                    self.remote_fortress_reader_version = ::std::option::Option::Some(is.read_string()?);
20479                },
20480                tag => {
20481                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
20482                },
20483            };
20484        }
20485        ::std::result::Result::Ok(())
20486    }
20487
20488    // Compute sizes of nested messages
20489    #[allow(unused_variables)]
20490    fn compute_size(&self) -> u64 {
20491        let mut my_size = 0;
20492        if let Some(v) = self.dwarf_fortress_version.as_ref() {
20493            my_size += ::protobuf::rt::string_size(1, &v);
20494        }
20495        if let Some(v) = self.dfhack_version.as_ref() {
20496            my_size += ::protobuf::rt::string_size(2, &v);
20497        }
20498        if let Some(v) = self.remote_fortress_reader_version.as_ref() {
20499            my_size += ::protobuf::rt::string_size(3, &v);
20500        }
20501        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
20502        self.special_fields.cached_size().set(my_size as u32);
20503        my_size
20504    }
20505
20506    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
20507        if let Some(v) = self.dwarf_fortress_version.as_ref() {
20508            os.write_string(1, v)?;
20509        }
20510        if let Some(v) = self.dfhack_version.as_ref() {
20511            os.write_string(2, v)?;
20512        }
20513        if let Some(v) = self.remote_fortress_reader_version.as_ref() {
20514            os.write_string(3, v)?;
20515        }
20516        os.write_unknown_fields(self.special_fields.unknown_fields())?;
20517        ::std::result::Result::Ok(())
20518    }
20519
20520    fn special_fields(&self) -> &::protobuf::SpecialFields {
20521        &self.special_fields
20522    }
20523
20524    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
20525        &mut self.special_fields
20526    }
20527
20528    fn new() -> VersionInfo {
20529        VersionInfo::new()
20530    }
20531
20532    fn clear(&mut self) {
20533        self.dwarf_fortress_version = ::std::option::Option::None;
20534        self.dfhack_version = ::std::option::Option::None;
20535        self.remote_fortress_reader_version = ::std::option::Option::None;
20536        self.special_fields.clear();
20537    }
20538
20539    fn default_instance() -> &'static VersionInfo {
20540        static instance: VersionInfo = VersionInfo {
20541            dwarf_fortress_version: ::std::option::Option::None,
20542            dfhack_version: ::std::option::Option::None,
20543            remote_fortress_reader_version: ::std::option::Option::None,
20544            special_fields: ::protobuf::SpecialFields::new(),
20545        };
20546        &instance
20547    }
20548}
20549
20550impl ::protobuf::MessageFull for VersionInfo {
20551    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
20552        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
20553        descriptor.get(|| file_descriptor().message_by_package_relative_name("VersionInfo").unwrap()).clone()
20554    }
20555}
20556
20557impl ::std::fmt::Display for VersionInfo {
20558    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20559        ::protobuf::text_format::fmt(self, f)
20560    }
20561}
20562
20563impl ::protobuf::reflect::ProtobufValue for VersionInfo {
20564    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
20565}
20566
20567// @@protoc_insertion_point(message:RemoteFortressReader.ListRequest)
20568#[derive(PartialEq,Clone,Default,Debug)]
20569pub struct ListRequest {
20570    // message fields
20571    // @@protoc_insertion_point(field:RemoteFortressReader.ListRequest.list_start)
20572    pub list_start: ::std::option::Option<i32>,
20573    // @@protoc_insertion_point(field:RemoteFortressReader.ListRequest.list_end)
20574    pub list_end: ::std::option::Option<i32>,
20575    // special fields
20576    // @@protoc_insertion_point(special_field:RemoteFortressReader.ListRequest.special_fields)
20577    pub special_fields: ::protobuf::SpecialFields,
20578}
20579
20580impl<'a> ::std::default::Default for &'a ListRequest {
20581    fn default() -> &'a ListRequest {
20582        <ListRequest as ::protobuf::Message>::default_instance()
20583    }
20584}
20585
20586impl ListRequest {
20587    pub fn new() -> ListRequest {
20588        ::std::default::Default::default()
20589    }
20590
20591    // optional int32 list_start = 1;
20592
20593    pub fn list_start(&self) -> i32 {
20594        self.list_start.unwrap_or(0)
20595    }
20596
20597    pub fn clear_list_start(&mut self) {
20598        self.list_start = ::std::option::Option::None;
20599    }
20600
20601    pub fn has_list_start(&self) -> bool {
20602        self.list_start.is_some()
20603    }
20604
20605    // Param is passed by value, moved
20606    pub fn set_list_start(&mut self, v: i32) {
20607        self.list_start = ::std::option::Option::Some(v);
20608    }
20609
20610    // optional int32 list_end = 2;
20611
20612    pub fn list_end(&self) -> i32 {
20613        self.list_end.unwrap_or(0)
20614    }
20615
20616    pub fn clear_list_end(&mut self) {
20617        self.list_end = ::std::option::Option::None;
20618    }
20619
20620    pub fn has_list_end(&self) -> bool {
20621        self.list_end.is_some()
20622    }
20623
20624    // Param is passed by value, moved
20625    pub fn set_list_end(&mut self, v: i32) {
20626        self.list_end = ::std::option::Option::Some(v);
20627    }
20628
20629    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
20630        let mut fields = ::std::vec::Vec::with_capacity(2);
20631        let mut oneofs = ::std::vec::Vec::with_capacity(0);
20632        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20633            "list_start",
20634            |m: &ListRequest| { &m.list_start },
20635            |m: &mut ListRequest| { &mut m.list_start },
20636        ));
20637        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20638            "list_end",
20639            |m: &ListRequest| { &m.list_end },
20640            |m: &mut ListRequest| { &mut m.list_end },
20641        ));
20642        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ListRequest>(
20643            "ListRequest",
20644            fields,
20645            oneofs,
20646        )
20647    }
20648}
20649
20650impl ::protobuf::Message for ListRequest {
20651    const NAME: &'static str = "ListRequest";
20652
20653    fn is_initialized(&self) -> bool {
20654        true
20655    }
20656
20657    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
20658        while let Some(tag) = is.read_raw_tag_or_eof()? {
20659            match tag {
20660                8 => {
20661                    self.list_start = ::std::option::Option::Some(is.read_int32()?);
20662                },
20663                16 => {
20664                    self.list_end = ::std::option::Option::Some(is.read_int32()?);
20665                },
20666                tag => {
20667                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
20668                },
20669            };
20670        }
20671        ::std::result::Result::Ok(())
20672    }
20673
20674    // Compute sizes of nested messages
20675    #[allow(unused_variables)]
20676    fn compute_size(&self) -> u64 {
20677        let mut my_size = 0;
20678        if let Some(v) = self.list_start {
20679            my_size += ::protobuf::rt::int32_size(1, v);
20680        }
20681        if let Some(v) = self.list_end {
20682            my_size += ::protobuf::rt::int32_size(2, v);
20683        }
20684        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
20685        self.special_fields.cached_size().set(my_size as u32);
20686        my_size
20687    }
20688
20689    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
20690        if let Some(v) = self.list_start {
20691            os.write_int32(1, v)?;
20692        }
20693        if let Some(v) = self.list_end {
20694            os.write_int32(2, v)?;
20695        }
20696        os.write_unknown_fields(self.special_fields.unknown_fields())?;
20697        ::std::result::Result::Ok(())
20698    }
20699
20700    fn special_fields(&self) -> &::protobuf::SpecialFields {
20701        &self.special_fields
20702    }
20703
20704    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
20705        &mut self.special_fields
20706    }
20707
20708    fn new() -> ListRequest {
20709        ListRequest::new()
20710    }
20711
20712    fn clear(&mut self) {
20713        self.list_start = ::std::option::Option::None;
20714        self.list_end = ::std::option::Option::None;
20715        self.special_fields.clear();
20716    }
20717
20718    fn default_instance() -> &'static ListRequest {
20719        static instance: ListRequest = ListRequest {
20720            list_start: ::std::option::Option::None,
20721            list_end: ::std::option::Option::None,
20722            special_fields: ::protobuf::SpecialFields::new(),
20723        };
20724        &instance
20725    }
20726}
20727
20728impl ::protobuf::MessageFull for ListRequest {
20729    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
20730        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
20731        descriptor.get(|| file_descriptor().message_by_package_relative_name("ListRequest").unwrap()).clone()
20732    }
20733}
20734
20735impl ::std::fmt::Display for ListRequest {
20736    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20737        ::protobuf::text_format::fmt(self, f)
20738    }
20739}
20740
20741impl ::protobuf::reflect::ProtobufValue for ListRequest {
20742    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
20743}
20744
20745// @@protoc_insertion_point(message:RemoteFortressReader.Report)
20746#[derive(PartialEq,Clone,Default,Debug)]
20747pub struct Report {
20748    // message fields
20749    // @@protoc_insertion_point(field:RemoteFortressReader.Report.type)
20750    pub type_: ::std::option::Option<i32>,
20751    // @@protoc_insertion_point(field:RemoteFortressReader.Report.text)
20752    pub text: ::std::option::Option<::std::string::String>,
20753    // @@protoc_insertion_point(field:RemoteFortressReader.Report.color)
20754    pub color: ::protobuf::MessageField<ColorDefinition>,
20755    // @@protoc_insertion_point(field:RemoteFortressReader.Report.duration)
20756    pub duration: ::std::option::Option<i32>,
20757    // @@protoc_insertion_point(field:RemoteFortressReader.Report.continuation)
20758    pub continuation: ::std::option::Option<bool>,
20759    // @@protoc_insertion_point(field:RemoteFortressReader.Report.unconscious)
20760    pub unconscious: ::std::option::Option<bool>,
20761    // @@protoc_insertion_point(field:RemoteFortressReader.Report.announcement)
20762    pub announcement: ::std::option::Option<bool>,
20763    // @@protoc_insertion_point(field:RemoteFortressReader.Report.repeat_count)
20764    pub repeat_count: ::std::option::Option<i32>,
20765    // @@protoc_insertion_point(field:RemoteFortressReader.Report.pos)
20766    pub pos: ::protobuf::MessageField<Coord>,
20767    // @@protoc_insertion_point(field:RemoteFortressReader.Report.id)
20768    pub id: ::std::option::Option<i32>,
20769    // @@protoc_insertion_point(field:RemoteFortressReader.Report.year)
20770    pub year: ::std::option::Option<i32>,
20771    // @@protoc_insertion_point(field:RemoteFortressReader.Report.time)
20772    pub time: ::std::option::Option<i32>,
20773    // special fields
20774    // @@protoc_insertion_point(special_field:RemoteFortressReader.Report.special_fields)
20775    pub special_fields: ::protobuf::SpecialFields,
20776}
20777
20778impl<'a> ::std::default::Default for &'a Report {
20779    fn default() -> &'a Report {
20780        <Report as ::protobuf::Message>::default_instance()
20781    }
20782}
20783
20784impl Report {
20785    pub fn new() -> Report {
20786        ::std::default::Default::default()
20787    }
20788
20789    // optional int32 type = 1;
20790
20791    pub fn type_(&self) -> i32 {
20792        self.type_.unwrap_or(0)
20793    }
20794
20795    pub fn clear_type_(&mut self) {
20796        self.type_ = ::std::option::Option::None;
20797    }
20798
20799    pub fn has_type(&self) -> bool {
20800        self.type_.is_some()
20801    }
20802
20803    // Param is passed by value, moved
20804    pub fn set_type(&mut self, v: i32) {
20805        self.type_ = ::std::option::Option::Some(v);
20806    }
20807
20808    // optional string text = 2;
20809
20810    pub fn text(&self) -> &str {
20811        match self.text.as_ref() {
20812            Some(v) => v,
20813            None => "",
20814        }
20815    }
20816
20817    pub fn clear_text(&mut self) {
20818        self.text = ::std::option::Option::None;
20819    }
20820
20821    pub fn has_text(&self) -> bool {
20822        self.text.is_some()
20823    }
20824
20825    // Param is passed by value, moved
20826    pub fn set_text(&mut self, v: ::std::string::String) {
20827        self.text = ::std::option::Option::Some(v);
20828    }
20829
20830    // Mutable pointer to the field.
20831    // If field is not initialized, it is initialized with default value first.
20832    pub fn mut_text(&mut self) -> &mut ::std::string::String {
20833        if self.text.is_none() {
20834            self.text = ::std::option::Option::Some(::std::string::String::new());
20835        }
20836        self.text.as_mut().unwrap()
20837    }
20838
20839    // Take field
20840    pub fn take_text(&mut self) -> ::std::string::String {
20841        self.text.take().unwrap_or_else(|| ::std::string::String::new())
20842    }
20843
20844    // optional int32 duration = 4;
20845
20846    pub fn duration(&self) -> i32 {
20847        self.duration.unwrap_or(0)
20848    }
20849
20850    pub fn clear_duration(&mut self) {
20851        self.duration = ::std::option::Option::None;
20852    }
20853
20854    pub fn has_duration(&self) -> bool {
20855        self.duration.is_some()
20856    }
20857
20858    // Param is passed by value, moved
20859    pub fn set_duration(&mut self, v: i32) {
20860        self.duration = ::std::option::Option::Some(v);
20861    }
20862
20863    // optional bool continuation = 5;
20864
20865    pub fn continuation(&self) -> bool {
20866        self.continuation.unwrap_or(false)
20867    }
20868
20869    pub fn clear_continuation(&mut self) {
20870        self.continuation = ::std::option::Option::None;
20871    }
20872
20873    pub fn has_continuation(&self) -> bool {
20874        self.continuation.is_some()
20875    }
20876
20877    // Param is passed by value, moved
20878    pub fn set_continuation(&mut self, v: bool) {
20879        self.continuation = ::std::option::Option::Some(v);
20880    }
20881
20882    // optional bool unconscious = 6;
20883
20884    pub fn unconscious(&self) -> bool {
20885        self.unconscious.unwrap_or(false)
20886    }
20887
20888    pub fn clear_unconscious(&mut self) {
20889        self.unconscious = ::std::option::Option::None;
20890    }
20891
20892    pub fn has_unconscious(&self) -> bool {
20893        self.unconscious.is_some()
20894    }
20895
20896    // Param is passed by value, moved
20897    pub fn set_unconscious(&mut self, v: bool) {
20898        self.unconscious = ::std::option::Option::Some(v);
20899    }
20900
20901    // optional bool announcement = 7;
20902
20903    pub fn announcement(&self) -> bool {
20904        self.announcement.unwrap_or(false)
20905    }
20906
20907    pub fn clear_announcement(&mut self) {
20908        self.announcement = ::std::option::Option::None;
20909    }
20910
20911    pub fn has_announcement(&self) -> bool {
20912        self.announcement.is_some()
20913    }
20914
20915    // Param is passed by value, moved
20916    pub fn set_announcement(&mut self, v: bool) {
20917        self.announcement = ::std::option::Option::Some(v);
20918    }
20919
20920    // optional int32 repeat_count = 8;
20921
20922    pub fn repeat_count(&self) -> i32 {
20923        self.repeat_count.unwrap_or(0)
20924    }
20925
20926    pub fn clear_repeat_count(&mut self) {
20927        self.repeat_count = ::std::option::Option::None;
20928    }
20929
20930    pub fn has_repeat_count(&self) -> bool {
20931        self.repeat_count.is_some()
20932    }
20933
20934    // Param is passed by value, moved
20935    pub fn set_repeat_count(&mut self, v: i32) {
20936        self.repeat_count = ::std::option::Option::Some(v);
20937    }
20938
20939    // optional int32 id = 10;
20940
20941    pub fn id(&self) -> i32 {
20942        self.id.unwrap_or(0)
20943    }
20944
20945    pub fn clear_id(&mut self) {
20946        self.id = ::std::option::Option::None;
20947    }
20948
20949    pub fn has_id(&self) -> bool {
20950        self.id.is_some()
20951    }
20952
20953    // Param is passed by value, moved
20954    pub fn set_id(&mut self, v: i32) {
20955        self.id = ::std::option::Option::Some(v);
20956    }
20957
20958    // optional int32 year = 11;
20959
20960    pub fn year(&self) -> i32 {
20961        self.year.unwrap_or(0)
20962    }
20963
20964    pub fn clear_year(&mut self) {
20965        self.year = ::std::option::Option::None;
20966    }
20967
20968    pub fn has_year(&self) -> bool {
20969        self.year.is_some()
20970    }
20971
20972    // Param is passed by value, moved
20973    pub fn set_year(&mut self, v: i32) {
20974        self.year = ::std::option::Option::Some(v);
20975    }
20976
20977    // optional int32 time = 12;
20978
20979    pub fn time(&self) -> i32 {
20980        self.time.unwrap_or(0)
20981    }
20982
20983    pub fn clear_time(&mut self) {
20984        self.time = ::std::option::Option::None;
20985    }
20986
20987    pub fn has_time(&self) -> bool {
20988        self.time.is_some()
20989    }
20990
20991    // Param is passed by value, moved
20992    pub fn set_time(&mut self, v: i32) {
20993        self.time = ::std::option::Option::Some(v);
20994    }
20995
20996    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
20997        let mut fields = ::std::vec::Vec::with_capacity(12);
20998        let mut oneofs = ::std::vec::Vec::with_capacity(0);
20999        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21000            "type",
21001            |m: &Report| { &m.type_ },
21002            |m: &mut Report| { &mut m.type_ },
21003        ));
21004        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21005            "text",
21006            |m: &Report| { &m.text },
21007            |m: &mut Report| { &mut m.text },
21008        ));
21009        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ColorDefinition>(
21010            "color",
21011            |m: &Report| { &m.color },
21012            |m: &mut Report| { &mut m.color },
21013        ));
21014        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21015            "duration",
21016            |m: &Report| { &m.duration },
21017            |m: &mut Report| { &mut m.duration },
21018        ));
21019        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21020            "continuation",
21021            |m: &Report| { &m.continuation },
21022            |m: &mut Report| { &mut m.continuation },
21023        ));
21024        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21025            "unconscious",
21026            |m: &Report| { &m.unconscious },
21027            |m: &mut Report| { &mut m.unconscious },
21028        ));
21029        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21030            "announcement",
21031            |m: &Report| { &m.announcement },
21032            |m: &mut Report| { &mut m.announcement },
21033        ));
21034        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21035            "repeat_count",
21036            |m: &Report| { &m.repeat_count },
21037            |m: &mut Report| { &mut m.repeat_count },
21038        ));
21039        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
21040            "pos",
21041            |m: &Report| { &m.pos },
21042            |m: &mut Report| { &mut m.pos },
21043        ));
21044        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21045            "id",
21046            |m: &Report| { &m.id },
21047            |m: &mut Report| { &mut m.id },
21048        ));
21049        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21050            "year",
21051            |m: &Report| { &m.year },
21052            |m: &mut Report| { &mut m.year },
21053        ));
21054        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21055            "time",
21056            |m: &Report| { &m.time },
21057            |m: &mut Report| { &mut m.time },
21058        ));
21059        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Report>(
21060            "Report",
21061            fields,
21062            oneofs,
21063        )
21064    }
21065}
21066
21067impl ::protobuf::Message for Report {
21068    const NAME: &'static str = "Report";
21069
21070    fn is_initialized(&self) -> bool {
21071        for v in &self.color {
21072            if !v.is_initialized() {
21073                return false;
21074            }
21075        };
21076        for v in &self.pos {
21077            if !v.is_initialized() {
21078                return false;
21079            }
21080        };
21081        true
21082    }
21083
21084    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
21085        while let Some(tag) = is.read_raw_tag_or_eof()? {
21086            match tag {
21087                8 => {
21088                    self.type_ = ::std::option::Option::Some(is.read_int32()?);
21089                },
21090                18 => {
21091                    self.text = ::std::option::Option::Some(is.read_string()?);
21092                },
21093                26 => {
21094                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.color)?;
21095                },
21096                32 => {
21097                    self.duration = ::std::option::Option::Some(is.read_int32()?);
21098                },
21099                40 => {
21100                    self.continuation = ::std::option::Option::Some(is.read_bool()?);
21101                },
21102                48 => {
21103                    self.unconscious = ::std::option::Option::Some(is.read_bool()?);
21104                },
21105                56 => {
21106                    self.announcement = ::std::option::Option::Some(is.read_bool()?);
21107                },
21108                64 => {
21109                    self.repeat_count = ::std::option::Option::Some(is.read_int32()?);
21110                },
21111                74 => {
21112                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.pos)?;
21113                },
21114                80 => {
21115                    self.id = ::std::option::Option::Some(is.read_int32()?);
21116                },
21117                88 => {
21118                    self.year = ::std::option::Option::Some(is.read_int32()?);
21119                },
21120                96 => {
21121                    self.time = ::std::option::Option::Some(is.read_int32()?);
21122                },
21123                tag => {
21124                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
21125                },
21126            };
21127        }
21128        ::std::result::Result::Ok(())
21129    }
21130
21131    // Compute sizes of nested messages
21132    #[allow(unused_variables)]
21133    fn compute_size(&self) -> u64 {
21134        let mut my_size = 0;
21135        if let Some(v) = self.type_ {
21136            my_size += ::protobuf::rt::int32_size(1, v);
21137        }
21138        if let Some(v) = self.text.as_ref() {
21139            my_size += ::protobuf::rt::string_size(2, &v);
21140        }
21141        if let Some(v) = self.color.as_ref() {
21142            let len = v.compute_size();
21143            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
21144        }
21145        if let Some(v) = self.duration {
21146            my_size += ::protobuf::rt::int32_size(4, v);
21147        }
21148        if let Some(v) = self.continuation {
21149            my_size += 1 + 1;
21150        }
21151        if let Some(v) = self.unconscious {
21152            my_size += 1 + 1;
21153        }
21154        if let Some(v) = self.announcement {
21155            my_size += 1 + 1;
21156        }
21157        if let Some(v) = self.repeat_count {
21158            my_size += ::protobuf::rt::int32_size(8, v);
21159        }
21160        if let Some(v) = self.pos.as_ref() {
21161            let len = v.compute_size();
21162            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
21163        }
21164        if let Some(v) = self.id {
21165            my_size += ::protobuf::rt::int32_size(10, v);
21166        }
21167        if let Some(v) = self.year {
21168            my_size += ::protobuf::rt::int32_size(11, v);
21169        }
21170        if let Some(v) = self.time {
21171            my_size += ::protobuf::rt::int32_size(12, v);
21172        }
21173        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
21174        self.special_fields.cached_size().set(my_size as u32);
21175        my_size
21176    }
21177
21178    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
21179        if let Some(v) = self.type_ {
21180            os.write_int32(1, v)?;
21181        }
21182        if let Some(v) = self.text.as_ref() {
21183            os.write_string(2, v)?;
21184        }
21185        if let Some(v) = self.color.as_ref() {
21186            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
21187        }
21188        if let Some(v) = self.duration {
21189            os.write_int32(4, v)?;
21190        }
21191        if let Some(v) = self.continuation {
21192            os.write_bool(5, v)?;
21193        }
21194        if let Some(v) = self.unconscious {
21195            os.write_bool(6, v)?;
21196        }
21197        if let Some(v) = self.announcement {
21198            os.write_bool(7, v)?;
21199        }
21200        if let Some(v) = self.repeat_count {
21201            os.write_int32(8, v)?;
21202        }
21203        if let Some(v) = self.pos.as_ref() {
21204            ::protobuf::rt::write_message_field_with_cached_size(9, v, os)?;
21205        }
21206        if let Some(v) = self.id {
21207            os.write_int32(10, v)?;
21208        }
21209        if let Some(v) = self.year {
21210            os.write_int32(11, v)?;
21211        }
21212        if let Some(v) = self.time {
21213            os.write_int32(12, v)?;
21214        }
21215        os.write_unknown_fields(self.special_fields.unknown_fields())?;
21216        ::std::result::Result::Ok(())
21217    }
21218
21219    fn special_fields(&self) -> &::protobuf::SpecialFields {
21220        &self.special_fields
21221    }
21222
21223    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
21224        &mut self.special_fields
21225    }
21226
21227    fn new() -> Report {
21228        Report::new()
21229    }
21230
21231    fn clear(&mut self) {
21232        self.type_ = ::std::option::Option::None;
21233        self.text = ::std::option::Option::None;
21234        self.color.clear();
21235        self.duration = ::std::option::Option::None;
21236        self.continuation = ::std::option::Option::None;
21237        self.unconscious = ::std::option::Option::None;
21238        self.announcement = ::std::option::Option::None;
21239        self.repeat_count = ::std::option::Option::None;
21240        self.pos.clear();
21241        self.id = ::std::option::Option::None;
21242        self.year = ::std::option::Option::None;
21243        self.time = ::std::option::Option::None;
21244        self.special_fields.clear();
21245    }
21246
21247    fn default_instance() -> &'static Report {
21248        static instance: Report = Report {
21249            type_: ::std::option::Option::None,
21250            text: ::std::option::Option::None,
21251            color: ::protobuf::MessageField::none(),
21252            duration: ::std::option::Option::None,
21253            continuation: ::std::option::Option::None,
21254            unconscious: ::std::option::Option::None,
21255            announcement: ::std::option::Option::None,
21256            repeat_count: ::std::option::Option::None,
21257            pos: ::protobuf::MessageField::none(),
21258            id: ::std::option::Option::None,
21259            year: ::std::option::Option::None,
21260            time: ::std::option::Option::None,
21261            special_fields: ::protobuf::SpecialFields::new(),
21262        };
21263        &instance
21264    }
21265}
21266
21267impl ::protobuf::MessageFull for Report {
21268    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
21269        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
21270        descriptor.get(|| file_descriptor().message_by_package_relative_name("Report").unwrap()).clone()
21271    }
21272}
21273
21274impl ::std::fmt::Display for Report {
21275    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21276        ::protobuf::text_format::fmt(self, f)
21277    }
21278}
21279
21280impl ::protobuf::reflect::ProtobufValue for Report {
21281    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
21282}
21283
21284// @@protoc_insertion_point(message:RemoteFortressReader.Status)
21285#[derive(PartialEq,Clone,Default,Debug)]
21286pub struct Status {
21287    // message fields
21288    // @@protoc_insertion_point(field:RemoteFortressReader.Status.reports)
21289    pub reports: ::std::vec::Vec<Report>,
21290    // special fields
21291    // @@protoc_insertion_point(special_field:RemoteFortressReader.Status.special_fields)
21292    pub special_fields: ::protobuf::SpecialFields,
21293}
21294
21295impl<'a> ::std::default::Default for &'a Status {
21296    fn default() -> &'a Status {
21297        <Status as ::protobuf::Message>::default_instance()
21298    }
21299}
21300
21301impl Status {
21302    pub fn new() -> Status {
21303        ::std::default::Default::default()
21304    }
21305
21306    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
21307        let mut fields = ::std::vec::Vec::with_capacity(1);
21308        let mut oneofs = ::std::vec::Vec::with_capacity(0);
21309        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
21310            "reports",
21311            |m: &Status| { &m.reports },
21312            |m: &mut Status| { &mut m.reports },
21313        ));
21314        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Status>(
21315            "Status",
21316            fields,
21317            oneofs,
21318        )
21319    }
21320}
21321
21322impl ::protobuf::Message for Status {
21323    const NAME: &'static str = "Status";
21324
21325    fn is_initialized(&self) -> bool {
21326        for v in &self.reports {
21327            if !v.is_initialized() {
21328                return false;
21329            }
21330        };
21331        true
21332    }
21333
21334    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
21335        while let Some(tag) = is.read_raw_tag_or_eof()? {
21336            match tag {
21337                10 => {
21338                    self.reports.push(is.read_message()?);
21339                },
21340                tag => {
21341                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
21342                },
21343            };
21344        }
21345        ::std::result::Result::Ok(())
21346    }
21347
21348    // Compute sizes of nested messages
21349    #[allow(unused_variables)]
21350    fn compute_size(&self) -> u64 {
21351        let mut my_size = 0;
21352        for value in &self.reports {
21353            let len = value.compute_size();
21354            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
21355        };
21356        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
21357        self.special_fields.cached_size().set(my_size as u32);
21358        my_size
21359    }
21360
21361    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
21362        for v in &self.reports {
21363            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
21364        };
21365        os.write_unknown_fields(self.special_fields.unknown_fields())?;
21366        ::std::result::Result::Ok(())
21367    }
21368
21369    fn special_fields(&self) -> &::protobuf::SpecialFields {
21370        &self.special_fields
21371    }
21372
21373    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
21374        &mut self.special_fields
21375    }
21376
21377    fn new() -> Status {
21378        Status::new()
21379    }
21380
21381    fn clear(&mut self) {
21382        self.reports.clear();
21383        self.special_fields.clear();
21384    }
21385
21386    fn default_instance() -> &'static Status {
21387        static instance: Status = Status {
21388            reports: ::std::vec::Vec::new(),
21389            special_fields: ::protobuf::SpecialFields::new(),
21390        };
21391        &instance
21392    }
21393}
21394
21395impl ::protobuf::MessageFull for Status {
21396    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
21397        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
21398        descriptor.get(|| file_descriptor().message_by_package_relative_name("Status").unwrap()).clone()
21399    }
21400}
21401
21402impl ::std::fmt::Display for Status {
21403    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21404        ::protobuf::text_format::fmt(self, f)
21405    }
21406}
21407
21408impl ::protobuf::reflect::ProtobufValue for Status {
21409    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
21410}
21411
21412// @@protoc_insertion_point(message:RemoteFortressReader.ShapeDescriptior)
21413#[derive(PartialEq,Clone,Default,Debug)]
21414pub struct ShapeDescriptior {
21415    // message fields
21416    // @@protoc_insertion_point(field:RemoteFortressReader.ShapeDescriptior.id)
21417    pub id: ::std::option::Option<::std::string::String>,
21418    // @@protoc_insertion_point(field:RemoteFortressReader.ShapeDescriptior.tile)
21419    pub tile: ::std::option::Option<i32>,
21420    // special fields
21421    // @@protoc_insertion_point(special_field:RemoteFortressReader.ShapeDescriptior.special_fields)
21422    pub special_fields: ::protobuf::SpecialFields,
21423}
21424
21425impl<'a> ::std::default::Default for &'a ShapeDescriptior {
21426    fn default() -> &'a ShapeDescriptior {
21427        <ShapeDescriptior as ::protobuf::Message>::default_instance()
21428    }
21429}
21430
21431impl ShapeDescriptior {
21432    pub fn new() -> ShapeDescriptior {
21433        ::std::default::Default::default()
21434    }
21435
21436    // optional string id = 1;
21437
21438    pub fn id(&self) -> &str {
21439        match self.id.as_ref() {
21440            Some(v) => v,
21441            None => "",
21442        }
21443    }
21444
21445    pub fn clear_id(&mut self) {
21446        self.id = ::std::option::Option::None;
21447    }
21448
21449    pub fn has_id(&self) -> bool {
21450        self.id.is_some()
21451    }
21452
21453    // Param is passed by value, moved
21454    pub fn set_id(&mut self, v: ::std::string::String) {
21455        self.id = ::std::option::Option::Some(v);
21456    }
21457
21458    // Mutable pointer to the field.
21459    // If field is not initialized, it is initialized with default value first.
21460    pub fn mut_id(&mut self) -> &mut ::std::string::String {
21461        if self.id.is_none() {
21462            self.id = ::std::option::Option::Some(::std::string::String::new());
21463        }
21464        self.id.as_mut().unwrap()
21465    }
21466
21467    // Take field
21468    pub fn take_id(&mut self) -> ::std::string::String {
21469        self.id.take().unwrap_or_else(|| ::std::string::String::new())
21470    }
21471
21472    // optional int32 tile = 2;
21473
21474    pub fn tile(&self) -> i32 {
21475        self.tile.unwrap_or(0)
21476    }
21477
21478    pub fn clear_tile(&mut self) {
21479        self.tile = ::std::option::Option::None;
21480    }
21481
21482    pub fn has_tile(&self) -> bool {
21483        self.tile.is_some()
21484    }
21485
21486    // Param is passed by value, moved
21487    pub fn set_tile(&mut self, v: i32) {
21488        self.tile = ::std::option::Option::Some(v);
21489    }
21490
21491    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
21492        let mut fields = ::std::vec::Vec::with_capacity(2);
21493        let mut oneofs = ::std::vec::Vec::with_capacity(0);
21494        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21495            "id",
21496            |m: &ShapeDescriptior| { &m.id },
21497            |m: &mut ShapeDescriptior| { &mut m.id },
21498        ));
21499        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21500            "tile",
21501            |m: &ShapeDescriptior| { &m.tile },
21502            |m: &mut ShapeDescriptior| { &mut m.tile },
21503        ));
21504        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ShapeDescriptior>(
21505            "ShapeDescriptior",
21506            fields,
21507            oneofs,
21508        )
21509    }
21510}
21511
21512impl ::protobuf::Message for ShapeDescriptior {
21513    const NAME: &'static str = "ShapeDescriptior";
21514
21515    fn is_initialized(&self) -> bool {
21516        true
21517    }
21518
21519    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
21520        while let Some(tag) = is.read_raw_tag_or_eof()? {
21521            match tag {
21522                10 => {
21523                    self.id = ::std::option::Option::Some(is.read_string()?);
21524                },
21525                16 => {
21526                    self.tile = ::std::option::Option::Some(is.read_int32()?);
21527                },
21528                tag => {
21529                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
21530                },
21531            };
21532        }
21533        ::std::result::Result::Ok(())
21534    }
21535
21536    // Compute sizes of nested messages
21537    #[allow(unused_variables)]
21538    fn compute_size(&self) -> u64 {
21539        let mut my_size = 0;
21540        if let Some(v) = self.id.as_ref() {
21541            my_size += ::protobuf::rt::string_size(1, &v);
21542        }
21543        if let Some(v) = self.tile {
21544            my_size += ::protobuf::rt::int32_size(2, v);
21545        }
21546        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
21547        self.special_fields.cached_size().set(my_size as u32);
21548        my_size
21549    }
21550
21551    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
21552        if let Some(v) = self.id.as_ref() {
21553            os.write_string(1, v)?;
21554        }
21555        if let Some(v) = self.tile {
21556            os.write_int32(2, v)?;
21557        }
21558        os.write_unknown_fields(self.special_fields.unknown_fields())?;
21559        ::std::result::Result::Ok(())
21560    }
21561
21562    fn special_fields(&self) -> &::protobuf::SpecialFields {
21563        &self.special_fields
21564    }
21565
21566    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
21567        &mut self.special_fields
21568    }
21569
21570    fn new() -> ShapeDescriptior {
21571        ShapeDescriptior::new()
21572    }
21573
21574    fn clear(&mut self) {
21575        self.id = ::std::option::Option::None;
21576        self.tile = ::std::option::Option::None;
21577        self.special_fields.clear();
21578    }
21579
21580    fn default_instance() -> &'static ShapeDescriptior {
21581        static instance: ShapeDescriptior = ShapeDescriptior {
21582            id: ::std::option::Option::None,
21583            tile: ::std::option::Option::None,
21584            special_fields: ::protobuf::SpecialFields::new(),
21585        };
21586        &instance
21587    }
21588}
21589
21590impl ::protobuf::MessageFull for ShapeDescriptior {
21591    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
21592        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
21593        descriptor.get(|| file_descriptor().message_by_package_relative_name("ShapeDescriptior").unwrap()).clone()
21594    }
21595}
21596
21597impl ::std::fmt::Display for ShapeDescriptior {
21598    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21599        ::protobuf::text_format::fmt(self, f)
21600    }
21601}
21602
21603impl ::protobuf::reflect::ProtobufValue for ShapeDescriptior {
21604    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
21605}
21606
21607// @@protoc_insertion_point(message:RemoteFortressReader.Language)
21608#[derive(PartialEq,Clone,Default,Debug)]
21609pub struct Language {
21610    // message fields
21611    // @@protoc_insertion_point(field:RemoteFortressReader.Language.shapes)
21612    pub shapes: ::std::vec::Vec<ShapeDescriptior>,
21613    // special fields
21614    // @@protoc_insertion_point(special_field:RemoteFortressReader.Language.special_fields)
21615    pub special_fields: ::protobuf::SpecialFields,
21616}
21617
21618impl<'a> ::std::default::Default for &'a Language {
21619    fn default() -> &'a Language {
21620        <Language as ::protobuf::Message>::default_instance()
21621    }
21622}
21623
21624impl Language {
21625    pub fn new() -> Language {
21626        ::std::default::Default::default()
21627    }
21628
21629    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
21630        let mut fields = ::std::vec::Vec::with_capacity(1);
21631        let mut oneofs = ::std::vec::Vec::with_capacity(0);
21632        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
21633            "shapes",
21634            |m: &Language| { &m.shapes },
21635            |m: &mut Language| { &mut m.shapes },
21636        ));
21637        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Language>(
21638            "Language",
21639            fields,
21640            oneofs,
21641        )
21642    }
21643}
21644
21645impl ::protobuf::Message for Language {
21646    const NAME: &'static str = "Language";
21647
21648    fn is_initialized(&self) -> bool {
21649        true
21650    }
21651
21652    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
21653        while let Some(tag) = is.read_raw_tag_or_eof()? {
21654            match tag {
21655                10 => {
21656                    self.shapes.push(is.read_message()?);
21657                },
21658                tag => {
21659                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
21660                },
21661            };
21662        }
21663        ::std::result::Result::Ok(())
21664    }
21665
21666    // Compute sizes of nested messages
21667    #[allow(unused_variables)]
21668    fn compute_size(&self) -> u64 {
21669        let mut my_size = 0;
21670        for value in &self.shapes {
21671            let len = value.compute_size();
21672            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
21673        };
21674        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
21675        self.special_fields.cached_size().set(my_size as u32);
21676        my_size
21677    }
21678
21679    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
21680        for v in &self.shapes {
21681            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
21682        };
21683        os.write_unknown_fields(self.special_fields.unknown_fields())?;
21684        ::std::result::Result::Ok(())
21685    }
21686
21687    fn special_fields(&self) -> &::protobuf::SpecialFields {
21688        &self.special_fields
21689    }
21690
21691    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
21692        &mut self.special_fields
21693    }
21694
21695    fn new() -> Language {
21696        Language::new()
21697    }
21698
21699    fn clear(&mut self) {
21700        self.shapes.clear();
21701        self.special_fields.clear();
21702    }
21703
21704    fn default_instance() -> &'static Language {
21705        static instance: Language = Language {
21706            shapes: ::std::vec::Vec::new(),
21707            special_fields: ::protobuf::SpecialFields::new(),
21708        };
21709        &instance
21710    }
21711}
21712
21713impl ::protobuf::MessageFull for Language {
21714    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
21715        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
21716        descriptor.get(|| file_descriptor().message_by_package_relative_name("Language").unwrap()).clone()
21717    }
21718}
21719
21720impl ::std::fmt::Display for Language {
21721    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21722        ::protobuf::text_format::fmt(self, f)
21723    }
21724}
21725
21726impl ::protobuf::reflect::ProtobufValue for Language {
21727    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
21728}
21729
21730// @@protoc_insertion_point(message:RemoteFortressReader.ItemImprovement)
21731#[derive(PartialEq,Clone,Default,Debug)]
21732pub struct ItemImprovement {
21733    // message fields
21734    // @@protoc_insertion_point(field:RemoteFortressReader.ItemImprovement.material)
21735    pub material: ::protobuf::MessageField<MatPair>,
21736    // @@protoc_insertion_point(field:RemoteFortressReader.ItemImprovement.shape)
21737    pub shape: ::std::option::Option<i32>,
21738    // @@protoc_insertion_point(field:RemoteFortressReader.ItemImprovement.specific_type)
21739    pub specific_type: ::std::option::Option<i32>,
21740    // @@protoc_insertion_point(field:RemoteFortressReader.ItemImprovement.image)
21741    pub image: ::protobuf::MessageField<ArtImage>,
21742    // @@protoc_insertion_point(field:RemoteFortressReader.ItemImprovement.type)
21743    pub type_: ::std::option::Option<i32>,
21744    // special fields
21745    // @@protoc_insertion_point(special_field:RemoteFortressReader.ItemImprovement.special_fields)
21746    pub special_fields: ::protobuf::SpecialFields,
21747}
21748
21749impl<'a> ::std::default::Default for &'a ItemImprovement {
21750    fn default() -> &'a ItemImprovement {
21751        <ItemImprovement as ::protobuf::Message>::default_instance()
21752    }
21753}
21754
21755impl ItemImprovement {
21756    pub fn new() -> ItemImprovement {
21757        ::std::default::Default::default()
21758    }
21759
21760    // optional int32 shape = 3;
21761
21762    pub fn shape(&self) -> i32 {
21763        self.shape.unwrap_or(0)
21764    }
21765
21766    pub fn clear_shape(&mut self) {
21767        self.shape = ::std::option::Option::None;
21768    }
21769
21770    pub fn has_shape(&self) -> bool {
21771        self.shape.is_some()
21772    }
21773
21774    // Param is passed by value, moved
21775    pub fn set_shape(&mut self, v: i32) {
21776        self.shape = ::std::option::Option::Some(v);
21777    }
21778
21779    // optional int32 specific_type = 4;
21780
21781    pub fn specific_type(&self) -> i32 {
21782        self.specific_type.unwrap_or(0)
21783    }
21784
21785    pub fn clear_specific_type(&mut self) {
21786        self.specific_type = ::std::option::Option::None;
21787    }
21788
21789    pub fn has_specific_type(&self) -> bool {
21790        self.specific_type.is_some()
21791    }
21792
21793    // Param is passed by value, moved
21794    pub fn set_specific_type(&mut self, v: i32) {
21795        self.specific_type = ::std::option::Option::Some(v);
21796    }
21797
21798    // optional int32 type = 6;
21799
21800    pub fn type_(&self) -> i32 {
21801        self.type_.unwrap_or(0)
21802    }
21803
21804    pub fn clear_type_(&mut self) {
21805        self.type_ = ::std::option::Option::None;
21806    }
21807
21808    pub fn has_type(&self) -> bool {
21809        self.type_.is_some()
21810    }
21811
21812    // Param is passed by value, moved
21813    pub fn set_type(&mut self, v: i32) {
21814        self.type_ = ::std::option::Option::Some(v);
21815    }
21816
21817    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
21818        let mut fields = ::std::vec::Vec::with_capacity(5);
21819        let mut oneofs = ::std::vec::Vec::with_capacity(0);
21820        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
21821            "material",
21822            |m: &ItemImprovement| { &m.material },
21823            |m: &mut ItemImprovement| { &mut m.material },
21824        ));
21825        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21826            "shape",
21827            |m: &ItemImprovement| { &m.shape },
21828            |m: &mut ItemImprovement| { &mut m.shape },
21829        ));
21830        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21831            "specific_type",
21832            |m: &ItemImprovement| { &m.specific_type },
21833            |m: &mut ItemImprovement| { &mut m.specific_type },
21834        ));
21835        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ArtImage>(
21836            "image",
21837            |m: &ItemImprovement| { &m.image },
21838            |m: &mut ItemImprovement| { &mut m.image },
21839        ));
21840        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21841            "type",
21842            |m: &ItemImprovement| { &m.type_ },
21843            |m: &mut ItemImprovement| { &mut m.type_ },
21844        ));
21845        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ItemImprovement>(
21846            "ItemImprovement",
21847            fields,
21848            oneofs,
21849        )
21850    }
21851}
21852
21853impl ::protobuf::Message for ItemImprovement {
21854    const NAME: &'static str = "ItemImprovement";
21855
21856    fn is_initialized(&self) -> bool {
21857        for v in &self.material {
21858            if !v.is_initialized() {
21859                return false;
21860            }
21861        };
21862        for v in &self.image {
21863            if !v.is_initialized() {
21864                return false;
21865            }
21866        };
21867        true
21868    }
21869
21870    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
21871        while let Some(tag) = is.read_raw_tag_or_eof()? {
21872            match tag {
21873                10 => {
21874                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
21875                },
21876                24 => {
21877                    self.shape = ::std::option::Option::Some(is.read_int32()?);
21878                },
21879                32 => {
21880                    self.specific_type = ::std::option::Option::Some(is.read_int32()?);
21881                },
21882                42 => {
21883                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.image)?;
21884                },
21885                48 => {
21886                    self.type_ = ::std::option::Option::Some(is.read_int32()?);
21887                },
21888                tag => {
21889                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
21890                },
21891            };
21892        }
21893        ::std::result::Result::Ok(())
21894    }
21895
21896    // Compute sizes of nested messages
21897    #[allow(unused_variables)]
21898    fn compute_size(&self) -> u64 {
21899        let mut my_size = 0;
21900        if let Some(v) = self.material.as_ref() {
21901            let len = v.compute_size();
21902            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
21903        }
21904        if let Some(v) = self.shape {
21905            my_size += ::protobuf::rt::int32_size(3, v);
21906        }
21907        if let Some(v) = self.specific_type {
21908            my_size += ::protobuf::rt::int32_size(4, v);
21909        }
21910        if let Some(v) = self.image.as_ref() {
21911            let len = v.compute_size();
21912            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
21913        }
21914        if let Some(v) = self.type_ {
21915            my_size += ::protobuf::rt::int32_size(6, v);
21916        }
21917        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
21918        self.special_fields.cached_size().set(my_size as u32);
21919        my_size
21920    }
21921
21922    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
21923        if let Some(v) = self.material.as_ref() {
21924            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
21925        }
21926        if let Some(v) = self.shape {
21927            os.write_int32(3, v)?;
21928        }
21929        if let Some(v) = self.specific_type {
21930            os.write_int32(4, v)?;
21931        }
21932        if let Some(v) = self.image.as_ref() {
21933            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
21934        }
21935        if let Some(v) = self.type_ {
21936            os.write_int32(6, v)?;
21937        }
21938        os.write_unknown_fields(self.special_fields.unknown_fields())?;
21939        ::std::result::Result::Ok(())
21940    }
21941
21942    fn special_fields(&self) -> &::protobuf::SpecialFields {
21943        &self.special_fields
21944    }
21945
21946    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
21947        &mut self.special_fields
21948    }
21949
21950    fn new() -> ItemImprovement {
21951        ItemImprovement::new()
21952    }
21953
21954    fn clear(&mut self) {
21955        self.material.clear();
21956        self.shape = ::std::option::Option::None;
21957        self.specific_type = ::std::option::Option::None;
21958        self.image.clear();
21959        self.type_ = ::std::option::Option::None;
21960        self.special_fields.clear();
21961    }
21962
21963    fn default_instance() -> &'static ItemImprovement {
21964        static instance: ItemImprovement = ItemImprovement {
21965            material: ::protobuf::MessageField::none(),
21966            shape: ::std::option::Option::None,
21967            specific_type: ::std::option::Option::None,
21968            image: ::protobuf::MessageField::none(),
21969            type_: ::std::option::Option::None,
21970            special_fields: ::protobuf::SpecialFields::new(),
21971        };
21972        &instance
21973    }
21974}
21975
21976impl ::protobuf::MessageFull for ItemImprovement {
21977    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
21978        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
21979        descriptor.get(|| file_descriptor().message_by_package_relative_name("ItemImprovement").unwrap()).clone()
21980    }
21981}
21982
21983impl ::std::fmt::Display for ItemImprovement {
21984    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21985        ::protobuf::text_format::fmt(self, f)
21986    }
21987}
21988
21989impl ::protobuf::reflect::ProtobufValue for ItemImprovement {
21990    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
21991}
21992
21993// @@protoc_insertion_point(message:RemoteFortressReader.ArtImageElement)
21994#[derive(PartialEq,Clone,Default,Debug)]
21995pub struct ArtImageElement {
21996    // message fields
21997    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageElement.count)
21998    pub count: ::std::option::Option<i32>,
21999    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageElement.type)
22000    pub type_: ::std::option::Option<::protobuf::EnumOrUnknown<ArtImageElementType>>,
22001    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageElement.creature_item)
22002    pub creature_item: ::protobuf::MessageField<MatPair>,
22003    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageElement.material)
22004    pub material: ::protobuf::MessageField<MatPair>,
22005    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageElement.id)
22006    pub id: ::std::option::Option<i32>,
22007    // special fields
22008    // @@protoc_insertion_point(special_field:RemoteFortressReader.ArtImageElement.special_fields)
22009    pub special_fields: ::protobuf::SpecialFields,
22010}
22011
22012impl<'a> ::std::default::Default for &'a ArtImageElement {
22013    fn default() -> &'a ArtImageElement {
22014        <ArtImageElement as ::protobuf::Message>::default_instance()
22015    }
22016}
22017
22018impl ArtImageElement {
22019    pub fn new() -> ArtImageElement {
22020        ::std::default::Default::default()
22021    }
22022
22023    // optional int32 count = 1;
22024
22025    pub fn count(&self) -> i32 {
22026        self.count.unwrap_or(0)
22027    }
22028
22029    pub fn clear_count(&mut self) {
22030        self.count = ::std::option::Option::None;
22031    }
22032
22033    pub fn has_count(&self) -> bool {
22034        self.count.is_some()
22035    }
22036
22037    // Param is passed by value, moved
22038    pub fn set_count(&mut self, v: i32) {
22039        self.count = ::std::option::Option::Some(v);
22040    }
22041
22042    // optional .RemoteFortressReader.ArtImageElementType type = 2;
22043
22044    pub fn type_(&self) -> ArtImageElementType {
22045        match self.type_ {
22046            Some(e) => e.enum_value_or(ArtImageElementType::IMAGE_CREATURE),
22047            None => ArtImageElementType::IMAGE_CREATURE,
22048        }
22049    }
22050
22051    pub fn clear_type_(&mut self) {
22052        self.type_ = ::std::option::Option::None;
22053    }
22054
22055    pub fn has_type(&self) -> bool {
22056        self.type_.is_some()
22057    }
22058
22059    // Param is passed by value, moved
22060    pub fn set_type(&mut self, v: ArtImageElementType) {
22061        self.type_ = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
22062    }
22063
22064    // optional int32 id = 6;
22065
22066    pub fn id(&self) -> i32 {
22067        self.id.unwrap_or(0)
22068    }
22069
22070    pub fn clear_id(&mut self) {
22071        self.id = ::std::option::Option::None;
22072    }
22073
22074    pub fn has_id(&self) -> bool {
22075        self.id.is_some()
22076    }
22077
22078    // Param is passed by value, moved
22079    pub fn set_id(&mut self, v: i32) {
22080        self.id = ::std::option::Option::Some(v);
22081    }
22082
22083    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
22084        let mut fields = ::std::vec::Vec::with_capacity(5);
22085        let mut oneofs = ::std::vec::Vec::with_capacity(0);
22086        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22087            "count",
22088            |m: &ArtImageElement| { &m.count },
22089            |m: &mut ArtImageElement| { &mut m.count },
22090        ));
22091        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22092            "type",
22093            |m: &ArtImageElement| { &m.type_ },
22094            |m: &mut ArtImageElement| { &mut m.type_ },
22095        ));
22096        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
22097            "creature_item",
22098            |m: &ArtImageElement| { &m.creature_item },
22099            |m: &mut ArtImageElement| { &mut m.creature_item },
22100        ));
22101        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
22102            "material",
22103            |m: &ArtImageElement| { &m.material },
22104            |m: &mut ArtImageElement| { &mut m.material },
22105        ));
22106        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22107            "id",
22108            |m: &ArtImageElement| { &m.id },
22109            |m: &mut ArtImageElement| { &mut m.id },
22110        ));
22111        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ArtImageElement>(
22112            "ArtImageElement",
22113            fields,
22114            oneofs,
22115        )
22116    }
22117}
22118
22119impl ::protobuf::Message for ArtImageElement {
22120    const NAME: &'static str = "ArtImageElement";
22121
22122    fn is_initialized(&self) -> bool {
22123        for v in &self.creature_item {
22124            if !v.is_initialized() {
22125                return false;
22126            }
22127        };
22128        for v in &self.material {
22129            if !v.is_initialized() {
22130                return false;
22131            }
22132        };
22133        true
22134    }
22135
22136    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
22137        while let Some(tag) = is.read_raw_tag_or_eof()? {
22138            match tag {
22139                8 => {
22140                    self.count = ::std::option::Option::Some(is.read_int32()?);
22141                },
22142                16 => {
22143                    self.type_ = ::std::option::Option::Some(is.read_enum_or_unknown()?);
22144                },
22145                26 => {
22146                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.creature_item)?;
22147                },
22148                42 => {
22149                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
22150                },
22151                48 => {
22152                    self.id = ::std::option::Option::Some(is.read_int32()?);
22153                },
22154                tag => {
22155                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
22156                },
22157            };
22158        }
22159        ::std::result::Result::Ok(())
22160    }
22161
22162    // Compute sizes of nested messages
22163    #[allow(unused_variables)]
22164    fn compute_size(&self) -> u64 {
22165        let mut my_size = 0;
22166        if let Some(v) = self.count {
22167            my_size += ::protobuf::rt::int32_size(1, v);
22168        }
22169        if let Some(v) = self.type_ {
22170            my_size += ::protobuf::rt::int32_size(2, v.value());
22171        }
22172        if let Some(v) = self.creature_item.as_ref() {
22173            let len = v.compute_size();
22174            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
22175        }
22176        if let Some(v) = self.material.as_ref() {
22177            let len = v.compute_size();
22178            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
22179        }
22180        if let Some(v) = self.id {
22181            my_size += ::protobuf::rt::int32_size(6, v);
22182        }
22183        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
22184        self.special_fields.cached_size().set(my_size as u32);
22185        my_size
22186    }
22187
22188    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
22189        if let Some(v) = self.count {
22190            os.write_int32(1, v)?;
22191        }
22192        if let Some(v) = self.type_ {
22193            os.write_enum(2, ::protobuf::EnumOrUnknown::value(&v))?;
22194        }
22195        if let Some(v) = self.creature_item.as_ref() {
22196            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
22197        }
22198        if let Some(v) = self.material.as_ref() {
22199            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
22200        }
22201        if let Some(v) = self.id {
22202            os.write_int32(6, v)?;
22203        }
22204        os.write_unknown_fields(self.special_fields.unknown_fields())?;
22205        ::std::result::Result::Ok(())
22206    }
22207
22208    fn special_fields(&self) -> &::protobuf::SpecialFields {
22209        &self.special_fields
22210    }
22211
22212    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
22213        &mut self.special_fields
22214    }
22215
22216    fn new() -> ArtImageElement {
22217        ArtImageElement::new()
22218    }
22219
22220    fn clear(&mut self) {
22221        self.count = ::std::option::Option::None;
22222        self.type_ = ::std::option::Option::None;
22223        self.creature_item.clear();
22224        self.material.clear();
22225        self.id = ::std::option::Option::None;
22226        self.special_fields.clear();
22227    }
22228
22229    fn default_instance() -> &'static ArtImageElement {
22230        static instance: ArtImageElement = ArtImageElement {
22231            count: ::std::option::Option::None,
22232            type_: ::std::option::Option::None,
22233            creature_item: ::protobuf::MessageField::none(),
22234            material: ::protobuf::MessageField::none(),
22235            id: ::std::option::Option::None,
22236            special_fields: ::protobuf::SpecialFields::new(),
22237        };
22238        &instance
22239    }
22240}
22241
22242impl ::protobuf::MessageFull for ArtImageElement {
22243    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
22244        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
22245        descriptor.get(|| file_descriptor().message_by_package_relative_name("ArtImageElement").unwrap()).clone()
22246    }
22247}
22248
22249impl ::std::fmt::Display for ArtImageElement {
22250    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
22251        ::protobuf::text_format::fmt(self, f)
22252    }
22253}
22254
22255impl ::protobuf::reflect::ProtobufValue for ArtImageElement {
22256    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
22257}
22258
22259// @@protoc_insertion_point(message:RemoteFortressReader.ArtImageProperty)
22260#[derive(PartialEq,Clone,Default,Debug)]
22261pub struct ArtImageProperty {
22262    // message fields
22263    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageProperty.subject)
22264    pub subject: ::std::option::Option<i32>,
22265    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageProperty.object)
22266    pub object: ::std::option::Option<i32>,
22267    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageProperty.verb)
22268    pub verb: ::std::option::Option<::protobuf::EnumOrUnknown<ArtImageVerb>>,
22269    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageProperty.type)
22270    pub type_: ::std::option::Option<::protobuf::EnumOrUnknown<ArtImagePropertyType>>,
22271    // special fields
22272    // @@protoc_insertion_point(special_field:RemoteFortressReader.ArtImageProperty.special_fields)
22273    pub special_fields: ::protobuf::SpecialFields,
22274}
22275
22276impl<'a> ::std::default::Default for &'a ArtImageProperty {
22277    fn default() -> &'a ArtImageProperty {
22278        <ArtImageProperty as ::protobuf::Message>::default_instance()
22279    }
22280}
22281
22282impl ArtImageProperty {
22283    pub fn new() -> ArtImageProperty {
22284        ::std::default::Default::default()
22285    }
22286
22287    // optional int32 subject = 1;
22288
22289    pub fn subject(&self) -> i32 {
22290        self.subject.unwrap_or(0)
22291    }
22292
22293    pub fn clear_subject(&mut self) {
22294        self.subject = ::std::option::Option::None;
22295    }
22296
22297    pub fn has_subject(&self) -> bool {
22298        self.subject.is_some()
22299    }
22300
22301    // Param is passed by value, moved
22302    pub fn set_subject(&mut self, v: i32) {
22303        self.subject = ::std::option::Option::Some(v);
22304    }
22305
22306    // optional int32 object = 2;
22307
22308    pub fn object(&self) -> i32 {
22309        self.object.unwrap_or(0)
22310    }
22311
22312    pub fn clear_object(&mut self) {
22313        self.object = ::std::option::Option::None;
22314    }
22315
22316    pub fn has_object(&self) -> bool {
22317        self.object.is_some()
22318    }
22319
22320    // Param is passed by value, moved
22321    pub fn set_object(&mut self, v: i32) {
22322        self.object = ::std::option::Option::Some(v);
22323    }
22324
22325    // optional .RemoteFortressReader.ArtImageVerb verb = 3;
22326
22327    pub fn verb(&self) -> ArtImageVerb {
22328        match self.verb {
22329            Some(e) => e.enum_value_or(ArtImageVerb::VERB_WITHERING),
22330            None => ArtImageVerb::VERB_WITHERING,
22331        }
22332    }
22333
22334    pub fn clear_verb(&mut self) {
22335        self.verb = ::std::option::Option::None;
22336    }
22337
22338    pub fn has_verb(&self) -> bool {
22339        self.verb.is_some()
22340    }
22341
22342    // Param is passed by value, moved
22343    pub fn set_verb(&mut self, v: ArtImageVerb) {
22344        self.verb = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
22345    }
22346
22347    // optional .RemoteFortressReader.ArtImagePropertyType type = 4;
22348
22349    pub fn type_(&self) -> ArtImagePropertyType {
22350        match self.type_ {
22351            Some(e) => e.enum_value_or(ArtImagePropertyType::TRANSITIVE_VERB),
22352            None => ArtImagePropertyType::TRANSITIVE_VERB,
22353        }
22354    }
22355
22356    pub fn clear_type_(&mut self) {
22357        self.type_ = ::std::option::Option::None;
22358    }
22359
22360    pub fn has_type(&self) -> bool {
22361        self.type_.is_some()
22362    }
22363
22364    // Param is passed by value, moved
22365    pub fn set_type(&mut self, v: ArtImagePropertyType) {
22366        self.type_ = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
22367    }
22368
22369    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
22370        let mut fields = ::std::vec::Vec::with_capacity(4);
22371        let mut oneofs = ::std::vec::Vec::with_capacity(0);
22372        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22373            "subject",
22374            |m: &ArtImageProperty| { &m.subject },
22375            |m: &mut ArtImageProperty| { &mut m.subject },
22376        ));
22377        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22378            "object",
22379            |m: &ArtImageProperty| { &m.object },
22380            |m: &mut ArtImageProperty| { &mut m.object },
22381        ));
22382        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22383            "verb",
22384            |m: &ArtImageProperty| { &m.verb },
22385            |m: &mut ArtImageProperty| { &mut m.verb },
22386        ));
22387        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22388            "type",
22389            |m: &ArtImageProperty| { &m.type_ },
22390            |m: &mut ArtImageProperty| { &mut m.type_ },
22391        ));
22392        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ArtImageProperty>(
22393            "ArtImageProperty",
22394            fields,
22395            oneofs,
22396        )
22397    }
22398}
22399
22400impl ::protobuf::Message for ArtImageProperty {
22401    const NAME: &'static str = "ArtImageProperty";
22402
22403    fn is_initialized(&self) -> bool {
22404        true
22405    }
22406
22407    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
22408        while let Some(tag) = is.read_raw_tag_or_eof()? {
22409            match tag {
22410                8 => {
22411                    self.subject = ::std::option::Option::Some(is.read_int32()?);
22412                },
22413                16 => {
22414                    self.object = ::std::option::Option::Some(is.read_int32()?);
22415                },
22416                24 => {
22417                    self.verb = ::std::option::Option::Some(is.read_enum_or_unknown()?);
22418                },
22419                32 => {
22420                    self.type_ = ::std::option::Option::Some(is.read_enum_or_unknown()?);
22421                },
22422                tag => {
22423                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
22424                },
22425            };
22426        }
22427        ::std::result::Result::Ok(())
22428    }
22429
22430    // Compute sizes of nested messages
22431    #[allow(unused_variables)]
22432    fn compute_size(&self) -> u64 {
22433        let mut my_size = 0;
22434        if let Some(v) = self.subject {
22435            my_size += ::protobuf::rt::int32_size(1, v);
22436        }
22437        if let Some(v) = self.object {
22438            my_size += ::protobuf::rt::int32_size(2, v);
22439        }
22440        if let Some(v) = self.verb {
22441            my_size += ::protobuf::rt::int32_size(3, v.value());
22442        }
22443        if let Some(v) = self.type_ {
22444            my_size += ::protobuf::rt::int32_size(4, v.value());
22445        }
22446        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
22447        self.special_fields.cached_size().set(my_size as u32);
22448        my_size
22449    }
22450
22451    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
22452        if let Some(v) = self.subject {
22453            os.write_int32(1, v)?;
22454        }
22455        if let Some(v) = self.object {
22456            os.write_int32(2, v)?;
22457        }
22458        if let Some(v) = self.verb {
22459            os.write_enum(3, ::protobuf::EnumOrUnknown::value(&v))?;
22460        }
22461        if let Some(v) = self.type_ {
22462            os.write_enum(4, ::protobuf::EnumOrUnknown::value(&v))?;
22463        }
22464        os.write_unknown_fields(self.special_fields.unknown_fields())?;
22465        ::std::result::Result::Ok(())
22466    }
22467
22468    fn special_fields(&self) -> &::protobuf::SpecialFields {
22469        &self.special_fields
22470    }
22471
22472    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
22473        &mut self.special_fields
22474    }
22475
22476    fn new() -> ArtImageProperty {
22477        ArtImageProperty::new()
22478    }
22479
22480    fn clear(&mut self) {
22481        self.subject = ::std::option::Option::None;
22482        self.object = ::std::option::Option::None;
22483        self.verb = ::std::option::Option::None;
22484        self.type_ = ::std::option::Option::None;
22485        self.special_fields.clear();
22486    }
22487
22488    fn default_instance() -> &'static ArtImageProperty {
22489        static instance: ArtImageProperty = ArtImageProperty {
22490            subject: ::std::option::Option::None,
22491            object: ::std::option::Option::None,
22492            verb: ::std::option::Option::None,
22493            type_: ::std::option::Option::None,
22494            special_fields: ::protobuf::SpecialFields::new(),
22495        };
22496        &instance
22497    }
22498}
22499
22500impl ::protobuf::MessageFull for ArtImageProperty {
22501    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
22502        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
22503        descriptor.get(|| file_descriptor().message_by_package_relative_name("ArtImageProperty").unwrap()).clone()
22504    }
22505}
22506
22507impl ::std::fmt::Display for ArtImageProperty {
22508    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
22509        ::protobuf::text_format::fmt(self, f)
22510    }
22511}
22512
22513impl ::protobuf::reflect::ProtobufValue for ArtImageProperty {
22514    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
22515}
22516
22517// @@protoc_insertion_point(message:RemoteFortressReader.ArtImage)
22518#[derive(PartialEq,Clone,Default,Debug)]
22519pub struct ArtImage {
22520    // message fields
22521    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImage.elements)
22522    pub elements: ::std::vec::Vec<ArtImageElement>,
22523    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImage.id)
22524    pub id: ::protobuf::MessageField<MatPair>,
22525    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImage.properties)
22526    pub properties: ::std::vec::Vec<ArtImageProperty>,
22527    // special fields
22528    // @@protoc_insertion_point(special_field:RemoteFortressReader.ArtImage.special_fields)
22529    pub special_fields: ::protobuf::SpecialFields,
22530}
22531
22532impl<'a> ::std::default::Default for &'a ArtImage {
22533    fn default() -> &'a ArtImage {
22534        <ArtImage as ::protobuf::Message>::default_instance()
22535    }
22536}
22537
22538impl ArtImage {
22539    pub fn new() -> ArtImage {
22540        ::std::default::Default::default()
22541    }
22542
22543    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
22544        let mut fields = ::std::vec::Vec::with_capacity(3);
22545        let mut oneofs = ::std::vec::Vec::with_capacity(0);
22546        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
22547            "elements",
22548            |m: &ArtImage| { &m.elements },
22549            |m: &mut ArtImage| { &mut m.elements },
22550        ));
22551        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
22552            "id",
22553            |m: &ArtImage| { &m.id },
22554            |m: &mut ArtImage| { &mut m.id },
22555        ));
22556        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
22557            "properties",
22558            |m: &ArtImage| { &m.properties },
22559            |m: &mut ArtImage| { &mut m.properties },
22560        ));
22561        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ArtImage>(
22562            "ArtImage",
22563            fields,
22564            oneofs,
22565        )
22566    }
22567}
22568
22569impl ::protobuf::Message for ArtImage {
22570    const NAME: &'static str = "ArtImage";
22571
22572    fn is_initialized(&self) -> bool {
22573        for v in &self.elements {
22574            if !v.is_initialized() {
22575                return false;
22576            }
22577        };
22578        for v in &self.id {
22579            if !v.is_initialized() {
22580                return false;
22581            }
22582        };
22583        for v in &self.properties {
22584            if !v.is_initialized() {
22585                return false;
22586            }
22587        };
22588        true
22589    }
22590
22591    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
22592        while let Some(tag) = is.read_raw_tag_or_eof()? {
22593            match tag {
22594                10 => {
22595                    self.elements.push(is.read_message()?);
22596                },
22597                18 => {
22598                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.id)?;
22599                },
22600                26 => {
22601                    self.properties.push(is.read_message()?);
22602                },
22603                tag => {
22604                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
22605                },
22606            };
22607        }
22608        ::std::result::Result::Ok(())
22609    }
22610
22611    // Compute sizes of nested messages
22612    #[allow(unused_variables)]
22613    fn compute_size(&self) -> u64 {
22614        let mut my_size = 0;
22615        for value in &self.elements {
22616            let len = value.compute_size();
22617            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
22618        };
22619        if let Some(v) = self.id.as_ref() {
22620            let len = v.compute_size();
22621            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
22622        }
22623        for value in &self.properties {
22624            let len = value.compute_size();
22625            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
22626        };
22627        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
22628        self.special_fields.cached_size().set(my_size as u32);
22629        my_size
22630    }
22631
22632    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
22633        for v in &self.elements {
22634            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
22635        };
22636        if let Some(v) = self.id.as_ref() {
22637            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
22638        }
22639        for v in &self.properties {
22640            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
22641        };
22642        os.write_unknown_fields(self.special_fields.unknown_fields())?;
22643        ::std::result::Result::Ok(())
22644    }
22645
22646    fn special_fields(&self) -> &::protobuf::SpecialFields {
22647        &self.special_fields
22648    }
22649
22650    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
22651        &mut self.special_fields
22652    }
22653
22654    fn new() -> ArtImage {
22655        ArtImage::new()
22656    }
22657
22658    fn clear(&mut self) {
22659        self.elements.clear();
22660        self.id.clear();
22661        self.properties.clear();
22662        self.special_fields.clear();
22663    }
22664
22665    fn default_instance() -> &'static ArtImage {
22666        static instance: ArtImage = ArtImage {
22667            elements: ::std::vec::Vec::new(),
22668            id: ::protobuf::MessageField::none(),
22669            properties: ::std::vec::Vec::new(),
22670            special_fields: ::protobuf::SpecialFields::new(),
22671        };
22672        &instance
22673    }
22674}
22675
22676impl ::protobuf::MessageFull for ArtImage {
22677    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
22678        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
22679        descriptor.get(|| file_descriptor().message_by_package_relative_name("ArtImage").unwrap()).clone()
22680    }
22681}
22682
22683impl ::std::fmt::Display for ArtImage {
22684    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
22685        ::protobuf::text_format::fmt(self, f)
22686    }
22687}
22688
22689impl ::protobuf::reflect::ProtobufValue for ArtImage {
22690    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
22691}
22692
22693// @@protoc_insertion_point(message:RemoteFortressReader.Engraving)
22694#[derive(PartialEq,Clone,Default,Debug)]
22695pub struct Engraving {
22696    // message fields
22697    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.pos)
22698    pub pos: ::protobuf::MessageField<Coord>,
22699    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.quality)
22700    pub quality: ::std::option::Option<i32>,
22701    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.tile)
22702    pub tile: ::std::option::Option<i32>,
22703    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.image)
22704    pub image: ::protobuf::MessageField<ArtImage>,
22705    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.floor)
22706    pub floor: ::std::option::Option<bool>,
22707    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.west)
22708    pub west: ::std::option::Option<bool>,
22709    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.east)
22710    pub east: ::std::option::Option<bool>,
22711    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.north)
22712    pub north: ::std::option::Option<bool>,
22713    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.south)
22714    pub south: ::std::option::Option<bool>,
22715    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.hidden)
22716    pub hidden: ::std::option::Option<bool>,
22717    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.northwest)
22718    pub northwest: ::std::option::Option<bool>,
22719    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.northeast)
22720    pub northeast: ::std::option::Option<bool>,
22721    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.southwest)
22722    pub southwest: ::std::option::Option<bool>,
22723    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.southeast)
22724    pub southeast: ::std::option::Option<bool>,
22725    // special fields
22726    // @@protoc_insertion_point(special_field:RemoteFortressReader.Engraving.special_fields)
22727    pub special_fields: ::protobuf::SpecialFields,
22728}
22729
22730impl<'a> ::std::default::Default for &'a Engraving {
22731    fn default() -> &'a Engraving {
22732        <Engraving as ::protobuf::Message>::default_instance()
22733    }
22734}
22735
22736impl Engraving {
22737    pub fn new() -> Engraving {
22738        ::std::default::Default::default()
22739    }
22740
22741    // optional int32 quality = 2;
22742
22743    pub fn quality(&self) -> i32 {
22744        self.quality.unwrap_or(0)
22745    }
22746
22747    pub fn clear_quality(&mut self) {
22748        self.quality = ::std::option::Option::None;
22749    }
22750
22751    pub fn has_quality(&self) -> bool {
22752        self.quality.is_some()
22753    }
22754
22755    // Param is passed by value, moved
22756    pub fn set_quality(&mut self, v: i32) {
22757        self.quality = ::std::option::Option::Some(v);
22758    }
22759
22760    // optional int32 tile = 3;
22761
22762    pub fn tile(&self) -> i32 {
22763        self.tile.unwrap_or(0)
22764    }
22765
22766    pub fn clear_tile(&mut self) {
22767        self.tile = ::std::option::Option::None;
22768    }
22769
22770    pub fn has_tile(&self) -> bool {
22771        self.tile.is_some()
22772    }
22773
22774    // Param is passed by value, moved
22775    pub fn set_tile(&mut self, v: i32) {
22776        self.tile = ::std::option::Option::Some(v);
22777    }
22778
22779    // optional bool floor = 5;
22780
22781    pub fn floor(&self) -> bool {
22782        self.floor.unwrap_or(false)
22783    }
22784
22785    pub fn clear_floor(&mut self) {
22786        self.floor = ::std::option::Option::None;
22787    }
22788
22789    pub fn has_floor(&self) -> bool {
22790        self.floor.is_some()
22791    }
22792
22793    // Param is passed by value, moved
22794    pub fn set_floor(&mut self, v: bool) {
22795        self.floor = ::std::option::Option::Some(v);
22796    }
22797
22798    // optional bool west = 6;
22799
22800    pub fn west(&self) -> bool {
22801        self.west.unwrap_or(false)
22802    }
22803
22804    pub fn clear_west(&mut self) {
22805        self.west = ::std::option::Option::None;
22806    }
22807
22808    pub fn has_west(&self) -> bool {
22809        self.west.is_some()
22810    }
22811
22812    // Param is passed by value, moved
22813    pub fn set_west(&mut self, v: bool) {
22814        self.west = ::std::option::Option::Some(v);
22815    }
22816
22817    // optional bool east = 7;
22818
22819    pub fn east(&self) -> bool {
22820        self.east.unwrap_or(false)
22821    }
22822
22823    pub fn clear_east(&mut self) {
22824        self.east = ::std::option::Option::None;
22825    }
22826
22827    pub fn has_east(&self) -> bool {
22828        self.east.is_some()
22829    }
22830
22831    // Param is passed by value, moved
22832    pub fn set_east(&mut self, v: bool) {
22833        self.east = ::std::option::Option::Some(v);
22834    }
22835
22836    // optional bool north = 8;
22837
22838    pub fn north(&self) -> bool {
22839        self.north.unwrap_or(false)
22840    }
22841
22842    pub fn clear_north(&mut self) {
22843        self.north = ::std::option::Option::None;
22844    }
22845
22846    pub fn has_north(&self) -> bool {
22847        self.north.is_some()
22848    }
22849
22850    // Param is passed by value, moved
22851    pub fn set_north(&mut self, v: bool) {
22852        self.north = ::std::option::Option::Some(v);
22853    }
22854
22855    // optional bool south = 9;
22856
22857    pub fn south(&self) -> bool {
22858        self.south.unwrap_or(false)
22859    }
22860
22861    pub fn clear_south(&mut self) {
22862        self.south = ::std::option::Option::None;
22863    }
22864
22865    pub fn has_south(&self) -> bool {
22866        self.south.is_some()
22867    }
22868
22869    // Param is passed by value, moved
22870    pub fn set_south(&mut self, v: bool) {
22871        self.south = ::std::option::Option::Some(v);
22872    }
22873
22874    // optional bool hidden = 10;
22875
22876    pub fn hidden(&self) -> bool {
22877        self.hidden.unwrap_or(false)
22878    }
22879
22880    pub fn clear_hidden(&mut self) {
22881        self.hidden = ::std::option::Option::None;
22882    }
22883
22884    pub fn has_hidden(&self) -> bool {
22885        self.hidden.is_some()
22886    }
22887
22888    // Param is passed by value, moved
22889    pub fn set_hidden(&mut self, v: bool) {
22890        self.hidden = ::std::option::Option::Some(v);
22891    }
22892
22893    // optional bool northwest = 11;
22894
22895    pub fn northwest(&self) -> bool {
22896        self.northwest.unwrap_or(false)
22897    }
22898
22899    pub fn clear_northwest(&mut self) {
22900        self.northwest = ::std::option::Option::None;
22901    }
22902
22903    pub fn has_northwest(&self) -> bool {
22904        self.northwest.is_some()
22905    }
22906
22907    // Param is passed by value, moved
22908    pub fn set_northwest(&mut self, v: bool) {
22909        self.northwest = ::std::option::Option::Some(v);
22910    }
22911
22912    // optional bool northeast = 12;
22913
22914    pub fn northeast(&self) -> bool {
22915        self.northeast.unwrap_or(false)
22916    }
22917
22918    pub fn clear_northeast(&mut self) {
22919        self.northeast = ::std::option::Option::None;
22920    }
22921
22922    pub fn has_northeast(&self) -> bool {
22923        self.northeast.is_some()
22924    }
22925
22926    // Param is passed by value, moved
22927    pub fn set_northeast(&mut self, v: bool) {
22928        self.northeast = ::std::option::Option::Some(v);
22929    }
22930
22931    // optional bool southwest = 13;
22932
22933    pub fn southwest(&self) -> bool {
22934        self.southwest.unwrap_or(false)
22935    }
22936
22937    pub fn clear_southwest(&mut self) {
22938        self.southwest = ::std::option::Option::None;
22939    }
22940
22941    pub fn has_southwest(&self) -> bool {
22942        self.southwest.is_some()
22943    }
22944
22945    // Param is passed by value, moved
22946    pub fn set_southwest(&mut self, v: bool) {
22947        self.southwest = ::std::option::Option::Some(v);
22948    }
22949
22950    // optional bool southeast = 14;
22951
22952    pub fn southeast(&self) -> bool {
22953        self.southeast.unwrap_or(false)
22954    }
22955
22956    pub fn clear_southeast(&mut self) {
22957        self.southeast = ::std::option::Option::None;
22958    }
22959
22960    pub fn has_southeast(&self) -> bool {
22961        self.southeast.is_some()
22962    }
22963
22964    // Param is passed by value, moved
22965    pub fn set_southeast(&mut self, v: bool) {
22966        self.southeast = ::std::option::Option::Some(v);
22967    }
22968
22969    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
22970        let mut fields = ::std::vec::Vec::with_capacity(14);
22971        let mut oneofs = ::std::vec::Vec::with_capacity(0);
22972        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
22973            "pos",
22974            |m: &Engraving| { &m.pos },
22975            |m: &mut Engraving| { &mut m.pos },
22976        ));
22977        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22978            "quality",
22979            |m: &Engraving| { &m.quality },
22980            |m: &mut Engraving| { &mut m.quality },
22981        ));
22982        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22983            "tile",
22984            |m: &Engraving| { &m.tile },
22985            |m: &mut Engraving| { &mut m.tile },
22986        ));
22987        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ArtImage>(
22988            "image",
22989            |m: &Engraving| { &m.image },
22990            |m: &mut Engraving| { &mut m.image },
22991        ));
22992        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22993            "floor",
22994            |m: &Engraving| { &m.floor },
22995            |m: &mut Engraving| { &mut m.floor },
22996        ));
22997        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22998            "west",
22999            |m: &Engraving| { &m.west },
23000            |m: &mut Engraving| { &mut m.west },
23001        ));
23002        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23003            "east",
23004            |m: &Engraving| { &m.east },
23005            |m: &mut Engraving| { &mut m.east },
23006        ));
23007        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23008            "north",
23009            |m: &Engraving| { &m.north },
23010            |m: &mut Engraving| { &mut m.north },
23011        ));
23012        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23013            "south",
23014            |m: &Engraving| { &m.south },
23015            |m: &mut Engraving| { &mut m.south },
23016        ));
23017        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23018            "hidden",
23019            |m: &Engraving| { &m.hidden },
23020            |m: &mut Engraving| { &mut m.hidden },
23021        ));
23022        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23023            "northwest",
23024            |m: &Engraving| { &m.northwest },
23025            |m: &mut Engraving| { &mut m.northwest },
23026        ));
23027        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23028            "northeast",
23029            |m: &Engraving| { &m.northeast },
23030            |m: &mut Engraving| { &mut m.northeast },
23031        ));
23032        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23033            "southwest",
23034            |m: &Engraving| { &m.southwest },
23035            |m: &mut Engraving| { &mut m.southwest },
23036        ));
23037        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23038            "southeast",
23039            |m: &Engraving| { &m.southeast },
23040            |m: &mut Engraving| { &mut m.southeast },
23041        ));
23042        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Engraving>(
23043            "Engraving",
23044            fields,
23045            oneofs,
23046        )
23047    }
23048}
23049
23050impl ::protobuf::Message for Engraving {
23051    const NAME: &'static str = "Engraving";
23052
23053    fn is_initialized(&self) -> bool {
23054        for v in &self.pos {
23055            if !v.is_initialized() {
23056                return false;
23057            }
23058        };
23059        for v in &self.image {
23060            if !v.is_initialized() {
23061                return false;
23062            }
23063        };
23064        true
23065    }
23066
23067    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
23068        while let Some(tag) = is.read_raw_tag_or_eof()? {
23069            match tag {
23070                10 => {
23071                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.pos)?;
23072                },
23073                16 => {
23074                    self.quality = ::std::option::Option::Some(is.read_int32()?);
23075                },
23076                24 => {
23077                    self.tile = ::std::option::Option::Some(is.read_int32()?);
23078                },
23079                34 => {
23080                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.image)?;
23081                },
23082                40 => {
23083                    self.floor = ::std::option::Option::Some(is.read_bool()?);
23084                },
23085                48 => {
23086                    self.west = ::std::option::Option::Some(is.read_bool()?);
23087                },
23088                56 => {
23089                    self.east = ::std::option::Option::Some(is.read_bool()?);
23090                },
23091                64 => {
23092                    self.north = ::std::option::Option::Some(is.read_bool()?);
23093                },
23094                72 => {
23095                    self.south = ::std::option::Option::Some(is.read_bool()?);
23096                },
23097                80 => {
23098                    self.hidden = ::std::option::Option::Some(is.read_bool()?);
23099                },
23100                88 => {
23101                    self.northwest = ::std::option::Option::Some(is.read_bool()?);
23102                },
23103                96 => {
23104                    self.northeast = ::std::option::Option::Some(is.read_bool()?);
23105                },
23106                104 => {
23107                    self.southwest = ::std::option::Option::Some(is.read_bool()?);
23108                },
23109                112 => {
23110                    self.southeast = ::std::option::Option::Some(is.read_bool()?);
23111                },
23112                tag => {
23113                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
23114                },
23115            };
23116        }
23117        ::std::result::Result::Ok(())
23118    }
23119
23120    // Compute sizes of nested messages
23121    #[allow(unused_variables)]
23122    fn compute_size(&self) -> u64 {
23123        let mut my_size = 0;
23124        if let Some(v) = self.pos.as_ref() {
23125            let len = v.compute_size();
23126            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23127        }
23128        if let Some(v) = self.quality {
23129            my_size += ::protobuf::rt::int32_size(2, v);
23130        }
23131        if let Some(v) = self.tile {
23132            my_size += ::protobuf::rt::int32_size(3, v);
23133        }
23134        if let Some(v) = self.image.as_ref() {
23135            let len = v.compute_size();
23136            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23137        }
23138        if let Some(v) = self.floor {
23139            my_size += 1 + 1;
23140        }
23141        if let Some(v) = self.west {
23142            my_size += 1 + 1;
23143        }
23144        if let Some(v) = self.east {
23145            my_size += 1 + 1;
23146        }
23147        if let Some(v) = self.north {
23148            my_size += 1 + 1;
23149        }
23150        if let Some(v) = self.south {
23151            my_size += 1 + 1;
23152        }
23153        if let Some(v) = self.hidden {
23154            my_size += 1 + 1;
23155        }
23156        if let Some(v) = self.northwest {
23157            my_size += 1 + 1;
23158        }
23159        if let Some(v) = self.northeast {
23160            my_size += 1 + 1;
23161        }
23162        if let Some(v) = self.southwest {
23163            my_size += 1 + 1;
23164        }
23165        if let Some(v) = self.southeast {
23166            my_size += 1 + 1;
23167        }
23168        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
23169        self.special_fields.cached_size().set(my_size as u32);
23170        my_size
23171    }
23172
23173    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
23174        if let Some(v) = self.pos.as_ref() {
23175            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
23176        }
23177        if let Some(v) = self.quality {
23178            os.write_int32(2, v)?;
23179        }
23180        if let Some(v) = self.tile {
23181            os.write_int32(3, v)?;
23182        }
23183        if let Some(v) = self.image.as_ref() {
23184            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
23185        }
23186        if let Some(v) = self.floor {
23187            os.write_bool(5, v)?;
23188        }
23189        if let Some(v) = self.west {
23190            os.write_bool(6, v)?;
23191        }
23192        if let Some(v) = self.east {
23193            os.write_bool(7, v)?;
23194        }
23195        if let Some(v) = self.north {
23196            os.write_bool(8, v)?;
23197        }
23198        if let Some(v) = self.south {
23199            os.write_bool(9, v)?;
23200        }
23201        if let Some(v) = self.hidden {
23202            os.write_bool(10, v)?;
23203        }
23204        if let Some(v) = self.northwest {
23205            os.write_bool(11, v)?;
23206        }
23207        if let Some(v) = self.northeast {
23208            os.write_bool(12, v)?;
23209        }
23210        if let Some(v) = self.southwest {
23211            os.write_bool(13, v)?;
23212        }
23213        if let Some(v) = self.southeast {
23214            os.write_bool(14, v)?;
23215        }
23216        os.write_unknown_fields(self.special_fields.unknown_fields())?;
23217        ::std::result::Result::Ok(())
23218    }
23219
23220    fn special_fields(&self) -> &::protobuf::SpecialFields {
23221        &self.special_fields
23222    }
23223
23224    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
23225        &mut self.special_fields
23226    }
23227
23228    fn new() -> Engraving {
23229        Engraving::new()
23230    }
23231
23232    fn clear(&mut self) {
23233        self.pos.clear();
23234        self.quality = ::std::option::Option::None;
23235        self.tile = ::std::option::Option::None;
23236        self.image.clear();
23237        self.floor = ::std::option::Option::None;
23238        self.west = ::std::option::Option::None;
23239        self.east = ::std::option::Option::None;
23240        self.north = ::std::option::Option::None;
23241        self.south = ::std::option::Option::None;
23242        self.hidden = ::std::option::Option::None;
23243        self.northwest = ::std::option::Option::None;
23244        self.northeast = ::std::option::Option::None;
23245        self.southwest = ::std::option::Option::None;
23246        self.southeast = ::std::option::Option::None;
23247        self.special_fields.clear();
23248    }
23249
23250    fn default_instance() -> &'static Engraving {
23251        static instance: Engraving = Engraving {
23252            pos: ::protobuf::MessageField::none(),
23253            quality: ::std::option::Option::None,
23254            tile: ::std::option::Option::None,
23255            image: ::protobuf::MessageField::none(),
23256            floor: ::std::option::Option::None,
23257            west: ::std::option::Option::None,
23258            east: ::std::option::Option::None,
23259            north: ::std::option::Option::None,
23260            south: ::std::option::Option::None,
23261            hidden: ::std::option::Option::None,
23262            northwest: ::std::option::Option::None,
23263            northeast: ::std::option::Option::None,
23264            southwest: ::std::option::Option::None,
23265            southeast: ::std::option::Option::None,
23266            special_fields: ::protobuf::SpecialFields::new(),
23267        };
23268        &instance
23269    }
23270}
23271
23272impl ::protobuf::MessageFull for Engraving {
23273    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
23274        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
23275        descriptor.get(|| file_descriptor().message_by_package_relative_name("Engraving").unwrap()).clone()
23276    }
23277}
23278
23279impl ::std::fmt::Display for Engraving {
23280    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
23281        ::protobuf::text_format::fmt(self, f)
23282    }
23283}
23284
23285impl ::protobuf::reflect::ProtobufValue for Engraving {
23286    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
23287}
23288
23289// @@protoc_insertion_point(message:RemoteFortressReader.FlowInfo)
23290#[derive(PartialEq,Clone,Default,Debug)]
23291pub struct FlowInfo {
23292    // message fields
23293    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.index)
23294    pub index: ::std::option::Option<i32>,
23295    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.type)
23296    pub type_: ::std::option::Option<::protobuf::EnumOrUnknown<FlowType>>,
23297    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.density)
23298    pub density: ::std::option::Option<i32>,
23299    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.pos)
23300    pub pos: ::protobuf::MessageField<Coord>,
23301    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.dest)
23302    pub dest: ::protobuf::MessageField<Coord>,
23303    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.expanding)
23304    pub expanding: ::std::option::Option<bool>,
23305    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.reuse)
23306    pub reuse: ::std::option::Option<bool>,
23307    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.guide_id)
23308    pub guide_id: ::std::option::Option<i32>,
23309    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.material)
23310    pub material: ::protobuf::MessageField<MatPair>,
23311    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.item)
23312    pub item: ::protobuf::MessageField<MatPair>,
23313    // special fields
23314    // @@protoc_insertion_point(special_field:RemoteFortressReader.FlowInfo.special_fields)
23315    pub special_fields: ::protobuf::SpecialFields,
23316}
23317
23318impl<'a> ::std::default::Default for &'a FlowInfo {
23319    fn default() -> &'a FlowInfo {
23320        <FlowInfo as ::protobuf::Message>::default_instance()
23321    }
23322}
23323
23324impl FlowInfo {
23325    pub fn new() -> FlowInfo {
23326        ::std::default::Default::default()
23327    }
23328
23329    // optional int32 index = 1;
23330
23331    pub fn index(&self) -> i32 {
23332        self.index.unwrap_or(0)
23333    }
23334
23335    pub fn clear_index(&mut self) {
23336        self.index = ::std::option::Option::None;
23337    }
23338
23339    pub fn has_index(&self) -> bool {
23340        self.index.is_some()
23341    }
23342
23343    // Param is passed by value, moved
23344    pub fn set_index(&mut self, v: i32) {
23345        self.index = ::std::option::Option::Some(v);
23346    }
23347
23348    // optional .RemoteFortressReader.FlowType type = 2;
23349
23350    pub fn type_(&self) -> FlowType {
23351        match self.type_ {
23352            Some(e) => e.enum_value_or(FlowType::Miasma),
23353            None => FlowType::Miasma,
23354        }
23355    }
23356
23357    pub fn clear_type_(&mut self) {
23358        self.type_ = ::std::option::Option::None;
23359    }
23360
23361    pub fn has_type(&self) -> bool {
23362        self.type_.is_some()
23363    }
23364
23365    // Param is passed by value, moved
23366    pub fn set_type(&mut self, v: FlowType) {
23367        self.type_ = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
23368    }
23369
23370    // optional int32 density = 3;
23371
23372    pub fn density(&self) -> i32 {
23373        self.density.unwrap_or(0)
23374    }
23375
23376    pub fn clear_density(&mut self) {
23377        self.density = ::std::option::Option::None;
23378    }
23379
23380    pub fn has_density(&self) -> bool {
23381        self.density.is_some()
23382    }
23383
23384    // Param is passed by value, moved
23385    pub fn set_density(&mut self, v: i32) {
23386        self.density = ::std::option::Option::Some(v);
23387    }
23388
23389    // optional bool expanding = 6;
23390
23391    pub fn expanding(&self) -> bool {
23392        self.expanding.unwrap_or(false)
23393    }
23394
23395    pub fn clear_expanding(&mut self) {
23396        self.expanding = ::std::option::Option::None;
23397    }
23398
23399    pub fn has_expanding(&self) -> bool {
23400        self.expanding.is_some()
23401    }
23402
23403    // Param is passed by value, moved
23404    pub fn set_expanding(&mut self, v: bool) {
23405        self.expanding = ::std::option::Option::Some(v);
23406    }
23407
23408    // optional bool reuse = 7;
23409
23410    pub fn reuse(&self) -> bool {
23411        self.reuse.unwrap_or(false)
23412    }
23413
23414    pub fn clear_reuse(&mut self) {
23415        self.reuse = ::std::option::Option::None;
23416    }
23417
23418    pub fn has_reuse(&self) -> bool {
23419        self.reuse.is_some()
23420    }
23421
23422    // Param is passed by value, moved
23423    pub fn set_reuse(&mut self, v: bool) {
23424        self.reuse = ::std::option::Option::Some(v);
23425    }
23426
23427    // optional int32 guide_id = 8;
23428
23429    pub fn guide_id(&self) -> i32 {
23430        self.guide_id.unwrap_or(0)
23431    }
23432
23433    pub fn clear_guide_id(&mut self) {
23434        self.guide_id = ::std::option::Option::None;
23435    }
23436
23437    pub fn has_guide_id(&self) -> bool {
23438        self.guide_id.is_some()
23439    }
23440
23441    // Param is passed by value, moved
23442    pub fn set_guide_id(&mut self, v: i32) {
23443        self.guide_id = ::std::option::Option::Some(v);
23444    }
23445
23446    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
23447        let mut fields = ::std::vec::Vec::with_capacity(10);
23448        let mut oneofs = ::std::vec::Vec::with_capacity(0);
23449        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23450            "index",
23451            |m: &FlowInfo| { &m.index },
23452            |m: &mut FlowInfo| { &mut m.index },
23453        ));
23454        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23455            "type",
23456            |m: &FlowInfo| { &m.type_ },
23457            |m: &mut FlowInfo| { &mut m.type_ },
23458        ));
23459        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23460            "density",
23461            |m: &FlowInfo| { &m.density },
23462            |m: &mut FlowInfo| { &mut m.density },
23463        ));
23464        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
23465            "pos",
23466            |m: &FlowInfo| { &m.pos },
23467            |m: &mut FlowInfo| { &mut m.pos },
23468        ));
23469        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
23470            "dest",
23471            |m: &FlowInfo| { &m.dest },
23472            |m: &mut FlowInfo| { &mut m.dest },
23473        ));
23474        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23475            "expanding",
23476            |m: &FlowInfo| { &m.expanding },
23477            |m: &mut FlowInfo| { &mut m.expanding },
23478        ));
23479        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23480            "reuse",
23481            |m: &FlowInfo| { &m.reuse },
23482            |m: &mut FlowInfo| { &mut m.reuse },
23483        ));
23484        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23485            "guide_id",
23486            |m: &FlowInfo| { &m.guide_id },
23487            |m: &mut FlowInfo| { &mut m.guide_id },
23488        ));
23489        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
23490            "material",
23491            |m: &FlowInfo| { &m.material },
23492            |m: &mut FlowInfo| { &mut m.material },
23493        ));
23494        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
23495            "item",
23496            |m: &FlowInfo| { &m.item },
23497            |m: &mut FlowInfo| { &mut m.item },
23498        ));
23499        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<FlowInfo>(
23500            "FlowInfo",
23501            fields,
23502            oneofs,
23503        )
23504    }
23505}
23506
23507impl ::protobuf::Message for FlowInfo {
23508    const NAME: &'static str = "FlowInfo";
23509
23510    fn is_initialized(&self) -> bool {
23511        for v in &self.pos {
23512            if !v.is_initialized() {
23513                return false;
23514            }
23515        };
23516        for v in &self.dest {
23517            if !v.is_initialized() {
23518                return false;
23519            }
23520        };
23521        for v in &self.material {
23522            if !v.is_initialized() {
23523                return false;
23524            }
23525        };
23526        for v in &self.item {
23527            if !v.is_initialized() {
23528                return false;
23529            }
23530        };
23531        true
23532    }
23533
23534    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
23535        while let Some(tag) = is.read_raw_tag_or_eof()? {
23536            match tag {
23537                8 => {
23538                    self.index = ::std::option::Option::Some(is.read_int32()?);
23539                },
23540                16 => {
23541                    self.type_ = ::std::option::Option::Some(is.read_enum_or_unknown()?);
23542                },
23543                24 => {
23544                    self.density = ::std::option::Option::Some(is.read_int32()?);
23545                },
23546                34 => {
23547                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.pos)?;
23548                },
23549                42 => {
23550                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.dest)?;
23551                },
23552                48 => {
23553                    self.expanding = ::std::option::Option::Some(is.read_bool()?);
23554                },
23555                56 => {
23556                    self.reuse = ::std::option::Option::Some(is.read_bool()?);
23557                },
23558                64 => {
23559                    self.guide_id = ::std::option::Option::Some(is.read_int32()?);
23560                },
23561                74 => {
23562                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
23563                },
23564                82 => {
23565                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.item)?;
23566                },
23567                tag => {
23568                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
23569                },
23570            };
23571        }
23572        ::std::result::Result::Ok(())
23573    }
23574
23575    // Compute sizes of nested messages
23576    #[allow(unused_variables)]
23577    fn compute_size(&self) -> u64 {
23578        let mut my_size = 0;
23579        if let Some(v) = self.index {
23580            my_size += ::protobuf::rt::int32_size(1, v);
23581        }
23582        if let Some(v) = self.type_ {
23583            my_size += ::protobuf::rt::int32_size(2, v.value());
23584        }
23585        if let Some(v) = self.density {
23586            my_size += ::protobuf::rt::int32_size(3, v);
23587        }
23588        if let Some(v) = self.pos.as_ref() {
23589            let len = v.compute_size();
23590            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23591        }
23592        if let Some(v) = self.dest.as_ref() {
23593            let len = v.compute_size();
23594            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23595        }
23596        if let Some(v) = self.expanding {
23597            my_size += 1 + 1;
23598        }
23599        if let Some(v) = self.reuse {
23600            my_size += 1 + 1;
23601        }
23602        if let Some(v) = self.guide_id {
23603            my_size += ::protobuf::rt::int32_size(8, v);
23604        }
23605        if let Some(v) = self.material.as_ref() {
23606            let len = v.compute_size();
23607            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23608        }
23609        if let Some(v) = self.item.as_ref() {
23610            let len = v.compute_size();
23611            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23612        }
23613        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
23614        self.special_fields.cached_size().set(my_size as u32);
23615        my_size
23616    }
23617
23618    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
23619        if let Some(v) = self.index {
23620            os.write_int32(1, v)?;
23621        }
23622        if let Some(v) = self.type_ {
23623            os.write_enum(2, ::protobuf::EnumOrUnknown::value(&v))?;
23624        }
23625        if let Some(v) = self.density {
23626            os.write_int32(3, v)?;
23627        }
23628        if let Some(v) = self.pos.as_ref() {
23629            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
23630        }
23631        if let Some(v) = self.dest.as_ref() {
23632            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
23633        }
23634        if let Some(v) = self.expanding {
23635            os.write_bool(6, v)?;
23636        }
23637        if let Some(v) = self.reuse {
23638            os.write_bool(7, v)?;
23639        }
23640        if let Some(v) = self.guide_id {
23641            os.write_int32(8, v)?;
23642        }
23643        if let Some(v) = self.material.as_ref() {
23644            ::protobuf::rt::write_message_field_with_cached_size(9, v, os)?;
23645        }
23646        if let Some(v) = self.item.as_ref() {
23647            ::protobuf::rt::write_message_field_with_cached_size(10, v, os)?;
23648        }
23649        os.write_unknown_fields(self.special_fields.unknown_fields())?;
23650        ::std::result::Result::Ok(())
23651    }
23652
23653    fn special_fields(&self) -> &::protobuf::SpecialFields {
23654        &self.special_fields
23655    }
23656
23657    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
23658        &mut self.special_fields
23659    }
23660
23661    fn new() -> FlowInfo {
23662        FlowInfo::new()
23663    }
23664
23665    fn clear(&mut self) {
23666        self.index = ::std::option::Option::None;
23667        self.type_ = ::std::option::Option::None;
23668        self.density = ::std::option::Option::None;
23669        self.pos.clear();
23670        self.dest.clear();
23671        self.expanding = ::std::option::Option::None;
23672        self.reuse = ::std::option::Option::None;
23673        self.guide_id = ::std::option::Option::None;
23674        self.material.clear();
23675        self.item.clear();
23676        self.special_fields.clear();
23677    }
23678
23679    fn default_instance() -> &'static FlowInfo {
23680        static instance: FlowInfo = FlowInfo {
23681            index: ::std::option::Option::None,
23682            type_: ::std::option::Option::None,
23683            density: ::std::option::Option::None,
23684            pos: ::protobuf::MessageField::none(),
23685            dest: ::protobuf::MessageField::none(),
23686            expanding: ::std::option::Option::None,
23687            reuse: ::std::option::Option::None,
23688            guide_id: ::std::option::Option::None,
23689            material: ::protobuf::MessageField::none(),
23690            item: ::protobuf::MessageField::none(),
23691            special_fields: ::protobuf::SpecialFields::new(),
23692        };
23693        &instance
23694    }
23695}
23696
23697impl ::protobuf::MessageFull for FlowInfo {
23698    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
23699        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
23700        descriptor.get(|| file_descriptor().message_by_package_relative_name("FlowInfo").unwrap()).clone()
23701    }
23702}
23703
23704impl ::std::fmt::Display for FlowInfo {
23705    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
23706        ::protobuf::text_format::fmt(self, f)
23707    }
23708}
23709
23710impl ::protobuf::reflect::ProtobufValue for FlowInfo {
23711    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
23712}
23713
23714// @@protoc_insertion_point(message:RemoteFortressReader.Wave)
23715#[derive(PartialEq,Clone,Default,Debug)]
23716pub struct Wave {
23717    // message fields
23718    // @@protoc_insertion_point(field:RemoteFortressReader.Wave.dest)
23719    pub dest: ::protobuf::MessageField<Coord>,
23720    // @@protoc_insertion_point(field:RemoteFortressReader.Wave.pos)
23721    pub pos: ::protobuf::MessageField<Coord>,
23722    // special fields
23723    // @@protoc_insertion_point(special_field:RemoteFortressReader.Wave.special_fields)
23724    pub special_fields: ::protobuf::SpecialFields,
23725}
23726
23727impl<'a> ::std::default::Default for &'a Wave {
23728    fn default() -> &'a Wave {
23729        <Wave as ::protobuf::Message>::default_instance()
23730    }
23731}
23732
23733impl Wave {
23734    pub fn new() -> Wave {
23735        ::std::default::Default::default()
23736    }
23737
23738    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
23739        let mut fields = ::std::vec::Vec::with_capacity(2);
23740        let mut oneofs = ::std::vec::Vec::with_capacity(0);
23741        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
23742            "dest",
23743            |m: &Wave| { &m.dest },
23744            |m: &mut Wave| { &mut m.dest },
23745        ));
23746        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
23747            "pos",
23748            |m: &Wave| { &m.pos },
23749            |m: &mut Wave| { &mut m.pos },
23750        ));
23751        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Wave>(
23752            "Wave",
23753            fields,
23754            oneofs,
23755        )
23756    }
23757}
23758
23759impl ::protobuf::Message for Wave {
23760    const NAME: &'static str = "Wave";
23761
23762    fn is_initialized(&self) -> bool {
23763        true
23764    }
23765
23766    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
23767        while let Some(tag) = is.read_raw_tag_or_eof()? {
23768            match tag {
23769                10 => {
23770                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.dest)?;
23771                },
23772                18 => {
23773                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.pos)?;
23774                },
23775                tag => {
23776                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
23777                },
23778            };
23779        }
23780        ::std::result::Result::Ok(())
23781    }
23782
23783    // Compute sizes of nested messages
23784    #[allow(unused_variables)]
23785    fn compute_size(&self) -> u64 {
23786        let mut my_size = 0;
23787        if let Some(v) = self.dest.as_ref() {
23788            let len = v.compute_size();
23789            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23790        }
23791        if let Some(v) = self.pos.as_ref() {
23792            let len = v.compute_size();
23793            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23794        }
23795        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
23796        self.special_fields.cached_size().set(my_size as u32);
23797        my_size
23798    }
23799
23800    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
23801        if let Some(v) = self.dest.as_ref() {
23802            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
23803        }
23804        if let Some(v) = self.pos.as_ref() {
23805            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
23806        }
23807        os.write_unknown_fields(self.special_fields.unknown_fields())?;
23808        ::std::result::Result::Ok(())
23809    }
23810
23811    fn special_fields(&self) -> &::protobuf::SpecialFields {
23812        &self.special_fields
23813    }
23814
23815    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
23816        &mut self.special_fields
23817    }
23818
23819    fn new() -> Wave {
23820        Wave::new()
23821    }
23822
23823    fn clear(&mut self) {
23824        self.dest.clear();
23825        self.pos.clear();
23826        self.special_fields.clear();
23827    }
23828
23829    fn default_instance() -> &'static Wave {
23830        static instance: Wave = Wave {
23831            dest: ::protobuf::MessageField::none(),
23832            pos: ::protobuf::MessageField::none(),
23833            special_fields: ::protobuf::SpecialFields::new(),
23834        };
23835        &instance
23836    }
23837}
23838
23839impl ::protobuf::MessageFull for Wave {
23840    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
23841        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
23842        descriptor.get(|| file_descriptor().message_by_package_relative_name("Wave").unwrap()).clone()
23843    }
23844}
23845
23846impl ::std::fmt::Display for Wave {
23847    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
23848        ::protobuf::text_format::fmt(self, f)
23849    }
23850}
23851
23852impl ::protobuf::reflect::ProtobufValue for Wave {
23853    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
23854}
23855
23856#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
23857// @@protoc_insertion_point(enum:RemoteFortressReader.TiletypeShape)
23858pub enum TiletypeShape {
23859    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.NO_SHAPE)
23860    NO_SHAPE = -1,
23861    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.EMPTY)
23862    EMPTY = 0,
23863    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.FLOOR)
23864    FLOOR = 1,
23865    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.BOULDER)
23866    BOULDER = 2,
23867    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.PEBBLES)
23868    PEBBLES = 3,
23869    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.WALL)
23870    WALL = 4,
23871    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.FORTIFICATION)
23872    FORTIFICATION = 5,
23873    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.STAIR_UP)
23874    STAIR_UP = 6,
23875    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.STAIR_DOWN)
23876    STAIR_DOWN = 7,
23877    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.STAIR_UPDOWN)
23878    STAIR_UPDOWN = 8,
23879    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.RAMP)
23880    RAMP = 9,
23881    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.RAMP_TOP)
23882    RAMP_TOP = 10,
23883    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.BROOK_BED)
23884    BROOK_BED = 11,
23885    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.BROOK_TOP)
23886    BROOK_TOP = 12,
23887    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.TREE_SHAPE)
23888    TREE_SHAPE = 13,
23889    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.SAPLING)
23890    SAPLING = 14,
23891    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.SHRUB)
23892    SHRUB = 15,
23893    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.ENDLESS_PIT)
23894    ENDLESS_PIT = 16,
23895    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.BRANCH)
23896    BRANCH = 17,
23897    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.TRUNK_BRANCH)
23898    TRUNK_BRANCH = 18,
23899    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.TWIG)
23900    TWIG = 19,
23901}
23902
23903impl ::protobuf::Enum for TiletypeShape {
23904    const NAME: &'static str = "TiletypeShape";
23905
23906    fn value(&self) -> i32 {
23907        *self as i32
23908    }
23909
23910    fn from_i32(value: i32) -> ::std::option::Option<TiletypeShape> {
23911        match value {
23912            -1 => ::std::option::Option::Some(TiletypeShape::NO_SHAPE),
23913            0 => ::std::option::Option::Some(TiletypeShape::EMPTY),
23914            1 => ::std::option::Option::Some(TiletypeShape::FLOOR),
23915            2 => ::std::option::Option::Some(TiletypeShape::BOULDER),
23916            3 => ::std::option::Option::Some(TiletypeShape::PEBBLES),
23917            4 => ::std::option::Option::Some(TiletypeShape::WALL),
23918            5 => ::std::option::Option::Some(TiletypeShape::FORTIFICATION),
23919            6 => ::std::option::Option::Some(TiletypeShape::STAIR_UP),
23920            7 => ::std::option::Option::Some(TiletypeShape::STAIR_DOWN),
23921            8 => ::std::option::Option::Some(TiletypeShape::STAIR_UPDOWN),
23922            9 => ::std::option::Option::Some(TiletypeShape::RAMP),
23923            10 => ::std::option::Option::Some(TiletypeShape::RAMP_TOP),
23924            11 => ::std::option::Option::Some(TiletypeShape::BROOK_BED),
23925            12 => ::std::option::Option::Some(TiletypeShape::BROOK_TOP),
23926            13 => ::std::option::Option::Some(TiletypeShape::TREE_SHAPE),
23927            14 => ::std::option::Option::Some(TiletypeShape::SAPLING),
23928            15 => ::std::option::Option::Some(TiletypeShape::SHRUB),
23929            16 => ::std::option::Option::Some(TiletypeShape::ENDLESS_PIT),
23930            17 => ::std::option::Option::Some(TiletypeShape::BRANCH),
23931            18 => ::std::option::Option::Some(TiletypeShape::TRUNK_BRANCH),
23932            19 => ::std::option::Option::Some(TiletypeShape::TWIG),
23933            _ => ::std::option::Option::None
23934        }
23935    }
23936
23937    fn from_str(str: &str) -> ::std::option::Option<TiletypeShape> {
23938        match str {
23939            "NO_SHAPE" => ::std::option::Option::Some(TiletypeShape::NO_SHAPE),
23940            "EMPTY" => ::std::option::Option::Some(TiletypeShape::EMPTY),
23941            "FLOOR" => ::std::option::Option::Some(TiletypeShape::FLOOR),
23942            "BOULDER" => ::std::option::Option::Some(TiletypeShape::BOULDER),
23943            "PEBBLES" => ::std::option::Option::Some(TiletypeShape::PEBBLES),
23944            "WALL" => ::std::option::Option::Some(TiletypeShape::WALL),
23945            "FORTIFICATION" => ::std::option::Option::Some(TiletypeShape::FORTIFICATION),
23946            "STAIR_UP" => ::std::option::Option::Some(TiletypeShape::STAIR_UP),
23947            "STAIR_DOWN" => ::std::option::Option::Some(TiletypeShape::STAIR_DOWN),
23948            "STAIR_UPDOWN" => ::std::option::Option::Some(TiletypeShape::STAIR_UPDOWN),
23949            "RAMP" => ::std::option::Option::Some(TiletypeShape::RAMP),
23950            "RAMP_TOP" => ::std::option::Option::Some(TiletypeShape::RAMP_TOP),
23951            "BROOK_BED" => ::std::option::Option::Some(TiletypeShape::BROOK_BED),
23952            "BROOK_TOP" => ::std::option::Option::Some(TiletypeShape::BROOK_TOP),
23953            "TREE_SHAPE" => ::std::option::Option::Some(TiletypeShape::TREE_SHAPE),
23954            "SAPLING" => ::std::option::Option::Some(TiletypeShape::SAPLING),
23955            "SHRUB" => ::std::option::Option::Some(TiletypeShape::SHRUB),
23956            "ENDLESS_PIT" => ::std::option::Option::Some(TiletypeShape::ENDLESS_PIT),
23957            "BRANCH" => ::std::option::Option::Some(TiletypeShape::BRANCH),
23958            "TRUNK_BRANCH" => ::std::option::Option::Some(TiletypeShape::TRUNK_BRANCH),
23959            "TWIG" => ::std::option::Option::Some(TiletypeShape::TWIG),
23960            _ => ::std::option::Option::None
23961        }
23962    }
23963
23964    const VALUES: &'static [TiletypeShape] = &[
23965        TiletypeShape::NO_SHAPE,
23966        TiletypeShape::EMPTY,
23967        TiletypeShape::FLOOR,
23968        TiletypeShape::BOULDER,
23969        TiletypeShape::PEBBLES,
23970        TiletypeShape::WALL,
23971        TiletypeShape::FORTIFICATION,
23972        TiletypeShape::STAIR_UP,
23973        TiletypeShape::STAIR_DOWN,
23974        TiletypeShape::STAIR_UPDOWN,
23975        TiletypeShape::RAMP,
23976        TiletypeShape::RAMP_TOP,
23977        TiletypeShape::BROOK_BED,
23978        TiletypeShape::BROOK_TOP,
23979        TiletypeShape::TREE_SHAPE,
23980        TiletypeShape::SAPLING,
23981        TiletypeShape::SHRUB,
23982        TiletypeShape::ENDLESS_PIT,
23983        TiletypeShape::BRANCH,
23984        TiletypeShape::TRUNK_BRANCH,
23985        TiletypeShape::TWIG,
23986    ];
23987}
23988
23989impl ::protobuf::EnumFull for TiletypeShape {
23990    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
23991        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
23992        descriptor.get(|| file_descriptor().enum_by_package_relative_name("TiletypeShape").unwrap()).clone()
23993    }
23994
23995    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
23996        let index = match self {
23997            TiletypeShape::NO_SHAPE => 0,
23998            TiletypeShape::EMPTY => 1,
23999            TiletypeShape::FLOOR => 2,
24000            TiletypeShape::BOULDER => 3,
24001            TiletypeShape::PEBBLES => 4,
24002            TiletypeShape::WALL => 5,
24003            TiletypeShape::FORTIFICATION => 6,
24004            TiletypeShape::STAIR_UP => 7,
24005            TiletypeShape::STAIR_DOWN => 8,
24006            TiletypeShape::STAIR_UPDOWN => 9,
24007            TiletypeShape::RAMP => 10,
24008            TiletypeShape::RAMP_TOP => 11,
24009            TiletypeShape::BROOK_BED => 12,
24010            TiletypeShape::BROOK_TOP => 13,
24011            TiletypeShape::TREE_SHAPE => 14,
24012            TiletypeShape::SAPLING => 15,
24013            TiletypeShape::SHRUB => 16,
24014            TiletypeShape::ENDLESS_PIT => 17,
24015            TiletypeShape::BRANCH => 18,
24016            TiletypeShape::TRUNK_BRANCH => 19,
24017            TiletypeShape::TWIG => 20,
24018        };
24019        Self::enum_descriptor().value_by_index(index)
24020    }
24021}
24022
24023// Note, `Default` is implemented although default value is not 0
24024impl ::std::default::Default for TiletypeShape {
24025    fn default() -> Self {
24026        TiletypeShape::NO_SHAPE
24027    }
24028}
24029
24030impl TiletypeShape {
24031    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24032        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<TiletypeShape>("TiletypeShape")
24033    }
24034}
24035
24036#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24037// @@protoc_insertion_point(enum:RemoteFortressReader.TiletypeSpecial)
24038pub enum TiletypeSpecial {
24039    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.NO_SPECIAL)
24040    NO_SPECIAL = -1,
24041    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.NORMAL)
24042    NORMAL = 0,
24043    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.RIVER_SOURCE)
24044    RIVER_SOURCE = 1,
24045    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.WATERFALL)
24046    WATERFALL = 2,
24047    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.SMOOTH)
24048    SMOOTH = 3,
24049    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.FURROWED)
24050    FURROWED = 4,
24051    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.WET)
24052    WET = 5,
24053    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.DEAD)
24054    DEAD = 6,
24055    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.WORN_1)
24056    WORN_1 = 7,
24057    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.WORN_2)
24058    WORN_2 = 8,
24059    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.WORN_3)
24060    WORN_3 = 9,
24061    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.TRACK)
24062    TRACK = 10,
24063    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.SMOOTH_DEAD)
24064    SMOOTH_DEAD = 11,
24065}
24066
24067impl ::protobuf::Enum for TiletypeSpecial {
24068    const NAME: &'static str = "TiletypeSpecial";
24069
24070    fn value(&self) -> i32 {
24071        *self as i32
24072    }
24073
24074    fn from_i32(value: i32) -> ::std::option::Option<TiletypeSpecial> {
24075        match value {
24076            -1 => ::std::option::Option::Some(TiletypeSpecial::NO_SPECIAL),
24077            0 => ::std::option::Option::Some(TiletypeSpecial::NORMAL),
24078            1 => ::std::option::Option::Some(TiletypeSpecial::RIVER_SOURCE),
24079            2 => ::std::option::Option::Some(TiletypeSpecial::WATERFALL),
24080            3 => ::std::option::Option::Some(TiletypeSpecial::SMOOTH),
24081            4 => ::std::option::Option::Some(TiletypeSpecial::FURROWED),
24082            5 => ::std::option::Option::Some(TiletypeSpecial::WET),
24083            6 => ::std::option::Option::Some(TiletypeSpecial::DEAD),
24084            7 => ::std::option::Option::Some(TiletypeSpecial::WORN_1),
24085            8 => ::std::option::Option::Some(TiletypeSpecial::WORN_2),
24086            9 => ::std::option::Option::Some(TiletypeSpecial::WORN_3),
24087            10 => ::std::option::Option::Some(TiletypeSpecial::TRACK),
24088            11 => ::std::option::Option::Some(TiletypeSpecial::SMOOTH_DEAD),
24089            _ => ::std::option::Option::None
24090        }
24091    }
24092
24093    fn from_str(str: &str) -> ::std::option::Option<TiletypeSpecial> {
24094        match str {
24095            "NO_SPECIAL" => ::std::option::Option::Some(TiletypeSpecial::NO_SPECIAL),
24096            "NORMAL" => ::std::option::Option::Some(TiletypeSpecial::NORMAL),
24097            "RIVER_SOURCE" => ::std::option::Option::Some(TiletypeSpecial::RIVER_SOURCE),
24098            "WATERFALL" => ::std::option::Option::Some(TiletypeSpecial::WATERFALL),
24099            "SMOOTH" => ::std::option::Option::Some(TiletypeSpecial::SMOOTH),
24100            "FURROWED" => ::std::option::Option::Some(TiletypeSpecial::FURROWED),
24101            "WET" => ::std::option::Option::Some(TiletypeSpecial::WET),
24102            "DEAD" => ::std::option::Option::Some(TiletypeSpecial::DEAD),
24103            "WORN_1" => ::std::option::Option::Some(TiletypeSpecial::WORN_1),
24104            "WORN_2" => ::std::option::Option::Some(TiletypeSpecial::WORN_2),
24105            "WORN_3" => ::std::option::Option::Some(TiletypeSpecial::WORN_3),
24106            "TRACK" => ::std::option::Option::Some(TiletypeSpecial::TRACK),
24107            "SMOOTH_DEAD" => ::std::option::Option::Some(TiletypeSpecial::SMOOTH_DEAD),
24108            _ => ::std::option::Option::None
24109        }
24110    }
24111
24112    const VALUES: &'static [TiletypeSpecial] = &[
24113        TiletypeSpecial::NO_SPECIAL,
24114        TiletypeSpecial::NORMAL,
24115        TiletypeSpecial::RIVER_SOURCE,
24116        TiletypeSpecial::WATERFALL,
24117        TiletypeSpecial::SMOOTH,
24118        TiletypeSpecial::FURROWED,
24119        TiletypeSpecial::WET,
24120        TiletypeSpecial::DEAD,
24121        TiletypeSpecial::WORN_1,
24122        TiletypeSpecial::WORN_2,
24123        TiletypeSpecial::WORN_3,
24124        TiletypeSpecial::TRACK,
24125        TiletypeSpecial::SMOOTH_DEAD,
24126    ];
24127}
24128
24129impl ::protobuf::EnumFull for TiletypeSpecial {
24130    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24131        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24132        descriptor.get(|| file_descriptor().enum_by_package_relative_name("TiletypeSpecial").unwrap()).clone()
24133    }
24134
24135    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24136        let index = match self {
24137            TiletypeSpecial::NO_SPECIAL => 0,
24138            TiletypeSpecial::NORMAL => 1,
24139            TiletypeSpecial::RIVER_SOURCE => 2,
24140            TiletypeSpecial::WATERFALL => 3,
24141            TiletypeSpecial::SMOOTH => 4,
24142            TiletypeSpecial::FURROWED => 5,
24143            TiletypeSpecial::WET => 6,
24144            TiletypeSpecial::DEAD => 7,
24145            TiletypeSpecial::WORN_1 => 8,
24146            TiletypeSpecial::WORN_2 => 9,
24147            TiletypeSpecial::WORN_3 => 10,
24148            TiletypeSpecial::TRACK => 11,
24149            TiletypeSpecial::SMOOTH_DEAD => 12,
24150        };
24151        Self::enum_descriptor().value_by_index(index)
24152    }
24153}
24154
24155// Note, `Default` is implemented although default value is not 0
24156impl ::std::default::Default for TiletypeSpecial {
24157    fn default() -> Self {
24158        TiletypeSpecial::NO_SPECIAL
24159    }
24160}
24161
24162impl TiletypeSpecial {
24163    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24164        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<TiletypeSpecial>("TiletypeSpecial")
24165    }
24166}
24167
24168#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24169// @@protoc_insertion_point(enum:RemoteFortressReader.TiletypeMaterial)
24170pub enum TiletypeMaterial {
24171    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.NO_MATERIAL)
24172    NO_MATERIAL = -1,
24173    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.AIR)
24174    AIR = 0,
24175    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.SOIL)
24176    SOIL = 1,
24177    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.STONE)
24178    STONE = 2,
24179    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.FEATURE)
24180    FEATURE = 3,
24181    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.LAVA_STONE)
24182    LAVA_STONE = 4,
24183    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.MINERAL)
24184    MINERAL = 5,
24185    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.FROZEN_LIQUID)
24186    FROZEN_LIQUID = 6,
24187    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.CONSTRUCTION)
24188    CONSTRUCTION = 7,
24189    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.GRASS_LIGHT)
24190    GRASS_LIGHT = 8,
24191    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.GRASS_DARK)
24192    GRASS_DARK = 9,
24193    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.GRASS_DRY)
24194    GRASS_DRY = 10,
24195    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.GRASS_DEAD)
24196    GRASS_DEAD = 11,
24197    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.PLANT)
24198    PLANT = 12,
24199    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.HFS)
24200    HFS = 13,
24201    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.CAMPFIRE)
24202    CAMPFIRE = 14,
24203    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.FIRE)
24204    FIRE = 15,
24205    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.ASHES)
24206    ASHES = 16,
24207    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.MAGMA)
24208    MAGMA = 17,
24209    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.DRIFTWOOD)
24210    DRIFTWOOD = 18,
24211    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.POOL)
24212    POOL = 19,
24213    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.BROOK)
24214    BROOK = 20,
24215    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.RIVER)
24216    RIVER = 21,
24217    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.ROOT)
24218    ROOT = 22,
24219    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.TREE_MATERIAL)
24220    TREE_MATERIAL = 23,
24221    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.MUSHROOM)
24222    MUSHROOM = 24,
24223    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.UNDERWORLD_GATE)
24224    UNDERWORLD_GATE = 25,
24225}
24226
24227impl ::protobuf::Enum for TiletypeMaterial {
24228    const NAME: &'static str = "TiletypeMaterial";
24229
24230    fn value(&self) -> i32 {
24231        *self as i32
24232    }
24233
24234    fn from_i32(value: i32) -> ::std::option::Option<TiletypeMaterial> {
24235        match value {
24236            -1 => ::std::option::Option::Some(TiletypeMaterial::NO_MATERIAL),
24237            0 => ::std::option::Option::Some(TiletypeMaterial::AIR),
24238            1 => ::std::option::Option::Some(TiletypeMaterial::SOIL),
24239            2 => ::std::option::Option::Some(TiletypeMaterial::STONE),
24240            3 => ::std::option::Option::Some(TiletypeMaterial::FEATURE),
24241            4 => ::std::option::Option::Some(TiletypeMaterial::LAVA_STONE),
24242            5 => ::std::option::Option::Some(TiletypeMaterial::MINERAL),
24243            6 => ::std::option::Option::Some(TiletypeMaterial::FROZEN_LIQUID),
24244            7 => ::std::option::Option::Some(TiletypeMaterial::CONSTRUCTION),
24245            8 => ::std::option::Option::Some(TiletypeMaterial::GRASS_LIGHT),
24246            9 => ::std::option::Option::Some(TiletypeMaterial::GRASS_DARK),
24247            10 => ::std::option::Option::Some(TiletypeMaterial::GRASS_DRY),
24248            11 => ::std::option::Option::Some(TiletypeMaterial::GRASS_DEAD),
24249            12 => ::std::option::Option::Some(TiletypeMaterial::PLANT),
24250            13 => ::std::option::Option::Some(TiletypeMaterial::HFS),
24251            14 => ::std::option::Option::Some(TiletypeMaterial::CAMPFIRE),
24252            15 => ::std::option::Option::Some(TiletypeMaterial::FIRE),
24253            16 => ::std::option::Option::Some(TiletypeMaterial::ASHES),
24254            17 => ::std::option::Option::Some(TiletypeMaterial::MAGMA),
24255            18 => ::std::option::Option::Some(TiletypeMaterial::DRIFTWOOD),
24256            19 => ::std::option::Option::Some(TiletypeMaterial::POOL),
24257            20 => ::std::option::Option::Some(TiletypeMaterial::BROOK),
24258            21 => ::std::option::Option::Some(TiletypeMaterial::RIVER),
24259            22 => ::std::option::Option::Some(TiletypeMaterial::ROOT),
24260            23 => ::std::option::Option::Some(TiletypeMaterial::TREE_MATERIAL),
24261            24 => ::std::option::Option::Some(TiletypeMaterial::MUSHROOM),
24262            25 => ::std::option::Option::Some(TiletypeMaterial::UNDERWORLD_GATE),
24263            _ => ::std::option::Option::None
24264        }
24265    }
24266
24267    fn from_str(str: &str) -> ::std::option::Option<TiletypeMaterial> {
24268        match str {
24269            "NO_MATERIAL" => ::std::option::Option::Some(TiletypeMaterial::NO_MATERIAL),
24270            "AIR" => ::std::option::Option::Some(TiletypeMaterial::AIR),
24271            "SOIL" => ::std::option::Option::Some(TiletypeMaterial::SOIL),
24272            "STONE" => ::std::option::Option::Some(TiletypeMaterial::STONE),
24273            "FEATURE" => ::std::option::Option::Some(TiletypeMaterial::FEATURE),
24274            "LAVA_STONE" => ::std::option::Option::Some(TiletypeMaterial::LAVA_STONE),
24275            "MINERAL" => ::std::option::Option::Some(TiletypeMaterial::MINERAL),
24276            "FROZEN_LIQUID" => ::std::option::Option::Some(TiletypeMaterial::FROZEN_LIQUID),
24277            "CONSTRUCTION" => ::std::option::Option::Some(TiletypeMaterial::CONSTRUCTION),
24278            "GRASS_LIGHT" => ::std::option::Option::Some(TiletypeMaterial::GRASS_LIGHT),
24279            "GRASS_DARK" => ::std::option::Option::Some(TiletypeMaterial::GRASS_DARK),
24280            "GRASS_DRY" => ::std::option::Option::Some(TiletypeMaterial::GRASS_DRY),
24281            "GRASS_DEAD" => ::std::option::Option::Some(TiletypeMaterial::GRASS_DEAD),
24282            "PLANT" => ::std::option::Option::Some(TiletypeMaterial::PLANT),
24283            "HFS" => ::std::option::Option::Some(TiletypeMaterial::HFS),
24284            "CAMPFIRE" => ::std::option::Option::Some(TiletypeMaterial::CAMPFIRE),
24285            "FIRE" => ::std::option::Option::Some(TiletypeMaterial::FIRE),
24286            "ASHES" => ::std::option::Option::Some(TiletypeMaterial::ASHES),
24287            "MAGMA" => ::std::option::Option::Some(TiletypeMaterial::MAGMA),
24288            "DRIFTWOOD" => ::std::option::Option::Some(TiletypeMaterial::DRIFTWOOD),
24289            "POOL" => ::std::option::Option::Some(TiletypeMaterial::POOL),
24290            "BROOK" => ::std::option::Option::Some(TiletypeMaterial::BROOK),
24291            "RIVER" => ::std::option::Option::Some(TiletypeMaterial::RIVER),
24292            "ROOT" => ::std::option::Option::Some(TiletypeMaterial::ROOT),
24293            "TREE_MATERIAL" => ::std::option::Option::Some(TiletypeMaterial::TREE_MATERIAL),
24294            "MUSHROOM" => ::std::option::Option::Some(TiletypeMaterial::MUSHROOM),
24295            "UNDERWORLD_GATE" => ::std::option::Option::Some(TiletypeMaterial::UNDERWORLD_GATE),
24296            _ => ::std::option::Option::None
24297        }
24298    }
24299
24300    const VALUES: &'static [TiletypeMaterial] = &[
24301        TiletypeMaterial::NO_MATERIAL,
24302        TiletypeMaterial::AIR,
24303        TiletypeMaterial::SOIL,
24304        TiletypeMaterial::STONE,
24305        TiletypeMaterial::FEATURE,
24306        TiletypeMaterial::LAVA_STONE,
24307        TiletypeMaterial::MINERAL,
24308        TiletypeMaterial::FROZEN_LIQUID,
24309        TiletypeMaterial::CONSTRUCTION,
24310        TiletypeMaterial::GRASS_LIGHT,
24311        TiletypeMaterial::GRASS_DARK,
24312        TiletypeMaterial::GRASS_DRY,
24313        TiletypeMaterial::GRASS_DEAD,
24314        TiletypeMaterial::PLANT,
24315        TiletypeMaterial::HFS,
24316        TiletypeMaterial::CAMPFIRE,
24317        TiletypeMaterial::FIRE,
24318        TiletypeMaterial::ASHES,
24319        TiletypeMaterial::MAGMA,
24320        TiletypeMaterial::DRIFTWOOD,
24321        TiletypeMaterial::POOL,
24322        TiletypeMaterial::BROOK,
24323        TiletypeMaterial::RIVER,
24324        TiletypeMaterial::ROOT,
24325        TiletypeMaterial::TREE_MATERIAL,
24326        TiletypeMaterial::MUSHROOM,
24327        TiletypeMaterial::UNDERWORLD_GATE,
24328    ];
24329}
24330
24331impl ::protobuf::EnumFull for TiletypeMaterial {
24332    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24333        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24334        descriptor.get(|| file_descriptor().enum_by_package_relative_name("TiletypeMaterial").unwrap()).clone()
24335    }
24336
24337    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24338        let index = match self {
24339            TiletypeMaterial::NO_MATERIAL => 0,
24340            TiletypeMaterial::AIR => 1,
24341            TiletypeMaterial::SOIL => 2,
24342            TiletypeMaterial::STONE => 3,
24343            TiletypeMaterial::FEATURE => 4,
24344            TiletypeMaterial::LAVA_STONE => 5,
24345            TiletypeMaterial::MINERAL => 6,
24346            TiletypeMaterial::FROZEN_LIQUID => 7,
24347            TiletypeMaterial::CONSTRUCTION => 8,
24348            TiletypeMaterial::GRASS_LIGHT => 9,
24349            TiletypeMaterial::GRASS_DARK => 10,
24350            TiletypeMaterial::GRASS_DRY => 11,
24351            TiletypeMaterial::GRASS_DEAD => 12,
24352            TiletypeMaterial::PLANT => 13,
24353            TiletypeMaterial::HFS => 14,
24354            TiletypeMaterial::CAMPFIRE => 15,
24355            TiletypeMaterial::FIRE => 16,
24356            TiletypeMaterial::ASHES => 17,
24357            TiletypeMaterial::MAGMA => 18,
24358            TiletypeMaterial::DRIFTWOOD => 19,
24359            TiletypeMaterial::POOL => 20,
24360            TiletypeMaterial::BROOK => 21,
24361            TiletypeMaterial::RIVER => 22,
24362            TiletypeMaterial::ROOT => 23,
24363            TiletypeMaterial::TREE_MATERIAL => 24,
24364            TiletypeMaterial::MUSHROOM => 25,
24365            TiletypeMaterial::UNDERWORLD_GATE => 26,
24366        };
24367        Self::enum_descriptor().value_by_index(index)
24368    }
24369}
24370
24371// Note, `Default` is implemented although default value is not 0
24372impl ::std::default::Default for TiletypeMaterial {
24373    fn default() -> Self {
24374        TiletypeMaterial::NO_MATERIAL
24375    }
24376}
24377
24378impl TiletypeMaterial {
24379    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24380        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<TiletypeMaterial>("TiletypeMaterial")
24381    }
24382}
24383
24384#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24385// @@protoc_insertion_point(enum:RemoteFortressReader.TiletypeVariant)
24386pub enum TiletypeVariant {
24387    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeVariant.NO_VARIANT)
24388    NO_VARIANT = -1,
24389    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeVariant.VAR_1)
24390    VAR_1 = 0,
24391    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeVariant.VAR_2)
24392    VAR_2 = 1,
24393    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeVariant.VAR_3)
24394    VAR_3 = 2,
24395    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeVariant.VAR_4)
24396    VAR_4 = 3,
24397}
24398
24399impl ::protobuf::Enum for TiletypeVariant {
24400    const NAME: &'static str = "TiletypeVariant";
24401
24402    fn value(&self) -> i32 {
24403        *self as i32
24404    }
24405
24406    fn from_i32(value: i32) -> ::std::option::Option<TiletypeVariant> {
24407        match value {
24408            -1 => ::std::option::Option::Some(TiletypeVariant::NO_VARIANT),
24409            0 => ::std::option::Option::Some(TiletypeVariant::VAR_1),
24410            1 => ::std::option::Option::Some(TiletypeVariant::VAR_2),
24411            2 => ::std::option::Option::Some(TiletypeVariant::VAR_3),
24412            3 => ::std::option::Option::Some(TiletypeVariant::VAR_4),
24413            _ => ::std::option::Option::None
24414        }
24415    }
24416
24417    fn from_str(str: &str) -> ::std::option::Option<TiletypeVariant> {
24418        match str {
24419            "NO_VARIANT" => ::std::option::Option::Some(TiletypeVariant::NO_VARIANT),
24420            "VAR_1" => ::std::option::Option::Some(TiletypeVariant::VAR_1),
24421            "VAR_2" => ::std::option::Option::Some(TiletypeVariant::VAR_2),
24422            "VAR_3" => ::std::option::Option::Some(TiletypeVariant::VAR_3),
24423            "VAR_4" => ::std::option::Option::Some(TiletypeVariant::VAR_4),
24424            _ => ::std::option::Option::None
24425        }
24426    }
24427
24428    const VALUES: &'static [TiletypeVariant] = &[
24429        TiletypeVariant::NO_VARIANT,
24430        TiletypeVariant::VAR_1,
24431        TiletypeVariant::VAR_2,
24432        TiletypeVariant::VAR_3,
24433        TiletypeVariant::VAR_4,
24434    ];
24435}
24436
24437impl ::protobuf::EnumFull for TiletypeVariant {
24438    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24439        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24440        descriptor.get(|| file_descriptor().enum_by_package_relative_name("TiletypeVariant").unwrap()).clone()
24441    }
24442
24443    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24444        let index = match self {
24445            TiletypeVariant::NO_VARIANT => 0,
24446            TiletypeVariant::VAR_1 => 1,
24447            TiletypeVariant::VAR_2 => 2,
24448            TiletypeVariant::VAR_3 => 3,
24449            TiletypeVariant::VAR_4 => 4,
24450        };
24451        Self::enum_descriptor().value_by_index(index)
24452    }
24453}
24454
24455// Note, `Default` is implemented although default value is not 0
24456impl ::std::default::Default for TiletypeVariant {
24457    fn default() -> Self {
24458        TiletypeVariant::NO_VARIANT
24459    }
24460}
24461
24462impl TiletypeVariant {
24463    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24464        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<TiletypeVariant>("TiletypeVariant")
24465    }
24466}
24467
24468#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24469// @@protoc_insertion_point(enum:RemoteFortressReader.WorldPoles)
24470pub enum WorldPoles {
24471    // @@protoc_insertion_point(enum_value:RemoteFortressReader.WorldPoles.NO_POLES)
24472    NO_POLES = 0,
24473    // @@protoc_insertion_point(enum_value:RemoteFortressReader.WorldPoles.NORTH_POLE)
24474    NORTH_POLE = 1,
24475    // @@protoc_insertion_point(enum_value:RemoteFortressReader.WorldPoles.SOUTH_POLE)
24476    SOUTH_POLE = 2,
24477    // @@protoc_insertion_point(enum_value:RemoteFortressReader.WorldPoles.BOTH_POLES)
24478    BOTH_POLES = 3,
24479}
24480
24481impl ::protobuf::Enum for WorldPoles {
24482    const NAME: &'static str = "WorldPoles";
24483
24484    fn value(&self) -> i32 {
24485        *self as i32
24486    }
24487
24488    fn from_i32(value: i32) -> ::std::option::Option<WorldPoles> {
24489        match value {
24490            0 => ::std::option::Option::Some(WorldPoles::NO_POLES),
24491            1 => ::std::option::Option::Some(WorldPoles::NORTH_POLE),
24492            2 => ::std::option::Option::Some(WorldPoles::SOUTH_POLE),
24493            3 => ::std::option::Option::Some(WorldPoles::BOTH_POLES),
24494            _ => ::std::option::Option::None
24495        }
24496    }
24497
24498    fn from_str(str: &str) -> ::std::option::Option<WorldPoles> {
24499        match str {
24500            "NO_POLES" => ::std::option::Option::Some(WorldPoles::NO_POLES),
24501            "NORTH_POLE" => ::std::option::Option::Some(WorldPoles::NORTH_POLE),
24502            "SOUTH_POLE" => ::std::option::Option::Some(WorldPoles::SOUTH_POLE),
24503            "BOTH_POLES" => ::std::option::Option::Some(WorldPoles::BOTH_POLES),
24504            _ => ::std::option::Option::None
24505        }
24506    }
24507
24508    const VALUES: &'static [WorldPoles] = &[
24509        WorldPoles::NO_POLES,
24510        WorldPoles::NORTH_POLE,
24511        WorldPoles::SOUTH_POLE,
24512        WorldPoles::BOTH_POLES,
24513    ];
24514}
24515
24516impl ::protobuf::EnumFull for WorldPoles {
24517    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24518        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24519        descriptor.get(|| file_descriptor().enum_by_package_relative_name("WorldPoles").unwrap()).clone()
24520    }
24521
24522    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24523        let index = *self as usize;
24524        Self::enum_descriptor().value_by_index(index)
24525    }
24526}
24527
24528impl ::std::default::Default for WorldPoles {
24529    fn default() -> Self {
24530        WorldPoles::NO_POLES
24531    }
24532}
24533
24534impl WorldPoles {
24535    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24536        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<WorldPoles>("WorldPoles")
24537    }
24538}
24539
24540#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24541// @@protoc_insertion_point(enum:RemoteFortressReader.BuildingDirection)
24542pub enum BuildingDirection {
24543    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.NORTH)
24544    NORTH = 0,
24545    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.EAST)
24546    EAST = 1,
24547    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.SOUTH)
24548    SOUTH = 2,
24549    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.WEST)
24550    WEST = 3,
24551    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.NONE)
24552    NONE = 4,
24553}
24554
24555impl ::protobuf::Enum for BuildingDirection {
24556    const NAME: &'static str = "BuildingDirection";
24557
24558    fn value(&self) -> i32 {
24559        *self as i32
24560    }
24561
24562    fn from_i32(value: i32) -> ::std::option::Option<BuildingDirection> {
24563        match value {
24564            0 => ::std::option::Option::Some(BuildingDirection::NORTH),
24565            1 => ::std::option::Option::Some(BuildingDirection::EAST),
24566            2 => ::std::option::Option::Some(BuildingDirection::SOUTH),
24567            3 => ::std::option::Option::Some(BuildingDirection::WEST),
24568            4 => ::std::option::Option::Some(BuildingDirection::NONE),
24569            _ => ::std::option::Option::None
24570        }
24571    }
24572
24573    fn from_str(str: &str) -> ::std::option::Option<BuildingDirection> {
24574        match str {
24575            "NORTH" => ::std::option::Option::Some(BuildingDirection::NORTH),
24576            "EAST" => ::std::option::Option::Some(BuildingDirection::EAST),
24577            "SOUTH" => ::std::option::Option::Some(BuildingDirection::SOUTH),
24578            "WEST" => ::std::option::Option::Some(BuildingDirection::WEST),
24579            "NONE" => ::std::option::Option::Some(BuildingDirection::NONE),
24580            _ => ::std::option::Option::None
24581        }
24582    }
24583
24584    const VALUES: &'static [BuildingDirection] = &[
24585        BuildingDirection::NORTH,
24586        BuildingDirection::EAST,
24587        BuildingDirection::SOUTH,
24588        BuildingDirection::WEST,
24589        BuildingDirection::NONE,
24590    ];
24591}
24592
24593impl ::protobuf::EnumFull for BuildingDirection {
24594    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24595        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24596        descriptor.get(|| file_descriptor().enum_by_package_relative_name("BuildingDirection").unwrap()).clone()
24597    }
24598
24599    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24600        let index = *self as usize;
24601        Self::enum_descriptor().value_by_index(index)
24602    }
24603}
24604
24605impl ::std::default::Default for BuildingDirection {
24606    fn default() -> Self {
24607        BuildingDirection::NORTH
24608    }
24609}
24610
24611impl BuildingDirection {
24612    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24613        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<BuildingDirection>("BuildingDirection")
24614    }
24615}
24616
24617#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24618// @@protoc_insertion_point(enum:RemoteFortressReader.TileDigDesignation)
24619pub enum TileDigDesignation {
24620    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.NO_DIG)
24621    NO_DIG = 0,
24622    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.DEFAULT_DIG)
24623    DEFAULT_DIG = 1,
24624    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.UP_DOWN_STAIR_DIG)
24625    UP_DOWN_STAIR_DIG = 2,
24626    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.CHANNEL_DIG)
24627    CHANNEL_DIG = 3,
24628    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.RAMP_DIG)
24629    RAMP_DIG = 4,
24630    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.DOWN_STAIR_DIG)
24631    DOWN_STAIR_DIG = 5,
24632    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.UP_STAIR_DIG)
24633    UP_STAIR_DIG = 6,
24634}
24635
24636impl ::protobuf::Enum for TileDigDesignation {
24637    const NAME: &'static str = "TileDigDesignation";
24638
24639    fn value(&self) -> i32 {
24640        *self as i32
24641    }
24642
24643    fn from_i32(value: i32) -> ::std::option::Option<TileDigDesignation> {
24644        match value {
24645            0 => ::std::option::Option::Some(TileDigDesignation::NO_DIG),
24646            1 => ::std::option::Option::Some(TileDigDesignation::DEFAULT_DIG),
24647            2 => ::std::option::Option::Some(TileDigDesignation::UP_DOWN_STAIR_DIG),
24648            3 => ::std::option::Option::Some(TileDigDesignation::CHANNEL_DIG),
24649            4 => ::std::option::Option::Some(TileDigDesignation::RAMP_DIG),
24650            5 => ::std::option::Option::Some(TileDigDesignation::DOWN_STAIR_DIG),
24651            6 => ::std::option::Option::Some(TileDigDesignation::UP_STAIR_DIG),
24652            _ => ::std::option::Option::None
24653        }
24654    }
24655
24656    fn from_str(str: &str) -> ::std::option::Option<TileDigDesignation> {
24657        match str {
24658            "NO_DIG" => ::std::option::Option::Some(TileDigDesignation::NO_DIG),
24659            "DEFAULT_DIG" => ::std::option::Option::Some(TileDigDesignation::DEFAULT_DIG),
24660            "UP_DOWN_STAIR_DIG" => ::std::option::Option::Some(TileDigDesignation::UP_DOWN_STAIR_DIG),
24661            "CHANNEL_DIG" => ::std::option::Option::Some(TileDigDesignation::CHANNEL_DIG),
24662            "RAMP_DIG" => ::std::option::Option::Some(TileDigDesignation::RAMP_DIG),
24663            "DOWN_STAIR_DIG" => ::std::option::Option::Some(TileDigDesignation::DOWN_STAIR_DIG),
24664            "UP_STAIR_DIG" => ::std::option::Option::Some(TileDigDesignation::UP_STAIR_DIG),
24665            _ => ::std::option::Option::None
24666        }
24667    }
24668
24669    const VALUES: &'static [TileDigDesignation] = &[
24670        TileDigDesignation::NO_DIG,
24671        TileDigDesignation::DEFAULT_DIG,
24672        TileDigDesignation::UP_DOWN_STAIR_DIG,
24673        TileDigDesignation::CHANNEL_DIG,
24674        TileDigDesignation::RAMP_DIG,
24675        TileDigDesignation::DOWN_STAIR_DIG,
24676        TileDigDesignation::UP_STAIR_DIG,
24677    ];
24678}
24679
24680impl ::protobuf::EnumFull for TileDigDesignation {
24681    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24682        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24683        descriptor.get(|| file_descriptor().enum_by_package_relative_name("TileDigDesignation").unwrap()).clone()
24684    }
24685
24686    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24687        let index = *self as usize;
24688        Self::enum_descriptor().value_by_index(index)
24689    }
24690}
24691
24692impl ::std::default::Default for TileDigDesignation {
24693    fn default() -> Self {
24694        TileDigDesignation::NO_DIG
24695    }
24696}
24697
24698impl TileDigDesignation {
24699    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24700        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<TileDigDesignation>("TileDigDesignation")
24701    }
24702}
24703
24704#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24705// @@protoc_insertion_point(enum:RemoteFortressReader.HairStyle)
24706pub enum HairStyle {
24707    // @@protoc_insertion_point(enum_value:RemoteFortressReader.HairStyle.UNKEMPT)
24708    UNKEMPT = -1,
24709    // @@protoc_insertion_point(enum_value:RemoteFortressReader.HairStyle.NEATLY_COMBED)
24710    NEATLY_COMBED = 0,
24711    // @@protoc_insertion_point(enum_value:RemoteFortressReader.HairStyle.BRAIDED)
24712    BRAIDED = 1,
24713    // @@protoc_insertion_point(enum_value:RemoteFortressReader.HairStyle.DOUBLE_BRAID)
24714    DOUBLE_BRAID = 2,
24715    // @@protoc_insertion_point(enum_value:RemoteFortressReader.HairStyle.PONY_TAILS)
24716    PONY_TAILS = 3,
24717    // @@protoc_insertion_point(enum_value:RemoteFortressReader.HairStyle.CLEAN_SHAVEN)
24718    CLEAN_SHAVEN = 4,
24719}
24720
24721impl ::protobuf::Enum for HairStyle {
24722    const NAME: &'static str = "HairStyle";
24723
24724    fn value(&self) -> i32 {
24725        *self as i32
24726    }
24727
24728    fn from_i32(value: i32) -> ::std::option::Option<HairStyle> {
24729        match value {
24730            -1 => ::std::option::Option::Some(HairStyle::UNKEMPT),
24731            0 => ::std::option::Option::Some(HairStyle::NEATLY_COMBED),
24732            1 => ::std::option::Option::Some(HairStyle::BRAIDED),
24733            2 => ::std::option::Option::Some(HairStyle::DOUBLE_BRAID),
24734            3 => ::std::option::Option::Some(HairStyle::PONY_TAILS),
24735            4 => ::std::option::Option::Some(HairStyle::CLEAN_SHAVEN),
24736            _ => ::std::option::Option::None
24737        }
24738    }
24739
24740    fn from_str(str: &str) -> ::std::option::Option<HairStyle> {
24741        match str {
24742            "UNKEMPT" => ::std::option::Option::Some(HairStyle::UNKEMPT),
24743            "NEATLY_COMBED" => ::std::option::Option::Some(HairStyle::NEATLY_COMBED),
24744            "BRAIDED" => ::std::option::Option::Some(HairStyle::BRAIDED),
24745            "DOUBLE_BRAID" => ::std::option::Option::Some(HairStyle::DOUBLE_BRAID),
24746            "PONY_TAILS" => ::std::option::Option::Some(HairStyle::PONY_TAILS),
24747            "CLEAN_SHAVEN" => ::std::option::Option::Some(HairStyle::CLEAN_SHAVEN),
24748            _ => ::std::option::Option::None
24749        }
24750    }
24751
24752    const VALUES: &'static [HairStyle] = &[
24753        HairStyle::UNKEMPT,
24754        HairStyle::NEATLY_COMBED,
24755        HairStyle::BRAIDED,
24756        HairStyle::DOUBLE_BRAID,
24757        HairStyle::PONY_TAILS,
24758        HairStyle::CLEAN_SHAVEN,
24759    ];
24760}
24761
24762impl ::protobuf::EnumFull for HairStyle {
24763    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24764        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24765        descriptor.get(|| file_descriptor().enum_by_package_relative_name("HairStyle").unwrap()).clone()
24766    }
24767
24768    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24769        let index = match self {
24770            HairStyle::UNKEMPT => 0,
24771            HairStyle::NEATLY_COMBED => 1,
24772            HairStyle::BRAIDED => 2,
24773            HairStyle::DOUBLE_BRAID => 3,
24774            HairStyle::PONY_TAILS => 4,
24775            HairStyle::CLEAN_SHAVEN => 5,
24776        };
24777        Self::enum_descriptor().value_by_index(index)
24778    }
24779}
24780
24781// Note, `Default` is implemented although default value is not 0
24782impl ::std::default::Default for HairStyle {
24783    fn default() -> Self {
24784        HairStyle::UNKEMPT
24785    }
24786}
24787
24788impl HairStyle {
24789    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24790        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<HairStyle>("HairStyle")
24791    }
24792}
24793
24794#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24795// @@protoc_insertion_point(enum:RemoteFortressReader.InventoryMode)
24796pub enum InventoryMode {
24797    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Hauled)
24798    Hauled = 0,
24799    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Weapon)
24800    Weapon = 1,
24801    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Worn)
24802    Worn = 2,
24803    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Piercing)
24804    Piercing = 3,
24805    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Flask)
24806    Flask = 4,
24807    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.WrappedAround)
24808    WrappedAround = 5,
24809    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.StuckIn)
24810    StuckIn = 6,
24811    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.InMouth)
24812    InMouth = 7,
24813    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Pet)
24814    Pet = 8,
24815    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.SewnInto)
24816    SewnInto = 9,
24817    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Strapped)
24818    Strapped = 10,
24819}
24820
24821impl ::protobuf::Enum for InventoryMode {
24822    const NAME: &'static str = "InventoryMode";
24823
24824    fn value(&self) -> i32 {
24825        *self as i32
24826    }
24827
24828    fn from_i32(value: i32) -> ::std::option::Option<InventoryMode> {
24829        match value {
24830            0 => ::std::option::Option::Some(InventoryMode::Hauled),
24831            1 => ::std::option::Option::Some(InventoryMode::Weapon),
24832            2 => ::std::option::Option::Some(InventoryMode::Worn),
24833            3 => ::std::option::Option::Some(InventoryMode::Piercing),
24834            4 => ::std::option::Option::Some(InventoryMode::Flask),
24835            5 => ::std::option::Option::Some(InventoryMode::WrappedAround),
24836            6 => ::std::option::Option::Some(InventoryMode::StuckIn),
24837            7 => ::std::option::Option::Some(InventoryMode::InMouth),
24838            8 => ::std::option::Option::Some(InventoryMode::Pet),
24839            9 => ::std::option::Option::Some(InventoryMode::SewnInto),
24840            10 => ::std::option::Option::Some(InventoryMode::Strapped),
24841            _ => ::std::option::Option::None
24842        }
24843    }
24844
24845    fn from_str(str: &str) -> ::std::option::Option<InventoryMode> {
24846        match str {
24847            "Hauled" => ::std::option::Option::Some(InventoryMode::Hauled),
24848            "Weapon" => ::std::option::Option::Some(InventoryMode::Weapon),
24849            "Worn" => ::std::option::Option::Some(InventoryMode::Worn),
24850            "Piercing" => ::std::option::Option::Some(InventoryMode::Piercing),
24851            "Flask" => ::std::option::Option::Some(InventoryMode::Flask),
24852            "WrappedAround" => ::std::option::Option::Some(InventoryMode::WrappedAround),
24853            "StuckIn" => ::std::option::Option::Some(InventoryMode::StuckIn),
24854            "InMouth" => ::std::option::Option::Some(InventoryMode::InMouth),
24855            "Pet" => ::std::option::Option::Some(InventoryMode::Pet),
24856            "SewnInto" => ::std::option::Option::Some(InventoryMode::SewnInto),
24857            "Strapped" => ::std::option::Option::Some(InventoryMode::Strapped),
24858            _ => ::std::option::Option::None
24859        }
24860    }
24861
24862    const VALUES: &'static [InventoryMode] = &[
24863        InventoryMode::Hauled,
24864        InventoryMode::Weapon,
24865        InventoryMode::Worn,
24866        InventoryMode::Piercing,
24867        InventoryMode::Flask,
24868        InventoryMode::WrappedAround,
24869        InventoryMode::StuckIn,
24870        InventoryMode::InMouth,
24871        InventoryMode::Pet,
24872        InventoryMode::SewnInto,
24873        InventoryMode::Strapped,
24874    ];
24875}
24876
24877impl ::protobuf::EnumFull for InventoryMode {
24878    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24879        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24880        descriptor.get(|| file_descriptor().enum_by_package_relative_name("InventoryMode").unwrap()).clone()
24881    }
24882
24883    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24884        let index = *self as usize;
24885        Self::enum_descriptor().value_by_index(index)
24886    }
24887}
24888
24889impl ::std::default::Default for InventoryMode {
24890    fn default() -> Self {
24891        InventoryMode::Hauled
24892    }
24893}
24894
24895impl InventoryMode {
24896    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24897        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<InventoryMode>("InventoryMode")
24898    }
24899}
24900
24901#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24902// @@protoc_insertion_point(enum:RemoteFortressReader.ArmorLayer)
24903pub enum ArmorLayer {
24904    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArmorLayer.LAYER_UNDER)
24905    LAYER_UNDER = 0,
24906    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArmorLayer.LAYER_OVER)
24907    LAYER_OVER = 1,
24908    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArmorLayer.LAYER_ARMOR)
24909    LAYER_ARMOR = 2,
24910    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArmorLayer.LAYER_COVER)
24911    LAYER_COVER = 3,
24912}
24913
24914impl ::protobuf::Enum for ArmorLayer {
24915    const NAME: &'static str = "ArmorLayer";
24916
24917    fn value(&self) -> i32 {
24918        *self as i32
24919    }
24920
24921    fn from_i32(value: i32) -> ::std::option::Option<ArmorLayer> {
24922        match value {
24923            0 => ::std::option::Option::Some(ArmorLayer::LAYER_UNDER),
24924            1 => ::std::option::Option::Some(ArmorLayer::LAYER_OVER),
24925            2 => ::std::option::Option::Some(ArmorLayer::LAYER_ARMOR),
24926            3 => ::std::option::Option::Some(ArmorLayer::LAYER_COVER),
24927            _ => ::std::option::Option::None
24928        }
24929    }
24930
24931    fn from_str(str: &str) -> ::std::option::Option<ArmorLayer> {
24932        match str {
24933            "LAYER_UNDER" => ::std::option::Option::Some(ArmorLayer::LAYER_UNDER),
24934            "LAYER_OVER" => ::std::option::Option::Some(ArmorLayer::LAYER_OVER),
24935            "LAYER_ARMOR" => ::std::option::Option::Some(ArmorLayer::LAYER_ARMOR),
24936            "LAYER_COVER" => ::std::option::Option::Some(ArmorLayer::LAYER_COVER),
24937            _ => ::std::option::Option::None
24938        }
24939    }
24940
24941    const VALUES: &'static [ArmorLayer] = &[
24942        ArmorLayer::LAYER_UNDER,
24943        ArmorLayer::LAYER_OVER,
24944        ArmorLayer::LAYER_ARMOR,
24945        ArmorLayer::LAYER_COVER,
24946    ];
24947}
24948
24949impl ::protobuf::EnumFull for ArmorLayer {
24950    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24951        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24952        descriptor.get(|| file_descriptor().enum_by_package_relative_name("ArmorLayer").unwrap()).clone()
24953    }
24954
24955    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24956        let index = *self as usize;
24957        Self::enum_descriptor().value_by_index(index)
24958    }
24959}
24960
24961impl ::std::default::Default for ArmorLayer {
24962    fn default() -> Self {
24963        ArmorLayer::LAYER_UNDER
24964    }
24965}
24966
24967impl ArmorLayer {
24968    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24969        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<ArmorLayer>("ArmorLayer")
24970    }
24971}
24972
24973#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24974// @@protoc_insertion_point(enum:RemoteFortressReader.MatterState)
24975pub enum MatterState {
24976    // @@protoc_insertion_point(enum_value:RemoteFortressReader.MatterState.Solid)
24977    Solid = 0,
24978    // @@protoc_insertion_point(enum_value:RemoteFortressReader.MatterState.Liquid)
24979    Liquid = 1,
24980    // @@protoc_insertion_point(enum_value:RemoteFortressReader.MatterState.Gas)
24981    Gas = 2,
24982    // @@protoc_insertion_point(enum_value:RemoteFortressReader.MatterState.Powder)
24983    Powder = 3,
24984    // @@protoc_insertion_point(enum_value:RemoteFortressReader.MatterState.Paste)
24985    Paste = 4,
24986    // @@protoc_insertion_point(enum_value:RemoteFortressReader.MatterState.Pressed)
24987    Pressed = 5,
24988}
24989
24990impl ::protobuf::Enum for MatterState {
24991    const NAME: &'static str = "MatterState";
24992
24993    fn value(&self) -> i32 {
24994        *self as i32
24995    }
24996
24997    fn from_i32(value: i32) -> ::std::option::Option<MatterState> {
24998        match value {
24999            0 => ::std::option::Option::Some(MatterState::Solid),
25000            1 => ::std::option::Option::Some(MatterState::Liquid),
25001            2 => ::std::option::Option::Some(MatterState::Gas),
25002            3 => ::std::option::Option::Some(MatterState::Powder),
25003            4 => ::std::option::Option::Some(MatterState::Paste),
25004            5 => ::std::option::Option::Some(MatterState::Pressed),
25005            _ => ::std::option::Option::None
25006        }
25007    }
25008
25009    fn from_str(str: &str) -> ::std::option::Option<MatterState> {
25010        match str {
25011            "Solid" => ::std::option::Option::Some(MatterState::Solid),
25012            "Liquid" => ::std::option::Option::Some(MatterState::Liquid),
25013            "Gas" => ::std::option::Option::Some(MatterState::Gas),
25014            "Powder" => ::std::option::Option::Some(MatterState::Powder),
25015            "Paste" => ::std::option::Option::Some(MatterState::Paste),
25016            "Pressed" => ::std::option::Option::Some(MatterState::Pressed),
25017            _ => ::std::option::Option::None
25018        }
25019    }
25020
25021    const VALUES: &'static [MatterState] = &[
25022        MatterState::Solid,
25023        MatterState::Liquid,
25024        MatterState::Gas,
25025        MatterState::Powder,
25026        MatterState::Paste,
25027        MatterState::Pressed,
25028    ];
25029}
25030
25031impl ::protobuf::EnumFull for MatterState {
25032    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25033        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25034        descriptor.get(|| file_descriptor().enum_by_package_relative_name("MatterState").unwrap()).clone()
25035    }
25036
25037    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25038        let index = *self as usize;
25039        Self::enum_descriptor().value_by_index(index)
25040    }
25041}
25042
25043impl ::std::default::Default for MatterState {
25044    fn default() -> Self {
25045        MatterState::Solid
25046    }
25047}
25048
25049impl MatterState {
25050    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25051        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<MatterState>("MatterState")
25052    }
25053}
25054
25055#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25056// @@protoc_insertion_point(enum:RemoteFortressReader.FrontType)
25057pub enum FrontType {
25058    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FrontType.FRONT_NONE)
25059    FRONT_NONE = 0,
25060    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FrontType.FRONT_WARM)
25061    FRONT_WARM = 1,
25062    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FrontType.FRONT_COLD)
25063    FRONT_COLD = 2,
25064    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FrontType.FRONT_OCCLUDED)
25065    FRONT_OCCLUDED = 3,
25066}
25067
25068impl ::protobuf::Enum for FrontType {
25069    const NAME: &'static str = "FrontType";
25070
25071    fn value(&self) -> i32 {
25072        *self as i32
25073    }
25074
25075    fn from_i32(value: i32) -> ::std::option::Option<FrontType> {
25076        match value {
25077            0 => ::std::option::Option::Some(FrontType::FRONT_NONE),
25078            1 => ::std::option::Option::Some(FrontType::FRONT_WARM),
25079            2 => ::std::option::Option::Some(FrontType::FRONT_COLD),
25080            3 => ::std::option::Option::Some(FrontType::FRONT_OCCLUDED),
25081            _ => ::std::option::Option::None
25082        }
25083    }
25084
25085    fn from_str(str: &str) -> ::std::option::Option<FrontType> {
25086        match str {
25087            "FRONT_NONE" => ::std::option::Option::Some(FrontType::FRONT_NONE),
25088            "FRONT_WARM" => ::std::option::Option::Some(FrontType::FRONT_WARM),
25089            "FRONT_COLD" => ::std::option::Option::Some(FrontType::FRONT_COLD),
25090            "FRONT_OCCLUDED" => ::std::option::Option::Some(FrontType::FRONT_OCCLUDED),
25091            _ => ::std::option::Option::None
25092        }
25093    }
25094
25095    const VALUES: &'static [FrontType] = &[
25096        FrontType::FRONT_NONE,
25097        FrontType::FRONT_WARM,
25098        FrontType::FRONT_COLD,
25099        FrontType::FRONT_OCCLUDED,
25100    ];
25101}
25102
25103impl ::protobuf::EnumFull for FrontType {
25104    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25105        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25106        descriptor.get(|| file_descriptor().enum_by_package_relative_name("FrontType").unwrap()).clone()
25107    }
25108
25109    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25110        let index = *self as usize;
25111        Self::enum_descriptor().value_by_index(index)
25112    }
25113}
25114
25115impl ::std::default::Default for FrontType {
25116    fn default() -> Self {
25117        FrontType::FRONT_NONE
25118    }
25119}
25120
25121impl FrontType {
25122    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25123        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<FrontType>("FrontType")
25124    }
25125}
25126
25127#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25128// @@protoc_insertion_point(enum:RemoteFortressReader.CumulusType)
25129pub enum CumulusType {
25130    // @@protoc_insertion_point(enum_value:RemoteFortressReader.CumulusType.CUMULUS_NONE)
25131    CUMULUS_NONE = 0,
25132    // @@protoc_insertion_point(enum_value:RemoteFortressReader.CumulusType.CUMULUS_MEDIUM)
25133    CUMULUS_MEDIUM = 1,
25134    // @@protoc_insertion_point(enum_value:RemoteFortressReader.CumulusType.CUMULUS_MULTI)
25135    CUMULUS_MULTI = 2,
25136    // @@protoc_insertion_point(enum_value:RemoteFortressReader.CumulusType.CUMULUS_NIMBUS)
25137    CUMULUS_NIMBUS = 3,
25138}
25139
25140impl ::protobuf::Enum for CumulusType {
25141    const NAME: &'static str = "CumulusType";
25142
25143    fn value(&self) -> i32 {
25144        *self as i32
25145    }
25146
25147    fn from_i32(value: i32) -> ::std::option::Option<CumulusType> {
25148        match value {
25149            0 => ::std::option::Option::Some(CumulusType::CUMULUS_NONE),
25150            1 => ::std::option::Option::Some(CumulusType::CUMULUS_MEDIUM),
25151            2 => ::std::option::Option::Some(CumulusType::CUMULUS_MULTI),
25152            3 => ::std::option::Option::Some(CumulusType::CUMULUS_NIMBUS),
25153            _ => ::std::option::Option::None
25154        }
25155    }
25156
25157    fn from_str(str: &str) -> ::std::option::Option<CumulusType> {
25158        match str {
25159            "CUMULUS_NONE" => ::std::option::Option::Some(CumulusType::CUMULUS_NONE),
25160            "CUMULUS_MEDIUM" => ::std::option::Option::Some(CumulusType::CUMULUS_MEDIUM),
25161            "CUMULUS_MULTI" => ::std::option::Option::Some(CumulusType::CUMULUS_MULTI),
25162            "CUMULUS_NIMBUS" => ::std::option::Option::Some(CumulusType::CUMULUS_NIMBUS),
25163            _ => ::std::option::Option::None
25164        }
25165    }
25166
25167    const VALUES: &'static [CumulusType] = &[
25168        CumulusType::CUMULUS_NONE,
25169        CumulusType::CUMULUS_MEDIUM,
25170        CumulusType::CUMULUS_MULTI,
25171        CumulusType::CUMULUS_NIMBUS,
25172    ];
25173}
25174
25175impl ::protobuf::EnumFull for CumulusType {
25176    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25177        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25178        descriptor.get(|| file_descriptor().enum_by_package_relative_name("CumulusType").unwrap()).clone()
25179    }
25180
25181    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25182        let index = *self as usize;
25183        Self::enum_descriptor().value_by_index(index)
25184    }
25185}
25186
25187impl ::std::default::Default for CumulusType {
25188    fn default() -> Self {
25189        CumulusType::CUMULUS_NONE
25190    }
25191}
25192
25193impl CumulusType {
25194    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25195        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<CumulusType>("CumulusType")
25196    }
25197}
25198
25199#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25200// @@protoc_insertion_point(enum:RemoteFortressReader.StratusType)
25201pub enum StratusType {
25202    // @@protoc_insertion_point(enum_value:RemoteFortressReader.StratusType.STRATUS_NONE)
25203    STRATUS_NONE = 0,
25204    // @@protoc_insertion_point(enum_value:RemoteFortressReader.StratusType.STRATUS_ALTO)
25205    STRATUS_ALTO = 1,
25206    // @@protoc_insertion_point(enum_value:RemoteFortressReader.StratusType.STRATUS_PROPER)
25207    STRATUS_PROPER = 2,
25208    // @@protoc_insertion_point(enum_value:RemoteFortressReader.StratusType.STRATUS_NIMBUS)
25209    STRATUS_NIMBUS = 3,
25210}
25211
25212impl ::protobuf::Enum for StratusType {
25213    const NAME: &'static str = "StratusType";
25214
25215    fn value(&self) -> i32 {
25216        *self as i32
25217    }
25218
25219    fn from_i32(value: i32) -> ::std::option::Option<StratusType> {
25220        match value {
25221            0 => ::std::option::Option::Some(StratusType::STRATUS_NONE),
25222            1 => ::std::option::Option::Some(StratusType::STRATUS_ALTO),
25223            2 => ::std::option::Option::Some(StratusType::STRATUS_PROPER),
25224            3 => ::std::option::Option::Some(StratusType::STRATUS_NIMBUS),
25225            _ => ::std::option::Option::None
25226        }
25227    }
25228
25229    fn from_str(str: &str) -> ::std::option::Option<StratusType> {
25230        match str {
25231            "STRATUS_NONE" => ::std::option::Option::Some(StratusType::STRATUS_NONE),
25232            "STRATUS_ALTO" => ::std::option::Option::Some(StratusType::STRATUS_ALTO),
25233            "STRATUS_PROPER" => ::std::option::Option::Some(StratusType::STRATUS_PROPER),
25234            "STRATUS_NIMBUS" => ::std::option::Option::Some(StratusType::STRATUS_NIMBUS),
25235            _ => ::std::option::Option::None
25236        }
25237    }
25238
25239    const VALUES: &'static [StratusType] = &[
25240        StratusType::STRATUS_NONE,
25241        StratusType::STRATUS_ALTO,
25242        StratusType::STRATUS_PROPER,
25243        StratusType::STRATUS_NIMBUS,
25244    ];
25245}
25246
25247impl ::protobuf::EnumFull for StratusType {
25248    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25249        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25250        descriptor.get(|| file_descriptor().enum_by_package_relative_name("StratusType").unwrap()).clone()
25251    }
25252
25253    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25254        let index = *self as usize;
25255        Self::enum_descriptor().value_by_index(index)
25256    }
25257}
25258
25259impl ::std::default::Default for StratusType {
25260    fn default() -> Self {
25261        StratusType::STRATUS_NONE
25262    }
25263}
25264
25265impl StratusType {
25266    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25267        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<StratusType>("StratusType")
25268    }
25269}
25270
25271#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25272// @@protoc_insertion_point(enum:RemoteFortressReader.FogType)
25273pub enum FogType {
25274    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FogType.FOG_NONE)
25275    FOG_NONE = 0,
25276    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FogType.FOG_MIST)
25277    FOG_MIST = 1,
25278    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FogType.FOG_NORMAL)
25279    FOG_NORMAL = 2,
25280    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FogType.F0G_THICK)
25281    F0G_THICK = 3,
25282}
25283
25284impl ::protobuf::Enum for FogType {
25285    const NAME: &'static str = "FogType";
25286
25287    fn value(&self) -> i32 {
25288        *self as i32
25289    }
25290
25291    fn from_i32(value: i32) -> ::std::option::Option<FogType> {
25292        match value {
25293            0 => ::std::option::Option::Some(FogType::FOG_NONE),
25294            1 => ::std::option::Option::Some(FogType::FOG_MIST),
25295            2 => ::std::option::Option::Some(FogType::FOG_NORMAL),
25296            3 => ::std::option::Option::Some(FogType::F0G_THICK),
25297            _ => ::std::option::Option::None
25298        }
25299    }
25300
25301    fn from_str(str: &str) -> ::std::option::Option<FogType> {
25302        match str {
25303            "FOG_NONE" => ::std::option::Option::Some(FogType::FOG_NONE),
25304            "FOG_MIST" => ::std::option::Option::Some(FogType::FOG_MIST),
25305            "FOG_NORMAL" => ::std::option::Option::Some(FogType::FOG_NORMAL),
25306            "F0G_THICK" => ::std::option::Option::Some(FogType::F0G_THICK),
25307            _ => ::std::option::Option::None
25308        }
25309    }
25310
25311    const VALUES: &'static [FogType] = &[
25312        FogType::FOG_NONE,
25313        FogType::FOG_MIST,
25314        FogType::FOG_NORMAL,
25315        FogType::F0G_THICK,
25316    ];
25317}
25318
25319impl ::protobuf::EnumFull for FogType {
25320    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25321        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25322        descriptor.get(|| file_descriptor().enum_by_package_relative_name("FogType").unwrap()).clone()
25323    }
25324
25325    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25326        let index = *self as usize;
25327        Self::enum_descriptor().value_by_index(index)
25328    }
25329}
25330
25331impl ::std::default::Default for FogType {
25332    fn default() -> Self {
25333        FogType::FOG_NONE
25334    }
25335}
25336
25337impl FogType {
25338    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25339        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<FogType>("FogType")
25340    }
25341}
25342
25343#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25344// @@protoc_insertion_point(enum:RemoteFortressReader.PatternType)
25345pub enum PatternType {
25346    // @@protoc_insertion_point(enum_value:RemoteFortressReader.PatternType.MONOTONE)
25347    MONOTONE = 0,
25348    // @@protoc_insertion_point(enum_value:RemoteFortressReader.PatternType.STRIPES)
25349    STRIPES = 1,
25350    // @@protoc_insertion_point(enum_value:RemoteFortressReader.PatternType.IRIS_EYE)
25351    IRIS_EYE = 2,
25352    // @@protoc_insertion_point(enum_value:RemoteFortressReader.PatternType.SPOTS)
25353    SPOTS = 3,
25354    // @@protoc_insertion_point(enum_value:RemoteFortressReader.PatternType.PUPIL_EYE)
25355    PUPIL_EYE = 4,
25356    // @@protoc_insertion_point(enum_value:RemoteFortressReader.PatternType.MOTTLED)
25357    MOTTLED = 5,
25358}
25359
25360impl ::protobuf::Enum for PatternType {
25361    const NAME: &'static str = "PatternType";
25362
25363    fn value(&self) -> i32 {
25364        *self as i32
25365    }
25366
25367    fn from_i32(value: i32) -> ::std::option::Option<PatternType> {
25368        match value {
25369            0 => ::std::option::Option::Some(PatternType::MONOTONE),
25370            1 => ::std::option::Option::Some(PatternType::STRIPES),
25371            2 => ::std::option::Option::Some(PatternType::IRIS_EYE),
25372            3 => ::std::option::Option::Some(PatternType::SPOTS),
25373            4 => ::std::option::Option::Some(PatternType::PUPIL_EYE),
25374            5 => ::std::option::Option::Some(PatternType::MOTTLED),
25375            _ => ::std::option::Option::None
25376        }
25377    }
25378
25379    fn from_str(str: &str) -> ::std::option::Option<PatternType> {
25380        match str {
25381            "MONOTONE" => ::std::option::Option::Some(PatternType::MONOTONE),
25382            "STRIPES" => ::std::option::Option::Some(PatternType::STRIPES),
25383            "IRIS_EYE" => ::std::option::Option::Some(PatternType::IRIS_EYE),
25384            "SPOTS" => ::std::option::Option::Some(PatternType::SPOTS),
25385            "PUPIL_EYE" => ::std::option::Option::Some(PatternType::PUPIL_EYE),
25386            "MOTTLED" => ::std::option::Option::Some(PatternType::MOTTLED),
25387            _ => ::std::option::Option::None
25388        }
25389    }
25390
25391    const VALUES: &'static [PatternType] = &[
25392        PatternType::MONOTONE,
25393        PatternType::STRIPES,
25394        PatternType::IRIS_EYE,
25395        PatternType::SPOTS,
25396        PatternType::PUPIL_EYE,
25397        PatternType::MOTTLED,
25398    ];
25399}
25400
25401impl ::protobuf::EnumFull for PatternType {
25402    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25403        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25404        descriptor.get(|| file_descriptor().enum_by_package_relative_name("PatternType").unwrap()).clone()
25405    }
25406
25407    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25408        let index = *self as usize;
25409        Self::enum_descriptor().value_by_index(index)
25410    }
25411}
25412
25413impl ::std::default::Default for PatternType {
25414    fn default() -> Self {
25415        PatternType::MONOTONE
25416    }
25417}
25418
25419impl PatternType {
25420    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25421        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<PatternType>("PatternType")
25422    }
25423}
25424
25425#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25426// @@protoc_insertion_point(enum:RemoteFortressReader.ArtImageElementType)
25427pub enum ArtImageElementType {
25428    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageElementType.IMAGE_CREATURE)
25429    IMAGE_CREATURE = 0,
25430    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageElementType.IMAGE_PLANT)
25431    IMAGE_PLANT = 1,
25432    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageElementType.IMAGE_TREE)
25433    IMAGE_TREE = 2,
25434    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageElementType.IMAGE_SHAPE)
25435    IMAGE_SHAPE = 3,
25436    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageElementType.IMAGE_ITEM)
25437    IMAGE_ITEM = 4,
25438}
25439
25440impl ::protobuf::Enum for ArtImageElementType {
25441    const NAME: &'static str = "ArtImageElementType";
25442
25443    fn value(&self) -> i32 {
25444        *self as i32
25445    }
25446
25447    fn from_i32(value: i32) -> ::std::option::Option<ArtImageElementType> {
25448        match value {
25449            0 => ::std::option::Option::Some(ArtImageElementType::IMAGE_CREATURE),
25450            1 => ::std::option::Option::Some(ArtImageElementType::IMAGE_PLANT),
25451            2 => ::std::option::Option::Some(ArtImageElementType::IMAGE_TREE),
25452            3 => ::std::option::Option::Some(ArtImageElementType::IMAGE_SHAPE),
25453            4 => ::std::option::Option::Some(ArtImageElementType::IMAGE_ITEM),
25454            _ => ::std::option::Option::None
25455        }
25456    }
25457
25458    fn from_str(str: &str) -> ::std::option::Option<ArtImageElementType> {
25459        match str {
25460            "IMAGE_CREATURE" => ::std::option::Option::Some(ArtImageElementType::IMAGE_CREATURE),
25461            "IMAGE_PLANT" => ::std::option::Option::Some(ArtImageElementType::IMAGE_PLANT),
25462            "IMAGE_TREE" => ::std::option::Option::Some(ArtImageElementType::IMAGE_TREE),
25463            "IMAGE_SHAPE" => ::std::option::Option::Some(ArtImageElementType::IMAGE_SHAPE),
25464            "IMAGE_ITEM" => ::std::option::Option::Some(ArtImageElementType::IMAGE_ITEM),
25465            _ => ::std::option::Option::None
25466        }
25467    }
25468
25469    const VALUES: &'static [ArtImageElementType] = &[
25470        ArtImageElementType::IMAGE_CREATURE,
25471        ArtImageElementType::IMAGE_PLANT,
25472        ArtImageElementType::IMAGE_TREE,
25473        ArtImageElementType::IMAGE_SHAPE,
25474        ArtImageElementType::IMAGE_ITEM,
25475    ];
25476}
25477
25478impl ::protobuf::EnumFull for ArtImageElementType {
25479    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25480        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25481        descriptor.get(|| file_descriptor().enum_by_package_relative_name("ArtImageElementType").unwrap()).clone()
25482    }
25483
25484    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25485        let index = *self as usize;
25486        Self::enum_descriptor().value_by_index(index)
25487    }
25488}
25489
25490impl ::std::default::Default for ArtImageElementType {
25491    fn default() -> Self {
25492        ArtImageElementType::IMAGE_CREATURE
25493    }
25494}
25495
25496impl ArtImageElementType {
25497    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25498        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<ArtImageElementType>("ArtImageElementType")
25499    }
25500}
25501
25502#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25503// @@protoc_insertion_point(enum:RemoteFortressReader.ArtImagePropertyType)
25504pub enum ArtImagePropertyType {
25505    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImagePropertyType.TRANSITIVE_VERB)
25506    TRANSITIVE_VERB = 0,
25507    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImagePropertyType.INTRANSITIVE_VERB)
25508    INTRANSITIVE_VERB = 1,
25509}
25510
25511impl ::protobuf::Enum for ArtImagePropertyType {
25512    const NAME: &'static str = "ArtImagePropertyType";
25513
25514    fn value(&self) -> i32 {
25515        *self as i32
25516    }
25517
25518    fn from_i32(value: i32) -> ::std::option::Option<ArtImagePropertyType> {
25519        match value {
25520            0 => ::std::option::Option::Some(ArtImagePropertyType::TRANSITIVE_VERB),
25521            1 => ::std::option::Option::Some(ArtImagePropertyType::INTRANSITIVE_VERB),
25522            _ => ::std::option::Option::None
25523        }
25524    }
25525
25526    fn from_str(str: &str) -> ::std::option::Option<ArtImagePropertyType> {
25527        match str {
25528            "TRANSITIVE_VERB" => ::std::option::Option::Some(ArtImagePropertyType::TRANSITIVE_VERB),
25529            "INTRANSITIVE_VERB" => ::std::option::Option::Some(ArtImagePropertyType::INTRANSITIVE_VERB),
25530            _ => ::std::option::Option::None
25531        }
25532    }
25533
25534    const VALUES: &'static [ArtImagePropertyType] = &[
25535        ArtImagePropertyType::TRANSITIVE_VERB,
25536        ArtImagePropertyType::INTRANSITIVE_VERB,
25537    ];
25538}
25539
25540impl ::protobuf::EnumFull for ArtImagePropertyType {
25541    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25542        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25543        descriptor.get(|| file_descriptor().enum_by_package_relative_name("ArtImagePropertyType").unwrap()).clone()
25544    }
25545
25546    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25547        let index = *self as usize;
25548        Self::enum_descriptor().value_by_index(index)
25549    }
25550}
25551
25552impl ::std::default::Default for ArtImagePropertyType {
25553    fn default() -> Self {
25554        ArtImagePropertyType::TRANSITIVE_VERB
25555    }
25556}
25557
25558impl ArtImagePropertyType {
25559    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25560        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<ArtImagePropertyType>("ArtImagePropertyType")
25561    }
25562}
25563
25564#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25565// @@protoc_insertion_point(enum:RemoteFortressReader.ArtImageVerb)
25566pub enum ArtImageVerb {
25567    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_WITHERING)
25568    VERB_WITHERING = 0,
25569    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SURROUNDEDBY)
25570    VERB_SURROUNDEDBY = 1,
25571    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_MASSACRING)
25572    VERB_MASSACRING = 2,
25573    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_FIGHTING)
25574    VERB_FIGHTING = 3,
25575    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_LABORING)
25576    VERB_LABORING = 4,
25577    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_GREETING)
25578    VERB_GREETING = 5,
25579    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_REFUSING)
25580    VERB_REFUSING = 6,
25581    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SPEAKING)
25582    VERB_SPEAKING = 7,
25583    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_EMBRACING)
25584    VERB_EMBRACING = 8,
25585    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_STRIKINGDOWN)
25586    VERB_STRIKINGDOWN = 9,
25587    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_MENACINGPOSE)
25588    VERB_MENACINGPOSE = 10,
25589    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_TRAVELING)
25590    VERB_TRAVELING = 11,
25591    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_RAISING)
25592    VERB_RAISING = 12,
25593    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_HIDING)
25594    VERB_HIDING = 13,
25595    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_LOOKINGCONFUSED)
25596    VERB_LOOKINGCONFUSED = 14,
25597    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_LOOKINGTERRIFIED)
25598    VERB_LOOKINGTERRIFIED = 15,
25599    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_DEVOURING)
25600    VERB_DEVOURING = 16,
25601    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_ADMIRING)
25602    VERB_ADMIRING = 17,
25603    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_BURNING)
25604    VERB_BURNING = 18,
25605    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_WEEPING)
25606    VERB_WEEPING = 19,
25607    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_LOOKINGDEJECTED)
25608    VERB_LOOKINGDEJECTED = 20,
25609    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_CRINGING)
25610    VERB_CRINGING = 21,
25611    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SCREAMING)
25612    VERB_SCREAMING = 22,
25613    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SUBMISSIVEGESTURE)
25614    VERB_SUBMISSIVEGESTURE = 23,
25615    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_FETALPOSITION)
25616    VERB_FETALPOSITION = 24,
25617    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SMEAREDINTOSPIRAL)
25618    VERB_SMEAREDINTOSPIRAL = 25,
25619    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_FALLING)
25620    VERB_FALLING = 26,
25621    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_DEAD)
25622    VERB_DEAD = 27,
25623    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_LAUGHING)
25624    VERB_LAUGHING = 28,
25625    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_LOOKINGOFFENDED)
25626    VERB_LOOKINGOFFENDED = 29,
25627    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_BEINGSHOT)
25628    VERB_BEINGSHOT = 30,
25629    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_PLAINTIVEGESTURE)
25630    VERB_PLAINTIVEGESTURE = 31,
25631    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_MELTING)
25632    VERB_MELTING = 32,
25633    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SHOOTING)
25634    VERB_SHOOTING = 33,
25635    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_TORTURING)
25636    VERB_TORTURING = 34,
25637    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_COMMITTINGDEPRAVEDACT)
25638    VERB_COMMITTINGDEPRAVEDACT = 35,
25639    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_PRAYING)
25640    VERB_PRAYING = 36,
25641    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_CONTEMPLATING)
25642    VERB_CONTEMPLATING = 37,
25643    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_COOKING)
25644    VERB_COOKING = 38,
25645    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_ENGRAVING)
25646    VERB_ENGRAVING = 39,
25647    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_PROSTRATING)
25648    VERB_PROSTRATING = 40,
25649    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SUFFERING)
25650    VERB_SUFFERING = 41,
25651    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_BEINGIMPALED)
25652    VERB_BEINGIMPALED = 42,
25653    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_BEINGCONTORTED)
25654    VERB_BEINGCONTORTED = 43,
25655    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_BEINGFLAYED)
25656    VERB_BEINGFLAYED = 44,
25657    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_HANGINGFROM)
25658    VERB_HANGINGFROM = 45,
25659    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_BEINGMUTILATED)
25660    VERB_BEINGMUTILATED = 46,
25661    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_TRIUMPHANTPOSE)
25662    VERB_TRIUMPHANTPOSE = 47,
25663}
25664
25665impl ::protobuf::Enum for ArtImageVerb {
25666    const NAME: &'static str = "ArtImageVerb";
25667
25668    fn value(&self) -> i32 {
25669        *self as i32
25670    }
25671
25672    fn from_i32(value: i32) -> ::std::option::Option<ArtImageVerb> {
25673        match value {
25674            0 => ::std::option::Option::Some(ArtImageVerb::VERB_WITHERING),
25675            1 => ::std::option::Option::Some(ArtImageVerb::VERB_SURROUNDEDBY),
25676            2 => ::std::option::Option::Some(ArtImageVerb::VERB_MASSACRING),
25677            3 => ::std::option::Option::Some(ArtImageVerb::VERB_FIGHTING),
25678            4 => ::std::option::Option::Some(ArtImageVerb::VERB_LABORING),
25679            5 => ::std::option::Option::Some(ArtImageVerb::VERB_GREETING),
25680            6 => ::std::option::Option::Some(ArtImageVerb::VERB_REFUSING),
25681            7 => ::std::option::Option::Some(ArtImageVerb::VERB_SPEAKING),
25682            8 => ::std::option::Option::Some(ArtImageVerb::VERB_EMBRACING),
25683            9 => ::std::option::Option::Some(ArtImageVerb::VERB_STRIKINGDOWN),
25684            10 => ::std::option::Option::Some(ArtImageVerb::VERB_MENACINGPOSE),
25685            11 => ::std::option::Option::Some(ArtImageVerb::VERB_TRAVELING),
25686            12 => ::std::option::Option::Some(ArtImageVerb::VERB_RAISING),
25687            13 => ::std::option::Option::Some(ArtImageVerb::VERB_HIDING),
25688            14 => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGCONFUSED),
25689            15 => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGTERRIFIED),
25690            16 => ::std::option::Option::Some(ArtImageVerb::VERB_DEVOURING),
25691            17 => ::std::option::Option::Some(ArtImageVerb::VERB_ADMIRING),
25692            18 => ::std::option::Option::Some(ArtImageVerb::VERB_BURNING),
25693            19 => ::std::option::Option::Some(ArtImageVerb::VERB_WEEPING),
25694            20 => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGDEJECTED),
25695            21 => ::std::option::Option::Some(ArtImageVerb::VERB_CRINGING),
25696            22 => ::std::option::Option::Some(ArtImageVerb::VERB_SCREAMING),
25697            23 => ::std::option::Option::Some(ArtImageVerb::VERB_SUBMISSIVEGESTURE),
25698            24 => ::std::option::Option::Some(ArtImageVerb::VERB_FETALPOSITION),
25699            25 => ::std::option::Option::Some(ArtImageVerb::VERB_SMEAREDINTOSPIRAL),
25700            26 => ::std::option::Option::Some(ArtImageVerb::VERB_FALLING),
25701            27 => ::std::option::Option::Some(ArtImageVerb::VERB_DEAD),
25702            28 => ::std::option::Option::Some(ArtImageVerb::VERB_LAUGHING),
25703            29 => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGOFFENDED),
25704            30 => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGSHOT),
25705            31 => ::std::option::Option::Some(ArtImageVerb::VERB_PLAINTIVEGESTURE),
25706            32 => ::std::option::Option::Some(ArtImageVerb::VERB_MELTING),
25707            33 => ::std::option::Option::Some(ArtImageVerb::VERB_SHOOTING),
25708            34 => ::std::option::Option::Some(ArtImageVerb::VERB_TORTURING),
25709            35 => ::std::option::Option::Some(ArtImageVerb::VERB_COMMITTINGDEPRAVEDACT),
25710            36 => ::std::option::Option::Some(ArtImageVerb::VERB_PRAYING),
25711            37 => ::std::option::Option::Some(ArtImageVerb::VERB_CONTEMPLATING),
25712            38 => ::std::option::Option::Some(ArtImageVerb::VERB_COOKING),
25713            39 => ::std::option::Option::Some(ArtImageVerb::VERB_ENGRAVING),
25714            40 => ::std::option::Option::Some(ArtImageVerb::VERB_PROSTRATING),
25715            41 => ::std::option::Option::Some(ArtImageVerb::VERB_SUFFERING),
25716            42 => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGIMPALED),
25717            43 => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGCONTORTED),
25718            44 => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGFLAYED),
25719            45 => ::std::option::Option::Some(ArtImageVerb::VERB_HANGINGFROM),
25720            46 => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGMUTILATED),
25721            47 => ::std::option::Option::Some(ArtImageVerb::VERB_TRIUMPHANTPOSE),
25722            _ => ::std::option::Option::None
25723        }
25724    }
25725
25726    fn from_str(str: &str) -> ::std::option::Option<ArtImageVerb> {
25727        match str {
25728            "VERB_WITHERING" => ::std::option::Option::Some(ArtImageVerb::VERB_WITHERING),
25729            "VERB_SURROUNDEDBY" => ::std::option::Option::Some(ArtImageVerb::VERB_SURROUNDEDBY),
25730            "VERB_MASSACRING" => ::std::option::Option::Some(ArtImageVerb::VERB_MASSACRING),
25731            "VERB_FIGHTING" => ::std::option::Option::Some(ArtImageVerb::VERB_FIGHTING),
25732            "VERB_LABORING" => ::std::option::Option::Some(ArtImageVerb::VERB_LABORING),
25733            "VERB_GREETING" => ::std::option::Option::Some(ArtImageVerb::VERB_GREETING),
25734            "VERB_REFUSING" => ::std::option::Option::Some(ArtImageVerb::VERB_REFUSING),
25735            "VERB_SPEAKING" => ::std::option::Option::Some(ArtImageVerb::VERB_SPEAKING),
25736            "VERB_EMBRACING" => ::std::option::Option::Some(ArtImageVerb::VERB_EMBRACING),
25737            "VERB_STRIKINGDOWN" => ::std::option::Option::Some(ArtImageVerb::VERB_STRIKINGDOWN),
25738            "VERB_MENACINGPOSE" => ::std::option::Option::Some(ArtImageVerb::VERB_MENACINGPOSE),
25739            "VERB_TRAVELING" => ::std::option::Option::Some(ArtImageVerb::VERB_TRAVELING),
25740            "VERB_RAISING" => ::std::option::Option::Some(ArtImageVerb::VERB_RAISING),
25741            "VERB_HIDING" => ::std::option::Option::Some(ArtImageVerb::VERB_HIDING),
25742            "VERB_LOOKINGCONFUSED" => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGCONFUSED),
25743            "VERB_LOOKINGTERRIFIED" => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGTERRIFIED),
25744            "VERB_DEVOURING" => ::std::option::Option::Some(ArtImageVerb::VERB_DEVOURING),
25745            "VERB_ADMIRING" => ::std::option::Option::Some(ArtImageVerb::VERB_ADMIRING),
25746            "VERB_BURNING" => ::std::option::Option::Some(ArtImageVerb::VERB_BURNING),
25747            "VERB_WEEPING" => ::std::option::Option::Some(ArtImageVerb::VERB_WEEPING),
25748            "VERB_LOOKINGDEJECTED" => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGDEJECTED),
25749            "VERB_CRINGING" => ::std::option::Option::Some(ArtImageVerb::VERB_CRINGING),
25750            "VERB_SCREAMING" => ::std::option::Option::Some(ArtImageVerb::VERB_SCREAMING),
25751            "VERB_SUBMISSIVEGESTURE" => ::std::option::Option::Some(ArtImageVerb::VERB_SUBMISSIVEGESTURE),
25752            "VERB_FETALPOSITION" => ::std::option::Option::Some(ArtImageVerb::VERB_FETALPOSITION),
25753            "VERB_SMEAREDINTOSPIRAL" => ::std::option::Option::Some(ArtImageVerb::VERB_SMEAREDINTOSPIRAL),
25754            "VERB_FALLING" => ::std::option::Option::Some(ArtImageVerb::VERB_FALLING),
25755            "VERB_DEAD" => ::std::option::Option::Some(ArtImageVerb::VERB_DEAD),
25756            "VERB_LAUGHING" => ::std::option::Option::Some(ArtImageVerb::VERB_LAUGHING),
25757            "VERB_LOOKINGOFFENDED" => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGOFFENDED),
25758            "VERB_BEINGSHOT" => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGSHOT),
25759            "VERB_PLAINTIVEGESTURE" => ::std::option::Option::Some(ArtImageVerb::VERB_PLAINTIVEGESTURE),
25760            "VERB_MELTING" => ::std::option::Option::Some(ArtImageVerb::VERB_MELTING),
25761            "VERB_SHOOTING" => ::std::option::Option::Some(ArtImageVerb::VERB_SHOOTING),
25762            "VERB_TORTURING" => ::std::option::Option::Some(ArtImageVerb::VERB_TORTURING),
25763            "VERB_COMMITTINGDEPRAVEDACT" => ::std::option::Option::Some(ArtImageVerb::VERB_COMMITTINGDEPRAVEDACT),
25764            "VERB_PRAYING" => ::std::option::Option::Some(ArtImageVerb::VERB_PRAYING),
25765            "VERB_CONTEMPLATING" => ::std::option::Option::Some(ArtImageVerb::VERB_CONTEMPLATING),
25766            "VERB_COOKING" => ::std::option::Option::Some(ArtImageVerb::VERB_COOKING),
25767            "VERB_ENGRAVING" => ::std::option::Option::Some(ArtImageVerb::VERB_ENGRAVING),
25768            "VERB_PROSTRATING" => ::std::option::Option::Some(ArtImageVerb::VERB_PROSTRATING),
25769            "VERB_SUFFERING" => ::std::option::Option::Some(ArtImageVerb::VERB_SUFFERING),
25770            "VERB_BEINGIMPALED" => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGIMPALED),
25771            "VERB_BEINGCONTORTED" => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGCONTORTED),
25772            "VERB_BEINGFLAYED" => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGFLAYED),
25773            "VERB_HANGINGFROM" => ::std::option::Option::Some(ArtImageVerb::VERB_HANGINGFROM),
25774            "VERB_BEINGMUTILATED" => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGMUTILATED),
25775            "VERB_TRIUMPHANTPOSE" => ::std::option::Option::Some(ArtImageVerb::VERB_TRIUMPHANTPOSE),
25776            _ => ::std::option::Option::None
25777        }
25778    }
25779
25780    const VALUES: &'static [ArtImageVerb] = &[
25781        ArtImageVerb::VERB_WITHERING,
25782        ArtImageVerb::VERB_SURROUNDEDBY,
25783        ArtImageVerb::VERB_MASSACRING,
25784        ArtImageVerb::VERB_FIGHTING,
25785        ArtImageVerb::VERB_LABORING,
25786        ArtImageVerb::VERB_GREETING,
25787        ArtImageVerb::VERB_REFUSING,
25788        ArtImageVerb::VERB_SPEAKING,
25789        ArtImageVerb::VERB_EMBRACING,
25790        ArtImageVerb::VERB_STRIKINGDOWN,
25791        ArtImageVerb::VERB_MENACINGPOSE,
25792        ArtImageVerb::VERB_TRAVELING,
25793        ArtImageVerb::VERB_RAISING,
25794        ArtImageVerb::VERB_HIDING,
25795        ArtImageVerb::VERB_LOOKINGCONFUSED,
25796        ArtImageVerb::VERB_LOOKINGTERRIFIED,
25797        ArtImageVerb::VERB_DEVOURING,
25798        ArtImageVerb::VERB_ADMIRING,
25799        ArtImageVerb::VERB_BURNING,
25800        ArtImageVerb::VERB_WEEPING,
25801        ArtImageVerb::VERB_LOOKINGDEJECTED,
25802        ArtImageVerb::VERB_CRINGING,
25803        ArtImageVerb::VERB_SCREAMING,
25804        ArtImageVerb::VERB_SUBMISSIVEGESTURE,
25805        ArtImageVerb::VERB_FETALPOSITION,
25806        ArtImageVerb::VERB_SMEAREDINTOSPIRAL,
25807        ArtImageVerb::VERB_FALLING,
25808        ArtImageVerb::VERB_DEAD,
25809        ArtImageVerb::VERB_LAUGHING,
25810        ArtImageVerb::VERB_LOOKINGOFFENDED,
25811        ArtImageVerb::VERB_BEINGSHOT,
25812        ArtImageVerb::VERB_PLAINTIVEGESTURE,
25813        ArtImageVerb::VERB_MELTING,
25814        ArtImageVerb::VERB_SHOOTING,
25815        ArtImageVerb::VERB_TORTURING,
25816        ArtImageVerb::VERB_COMMITTINGDEPRAVEDACT,
25817        ArtImageVerb::VERB_PRAYING,
25818        ArtImageVerb::VERB_CONTEMPLATING,
25819        ArtImageVerb::VERB_COOKING,
25820        ArtImageVerb::VERB_ENGRAVING,
25821        ArtImageVerb::VERB_PROSTRATING,
25822        ArtImageVerb::VERB_SUFFERING,
25823        ArtImageVerb::VERB_BEINGIMPALED,
25824        ArtImageVerb::VERB_BEINGCONTORTED,
25825        ArtImageVerb::VERB_BEINGFLAYED,
25826        ArtImageVerb::VERB_HANGINGFROM,
25827        ArtImageVerb::VERB_BEINGMUTILATED,
25828        ArtImageVerb::VERB_TRIUMPHANTPOSE,
25829    ];
25830}
25831
25832impl ::protobuf::EnumFull for ArtImageVerb {
25833    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25834        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25835        descriptor.get(|| file_descriptor().enum_by_package_relative_name("ArtImageVerb").unwrap()).clone()
25836    }
25837
25838    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25839        let index = *self as usize;
25840        Self::enum_descriptor().value_by_index(index)
25841    }
25842}
25843
25844impl ::std::default::Default for ArtImageVerb {
25845    fn default() -> Self {
25846        ArtImageVerb::VERB_WITHERING
25847    }
25848}
25849
25850impl ArtImageVerb {
25851    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25852        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<ArtImageVerb>("ArtImageVerb")
25853    }
25854}
25855
25856#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25857// @@protoc_insertion_point(enum:RemoteFortressReader.FlowType)
25858pub enum FlowType {
25859    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Miasma)
25860    Miasma = 0,
25861    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Steam)
25862    Steam = 1,
25863    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Mist)
25864    Mist = 2,
25865    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.MaterialDust)
25866    MaterialDust = 3,
25867    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.MagmaMist)
25868    MagmaMist = 4,
25869    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Smoke)
25870    Smoke = 5,
25871    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Dragonfire)
25872    Dragonfire = 6,
25873    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Fire)
25874    Fire = 7,
25875    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Web)
25876    Web = 8,
25877    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.MaterialGas)
25878    MaterialGas = 9,
25879    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.MaterialVapor)
25880    MaterialVapor = 10,
25881    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.OceanWave)
25882    OceanWave = 11,
25883    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.SeaFoam)
25884    SeaFoam = 12,
25885    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.ItemCloud)
25886    ItemCloud = 13,
25887    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.CampFire)
25888    CampFire = -1,
25889}
25890
25891impl ::protobuf::Enum for FlowType {
25892    const NAME: &'static str = "FlowType";
25893
25894    fn value(&self) -> i32 {
25895        *self as i32
25896    }
25897
25898    fn from_i32(value: i32) -> ::std::option::Option<FlowType> {
25899        match value {
25900            0 => ::std::option::Option::Some(FlowType::Miasma),
25901            1 => ::std::option::Option::Some(FlowType::Steam),
25902            2 => ::std::option::Option::Some(FlowType::Mist),
25903            3 => ::std::option::Option::Some(FlowType::MaterialDust),
25904            4 => ::std::option::Option::Some(FlowType::MagmaMist),
25905            5 => ::std::option::Option::Some(FlowType::Smoke),
25906            6 => ::std::option::Option::Some(FlowType::Dragonfire),
25907            7 => ::std::option::Option::Some(FlowType::Fire),
25908            8 => ::std::option::Option::Some(FlowType::Web),
25909            9 => ::std::option::Option::Some(FlowType::MaterialGas),
25910            10 => ::std::option::Option::Some(FlowType::MaterialVapor),
25911            11 => ::std::option::Option::Some(FlowType::OceanWave),
25912            12 => ::std::option::Option::Some(FlowType::SeaFoam),
25913            13 => ::std::option::Option::Some(FlowType::ItemCloud),
25914            -1 => ::std::option::Option::Some(FlowType::CampFire),
25915            _ => ::std::option::Option::None
25916        }
25917    }
25918
25919    fn from_str(str: &str) -> ::std::option::Option<FlowType> {
25920        match str {
25921            "Miasma" => ::std::option::Option::Some(FlowType::Miasma),
25922            "Steam" => ::std::option::Option::Some(FlowType::Steam),
25923            "Mist" => ::std::option::Option::Some(FlowType::Mist),
25924            "MaterialDust" => ::std::option::Option::Some(FlowType::MaterialDust),
25925            "MagmaMist" => ::std::option::Option::Some(FlowType::MagmaMist),
25926            "Smoke" => ::std::option::Option::Some(FlowType::Smoke),
25927            "Dragonfire" => ::std::option::Option::Some(FlowType::Dragonfire),
25928            "Fire" => ::std::option::Option::Some(FlowType::Fire),
25929            "Web" => ::std::option::Option::Some(FlowType::Web),
25930            "MaterialGas" => ::std::option::Option::Some(FlowType::MaterialGas),
25931            "MaterialVapor" => ::std::option::Option::Some(FlowType::MaterialVapor),
25932            "OceanWave" => ::std::option::Option::Some(FlowType::OceanWave),
25933            "SeaFoam" => ::std::option::Option::Some(FlowType::SeaFoam),
25934            "ItemCloud" => ::std::option::Option::Some(FlowType::ItemCloud),
25935            "CampFire" => ::std::option::Option::Some(FlowType::CampFire),
25936            _ => ::std::option::Option::None
25937        }
25938    }
25939
25940    const VALUES: &'static [FlowType] = &[
25941        FlowType::Miasma,
25942        FlowType::Steam,
25943        FlowType::Mist,
25944        FlowType::MaterialDust,
25945        FlowType::MagmaMist,
25946        FlowType::Smoke,
25947        FlowType::Dragonfire,
25948        FlowType::Fire,
25949        FlowType::Web,
25950        FlowType::MaterialGas,
25951        FlowType::MaterialVapor,
25952        FlowType::OceanWave,
25953        FlowType::SeaFoam,
25954        FlowType::ItemCloud,
25955        FlowType::CampFire,
25956    ];
25957}
25958
25959impl ::protobuf::EnumFull for FlowType {
25960    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25961        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25962        descriptor.get(|| file_descriptor().enum_by_package_relative_name("FlowType").unwrap()).clone()
25963    }
25964
25965    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25966        let index = match self {
25967            FlowType::Miasma => 0,
25968            FlowType::Steam => 1,
25969            FlowType::Mist => 2,
25970            FlowType::MaterialDust => 3,
25971            FlowType::MagmaMist => 4,
25972            FlowType::Smoke => 5,
25973            FlowType::Dragonfire => 6,
25974            FlowType::Fire => 7,
25975            FlowType::Web => 8,
25976            FlowType::MaterialGas => 9,
25977            FlowType::MaterialVapor => 10,
25978            FlowType::OceanWave => 11,
25979            FlowType::SeaFoam => 12,
25980            FlowType::ItemCloud => 13,
25981            FlowType::CampFire => 14,
25982        };
25983        Self::enum_descriptor().value_by_index(index)
25984    }
25985}
25986
25987impl ::std::default::Default for FlowType {
25988    fn default() -> Self {
25989        FlowType::Miasma
25990    }
25991}
25992
25993impl FlowType {
25994    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25995        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<FlowType>("FlowType")
25996    }
25997}
25998
25999static file_descriptor_proto_data: &'static [u8] = b"\
26000    \n\x1aRemoteFortressReader.proto\x12\x14RemoteFortressReader\x1a\x17Item\
26001    defInstrument.proto\"1\n\x05Coord\x12\x0c\n\x01x\x18\x01\x20\x01(\x05R\
26002    \x01x\x12\x0c\n\x01y\x18\x02\x20\x01(\x05R\x01y\x12\x0c\n\x01z\x18\x03\
26003    \x20\x01(\x05R\x01z\"\xe7\x02\n\x08Tiletype\x12\x0e\n\x02id\x18\x01\x20\
26004    \x02(\x05R\x02id\x12\x12\n\x04name\x18\x02\x20\x01(\tR\x04name\x12\x18\n\
26005    \x07caption\x18\x03\x20\x01(\tR\x07caption\x129\n\x05shape\x18\x04\x20\
26006    \x01(\x0e2#.RemoteFortressReader.TiletypeShapeR\x05shape\x12?\n\x07speci\
26007    al\x18\x05\x20\x01(\x0e2%.RemoteFortressReader.TiletypeSpecialR\x07speci\
26008    al\x12B\n\x08material\x18\x06\x20\x01(\x0e2&.RemoteFortressReader.Tilety\
26009    peMaterialR\x08material\x12?\n\x07variant\x18\x07\x20\x01(\x0e2%.RemoteF\
26010    ortressReader.TiletypeVariantR\x07variant\x12\x1c\n\tdirection\x18\x08\
26011    \x20\x01(\tR\tdirection\"S\n\x0cTiletypeList\x12C\n\rtiletype_list\x18\
26012    \x01\x20\x03(\x0b2\x1e.RemoteFortressReader.TiletypeR\x0ctiletypeList\"\
26013    \x83\x01\n\x0fBuildingExtents\x12\x13\n\x05pos_x\x18\x01\x20\x02(\x05R\
26014    \x04posX\x12\x13\n\x05pos_y\x18\x02\x20\x02(\x05R\x04posY\x12\x14\n\x05w\
26015    idth\x18\x03\x20\x02(\x05R\x05width\x12\x16\n\x06height\x18\x04\x20\x02(\
26016    \x05R\x06height\x12\x18\n\x07extents\x18\x05\x20\x03(\x05R\x07extents\"R\
26017    \n\x0cBuildingItem\x12.\n\x04item\x18\x01\x20\x01(\x0b2\x1a.RemoteFortre\
26018    ssReader.ItemR\x04item\x12\x12\n\x04mode\x18\x02\x20\x01(\x05R\x04mode\"\
26019    \xe8\x04\n\x10BuildingInstance\x12\x14\n\x05index\x18\x01\x20\x02(\x05R\
26020    \x05index\x12\x1a\n\tpos_x_min\x18\x02\x20\x01(\x05R\x07posXMin\x12\x1a\
26021    \n\tpos_y_min\x18\x03\x20\x01(\x05R\x07posYMin\x12\x1a\n\tpos_z_min\x18\
26022    \x04\x20\x01(\x05R\x07posZMin\x12\x1a\n\tpos_x_max\x18\x05\x20\x01(\x05R\
26023    \x07posXMax\x12\x1a\n\tpos_y_max\x18\x06\x20\x01(\x05R\x07posYMax\x12\
26024    \x1a\n\tpos_z_max\x18\x07\x20\x01(\x05R\x07posZMax\x12G\n\rbuilding_type\
26025    \x18\x08\x20\x01(\x0b2\".RemoteFortressReader.BuildingTypeR\x0cbuildingT\
26026    ype\x129\n\x08material\x18\t\x20\x01(\x0b2\x1d.RemoteFortressReader.MatP\
26027    airR\x08material\x12%\n\x0ebuilding_flags\x18\n\x20\x01(\rR\rbuildingFla\
26028    gs\x12\x17\n\x07is_room\x18\x0b\x20\x01(\x08R\x06isRoom\x129\n\x04room\
26029    \x18\x0c\x20\x01(\x0b2%.RemoteFortressReader.BuildingExtentsR\x04room\
26030    \x12E\n\tdirection\x18\r\x20\x01(\x0e2'.RemoteFortressReader.BuildingDir\
26031    ectionR\tdirection\x128\n\x05items\x18\x0e\x20\x03(\x0b2\".RemoteFortres\
26032    sReader.BuildingItemR\x05items\x12\x16\n\x06active\x18\x0f\x20\x01(\x05R\
26033    \x06active\"s\n\tRiverEdge\x12\x17\n\x07min_pos\x18\x01\x20\x01(\x05R\
26034    \x06minPos\x12\x17\n\x07max_pos\x18\x02\x20\x01(\x05R\x06maxPos\x12\x16\
26035    \n\x06active\x18\x03\x20\x01(\x05R\x06active\x12\x1c\n\televation\x18\
26036    \x04\x20\x01(\x05R\televation\"\xe3\x01\n\tRiverTile\x125\n\x05north\x18\
26037    \x01\x20\x01(\x0b2\x1f.RemoteFortressReader.RiverEdgeR\x05north\x125\n\
26038    \x05south\x18\x02\x20\x01(\x0b2\x1f.RemoteFortressReader.RiverEdgeR\x05s\
26039    outh\x123\n\x04east\x18\x03\x20\x01(\x0b2\x1f.RemoteFortressReader.River\
26040    EdgeR\x04east\x123\n\x04west\x18\x04\x20\x01(\x0b2\x1f.RemoteFortressRea\
26041    der.RiverEdgeR\x04west\"\xc8\x01\n\x07Spatter\x129\n\x08material\x18\x01\
26042    \x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x08material\x12\x16\n\
26043    \x06amount\x18\x02\x20\x01(\x05R\x06amount\x127\n\x05state\x18\x03\x20\
26044    \x01(\x0e2!.RemoteFortressReader.MatterStateR\x05state\x121\n\x04item\
26045    \x18\x04\x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x04item\"H\n\
26046    \x0bSpatterPile\x129\n\x08spatters\x18\x01\x20\x03(\x0b2\x1d.RemoteFortr\
26047    essReader.SpatterR\x08spatters\"\xa2\x05\n\x04Item\x12\x0e\n\x02id\x18\
26048    \x01\x20\x01(\x05R\x02id\x12-\n\x03pos\x18\x02\x20\x01(\x0b2\x1b.RemoteF\
26049    ortressReader.CoordR\x03pos\x12\x16\n\x06flags1\x18\x03\x20\x01(\rR\x06f\
26050    lags1\x12\x16\n\x06flags2\x18\x04\x20\x01(\rR\x06flags2\x121\n\x04type\
26051    \x18\x05\x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x04type\x129\n\
26052    \x08material\x18\x06\x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x08\
26053    material\x127\n\x03dye\x18\x07\x20\x01(\x0b2%.RemoteFortressReader.Color\
26054    DefinitionR\x03dye\x12\x1d\n\nstack_size\x18\x08\x20\x01(\x05R\tstackSiz\
26055    e\x12\x19\n\x08subpos_x\x18\t\x20\x01(\x02R\x07subposX\x12\x19\n\x08subp\
26056    os_y\x18\n\x20\x01(\x02R\x07subposY\x12\x19\n\x08subpos_z\x18\x0b\x20\
26057    \x01(\x02R\x07subposZ\x12\x1e\n\nprojectile\x18\x0c\x20\x01(\x08R\nproje\
26058    ctile\x12\x1d\n\nvelocity_x\x18\r\x20\x01(\x02R\tvelocityX\x12\x1d\n\nve\
26059    locity_y\x18\x0e\x20\x01(\x02R\tvelocityY\x12\x1d\n\nvelocity_z\x18\x0f\
26060    \x20\x01(\x02R\tvelocityZ\x12\x16\n\x06volume\x18\x10\x20\x01(\x05R\x06v\
26061    olume\x12I\n\x0cimprovements\x18\x11\x20\x03(\x0b2%.RemoteFortressReader\
26062    .ItemImprovementR\x0cimprovements\x124\n\x05image\x18\x12\x20\x01(\x0b2\
26063    \x1e.RemoteFortressReader.ArtImageR\x05image\"\xbf\x02\n\tPlantTile\x12\
26064    \x14\n\x05trunk\x18\x01\x20\x01(\x08R\x05trunk\x12'\n\x0fconnection_east\
26065    \x18\x02\x20\x01(\x08R\x0econnectionEast\x12)\n\x10connection_south\x18\
26066    \x03\x20\x01(\x08R\x0fconnectionSouth\x12'\n\x0fconnection_west\x18\x04\
26067    \x20\x01(\x08R\x0econnectionWest\x12)\n\x10connection_north\x18\x05\x20\
26068    \x01(\x08R\x0fconnectionNorth\x12\x1a\n\x08branches\x18\x06\x20\x01(\x08\
26069    R\x08branches\x12\x14\n\x05twigs\x18\x07\x20\x01(\x08R\x05twigs\x12B\n\t\
26070    tile_type\x18\x08\x20\x01(\x0e2%.RemoteFortressReader.TiletypeSpecialR\
26071    \x08tileType\"r\n\x08TreeInfo\x12/\n\x04size\x18\x01\x20\x01(\x0b2\x1b.R\
26072    emoteFortressReader.CoordR\x04size\x125\n\x05tiles\x18\x02\x20\x03(\x0b2\
26073    \x1f.RemoteFortressReader.PlantTileR\x05tiles\"\x9a\x01\n\rPlantInstance\
26074    \x12\x1d\n\nplant_type\x18\x01\x20\x01(\x05R\tplantType\x12-\n\x03pos\
26075    \x18\x02\x20\x01(\x0b2\x1b.RemoteFortressReader.CoordR\x03pos\x12;\n\ttr\
26076    ee_info\x18\x03\x20\x01(\x0b2\x1e.RemoteFortressReader.TreeInfoR\x08tree\
26077    Info\"\x8c\n\n\x08MapBlock\x12\x13\n\x05map_x\x18\x01\x20\x02(\x05R\x04m\
26078    apX\x12\x13\n\x05map_y\x18\x02\x20\x02(\x05R\x04mapY\x12\x13\n\x05map_z\
26079    \x18\x03\x20\x02(\x05R\x04mapZ\x12\x14\n\x05tiles\x18\x04\x20\x03(\x05R\
26080    \x05tiles\x12;\n\tmaterials\x18\x05\x20\x03(\x0b2\x1d.RemoteFortressRead\
26081    er.MatPairR\tmaterials\x12F\n\x0flayer_materials\x18\x06\x20\x03(\x0b2\
26082    \x1d.RemoteFortressReader.MatPairR\x0elayerMaterials\x12D\n\x0evein_mate\
26083    rials\x18\x07\x20\x03(\x0b2\x1d.RemoteFortressReader.MatPairR\rveinMater\
26084    ials\x12D\n\x0ebase_materials\x18\x08\x20\x03(\x0b2\x1d.RemoteFortressRe\
26085    ader.MatPairR\rbaseMaterials\x12\x14\n\x05magma\x18\t\x20\x03(\x05R\x05m\
26086    agma\x12\x14\n\x05water\x18\n\x20\x03(\x05R\x05water\x12\x16\n\x06hidden\
26087    \x18\x0b\x20\x03(\x08R\x06hidden\x12\x14\n\x05light\x18\x0c\x20\x03(\x08\
26088    R\x05light\x12\"\n\x0csubterranean\x18\r\x20\x03(\x08R\x0csubterranean\
26089    \x12\x18\n\x07outside\x18\x0e\x20\x03(\x08R\x07outside\x12\x18\n\x07aqui\
26090    fer\x18\x0f\x20\x03(\x08R\x07aquifer\x12%\n\x0ewater_stagnant\x18\x10\
26091    \x20\x03(\x08R\rwaterStagnant\x12\x1d\n\nwater_salt\x18\x11\x20\x03(\x08\
26092    R\twaterSalt\x12L\n\x12construction_items\x18\x12\x20\x03(\x0b2\x1d.Remo\
26093    teFortressReader.MatPairR\x11constructionItems\x12D\n\tbuildings\x18\x13\
26094    \x20\x03(\x0b2&.RemoteFortressReader.BuildingInstanceR\tbuildings\x12!\n\
26095    \x0ctree_percent\x18\x14\x20\x03(\x05R\x0btreePercent\x12\x15\n\x06tree_\
26096    x\x18\x15\x20\x03(\x05R\x05treeX\x12\x15\n\x06tree_y\x18\x16\x20\x03(\
26097    \x05R\x05treeY\x12\x15\n\x06tree_z\x18\x17\x20\x03(\x05R\x05treeZ\x12Z\n\
26098    \x14tile_dig_designation\x18\x18\x20\x03(\x0e2(.RemoteFortressReader.Til\
26099    eDigDesignationR\x12tileDigDesignation\x12C\n\x0bspatterPile\x18\x19\x20\
26100    \x03(\x0b2!.RemoteFortressReader.SpatterPileR\x0bspatterPile\x120\n\x05i\
26101    tems\x18\x1a\x20\x03(\x0b2\x1a.RemoteFortressReader.ItemR\x05items\x12=\
26102    \n\x1btile_dig_designation_marker\x18\x1b\x20\x03(\x08R\x18tileDigDesign\
26103    ationMarker\x129\n\x19tile_dig_designation_auto\x18\x1c\x20\x03(\x08R\
26104    \x16tileDigDesignationAuto\x12#\n\rgrass_percent\x18\x1d\x20\x03(\x05R\
26105    \x0cgrassPercent\x124\n\x05flows\x18\x1e\x20\x03(\x0b2\x1e.RemoteFortres\
26106    sReader.FlowInfoR\x05flows\"A\n\x07MatPair\x12\x19\n\x08mat_type\x18\x01\
26107    \x20\x02(\x05R\x07matType\x12\x1b\n\tmat_index\x18\x02\x20\x02(\x05R\x08\
26108    matIndex\"M\n\x0fColorDefinition\x12\x10\n\x03red\x18\x01\x20\x02(\x05R\
26109    \x03red\x12\x14\n\x05green\x18\x02\x20\x02(\x05R\x05green\x12\x12\n\x04b\
26110    lue\x18\x03\x20\x02(\x05R\x04blue\"\xea\x02\n\x12MaterialDefinition\x128\
26111    \n\x08mat_pair\x18\x01\x20\x02(\x0b2\x1d.RemoteFortressReader.MatPairR\
26112    \x07matPair\x12\x0e\n\x02id\x18\x02\x20\x01(\tR\x02id\x12\x12\n\x04name\
26113    \x18\x03\x20\x01(\x0cR\x04name\x12F\n\x0bstate_color\x18\x04\x20\x01(\
26114    \x0b2%.RemoteFortressReader.ColorDefinitionR\nstateColor\x12@\n\ninstrum\
26115    ent\x18\x05\x20\x01(\x0b2\x20.ItemdefInstrument.InstrumentDefR\ninstrume\
26116    nt\x12\x17\n\x07up_step\x18\x06\x20\x01(\x05R\x06upStep\x12\x1b\n\tdown_\
26117    step\x18\x07\x20\x01(\x05R\x08downStep\x126\n\x05layer\x18\x08\x20\x01(\
26118    \x0e2\x20.RemoteFortressReader.ArmorLayerR\x05layer\"\x87\x01\n\x0cBuild\
26119    ingType\x12#\n\rbuilding_type\x18\x01\x20\x02(\x05R\x0cbuildingType\x12)\
26120    \n\x10building_subtype\x18\x02\x20\x02(\x05R\x0fbuildingSubtype\x12'\n\
26121    \x0fbuilding_custom\x18\x03\x20\x02(\x05R\x0ebuildingCustom\"\x81\x01\n\
26122    \x12BuildingDefinition\x12G\n\rbuilding_type\x18\x01\x20\x02(\x0b2\".Rem\
26123    oteFortressReader.BuildingTypeR\x0cbuildingType\x12\x0e\n\x02id\x18\x02\
26124    \x20\x01(\tR\x02id\x12\x12\n\x04name\x18\x03\x20\x01(\tR\x04name\"]\n\
26125    \x0cBuildingList\x12M\n\rbuilding_list\x18\x01\x20\x03(\x0b2(.RemoteFort\
26126    ressReader.BuildingDefinitionR\x0cbuildingList\"]\n\x0cMaterialList\x12M\
26127    \n\rmaterial_list\x18\x01\x20\x03(\x0b2(.RemoteFortressReader.MaterialDe\
26128    finitionR\x0cmaterialList\"U\n\x04Hair\x12\x16\n\x06length\x18\x01\x20\
26129    \x01(\x05R\x06length\x125\n\x05style\x18\x02\x20\x01(\x0e2\x1f.RemoteFor\
26130    tressReader.HairStyleR\x05style\"\xbe\x01\n\x0cBodySizeInfo\x12\x19\n\
26131    \x08size_cur\x18\x01\x20\x01(\x05R\x07sizeCur\x12\x1b\n\tsize_base\x18\
26132    \x02\x20\x01(\x05R\x08sizeBase\x12\x19\n\x08area_cur\x18\x03\x20\x01(\
26133    \x05R\x07areaCur\x12\x1b\n\tarea_base\x18\x04\x20\x01(\x05R\x08areaBase\
26134    \x12\x1d\n\nlength_cur\x18\x05\x20\x01(\x05R\tlengthCur\x12\x1f\n\x0blen\
26135    gth_base\x18\x06\x20\x01(\x05R\nlengthBase\"\xa0\x03\n\x0eUnitAppearance\
26136    \x12%\n\x0ebody_modifiers\x18\x01\x20\x03(\x05R\rbodyModifiers\x12!\n\
26137    \x0cbp_modifiers\x18\x02\x20\x03(\x05R\x0bbpModifiers\x12#\n\rsize_modif\
26138    ier\x18\x03\x20\x01(\x05R\x0csizeModifier\x12\x16\n\x06colors\x18\x04\
26139    \x20\x03(\x05R\x06colors\x12.\n\x04hair\x18\x05\x20\x01(\x0b2\x1a.Remote\
26140    FortressReader.HairR\x04hair\x120\n\x05beard\x18\x06\x20\x01(\x0b2\x1a.R\
26141    emoteFortressReader.HairR\x05beard\x128\n\tmoustache\x18\x07\x20\x01(\
26142    \x0b2\x1a.RemoteFortressReader.HairR\tmoustache\x128\n\tsideburns\x18\
26143    \x08\x20\x01(\x0b2\x1a.RemoteFortressReader.HairR\tsideburns\x121\n\x14p\
26144    hysical_description\x18\t\x20\x01(\tR\x13physicalDescription\"\x9a\x01\n\
26145    \rInventoryItem\x127\n\x04mode\x18\x01\x20\x01(\x0e2#.RemoteFortressRead\
26146    er.InventoryModeR\x04mode\x12.\n\x04item\x18\x02\x20\x01(\x0b2\x1a.Remot\
26147    eFortressReader.ItemR\x04item\x12\x20\n\x0cbody_part_id\x18\x03\x20\x01(\
26148    \x05R\nbodyPartId\"t\n\tWoundPart\x12(\n\x10global_layer_idx\x18\x01\x20\
26149    \x01(\x05R\x0eglobalLayerIdx\x12\x20\n\x0cbody_part_id\x18\x02\x20\x01(\
26150    \x05R\nbodyPartId\x12\x1b\n\tlayer_idx\x18\x03\x20\x01(\x05R\x08layerIdx\
26151    \"e\n\tUnitWound\x125\n\x05parts\x18\x01\x20\x03(\x0b2\x1f.RemoteFortres\
26152    sReader.WoundPartR\x05parts\x12!\n\x0csevered_part\x18\x02\x20\x01(\x08R\
26153    \x0bseveredPart\"\xbb\x07\n\x0eUnitDefinition\x12\x0e\n\x02id\x18\x01\
26154    \x20\x02(\x05R\x02id\x12\x18\n\x07isValid\x18\x02\x20\x01(\x08R\x07isVal\
26155    id\x12\x13\n\x05pos_x\x18\x03\x20\x01(\x05R\x04posX\x12\x13\n\x05pos_y\
26156    \x18\x04\x20\x01(\x05R\x04posY\x12\x13\n\x05pos_z\x18\x05\x20\x01(\x05R\
26157    \x04posZ\x121\n\x04race\x18\x06\x20\x01(\x0b2\x1d.RemoteFortressReader.M\
26158    atPairR\x04race\x12P\n\x10profession_color\x18\x07\x20\x01(\x0b2%.Remote\
26159    FortressReader.ColorDefinitionR\x0fprofessionColor\x12\x16\n\x06flags1\
26160    \x18\x08\x20\x01(\rR\x06flags1\x12\x16\n\x06flags2\x18\t\x20\x01(\rR\x06\
26161    flags2\x12\x16\n\x06flags3\x18\n\x20\x01(\rR\x06flags3\x12\x1d\n\nis_sol\
26162    dier\x18\x0b\x20\x01(\x08R\tisSoldier\x12?\n\tsize_info\x18\x0c\x20\x01(\
26163    \x0b2\".RemoteFortressReader.BodySizeInfoR\x08sizeInfo\x12\x12\n\x04name\
26164    \x18\r\x20\x01(\tR\x04name\x12\x1b\n\tblood_max\x18\x0e\x20\x01(\x05R\
26165    \x08bloodMax\x12\x1f\n\x0bblood_count\x18\x0f\x20\x01(\x05R\nbloodCount\
26166    \x12D\n\nappearance\x18\x10\x20\x01(\x0b2$.RemoteFortressReader.UnitAppe\
26167    aranceR\nappearance\x12#\n\rprofession_id\x18\x11\x20\x01(\x05R\x0cprofe\
26168    ssionId\x12'\n\x0fnoble_positions\x18\x12\x20\x03(\tR\x0enoblePositions\
26169    \x12\x19\n\x08rider_id\x18\x13\x20\x01(\x05R\x07riderId\x12A\n\tinventor\
26170    y\x18\x14\x20\x03(\x0b2#.RemoteFortressReader.InventoryItemR\tinventory\
26171    \x12\x19\n\x08subpos_x\x18\x15\x20\x01(\x02R\x07subposX\x12\x19\n\x08sub\
26172    pos_y\x18\x16\x20\x01(\x02R\x07subposY\x12\x19\n\x08subpos_z\x18\x17\x20\
26173    \x01(\x02R\x07subposZ\x123\n\x06facing\x18\x18\x20\x01(\x0b2\x1b.RemoteF\
26174    ortressReader.CoordR\x06facing\x12\x10\n\x03age\x18\x19\x20\x01(\x05R\
26175    \x03age\x127\n\x06wounds\x18\x1a\x20\x03(\x0b2\x1f.RemoteFortressReader.\
26176    UnitWoundR\x06wounds\"U\n\x08UnitList\x12I\n\rcreature_list\x18\x01\x20\
26177    \x03(\x0b2$.RemoteFortressReader.UnitDefinitionR\x0ccreatureList\"\xb1\
26178    \x01\n\x0cBlockRequest\x12#\n\rblocks_needed\x18\x01\x20\x01(\x05R\x0cbl\
26179    ocksNeeded\x12\x13\n\x05min_x\x18\x02\x20\x01(\x05R\x04minX\x12\x13\n\
26180    \x05max_x\x18\x03\x20\x01(\x05R\x04maxX\x12\x13\n\x05min_y\x18\x04\x20\
26181    \x01(\x05R\x04minY\x12\x13\n\x05max_y\x18\x05\x20\x01(\x05R\x04maxY\x12\
26182    \x13\n\x05min_z\x18\x06\x20\x01(\x05R\x04minZ\x12\x13\n\x05max_z\x18\x07\
26183    \x20\x01(\x05R\x04maxZ\"\xf2\x01\n\tBlockList\x12=\n\nmap_blocks\x18\x01\
26184    \x20\x03(\x0b2\x1e.RemoteFortressReader.MapBlockR\tmapBlocks\x12\x13\n\
26185    \x05map_x\x18\x02\x20\x01(\x05R\x04mapX\x12\x13\n\x05map_y\x18\x03\x20\
26186    \x01(\x05R\x04mapY\x12?\n\nengravings\x18\x04\x20\x03(\x0b2\x1f.RemoteFo\
26187    rtressReader.EngravingR\nengravings\x12;\n\x0bocean_waves\x18\x05\x20\
26188    \x03(\x0b2\x1a.RemoteFortressReader.WaveR\noceanWaves\"_\n\x08PlantDef\
26189    \x12\x13\n\x05pos_x\x18\x01\x20\x02(\x05R\x04posX\x12\x13\n\x05pos_y\x18\
26190    \x02\x20\x02(\x05R\x04posY\x12\x13\n\x05pos_z\x18\x03\x20\x02(\x05R\x04p\
26191    osZ\x12\x14\n\x05index\x18\x04\x20\x02(\x05R\x05index\"J\n\tPlantList\
26192    \x12=\n\nplant_list\x18\x01\x20\x03(\x0b2\x1e.RemoteFortressReader.Plant\
26193    DefR\tplantList\"\xe2\x02\n\x08ViewInfo\x12\x1c\n\nview_pos_x\x18\x01\
26194    \x20\x01(\x05R\x08viewPosX\x12\x1c\n\nview_pos_y\x18\x02\x20\x01(\x05R\
26195    \x08viewPosY\x12\x1c\n\nview_pos_z\x18\x03\x20\x01(\x05R\x08viewPosZ\x12\
26196    \x1e\n\x0bview_size_x\x18\x04\x20\x01(\x05R\tviewSizeX\x12\x1e\n\x0bview\
26197    _size_y\x18\x05\x20\x01(\x05R\tviewSizeY\x12\x20\n\x0ccursor_pos_x\x18\
26198    \x06\x20\x01(\x05R\ncursorPosX\x12\x20\n\x0ccursor_pos_y\x18\x07\x20\x01\
26199    (\x05R\ncursorPosY\x12\x20\n\x0ccursor_pos_z\x18\x08\x20\x01(\x05R\ncurs\
26200    orPosZ\x12*\n\x0efollow_unit_id\x18\t\x20\x01(\x05:\x02-1R\x0cfollowUnit\
26201    IdB\0\x12*\n\x0efollow_item_id\x18\n\x20\x01(\x05:\x02-1R\x0cfollowItemI\
26202    dB\0\"\xb9\x02\n\x07MapInfo\x12\x20\n\x0cblock_size_x\x18\x01\x20\x01(\
26203    \x05R\nblockSizeX\x12\x20\n\x0cblock_size_y\x18\x02\x20\x01(\x05R\nblock\
26204    SizeY\x12\x20\n\x0cblock_size_z\x18\x03\x20\x01(\x05R\nblockSizeZ\x12\
26205    \x1e\n\x0bblock_pos_x\x18\x04\x20\x01(\x05R\tblockPosX\x12\x1e\n\x0bbloc\
26206    k_pos_y\x18\x05\x20\x01(\x05R\tblockPosY\x12\x1e\n\x0bblock_pos_z\x18\
26207    \x06\x20\x01(\x05R\tblockPosZ\x12\x1d\n\nworld_name\x18\x07\x20\x01(\tR\
26208    \tworldName\x12,\n\x12world_name_english\x18\x08\x20\x01(\tR\x10worldNam\
26209    eEnglish\x12\x1b\n\tsave_name\x18\t\x20\x01(\tR\x08saveName\"\x81\x02\n\
26210    \x05Cloud\x125\n\x05front\x18\x01\x20\x01(\x0e2\x1f.RemoteFortressReader\
26211    .FrontTypeR\x05front\x12;\n\x07cumulus\x18\x02\x20\x01(\x0e2!.RemoteFort\
26212    ressReader.CumulusTypeR\x07cumulus\x12\x16\n\x06cirrus\x18\x03\x20\x01(\
26213    \x08R\x06cirrus\x12;\n\x07stratus\x18\x04\x20\x01(\x0e2!.RemoteFortressR\
26214    eader.StratusTypeR\x07stratus\x12/\n\x03fog\x18\x05\x20\x01(\x0e2\x1d.Re\
26215    moteFortressReader.FogTypeR\x03fog\"\xf1\x06\n\x08WorldMap\x12\x1f\n\x0b\
26216    world_width\x18\x01\x20\x02(\x05R\nworldWidth\x12!\n\x0cworld_height\x18\
26217    \x02\x20\x02(\x05R\x0bworldHeight\x12\x12\n\x04name\x18\x03\x20\x01(\x0c\
26218    R\x04name\x12!\n\x0cname_english\x18\x04\x20\x01(\tR\x0bnameEnglish\x12\
26219    \x1c\n\televation\x18\x05\x20\x03(\x05R\televation\x12\x1a\n\x08rainfall\
26220    \x18\x06\x20\x03(\x05R\x08rainfall\x12\x1e\n\nvegetation\x18\x07\x20\x03\
26221    (\x05R\nvegetation\x12\x20\n\x0btemperature\x18\x08\x20\x03(\x05R\x0btem\
26222    perature\x12\x1a\n\x08evilness\x18\t\x20\x03(\x05R\x08evilness\x12\x1a\n\
26223    \x08drainage\x18\n\x20\x03(\x05R\x08drainage\x12\x1c\n\tvolcanism\x18\
26224    \x0b\x20\x03(\x05R\tvolcanism\x12\x1a\n\x08savagery\x18\x0c\x20\x03(\x05\
26225    R\x08savagery\x123\n\x06clouds\x18\r\x20\x03(\x0b2\x1b.RemoteFortressRea\
26226    der.CloudR\x06clouds\x12\x1a\n\x08salinity\x18\x0e\x20\x03(\x05R\x08sali\
26227    nity\x12\x13\n\x05map_x\x18\x0f\x20\x01(\x05R\x04mapX\x12\x13\n\x05map_y\
26228    \x18\x10\x20\x01(\x05R\x04mapY\x12\x19\n\x08center_x\x18\x11\x20\x01(\
26229    \x05R\x07centerX\x12\x19\n\x08center_y\x18\x12\x20\x01(\x05R\x07centerY\
26230    \x12\x19\n\x08center_z\x18\x13\x20\x01(\x05R\x07centerZ\x12\x19\n\x08cur\
26231    _year\x18\x14\x20\x01(\x05R\x07curYear\x12\"\n\rcur_year_tick\x18\x15\
26232    \x20\x01(\x05R\x0bcurYearTick\x12A\n\x0bworld_poles\x18\x16\x20\x01(\x0e\
26233    2\x20.RemoteFortressReader.WorldPolesR\nworldPoles\x12@\n\x0briver_tiles\
26234    \x18\x17\x20\x03(\x0b2\x1f.RemoteFortressReader.RiverTileR\nriverTiles\
26235    \x12'\n\x0fwater_elevation\x18\x18\x20\x03(\x05R\x0ewaterElevation\x12C\
26236    \n\x0cregion_tiles\x18\x19\x20\x03(\x0b2\x20.RemoteFortressReader.Region\
26237    TileR\x0bregionTiles\"\xa7\x01\n\x1bSiteRealizationBuildingWall\x12\x17\
26238    \n\x07start_x\x18\x01\x20\x01(\x05R\x06startX\x12\x17\n\x07start_y\x18\
26239    \x02\x20\x01(\x05R\x06startY\x12\x17\n\x07start_z\x18\x03\x20\x01(\x05R\
26240    \x06startZ\x12\x13\n\x05end_x\x18\x04\x20\x01(\x05R\x04endX\x12\x13\n\
26241    \x05end_y\x18\x05\x20\x01(\x05R\x04endY\x12\x13\n\x05end_z\x18\x06\x20\
26242    \x01(\x05R\x04endZ\"c\n\x1cSiteRealizationBuildingTower\x12\x15\n\x06roo\
26243    f_z\x18\x01\x20\x01(\x05R\x05roofZ\x12\x14\n\x05round\x18\x02\x20\x01(\
26244    \x08R\x05round\x12\x16\n\x06goblin\x18\x03\x20\x01(\x08R\x06goblin\"\x8d\
26245    \x01\n\x0bTrenchSpoke\x12\x1f\n\x0bmound_start\x18\x01\x20\x01(\x05R\nmo\
26246    undStart\x12!\n\x0ctrench_start\x18\x02\x20\x01(\x05R\x0btrenchStart\x12\
26247    \x1d\n\ntrench_end\x18\x03\x20\x01(\x05R\ttrenchEnd\x12\x1b\n\tmound_end\
26248    \x18\x04\x20\x01(\x05R\x08moundEnd\"\\\n\x1fSiteRealizationBuildingTrenc\
26249    hes\x129\n\x06spokes\x18\x01\x20\x03(\x0b2!.RemoteFortressReader.TrenchS\
26250    pokeR\x06spokes\"\xc7\x03\n\x17SiteRealizationBuilding\x12\x0e\n\x02id\
26251    \x18\x01\x20\x01(\x05R\x02id\x12\x13\n\x05min_x\x18\x03\x20\x01(\x05R\
26252    \x04minX\x12\x13\n\x05min_y\x18\x04\x20\x01(\x05R\x04minY\x12\x13\n\x05m\
26253    ax_x\x18\x05\x20\x01(\x05R\x04maxX\x12\x13\n\x05max_y\x18\x06\x20\x01(\
26254    \x05R\x04maxY\x129\n\x08material\x18\x07\x20\x01(\x0b2\x1d.RemoteFortres\
26255    sReader.MatPairR\x08material\x12N\n\twall_info\x18\x08\x20\x01(\x0b21.Re\
26256    moteFortressReader.SiteRealizationBuildingWallR\x08wallInfo\x12Q\n\ntowe\
26257    r_info\x18\t\x20\x01(\x0b22.RemoteFortressReader.SiteRealizationBuilding\
26258    TowerR\ttowerInfo\x12V\n\x0btrench_info\x18\n\x20\x01(\x0b25.RemoteFortr\
26259    essReader.SiteRealizationBuildingTrenchesR\ntrenchInfo\x12\x12\n\x04type\
26260    \x18\x0b\x20\x01(\x05R\x04type\"\x82\x06\n\nRegionTile\x12\x1c\n\televat\
26261    ion\x18\x01\x20\x01(\x05R\televation\x12\x1a\n\x08rainfall\x18\x02\x20\
26262    \x01(\x05R\x08rainfall\x12\x1e\n\nvegetation\x18\x03\x20\x01(\x05R\nvege\
26263    tation\x12\x20\n\x0btemperature\x18\x04\x20\x01(\x05R\x0btemperature\x12\
26264    \x1a\n\x08evilness\x18\x05\x20\x01(\x05R\x08evilness\x12\x1a\n\x08draina\
26265    ge\x18\x06\x20\x01(\x05R\x08drainage\x12\x1c\n\tvolcanism\x18\x07\x20\
26266    \x01(\x05R\tvolcanism\x12\x1a\n\x08savagery\x18\x08\x20\x01(\x05R\x08sav\
26267    agery\x12\x1a\n\x08salinity\x18\t\x20\x01(\x05R\x08salinity\x12@\n\x0bri\
26268    ver_tiles\x18\n\x20\x01(\x0b2\x1f.RemoteFortressReader.RiverTileR\nriver\
26269    Tiles\x12'\n\x0fwater_elevation\x18\x0b\x20\x01(\x05R\x0ewaterElevation\
26270    \x12H\n\x10surface_material\x18\x0c\x20\x01(\x0b2\x1d.RemoteFortressRead\
26271    er.MatPairR\x0fsurfaceMaterial\x12F\n\x0fplant_materials\x18\r\x20\x03(\
26272    \x0b2\x1d.RemoteFortressReader.MatPairR\x0eplantMaterials\x12K\n\tbuildi\
26273    ngs\x18\x0e\x20\x03(\x0b2-.RemoteFortressReader.SiteRealizationBuildingR\
26274    \tbuildings\x12F\n\x0fstone_materials\x18\x0f\x20\x03(\x0b2\x1d.RemoteFo\
26275    rtressReader.MatPairR\x0estoneMaterials\x12D\n\x0etree_materials\x18\x10\
26276    \x20\x03(\x0b2\x1d.RemoteFortressReader.MatPairR\rtreeMaterials\x12\x12\
26277    \n\x04snow\x18\x11\x20\x01(\x05R\x04snow\"\xa4\x01\n\tRegionMap\x12\x13\
26278    \n\x05map_x\x18\x01\x20\x01(\x05R\x04mapX\x12\x13\n\x05map_y\x18\x02\x20\
26279    \x01(\x05R\x04mapY\x12\x12\n\x04name\x18\x03\x20\x01(\tR\x04name\x12!\n\
26280    \x0cname_english\x18\x04\x20\x01(\tR\x0bnameEnglish\x126\n\x05tiles\x18\
26281    \x05\x20\x03(\x0b2\x20.RemoteFortressReader.RegionTileR\x05tiles\"\x8d\
26282    \x01\n\nRegionMaps\x12=\n\nworld_maps\x18\x01\x20\x03(\x0b2\x1e.RemoteFo\
26283    rtressReader.WorldMapR\tworldMaps\x12@\n\x0bregion_maps\x18\x02\x20\x03(\
26284    \x0b2\x1f.RemoteFortressReader.RegionMapR\nregionMaps\"\x9f\x01\n\x11Pat\
26285    ternDescriptor\x12\x0e\n\x02id\x18\x01\x20\x01(\tR\x02id\x12=\n\x06color\
26286    s\x18\x02\x20\x03(\x0b2%.RemoteFortressReader.ColorDefinitionR\x06colors\
26287    \x12;\n\x07pattern\x18\x03\x20\x01(\x0e2!.RemoteFortressReader.PatternTy\
26288    peR\x07pattern\"\xef\x01\n\x10ColorModifierRaw\x12C\n\x08patterns\x18\
26289    \x01\x20\x03(\x0b2'.RemoteFortressReader.PatternDescriptorR\x08patterns\
26290    \x12\x20\n\x0cbody_part_id\x18\x02\x20\x03(\x05R\nbodyPartId\x12&\n\x0ft\
26291    issue_layer_id\x18\x03\x20\x03(\x05R\rtissueLayerId\x12\x1d\n\nstart_dat\
26292    e\x18\x04\x20\x01(\x05R\tstartDate\x12\x19\n\x08end_date\x18\x05\x20\x01\
26293    (\x05R\x07endDate\x12\x12\n\x04part\x18\x06\x20\x01(\tR\x04part\"\x92\
26294    \x01\n\x10BodyPartLayerRaw\x12\x1d\n\nlayer_name\x18\x01\x20\x01(\tR\tla\
26295    yerName\x12\x1b\n\ttissue_id\x18\x02\x20\x01(\x05R\x08tissueId\x12\x1f\n\
26296    \x0blayer_depth\x18\x03\x20\x01(\x05R\nlayerDepth\x12!\n\x0cbp_modifiers\
26297    \x18\x04\x20\x03(\x05R\x0bbpModifiers\"\xc7\x01\n\x0bBodyPartRaw\x12\x14\
26298    \n\x05token\x18\x01\x20\x01(\tR\x05token\x12\x1a\n\x08category\x18\x02\
26299    \x20\x01(\tR\x08category\x12\x16\n\x06parent\x18\x03\x20\x01(\x05R\x06pa\
26300    rent\x12\x14\n\x05flags\x18\x04\x20\x03(\x08R\x05flags\x12>\n\x06layers\
26301    \x18\x05\x20\x03(\x0b2&.RemoteFortressReader.BodyPartLayerRawR\x06layers\
26302    \x12\x18\n\x07relsize\x18\x06\x20\x01(\x05R\x07relsize\"\\\n\x14BpAppear\
26303    anceModifier\x12\x12\n\x04type\x18\x01\x20\x01(\tR\x04type\x12\x17\n\x07\
26304    mod_min\x18\x02\x20\x01(\x05R\x06modMin\x12\x17\n\x07mod_max\x18\x03\x20\
26305    \x01(\x05R\x06modMax\"\x9e\x01\n\tTissueRaw\x12\x0e\n\x02id\x18\x01\x20\
26306    \x01(\tR\x02id\x12\x12\n\x04name\x18\x02\x20\x01(\tR\x04name\x129\n\x08m\
26307    aterial\x18\x03\x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x08mater\
26308    ial\x122\n\x15subordinate_to_tissue\x18\x04\x20\x01(\tR\x13subordinateTo\
26309    Tissue\"\xb4\x05\n\x08CasteRaw\x12\x14\n\x05index\x18\x01\x20\x01(\x05R\
26310    \x05index\x12\x19\n\x08caste_id\x18\x02\x20\x01(\tR\x07casteId\x12\x1d\n\
26311    \ncaste_name\x18\x03\x20\x03(\tR\tcasteName\x12\x1b\n\tbaby_name\x18\x04\
26312    \x20\x03(\tR\x08babyName\x12\x1d\n\nchild_name\x18\x05\x20\x03(\tR\tchil\
26313    dName\x12\x16\n\x06gender\x18\x06\x20\x01(\x05R\x06gender\x12@\n\nbody_p\
26314    arts\x18\x07\x20\x03(\x0b2!.RemoteFortressReader.BodyPartRawR\tbodyParts\
26315    \x12#\n\rtotal_relsize\x18\x08\x20\x01(\x05R\x0ctotalRelsize\x12H\n\tmod\
26316    ifiers\x18\t\x20\x03(\x0b2*.RemoteFortressReader.BpAppearanceModifierR\t\
26317    modifiers\x12!\n\x0cmodifier_idx\x18\n\x20\x03(\x05R\x0bmodifierIdx\x12\
26318    \x19\n\x08part_idx\x18\x0b\x20\x03(\x05R\x07partIdx\x12\x1b\n\tlayer_idx\
26319    \x18\x0c\x20\x03(\x05R\x08layerIdx\x12f\n\x19body_appearance_modifiers\
26320    \x18\r\x20\x03(\x0b2*.RemoteFortressReader.BpAppearanceModifierR\x17body\
26321    AppearanceModifiers\x12O\n\x0fcolor_modifiers\x18\x0e\x20\x03(\x0b2&.Rem\
26322    oteFortressReader.ColorModifierRawR\x0ecolorModifiers\x12\x20\n\x0bdescr\
26323    iption\x18\x0f\x20\x01(\tR\x0bdescription\x12\x1d\n\nadult_size\x18\x10\
26324    \x20\x01(\x05R\tadultSize\"\xed\x03\n\x0bCreatureRaw\x12\x14\n\x05index\
26325    \x18\x01\x20\x01(\x05R\x05index\x12\x1f\n\x0bcreature_id\x18\x02\x20\x01\
26326    (\tR\ncreatureId\x12\x12\n\x04name\x18\x03\x20\x03(\tR\x04name\x12*\n\
26327    \x11general_baby_name\x18\x04\x20\x03(\tR\x0fgeneralBabyName\x12,\n\x12g\
26328    eneral_child_name\x18\x05\x20\x03(\tR\x10generalChildName\x12#\n\rcreatu\
26329    re_tile\x18\x06\x20\x01(\x05R\x0ccreatureTile\x122\n\x15creature_soldier\
26330    _tile\x18\x07\x20\x01(\x05R\x13creatureSoldierTile\x12;\n\x05color\x18\
26331    \x08\x20\x01(\x0b2%.RemoteFortressReader.ColorDefinitionR\x05color\x12\
26332    \x1c\n\tadultsize\x18\t\x20\x01(\x05R\tadultsize\x124\n\x05caste\x18\n\
26333    \x20\x03(\x0b2\x1e.RemoteFortressReader.CasteRawR\x05caste\x129\n\x07tis\
26334    sues\x18\x0b\x20\x03(\x0b2\x1f.RemoteFortressReader.TissueRawR\x07tissue\
26335    s\x12\x14\n\x05flags\x18\x0c\x20\x03(\x08R\x05flags\"Y\n\x0fCreatureRawL\
26336    ist\x12F\n\rcreature_raws\x18\x01\x20\x03(\x0b2!.RemoteFortressReader.Cr\
26337    eatureRawR\x0ccreatureRaws\"\xe9\x01\n\x04Army\x12\x0e\n\x02id\x18\x01\
26338    \x20\x01(\x05R\x02id\x12\x13\n\x05pos_x\x18\x02\x20\x01(\x05R\x04posX\
26339    \x12\x13\n\x05pos_y\x18\x03\x20\x01(\x05R\x04posY\x12\x13\n\x05pos_z\x18\
26340    \x04\x20\x01(\x05R\x04posZ\x12<\n\x06leader\x18\x05\x20\x01(\x0b2$.Remot\
26341    eFortressReader.UnitDefinitionR\x06leader\x12>\n\x07members\x18\x06\x20\
26342    \x03(\x0b2$.RemoteFortressReader.UnitDefinitionR\x07members\x12\x14\n\
26343    \x05flags\x18\x07\x20\x01(\rR\x05flags\">\n\x08ArmyList\x122\n\x06armies\
26344    \x18\x01\x20\x03(\x0b2\x1a.RemoteFortressReader.ArmyR\x06armies\"\x95\
26345    \x01\n\x0bGrowthPrint\x12\x1a\n\x08priority\x18\x01\x20\x01(\x05R\x08pri\
26346    ority\x12\x14\n\x05color\x18\x02\x20\x01(\x05R\x05color\x12!\n\x0ctiming\
26347    _start\x18\x03\x20\x01(\x05R\x0btimingStart\x12\x1d\n\ntiming_end\x18\
26348    \x04\x20\x01(\x05R\ttimingEnd\x12\x12\n\x04tile\x18\x05\x20\x01(\x05R\
26349    \x04tile\"\x88\x04\n\nTreeGrowth\x12\x14\n\x05index\x18\x01\x20\x01(\x05\
26350    R\x05index\x12\x0e\n\x02id\x18\x02\x20\x01(\tR\x02id\x12\x12\n\x04name\
26351    \x18\x03\x20\x01(\tR\x04name\x12/\n\x03mat\x18\x04\x20\x01(\x0b2\x1d.Rem\
26352    oteFortressReader.MatPairR\x03mat\x129\n\x06prints\x18\x05\x20\x03(\x0b2\
26353    !.RemoteFortressReader.GrowthPrintR\x06prints\x12!\n\x0ctiming_start\x18\
26354    \x06\x20\x01(\x05R\x0btimingStart\x12\x1d\n\ntiming_end\x18\x07\x20\x01(\
26355    \x05R\ttimingEnd\x12\x14\n\x05twigs\x18\x08\x20\x01(\x08R\x05twigs\x12%\
26356    \n\x0elight_branches\x18\t\x20\x01(\x08R\rlightBranches\x12%\n\x0eheavy_\
26357    branches\x18\n\x20\x01(\x08R\rheavyBranches\x12\x14\n\x05trunk\x18\x0b\
26358    \x20\x01(\x08R\x05trunk\x12\x14\n\x05roots\x18\x0c\x20\x01(\x08R\x05root\
26359    s\x12\x10\n\x03cap\x18\r\x20\x01(\x08R\x03cap\x12\x18\n\x07sapling\x18\
26360    \x0e\x20\x01(\x08R\x07sapling\x12,\n\x12trunk_height_start\x18\x0f\x20\
26361    \x01(\x05R\x10trunkHeightStart\x12(\n\x10trunk_height_end\x18\x10\x20\
26362    \x01(\x05R\x0etrunkHeightEnd\"\x94\x01\n\x08PlantRaw\x12\x14\n\x05index\
26363    \x18\x01\x20\x01(\x05R\x05index\x12\x0e\n\x02id\x18\x02\x20\x01(\tR\x02i\
26364    d\x12\x12\n\x04name\x18\x03\x20\x01(\tR\x04name\x12:\n\x07growths\x18\
26365    \x04\x20\x03(\x0b2\x20.RemoteFortressReader.TreeGrowthR\x07growths\x12\
26366    \x12\n\x04tile\x18\x05\x20\x01(\x05R\x04tile\"M\n\x0cPlantRawList\x12=\n\
26367    \nplant_raws\x18\x01\x20\x03(\x0b2\x1e.RemoteFortressReader.PlantRawR\tp\
26368    lantRaws\"j\n\nScreenTile\x12\x1c\n\tcharacter\x18\x01\x20\x01(\rR\tchar\
26369    acter\x12\x1e\n\nforeground\x18\x02\x20\x01(\rR\nforeground\x12\x1e\n\nb\
26370    ackground\x18\x03\x20\x01(\rR\nbackground\"u\n\rScreenCapture\x12\x14\n\
26371    \x05width\x18\x01\x20\x01(\rR\x05width\x12\x16\n\x06height\x18\x02\x20\
26372    \x01(\rR\x06height\x126\n\x05tiles\x18\x03\x20\x03(\x0b2\x20.RemoteFortr\
26373    essReader.ScreenTileR\x05tiles\"\xa9\x01\n\rKeyboardEvent\x12\x12\n\x04t\
26374    ype\x18\x01\x20\x01(\rR\x04type\x12\x14\n\x05which\x18\x02\x20\x01(\rR\
26375    \x05which\x12\x14\n\x05state\x18\x03\x20\x01(\rR\x05state\x12\x1a\n\x08s\
26376    cancode\x18\x04\x20\x01(\rR\x08scancode\x12\x10\n\x03sym\x18\x05\x20\x01\
26377    (\rR\x03sym\x12\x10\n\x03mod\x18\x06\x20\x01(\rR\x03mod\x12\x18\n\x07uni\
26378    code\x18\x07\x20\x01(\rR\x07unicode\"\x93\x01\n\nDigCommand\x12J\n\x0bde\
26379    signation\x18\x01\x20\x01(\x0e2(.RemoteFortressReader.TileDigDesignation\
26380    R\x0bdesignation\x129\n\tlocations\x18\x02\x20\x03(\x0b2\x1b.RemoteFortr\
26381    essReader.CoordR\tlocations\"\"\n\nSingleBool\x12\x14\n\x05Value\x18\x01\
26382    \x20\x01(\x08R\x05Value\"\xaf\x01\n\x0bVersionInfo\x124\n\x16dwarf_fortr\
26383    ess_version\x18\x01\x20\x01(\tR\x14dwarfFortressVersion\x12%\n\x0edfhack\
26384    _version\x18\x02\x20\x01(\tR\rdfhackVersion\x12C\n\x1eremote_fortress_re\
26385    ader_version\x18\x03\x20\x01(\tR\x1bremoteFortressReaderVersion\"G\n\x0b\
26386    ListRequest\x12\x1d\n\nlist_start\x18\x01\x20\x01(\x05R\tlistStart\x12\
26387    \x19\n\x08list_end\x18\x02\x20\x01(\x05R\x07listEnd\"\xfd\x02\n\x06Repor\
26388    t\x12\x12\n\x04type\x18\x01\x20\x01(\x05R\x04type\x12\x12\n\x04text\x18\
26389    \x02\x20\x01(\tR\x04text\x12;\n\x05color\x18\x03\x20\x01(\x0b2%.RemoteFo\
26390    rtressReader.ColorDefinitionR\x05color\x12\x1a\n\x08duration\x18\x04\x20\
26391    \x01(\x05R\x08duration\x12\"\n\x0ccontinuation\x18\x05\x20\x01(\x08R\x0c\
26392    continuation\x12\x20\n\x0bunconscious\x18\x06\x20\x01(\x08R\x0bunconscio\
26393    us\x12\"\n\x0cannouncement\x18\x07\x20\x01(\x08R\x0cannouncement\x12!\n\
26394    \x0crepeat_count\x18\x08\x20\x01(\x05R\x0brepeatCount\x12-\n\x03pos\x18\
26395    \t\x20\x01(\x0b2\x1b.RemoteFortressReader.CoordR\x03pos\x12\x0e\n\x02id\
26396    \x18\n\x20\x01(\x05R\x02id\x12\x12\n\x04year\x18\x0b\x20\x01(\x05R\x04ye\
26397    ar\x12\x12\n\x04time\x18\x0c\x20\x01(\x05R\x04time\"@\n\x06Status\x126\n\
26398    \x07reports\x18\x01\x20\x03(\x0b2\x1c.RemoteFortressReader.ReportR\x07re\
26399    ports\"6\n\x10ShapeDescriptior\x12\x0e\n\x02id\x18\x01\x20\x01(\tR\x02id\
26400    \x12\x12\n\x04tile\x18\x02\x20\x01(\x05R\x04tile\"J\n\x08Language\x12>\n\
26401    \x06shapes\x18\x01\x20\x03(\x0b2&.RemoteFortressReader.ShapeDescriptiorR\
26402    \x06shapes\"\xd1\x01\n\x0fItemImprovement\x129\n\x08material\x18\x01\x20\
26403    \x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x08material\x12\x14\n\x05sh\
26404    ape\x18\x03\x20\x01(\x05R\x05shape\x12#\n\rspecific_type\x18\x04\x20\x01\
26405    (\x05R\x0cspecificType\x124\n\x05image\x18\x05\x20\x01(\x0b2\x1e.RemoteF\
26406    ortressReader.ArtImageR\x05image\x12\x12\n\x04type\x18\x06\x20\x01(\x05R\
26407    \x04type\"\xf5\x01\n\x0fArtImageElement\x12\x14\n\x05count\x18\x01\x20\
26408    \x01(\x05R\x05count\x12=\n\x04type\x18\x02\x20\x01(\x0e2).RemoteFortress\
26409    Reader.ArtImageElementTypeR\x04type\x12B\n\rcreature_item\x18\x03\x20\
26410    \x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x0ccreatureItem\x129\n\x08m\
26411    aterial\x18\x05\x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x08mater\
26412    ial\x12\x0e\n\x02id\x18\x06\x20\x01(\x05R\x02id\"\xbc\x01\n\x10ArtImageP\
26413    roperty\x12\x18\n\x07subject\x18\x01\x20\x01(\x05R\x07subject\x12\x16\n\
26414    \x06object\x18\x02\x20\x01(\x05R\x06object\x126\n\x04verb\x18\x03\x20\
26415    \x01(\x0e2\".RemoteFortressReader.ArtImageVerbR\x04verb\x12>\n\x04type\
26416    \x18\x04\x20\x01(\x0e2*.RemoteFortressReader.ArtImagePropertyTypeR\x04ty\
26417    pe\"\xc4\x01\n\x08ArtImage\x12A\n\x08elements\x18\x01\x20\x03(\x0b2%.Rem\
26418    oteFortressReader.ArtImageElementR\x08elements\x12-\n\x02id\x18\x02\x20\
26419    \x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x02id\x12F\n\nproperties\
26420    \x18\x03\x20\x03(\x0b2&.RemoteFortressReader.ArtImagePropertyR\nproperti\
26421    es\"\x98\x03\n\tEngraving\x12-\n\x03pos\x18\x01\x20\x01(\x0b2\x1b.Remote\
26422    FortressReader.CoordR\x03pos\x12\x18\n\x07quality\x18\x02\x20\x01(\x05R\
26423    \x07quality\x12\x12\n\x04tile\x18\x03\x20\x01(\x05R\x04tile\x124\n\x05im\
26424    age\x18\x04\x20\x01(\x0b2\x1e.RemoteFortressReader.ArtImageR\x05image\
26425    \x12\x14\n\x05floor\x18\x05\x20\x01(\x08R\x05floor\x12\x12\n\x04west\x18\
26426    \x06\x20\x01(\x08R\x04west\x12\x12\n\x04east\x18\x07\x20\x01(\x08R\x04ea\
26427    st\x12\x14\n\x05north\x18\x08\x20\x01(\x08R\x05north\x12\x14\n\x05south\
26428    \x18\t\x20\x01(\x08R\x05south\x12\x16\n\x06hidden\x18\n\x20\x01(\x08R\
26429    \x06hidden\x12\x1c\n\tnorthwest\x18\x0b\x20\x01(\x08R\tnorthwest\x12\x1c\
26430    \n\tnortheast\x18\x0c\x20\x01(\x08R\tnortheast\x12\x1c\n\tsouthwest\x18\
26431    \r\x20\x01(\x08R\tsouthwest\x12\x1c\n\tsoutheast\x18\x0e\x20\x01(\x08R\t\
26432    southeast\"\x8b\x03\n\x08FlowInfo\x12\x14\n\x05index\x18\x01\x20\x01(\
26433    \x05R\x05index\x122\n\x04type\x18\x02\x20\x01(\x0e2\x1e.RemoteFortressRe\
26434    ader.FlowTypeR\x04type\x12\x18\n\x07density\x18\x03\x20\x01(\x05R\x07den\
26435    sity\x12-\n\x03pos\x18\x04\x20\x01(\x0b2\x1b.RemoteFortressReader.CoordR\
26436    \x03pos\x12/\n\x04dest\x18\x05\x20\x01(\x0b2\x1b.RemoteFortressReader.Co\
26437    ordR\x04dest\x12\x1c\n\texpanding\x18\x06\x20\x01(\x08R\texpanding\x12\
26438    \x14\n\x05reuse\x18\x07\x20\x01(\x08R\x05reuse\x12\x19\n\x08guide_id\x18\
26439    \x08\x20\x01(\x05R\x07guideId\x129\n\x08material\x18\t\x20\x01(\x0b2\x1d\
26440    .RemoteFortressReader.MatPairR\x08material\x121\n\x04item\x18\n\x20\x01(\
26441    \x0b2\x1d.RemoteFortressReader.MatPairR\x04item\"f\n\x04Wave\x12/\n\x04d\
26442    est\x18\x01\x20\x01(\x0b2\x1b.RemoteFortressReader.CoordR\x04dest\x12-\n\
26443    \x03pos\x18\x02\x20\x01(\x0b2\x1b.RemoteFortressReader.CoordR\x03pos*\
26444    \xba\x02\n\rTiletypeShape\x12\x15\n\x08NO_SHAPE\x10\xff\xff\xff\xff\xff\
26445    \xff\xff\xff\xff\x01\x12\t\n\x05EMPTY\x10\0\x12\t\n\x05FLOOR\x10\x01\x12\
26446    \x0b\n\x07BOULDER\x10\x02\x12\x0b\n\x07PEBBLES\x10\x03\x12\x08\n\x04WALL\
26447    \x10\x04\x12\x11\n\rFORTIFICATION\x10\x05\x12\x0c\n\x08STAIR_UP\x10\x06\
26448    \x12\x0e\n\nSTAIR_DOWN\x10\x07\x12\x10\n\x0cSTAIR_UPDOWN\x10\x08\x12\x08\
26449    \n\x04RAMP\x10\t\x12\x0c\n\x08RAMP_TOP\x10\n\x12\r\n\tBROOK_BED\x10\x0b\
26450    \x12\r\n\tBROOK_TOP\x10\x0c\x12\x0e\n\nTREE_SHAPE\x10\r\x12\x0b\n\x07SAP\
26451    LING\x10\x0e\x12\t\n\x05SHRUB\x10\x0f\x12\x0f\n\x0bENDLESS_PIT\x10\x10\
26452    \x12\n\n\x06BRANCH\x10\x11\x12\x10\n\x0cTRUNK_BRANCH\x10\x12\x12\x08\n\
26453    \x04TWIG\x10\x13*\xc4\x01\n\x0fTiletypeSpecial\x12\x17\n\nNO_SPECIAL\x10\
26454    \xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\n\n\x06NORMAL\x10\0\x12\x10\
26455    \n\x0cRIVER_SOURCE\x10\x01\x12\r\n\tWATERFALL\x10\x02\x12\n\n\x06SMOOTH\
26456    \x10\x03\x12\x0c\n\x08FURROWED\x10\x04\x12\x07\n\x03WET\x10\x05\x12\x08\
26457    \n\x04DEAD\x10\x06\x12\n\n\x06WORN_1\x10\x07\x12\n\n\x06WORN_2\x10\x08\
26458    \x12\n\n\x06WORN_3\x10\t\x12\t\n\x05TRACK\x10\n\x12\x0f\n\x0bSMOOTH_DEAD\
26459    \x10\x0b*\x8a\x03\n\x10TiletypeMaterial\x12\x18\n\x0bNO_MATERIAL\x10\xff\
26460    \xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\x07\n\x03AIR\x10\0\x12\x08\n\
26461    \x04SOIL\x10\x01\x12\t\n\x05STONE\x10\x02\x12\x0b\n\x07FEATURE\x10\x03\
26462    \x12\x0e\n\nLAVA_STONE\x10\x04\x12\x0b\n\x07MINERAL\x10\x05\x12\x11\n\rF\
26463    ROZEN_LIQUID\x10\x06\x12\x10\n\x0cCONSTRUCTION\x10\x07\x12\x0f\n\x0bGRAS\
26464    S_LIGHT\x10\x08\x12\x0e\n\nGRASS_DARK\x10\t\x12\r\n\tGRASS_DRY\x10\n\x12\
26465    \x0e\n\nGRASS_DEAD\x10\x0b\x12\t\n\x05PLANT\x10\x0c\x12\x07\n\x03HFS\x10\
26466    \r\x12\x0c\n\x08CAMPFIRE\x10\x0e\x12\x08\n\x04FIRE\x10\x0f\x12\t\n\x05AS\
26467    HES\x10\x10\x12\t\n\x05MAGMA\x10\x11\x12\r\n\tDRIFTWOOD\x10\x12\x12\x08\
26468    \n\x04POOL\x10\x13\x12\t\n\x05BROOK\x10\x14\x12\t\n\x05RIVER\x10\x15\x12\
26469    \x08\n\x04ROOT\x10\x16\x12\x11\n\rTREE_MATERIAL\x10\x17\x12\x0c\n\x08MUS\
26470    HROOM\x10\x18\x12\x13\n\x0fUNDERWORLD_GATE\x10\x19*V\n\x0fTiletypeVarian\
26471    t\x12\x17\n\nNO_VARIANT\x10\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\
26472    \t\n\x05VAR_1\x10\0\x12\t\n\x05VAR_2\x10\x01\x12\t\n\x05VAR_3\x10\x02\
26473    \x12\t\n\x05VAR_4\x10\x03*J\n\nWorldPoles\x12\x0c\n\x08NO_POLES\x10\0\
26474    \x12\x0e\n\nNORTH_POLE\x10\x01\x12\x0e\n\nSOUTH_POLE\x10\x02\x12\x0e\n\n\
26475    BOTH_POLES\x10\x03*G\n\x11BuildingDirection\x12\t\n\x05NORTH\x10\0\x12\
26476    \x08\n\x04EAST\x10\x01\x12\t\n\x05SOUTH\x10\x02\x12\x08\n\x04WEST\x10\
26477    \x03\x12\x08\n\x04NONE\x10\x04*\x8d\x01\n\x12TileDigDesignation\x12\n\n\
26478    \x06NO_DIG\x10\0\x12\x0f\n\x0bDEFAULT_DIG\x10\x01\x12\x15\n\x11UP_DOWN_S\
26479    TAIR_DIG\x10\x02\x12\x0f\n\x0bCHANNEL_DIG\x10\x03\x12\x0c\n\x08RAMP_DIG\
26480    \x10\x04\x12\x12\n\x0eDOWN_STAIR_DIG\x10\x05\x12\x10\n\x0cUP_STAIR_DIG\
26481    \x10\x06*u\n\tHairStyle\x12\x14\n\x07UNKEMPT\x10\xff\xff\xff\xff\xff\xff\
26482    \xff\xff\xff\x01\x12\x11\n\rNEATLY_COMBED\x10\0\x12\x0b\n\x07BRAIDED\x10\
26483    \x01\x12\x10\n\x0cDOUBLE_BRAID\x10\x02\x12\x0e\n\nPONY_TAILS\x10\x03\x12\
26484    \x10\n\x0cCLEAN_SHAVEN\x10\x04*\x9c\x01\n\rInventoryMode\x12\n\n\x06Haul\
26485    ed\x10\0\x12\n\n\x06Weapon\x10\x01\x12\x08\n\x04Worn\x10\x02\x12\x0c\n\
26486    \x08Piercing\x10\x03\x12\t\n\x05Flask\x10\x04\x12\x11\n\rWrappedAround\
26487    \x10\x05\x12\x0b\n\x07StuckIn\x10\x06\x12\x0b\n\x07InMouth\x10\x07\x12\
26488    \x07\n\x03Pet\x10\x08\x12\x0c\n\x08SewnInto\x10\t\x12\x0c\n\x08Strapped\
26489    \x10\n*O\n\nArmorLayer\x12\x0f\n\x0bLAYER_UNDER\x10\0\x12\x0e\n\nLAYER_O\
26490    VER\x10\x01\x12\x0f\n\x0bLAYER_ARMOR\x10\x02\x12\x0f\n\x0bLAYER_COVER\
26491    \x10\x03*Q\n\x0bMatterState\x12\t\n\x05Solid\x10\0\x12\n\n\x06Liquid\x10\
26492    \x01\x12\x07\n\x03Gas\x10\x02\x12\n\n\x06Powder\x10\x03\x12\t\n\x05Paste\
26493    \x10\x04\x12\x0b\n\x07Pressed\x10\x05*O\n\tFrontType\x12\x0e\n\nFRONT_NO\
26494    NE\x10\0\x12\x0e\n\nFRONT_WARM\x10\x01\x12\x0e\n\nFRONT_COLD\x10\x02\x12\
26495    \x12\n\x0eFRONT_OCCLUDED\x10\x03*Z\n\x0bCumulusType\x12\x10\n\x0cCUMULUS\
26496    _NONE\x10\0\x12\x12\n\x0eCUMULUS_MEDIUM\x10\x01\x12\x11\n\rCUMULUS_MULTI\
26497    \x10\x02\x12\x12\n\x0eCUMULUS_NIMBUS\x10\x03*Y\n\x0bStratusType\x12\x10\
26498    \n\x0cSTRATUS_NONE\x10\0\x12\x10\n\x0cSTRATUS_ALTO\x10\x01\x12\x12\n\x0e\
26499    STRATUS_PROPER\x10\x02\x12\x12\n\x0eSTRATUS_NIMBUS\x10\x03*D\n\x07FogTyp\
26500    e\x12\x0c\n\x08FOG_NONE\x10\0\x12\x0c\n\x08FOG_MIST\x10\x01\x12\x0e\n\nF\
26501    OG_NORMAL\x10\x02\x12\r\n\tF0G_THICK\x10\x03*]\n\x0bPatternType\x12\x0c\
26502    \n\x08MONOTONE\x10\0\x12\x0b\n\x07STRIPES\x10\x01\x12\x0c\n\x08IRIS_EYE\
26503    \x10\x02\x12\t\n\x05SPOTS\x10\x03\x12\r\n\tPUPIL_EYE\x10\x04\x12\x0b\n\
26504    \x07MOTTLED\x10\x05*k\n\x13ArtImageElementType\x12\x12\n\x0eIMAGE_CREATU\
26505    RE\x10\0\x12\x0f\n\x0bIMAGE_PLANT\x10\x01\x12\x0e\n\nIMAGE_TREE\x10\x02\
26506    \x12\x0f\n\x0bIMAGE_SHAPE\x10\x03\x12\x0e\n\nIMAGE_ITEM\x10\x04*B\n\x14A\
26507    rtImagePropertyType\x12\x13\n\x0fTRANSITIVE_VERB\x10\0\x12\x15\n\x11INTR\
26508    ANSITIVE_VERB\x10\x01*\x95\x08\n\x0cArtImageVerb\x12\x12\n\x0eVERB_WITHE\
26509    RING\x10\0\x12\x15\n\x11VERB_SURROUNDEDBY\x10\x01\x12\x13\n\x0fVERB_MASS\
26510    ACRING\x10\x02\x12\x11\n\rVERB_FIGHTING\x10\x03\x12\x11\n\rVERB_LABORING\
26511    \x10\x04\x12\x11\n\rVERB_GREETING\x10\x05\x12\x11\n\rVERB_REFUSING\x10\
26512    \x06\x12\x11\n\rVERB_SPEAKING\x10\x07\x12\x12\n\x0eVERB_EMBRACING\x10\
26513    \x08\x12\x15\n\x11VERB_STRIKINGDOWN\x10\t\x12\x15\n\x11VERB_MENACINGPOSE\
26514    \x10\n\x12\x12\n\x0eVERB_TRAVELING\x10\x0b\x12\x10\n\x0cVERB_RAISING\x10\
26515    \x0c\x12\x0f\n\x0bVERB_HIDING\x10\r\x12\x18\n\x14VERB_LOOKINGCONFUSED\
26516    \x10\x0e\x12\x19\n\x15VERB_LOOKINGTERRIFIED\x10\x0f\x12\x12\n\x0eVERB_DE\
26517    VOURING\x10\x10\x12\x11\n\rVERB_ADMIRING\x10\x11\x12\x10\n\x0cVERB_BURNI\
26518    NG\x10\x12\x12\x10\n\x0cVERB_WEEPING\x10\x13\x12\x18\n\x14VERB_LOOKINGDE\
26519    JECTED\x10\x14\x12\x11\n\rVERB_CRINGING\x10\x15\x12\x12\n\x0eVERB_SCREAM\
26520    ING\x10\x16\x12\x1a\n\x16VERB_SUBMISSIVEGESTURE\x10\x17\x12\x16\n\x12VER\
26521    B_FETALPOSITION\x10\x18\x12\x1a\n\x16VERB_SMEAREDINTOSPIRAL\x10\x19\x12\
26522    \x10\n\x0cVERB_FALLING\x10\x1a\x12\r\n\tVERB_DEAD\x10\x1b\x12\x11\n\rVER\
26523    B_LAUGHING\x10\x1c\x12\x18\n\x14VERB_LOOKINGOFFENDED\x10\x1d\x12\x12\n\
26524    \x0eVERB_BEINGSHOT\x10\x1e\x12\x19\n\x15VERB_PLAINTIVEGESTURE\x10\x1f\
26525    \x12\x10\n\x0cVERB_MELTING\x10\x20\x12\x11\n\rVERB_SHOOTING\x10!\x12\x12\
26526    \n\x0eVERB_TORTURING\x10\"\x12\x1e\n\x1aVERB_COMMITTINGDEPRAVEDACT\x10#\
26527    \x12\x10\n\x0cVERB_PRAYING\x10$\x12\x16\n\x12VERB_CONTEMPLATING\x10%\x12\
26528    \x10\n\x0cVERB_COOKING\x10&\x12\x12\n\x0eVERB_ENGRAVING\x10'\x12\x14\n\
26529    \x10VERB_PROSTRATING\x10(\x12\x12\n\x0eVERB_SUFFERING\x10)\x12\x15\n\x11\
26530    VERB_BEINGIMPALED\x10*\x12\x17\n\x13VERB_BEINGCONTORTED\x10+\x12\x14\n\
26531    \x10VERB_BEINGFLAYED\x10,\x12\x14\n\x10VERB_HANGINGFROM\x10-\x12\x17\n\
26532    \x13VERB_BEINGMUTILATED\x10.\x12\x17\n\x13VERB_TRIUMPHANTPOSE\x10/*\xe0\
26533    \x01\n\x08FlowType\x12\n\n\x06Miasma\x10\0\x12\t\n\x05Steam\x10\x01\x12\
26534    \x08\n\x04Mist\x10\x02\x12\x10\n\x0cMaterialDust\x10\x03\x12\r\n\tMagmaM\
26535    ist\x10\x04\x12\t\n\x05Smoke\x10\x05\x12\x0e\n\nDragonfire\x10\x06\x12\
26536    \x08\n\x04Fire\x10\x07\x12\x07\n\x03Web\x10\x08\x12\x0f\n\x0bMaterialGas\
26537    \x10\t\x12\x11\n\rMaterialVapor\x10\n\x12\r\n\tOceanWave\x10\x0b\x12\x0b\
26538    \n\x07SeaFoam\x10\x0c\x12\r\n\tItemCloud\x10\r\x12\x15\n\x08CampFire\x10\
26539    \xff\xff\xff\xff\xff\xff\xff\xff\xff\x01B\x02H\x03b\x06proto2\
26540";
26541
26542/// `FileDescriptorProto` object which was a source for this generated file
26543fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
26544    static file_descriptor_proto_lazy: ::protobuf::rt::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::Lazy::new();
26545    file_descriptor_proto_lazy.get(|| {
26546        ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
26547    })
26548}
26549
26550/// `FileDescriptor` object which allows dynamic access to files
26551pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
26552    static generated_file_descriptor_lazy: ::protobuf::rt::Lazy<::protobuf::reflect::GeneratedFileDescriptor> = ::protobuf::rt::Lazy::new();
26553    static file_descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::FileDescriptor> = ::protobuf::rt::Lazy::new();
26554    file_descriptor.get(|| {
26555        let generated_file_descriptor = generated_file_descriptor_lazy.get(|| {
26556            let mut deps = ::std::vec::Vec::with_capacity(1);
26557            deps.push(super::ItemdefInstrument::file_descriptor().clone());
26558            let mut messages = ::std::vec::Vec::with_capacity(79);
26559            messages.push(Coord::generated_message_descriptor_data());
26560            messages.push(Tiletype::generated_message_descriptor_data());
26561            messages.push(TiletypeList::generated_message_descriptor_data());
26562            messages.push(BuildingExtents::generated_message_descriptor_data());
26563            messages.push(BuildingItem::generated_message_descriptor_data());
26564            messages.push(BuildingInstance::generated_message_descriptor_data());
26565            messages.push(RiverEdge::generated_message_descriptor_data());
26566            messages.push(RiverTile::generated_message_descriptor_data());
26567            messages.push(Spatter::generated_message_descriptor_data());
26568            messages.push(SpatterPile::generated_message_descriptor_data());
26569            messages.push(Item::generated_message_descriptor_data());
26570            messages.push(PlantTile::generated_message_descriptor_data());
26571            messages.push(TreeInfo::generated_message_descriptor_data());
26572            messages.push(PlantInstance::generated_message_descriptor_data());
26573            messages.push(MapBlock::generated_message_descriptor_data());
26574            messages.push(MatPair::generated_message_descriptor_data());
26575            messages.push(ColorDefinition::generated_message_descriptor_data());
26576            messages.push(MaterialDefinition::generated_message_descriptor_data());
26577            messages.push(BuildingType::generated_message_descriptor_data());
26578            messages.push(BuildingDefinition::generated_message_descriptor_data());
26579            messages.push(BuildingList::generated_message_descriptor_data());
26580            messages.push(MaterialList::generated_message_descriptor_data());
26581            messages.push(Hair::generated_message_descriptor_data());
26582            messages.push(BodySizeInfo::generated_message_descriptor_data());
26583            messages.push(UnitAppearance::generated_message_descriptor_data());
26584            messages.push(InventoryItem::generated_message_descriptor_data());
26585            messages.push(WoundPart::generated_message_descriptor_data());
26586            messages.push(UnitWound::generated_message_descriptor_data());
26587            messages.push(UnitDefinition::generated_message_descriptor_data());
26588            messages.push(UnitList::generated_message_descriptor_data());
26589            messages.push(BlockRequest::generated_message_descriptor_data());
26590            messages.push(BlockList::generated_message_descriptor_data());
26591            messages.push(PlantDef::generated_message_descriptor_data());
26592            messages.push(PlantList::generated_message_descriptor_data());
26593            messages.push(ViewInfo::generated_message_descriptor_data());
26594            messages.push(MapInfo::generated_message_descriptor_data());
26595            messages.push(Cloud::generated_message_descriptor_data());
26596            messages.push(WorldMap::generated_message_descriptor_data());
26597            messages.push(SiteRealizationBuildingWall::generated_message_descriptor_data());
26598            messages.push(SiteRealizationBuildingTower::generated_message_descriptor_data());
26599            messages.push(TrenchSpoke::generated_message_descriptor_data());
26600            messages.push(SiteRealizationBuildingTrenches::generated_message_descriptor_data());
26601            messages.push(SiteRealizationBuilding::generated_message_descriptor_data());
26602            messages.push(RegionTile::generated_message_descriptor_data());
26603            messages.push(RegionMap::generated_message_descriptor_data());
26604            messages.push(RegionMaps::generated_message_descriptor_data());
26605            messages.push(PatternDescriptor::generated_message_descriptor_data());
26606            messages.push(ColorModifierRaw::generated_message_descriptor_data());
26607            messages.push(BodyPartLayerRaw::generated_message_descriptor_data());
26608            messages.push(BodyPartRaw::generated_message_descriptor_data());
26609            messages.push(BpAppearanceModifier::generated_message_descriptor_data());
26610            messages.push(TissueRaw::generated_message_descriptor_data());
26611            messages.push(CasteRaw::generated_message_descriptor_data());
26612            messages.push(CreatureRaw::generated_message_descriptor_data());
26613            messages.push(CreatureRawList::generated_message_descriptor_data());
26614            messages.push(Army::generated_message_descriptor_data());
26615            messages.push(ArmyList::generated_message_descriptor_data());
26616            messages.push(GrowthPrint::generated_message_descriptor_data());
26617            messages.push(TreeGrowth::generated_message_descriptor_data());
26618            messages.push(PlantRaw::generated_message_descriptor_data());
26619            messages.push(PlantRawList::generated_message_descriptor_data());
26620            messages.push(ScreenTile::generated_message_descriptor_data());
26621            messages.push(ScreenCapture::generated_message_descriptor_data());
26622            messages.push(KeyboardEvent::generated_message_descriptor_data());
26623            messages.push(DigCommand::generated_message_descriptor_data());
26624            messages.push(SingleBool::generated_message_descriptor_data());
26625            messages.push(VersionInfo::generated_message_descriptor_data());
26626            messages.push(ListRequest::generated_message_descriptor_data());
26627            messages.push(Report::generated_message_descriptor_data());
26628            messages.push(Status::generated_message_descriptor_data());
26629            messages.push(ShapeDescriptior::generated_message_descriptor_data());
26630            messages.push(Language::generated_message_descriptor_data());
26631            messages.push(ItemImprovement::generated_message_descriptor_data());
26632            messages.push(ArtImageElement::generated_message_descriptor_data());
26633            messages.push(ArtImageProperty::generated_message_descriptor_data());
26634            messages.push(ArtImage::generated_message_descriptor_data());
26635            messages.push(Engraving::generated_message_descriptor_data());
26636            messages.push(FlowInfo::generated_message_descriptor_data());
26637            messages.push(Wave::generated_message_descriptor_data());
26638            let mut enums = ::std::vec::Vec::with_capacity(20);
26639            enums.push(TiletypeShape::generated_enum_descriptor_data());
26640            enums.push(TiletypeSpecial::generated_enum_descriptor_data());
26641            enums.push(TiletypeMaterial::generated_enum_descriptor_data());
26642            enums.push(TiletypeVariant::generated_enum_descriptor_data());
26643            enums.push(WorldPoles::generated_enum_descriptor_data());
26644            enums.push(BuildingDirection::generated_enum_descriptor_data());
26645            enums.push(TileDigDesignation::generated_enum_descriptor_data());
26646            enums.push(HairStyle::generated_enum_descriptor_data());
26647            enums.push(InventoryMode::generated_enum_descriptor_data());
26648            enums.push(ArmorLayer::generated_enum_descriptor_data());
26649            enums.push(MatterState::generated_enum_descriptor_data());
26650            enums.push(FrontType::generated_enum_descriptor_data());
26651            enums.push(CumulusType::generated_enum_descriptor_data());
26652            enums.push(StratusType::generated_enum_descriptor_data());
26653            enums.push(FogType::generated_enum_descriptor_data());
26654            enums.push(PatternType::generated_enum_descriptor_data());
26655            enums.push(ArtImageElementType::generated_enum_descriptor_data());
26656            enums.push(ArtImagePropertyType::generated_enum_descriptor_data());
26657            enums.push(ArtImageVerb::generated_enum_descriptor_data());
26658            enums.push(FlowType::generated_enum_descriptor_data());
26659            ::protobuf::reflect::GeneratedFileDescriptor::new_generated(
26660                file_descriptor_proto(),
26661                deps,
26662                messages,
26663                enums,
26664            )
26665        });
26666        ::protobuf::reflect::FileDescriptor::new_generated_2(generated_file_descriptor)
26667    })
26668}