Skip to main content

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    // @@protoc_insertion_point(field:RemoteFortressReader.BlockRequest.force_reload)
8978    pub force_reload: ::std::option::Option<bool>,
8979    // special fields
8980    // @@protoc_insertion_point(special_field:RemoteFortressReader.BlockRequest.special_fields)
8981    pub special_fields: ::protobuf::SpecialFields,
8982}
8983
8984impl<'a> ::std::default::Default for &'a BlockRequest {
8985    fn default() -> &'a BlockRequest {
8986        <BlockRequest as ::protobuf::Message>::default_instance()
8987    }
8988}
8989
8990impl BlockRequest {
8991    pub fn new() -> BlockRequest {
8992        ::std::default::Default::default()
8993    }
8994
8995    // optional int32 blocks_needed = 1;
8996
8997    pub fn blocks_needed(&self) -> i32 {
8998        self.blocks_needed.unwrap_or(0)
8999    }
9000
9001    pub fn clear_blocks_needed(&mut self) {
9002        self.blocks_needed = ::std::option::Option::None;
9003    }
9004
9005    pub fn has_blocks_needed(&self) -> bool {
9006        self.blocks_needed.is_some()
9007    }
9008
9009    // Param is passed by value, moved
9010    pub fn set_blocks_needed(&mut self, v: i32) {
9011        self.blocks_needed = ::std::option::Option::Some(v);
9012    }
9013
9014    // optional int32 min_x = 2;
9015
9016    pub fn min_x(&self) -> i32 {
9017        self.min_x.unwrap_or(0)
9018    }
9019
9020    pub fn clear_min_x(&mut self) {
9021        self.min_x = ::std::option::Option::None;
9022    }
9023
9024    pub fn has_min_x(&self) -> bool {
9025        self.min_x.is_some()
9026    }
9027
9028    // Param is passed by value, moved
9029    pub fn set_min_x(&mut self, v: i32) {
9030        self.min_x = ::std::option::Option::Some(v);
9031    }
9032
9033    // optional int32 max_x = 3;
9034
9035    pub fn max_x(&self) -> i32 {
9036        self.max_x.unwrap_or(0)
9037    }
9038
9039    pub fn clear_max_x(&mut self) {
9040        self.max_x = ::std::option::Option::None;
9041    }
9042
9043    pub fn has_max_x(&self) -> bool {
9044        self.max_x.is_some()
9045    }
9046
9047    // Param is passed by value, moved
9048    pub fn set_max_x(&mut self, v: i32) {
9049        self.max_x = ::std::option::Option::Some(v);
9050    }
9051
9052    // optional int32 min_y = 4;
9053
9054    pub fn min_y(&self) -> i32 {
9055        self.min_y.unwrap_or(0)
9056    }
9057
9058    pub fn clear_min_y(&mut self) {
9059        self.min_y = ::std::option::Option::None;
9060    }
9061
9062    pub fn has_min_y(&self) -> bool {
9063        self.min_y.is_some()
9064    }
9065
9066    // Param is passed by value, moved
9067    pub fn set_min_y(&mut self, v: i32) {
9068        self.min_y = ::std::option::Option::Some(v);
9069    }
9070
9071    // optional int32 max_y = 5;
9072
9073    pub fn max_y(&self) -> i32 {
9074        self.max_y.unwrap_or(0)
9075    }
9076
9077    pub fn clear_max_y(&mut self) {
9078        self.max_y = ::std::option::Option::None;
9079    }
9080
9081    pub fn has_max_y(&self) -> bool {
9082        self.max_y.is_some()
9083    }
9084
9085    // Param is passed by value, moved
9086    pub fn set_max_y(&mut self, v: i32) {
9087        self.max_y = ::std::option::Option::Some(v);
9088    }
9089
9090    // optional int32 min_z = 6;
9091
9092    pub fn min_z(&self) -> i32 {
9093        self.min_z.unwrap_or(0)
9094    }
9095
9096    pub fn clear_min_z(&mut self) {
9097        self.min_z = ::std::option::Option::None;
9098    }
9099
9100    pub fn has_min_z(&self) -> bool {
9101        self.min_z.is_some()
9102    }
9103
9104    // Param is passed by value, moved
9105    pub fn set_min_z(&mut self, v: i32) {
9106        self.min_z = ::std::option::Option::Some(v);
9107    }
9108
9109    // optional int32 max_z = 7;
9110
9111    pub fn max_z(&self) -> i32 {
9112        self.max_z.unwrap_or(0)
9113    }
9114
9115    pub fn clear_max_z(&mut self) {
9116        self.max_z = ::std::option::Option::None;
9117    }
9118
9119    pub fn has_max_z(&self) -> bool {
9120        self.max_z.is_some()
9121    }
9122
9123    // Param is passed by value, moved
9124    pub fn set_max_z(&mut self, v: i32) {
9125        self.max_z = ::std::option::Option::Some(v);
9126    }
9127
9128    // optional bool force_reload = 8;
9129
9130    pub fn force_reload(&self) -> bool {
9131        self.force_reload.unwrap_or(false)
9132    }
9133
9134    pub fn clear_force_reload(&mut self) {
9135        self.force_reload = ::std::option::Option::None;
9136    }
9137
9138    pub fn has_force_reload(&self) -> bool {
9139        self.force_reload.is_some()
9140    }
9141
9142    // Param is passed by value, moved
9143    pub fn set_force_reload(&mut self, v: bool) {
9144        self.force_reload = ::std::option::Option::Some(v);
9145    }
9146
9147    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
9148        let mut fields = ::std::vec::Vec::with_capacity(8);
9149        let mut oneofs = ::std::vec::Vec::with_capacity(0);
9150        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9151            "blocks_needed",
9152            |m: &BlockRequest| { &m.blocks_needed },
9153            |m: &mut BlockRequest| { &mut m.blocks_needed },
9154        ));
9155        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9156            "min_x",
9157            |m: &BlockRequest| { &m.min_x },
9158            |m: &mut BlockRequest| { &mut m.min_x },
9159        ));
9160        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9161            "max_x",
9162            |m: &BlockRequest| { &m.max_x },
9163            |m: &mut BlockRequest| { &mut m.max_x },
9164        ));
9165        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9166            "min_y",
9167            |m: &BlockRequest| { &m.min_y },
9168            |m: &mut BlockRequest| { &mut m.min_y },
9169        ));
9170        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9171            "max_y",
9172            |m: &BlockRequest| { &m.max_y },
9173            |m: &mut BlockRequest| { &mut m.max_y },
9174        ));
9175        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9176            "min_z",
9177            |m: &BlockRequest| { &m.min_z },
9178            |m: &mut BlockRequest| { &mut m.min_z },
9179        ));
9180        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9181            "max_z",
9182            |m: &BlockRequest| { &m.max_z },
9183            |m: &mut BlockRequest| { &mut m.max_z },
9184        ));
9185        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9186            "force_reload",
9187            |m: &BlockRequest| { &m.force_reload },
9188            |m: &mut BlockRequest| { &mut m.force_reload },
9189        ));
9190        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BlockRequest>(
9191            "BlockRequest",
9192            fields,
9193            oneofs,
9194        )
9195    }
9196}
9197
9198impl ::protobuf::Message for BlockRequest {
9199    const NAME: &'static str = "BlockRequest";
9200
9201    fn is_initialized(&self) -> bool {
9202        true
9203    }
9204
9205    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
9206        while let Some(tag) = is.read_raw_tag_or_eof()? {
9207            match tag {
9208                8 => {
9209                    self.blocks_needed = ::std::option::Option::Some(is.read_int32()?);
9210                },
9211                16 => {
9212                    self.min_x = ::std::option::Option::Some(is.read_int32()?);
9213                },
9214                24 => {
9215                    self.max_x = ::std::option::Option::Some(is.read_int32()?);
9216                },
9217                32 => {
9218                    self.min_y = ::std::option::Option::Some(is.read_int32()?);
9219                },
9220                40 => {
9221                    self.max_y = ::std::option::Option::Some(is.read_int32()?);
9222                },
9223                48 => {
9224                    self.min_z = ::std::option::Option::Some(is.read_int32()?);
9225                },
9226                56 => {
9227                    self.max_z = ::std::option::Option::Some(is.read_int32()?);
9228                },
9229                64 => {
9230                    self.force_reload = ::std::option::Option::Some(is.read_bool()?);
9231                },
9232                tag => {
9233                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
9234                },
9235            };
9236        }
9237        ::std::result::Result::Ok(())
9238    }
9239
9240    // Compute sizes of nested messages
9241    #[allow(unused_variables)]
9242    fn compute_size(&self) -> u64 {
9243        let mut my_size = 0;
9244        if let Some(v) = self.blocks_needed {
9245            my_size += ::protobuf::rt::int32_size(1, v);
9246        }
9247        if let Some(v) = self.min_x {
9248            my_size += ::protobuf::rt::int32_size(2, v);
9249        }
9250        if let Some(v) = self.max_x {
9251            my_size += ::protobuf::rt::int32_size(3, v);
9252        }
9253        if let Some(v) = self.min_y {
9254            my_size += ::protobuf::rt::int32_size(4, v);
9255        }
9256        if let Some(v) = self.max_y {
9257            my_size += ::protobuf::rt::int32_size(5, v);
9258        }
9259        if let Some(v) = self.min_z {
9260            my_size += ::protobuf::rt::int32_size(6, v);
9261        }
9262        if let Some(v) = self.max_z {
9263            my_size += ::protobuf::rt::int32_size(7, v);
9264        }
9265        if let Some(v) = self.force_reload {
9266            my_size += 1 + 1;
9267        }
9268        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
9269        self.special_fields.cached_size().set(my_size as u32);
9270        my_size
9271    }
9272
9273    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
9274        if let Some(v) = self.blocks_needed {
9275            os.write_int32(1, v)?;
9276        }
9277        if let Some(v) = self.min_x {
9278            os.write_int32(2, v)?;
9279        }
9280        if let Some(v) = self.max_x {
9281            os.write_int32(3, v)?;
9282        }
9283        if let Some(v) = self.min_y {
9284            os.write_int32(4, v)?;
9285        }
9286        if let Some(v) = self.max_y {
9287            os.write_int32(5, v)?;
9288        }
9289        if let Some(v) = self.min_z {
9290            os.write_int32(6, v)?;
9291        }
9292        if let Some(v) = self.max_z {
9293            os.write_int32(7, v)?;
9294        }
9295        if let Some(v) = self.force_reload {
9296            os.write_bool(8, v)?;
9297        }
9298        os.write_unknown_fields(self.special_fields.unknown_fields())?;
9299        ::std::result::Result::Ok(())
9300    }
9301
9302    fn special_fields(&self) -> &::protobuf::SpecialFields {
9303        &self.special_fields
9304    }
9305
9306    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
9307        &mut self.special_fields
9308    }
9309
9310    fn new() -> BlockRequest {
9311        BlockRequest::new()
9312    }
9313
9314    fn clear(&mut self) {
9315        self.blocks_needed = ::std::option::Option::None;
9316        self.min_x = ::std::option::Option::None;
9317        self.max_x = ::std::option::Option::None;
9318        self.min_y = ::std::option::Option::None;
9319        self.max_y = ::std::option::Option::None;
9320        self.min_z = ::std::option::Option::None;
9321        self.max_z = ::std::option::Option::None;
9322        self.force_reload = ::std::option::Option::None;
9323        self.special_fields.clear();
9324    }
9325
9326    fn default_instance() -> &'static BlockRequest {
9327        static instance: BlockRequest = BlockRequest {
9328            blocks_needed: ::std::option::Option::None,
9329            min_x: ::std::option::Option::None,
9330            max_x: ::std::option::Option::None,
9331            min_y: ::std::option::Option::None,
9332            max_y: ::std::option::Option::None,
9333            min_z: ::std::option::Option::None,
9334            max_z: ::std::option::Option::None,
9335            force_reload: ::std::option::Option::None,
9336            special_fields: ::protobuf::SpecialFields::new(),
9337        };
9338        &instance
9339    }
9340}
9341
9342impl ::protobuf::MessageFull for BlockRequest {
9343    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
9344        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
9345        descriptor.get(|| file_descriptor().message_by_package_relative_name("BlockRequest").unwrap()).clone()
9346    }
9347}
9348
9349impl ::std::fmt::Display for BlockRequest {
9350    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9351        ::protobuf::text_format::fmt(self, f)
9352    }
9353}
9354
9355impl ::protobuf::reflect::ProtobufValue for BlockRequest {
9356    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
9357}
9358
9359// @@protoc_insertion_point(message:RemoteFortressReader.BlockList)
9360#[derive(PartialEq,Clone,Default,Debug)]
9361pub struct BlockList {
9362    // message fields
9363    // @@protoc_insertion_point(field:RemoteFortressReader.BlockList.map_blocks)
9364    pub map_blocks: ::std::vec::Vec<MapBlock>,
9365    // @@protoc_insertion_point(field:RemoteFortressReader.BlockList.map_x)
9366    pub map_x: ::std::option::Option<i32>,
9367    // @@protoc_insertion_point(field:RemoteFortressReader.BlockList.map_y)
9368    pub map_y: ::std::option::Option<i32>,
9369    // @@protoc_insertion_point(field:RemoteFortressReader.BlockList.engravings)
9370    pub engravings: ::std::vec::Vec<Engraving>,
9371    // @@protoc_insertion_point(field:RemoteFortressReader.BlockList.ocean_waves)
9372    pub ocean_waves: ::std::vec::Vec<Wave>,
9373    // special fields
9374    // @@protoc_insertion_point(special_field:RemoteFortressReader.BlockList.special_fields)
9375    pub special_fields: ::protobuf::SpecialFields,
9376}
9377
9378impl<'a> ::std::default::Default for &'a BlockList {
9379    fn default() -> &'a BlockList {
9380        <BlockList as ::protobuf::Message>::default_instance()
9381    }
9382}
9383
9384impl BlockList {
9385    pub fn new() -> BlockList {
9386        ::std::default::Default::default()
9387    }
9388
9389    // optional int32 map_x = 2;
9390
9391    pub fn map_x(&self) -> i32 {
9392        self.map_x.unwrap_or(0)
9393    }
9394
9395    pub fn clear_map_x(&mut self) {
9396        self.map_x = ::std::option::Option::None;
9397    }
9398
9399    pub fn has_map_x(&self) -> bool {
9400        self.map_x.is_some()
9401    }
9402
9403    // Param is passed by value, moved
9404    pub fn set_map_x(&mut self, v: i32) {
9405        self.map_x = ::std::option::Option::Some(v);
9406    }
9407
9408    // optional int32 map_y = 3;
9409
9410    pub fn map_y(&self) -> i32 {
9411        self.map_y.unwrap_or(0)
9412    }
9413
9414    pub fn clear_map_y(&mut self) {
9415        self.map_y = ::std::option::Option::None;
9416    }
9417
9418    pub fn has_map_y(&self) -> bool {
9419        self.map_y.is_some()
9420    }
9421
9422    // Param is passed by value, moved
9423    pub fn set_map_y(&mut self, v: i32) {
9424        self.map_y = ::std::option::Option::Some(v);
9425    }
9426
9427    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
9428        let mut fields = ::std::vec::Vec::with_capacity(5);
9429        let mut oneofs = ::std::vec::Vec::with_capacity(0);
9430        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
9431            "map_blocks",
9432            |m: &BlockList| { &m.map_blocks },
9433            |m: &mut BlockList| { &mut m.map_blocks },
9434        ));
9435        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9436            "map_x",
9437            |m: &BlockList| { &m.map_x },
9438            |m: &mut BlockList| { &mut m.map_x },
9439        ));
9440        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9441            "map_y",
9442            |m: &BlockList| { &m.map_y },
9443            |m: &mut BlockList| { &mut m.map_y },
9444        ));
9445        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
9446            "engravings",
9447            |m: &BlockList| { &m.engravings },
9448            |m: &mut BlockList| { &mut m.engravings },
9449        ));
9450        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
9451            "ocean_waves",
9452            |m: &BlockList| { &m.ocean_waves },
9453            |m: &mut BlockList| { &mut m.ocean_waves },
9454        ));
9455        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BlockList>(
9456            "BlockList",
9457            fields,
9458            oneofs,
9459        )
9460    }
9461}
9462
9463impl ::protobuf::Message for BlockList {
9464    const NAME: &'static str = "BlockList";
9465
9466    fn is_initialized(&self) -> bool {
9467        for v in &self.map_blocks {
9468            if !v.is_initialized() {
9469                return false;
9470            }
9471        };
9472        for v in &self.engravings {
9473            if !v.is_initialized() {
9474                return false;
9475            }
9476        };
9477        for v in &self.ocean_waves {
9478            if !v.is_initialized() {
9479                return false;
9480            }
9481        };
9482        true
9483    }
9484
9485    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
9486        while let Some(tag) = is.read_raw_tag_or_eof()? {
9487            match tag {
9488                10 => {
9489                    self.map_blocks.push(is.read_message()?);
9490                },
9491                16 => {
9492                    self.map_x = ::std::option::Option::Some(is.read_int32()?);
9493                },
9494                24 => {
9495                    self.map_y = ::std::option::Option::Some(is.read_int32()?);
9496                },
9497                34 => {
9498                    self.engravings.push(is.read_message()?);
9499                },
9500                42 => {
9501                    self.ocean_waves.push(is.read_message()?);
9502                },
9503                tag => {
9504                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
9505                },
9506            };
9507        }
9508        ::std::result::Result::Ok(())
9509    }
9510
9511    // Compute sizes of nested messages
9512    #[allow(unused_variables)]
9513    fn compute_size(&self) -> u64 {
9514        let mut my_size = 0;
9515        for value in &self.map_blocks {
9516            let len = value.compute_size();
9517            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
9518        };
9519        if let Some(v) = self.map_x {
9520            my_size += ::protobuf::rt::int32_size(2, v);
9521        }
9522        if let Some(v) = self.map_y {
9523            my_size += ::protobuf::rt::int32_size(3, v);
9524        }
9525        for value in &self.engravings {
9526            let len = value.compute_size();
9527            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
9528        };
9529        for value in &self.ocean_waves {
9530            let len = value.compute_size();
9531            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
9532        };
9533        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
9534        self.special_fields.cached_size().set(my_size as u32);
9535        my_size
9536    }
9537
9538    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
9539        for v in &self.map_blocks {
9540            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
9541        };
9542        if let Some(v) = self.map_x {
9543            os.write_int32(2, v)?;
9544        }
9545        if let Some(v) = self.map_y {
9546            os.write_int32(3, v)?;
9547        }
9548        for v in &self.engravings {
9549            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
9550        };
9551        for v in &self.ocean_waves {
9552            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
9553        };
9554        os.write_unknown_fields(self.special_fields.unknown_fields())?;
9555        ::std::result::Result::Ok(())
9556    }
9557
9558    fn special_fields(&self) -> &::protobuf::SpecialFields {
9559        &self.special_fields
9560    }
9561
9562    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
9563        &mut self.special_fields
9564    }
9565
9566    fn new() -> BlockList {
9567        BlockList::new()
9568    }
9569
9570    fn clear(&mut self) {
9571        self.map_blocks.clear();
9572        self.map_x = ::std::option::Option::None;
9573        self.map_y = ::std::option::Option::None;
9574        self.engravings.clear();
9575        self.ocean_waves.clear();
9576        self.special_fields.clear();
9577    }
9578
9579    fn default_instance() -> &'static BlockList {
9580        static instance: BlockList = BlockList {
9581            map_blocks: ::std::vec::Vec::new(),
9582            map_x: ::std::option::Option::None,
9583            map_y: ::std::option::Option::None,
9584            engravings: ::std::vec::Vec::new(),
9585            ocean_waves: ::std::vec::Vec::new(),
9586            special_fields: ::protobuf::SpecialFields::new(),
9587        };
9588        &instance
9589    }
9590}
9591
9592impl ::protobuf::MessageFull for BlockList {
9593    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
9594        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
9595        descriptor.get(|| file_descriptor().message_by_package_relative_name("BlockList").unwrap()).clone()
9596    }
9597}
9598
9599impl ::std::fmt::Display for BlockList {
9600    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9601        ::protobuf::text_format::fmt(self, f)
9602    }
9603}
9604
9605impl ::protobuf::reflect::ProtobufValue for BlockList {
9606    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
9607}
9608
9609// @@protoc_insertion_point(message:RemoteFortressReader.PlantDef)
9610#[derive(PartialEq,Clone,Default,Debug)]
9611pub struct PlantDef {
9612    // message fields
9613    // @@protoc_insertion_point(field:RemoteFortressReader.PlantDef.pos_x)
9614    pub pos_x: ::std::option::Option<i32>,
9615    // @@protoc_insertion_point(field:RemoteFortressReader.PlantDef.pos_y)
9616    pub pos_y: ::std::option::Option<i32>,
9617    // @@protoc_insertion_point(field:RemoteFortressReader.PlantDef.pos_z)
9618    pub pos_z: ::std::option::Option<i32>,
9619    // @@protoc_insertion_point(field:RemoteFortressReader.PlantDef.index)
9620    pub index: ::std::option::Option<i32>,
9621    // special fields
9622    // @@protoc_insertion_point(special_field:RemoteFortressReader.PlantDef.special_fields)
9623    pub special_fields: ::protobuf::SpecialFields,
9624}
9625
9626impl<'a> ::std::default::Default for &'a PlantDef {
9627    fn default() -> &'a PlantDef {
9628        <PlantDef as ::protobuf::Message>::default_instance()
9629    }
9630}
9631
9632impl PlantDef {
9633    pub fn new() -> PlantDef {
9634        ::std::default::Default::default()
9635    }
9636
9637    // required int32 pos_x = 1;
9638
9639    pub fn pos_x(&self) -> i32 {
9640        self.pos_x.unwrap_or(0)
9641    }
9642
9643    pub fn clear_pos_x(&mut self) {
9644        self.pos_x = ::std::option::Option::None;
9645    }
9646
9647    pub fn has_pos_x(&self) -> bool {
9648        self.pos_x.is_some()
9649    }
9650
9651    // Param is passed by value, moved
9652    pub fn set_pos_x(&mut self, v: i32) {
9653        self.pos_x = ::std::option::Option::Some(v);
9654    }
9655
9656    // required int32 pos_y = 2;
9657
9658    pub fn pos_y(&self) -> i32 {
9659        self.pos_y.unwrap_or(0)
9660    }
9661
9662    pub fn clear_pos_y(&mut self) {
9663        self.pos_y = ::std::option::Option::None;
9664    }
9665
9666    pub fn has_pos_y(&self) -> bool {
9667        self.pos_y.is_some()
9668    }
9669
9670    // Param is passed by value, moved
9671    pub fn set_pos_y(&mut self, v: i32) {
9672        self.pos_y = ::std::option::Option::Some(v);
9673    }
9674
9675    // required int32 pos_z = 3;
9676
9677    pub fn pos_z(&self) -> i32 {
9678        self.pos_z.unwrap_or(0)
9679    }
9680
9681    pub fn clear_pos_z(&mut self) {
9682        self.pos_z = ::std::option::Option::None;
9683    }
9684
9685    pub fn has_pos_z(&self) -> bool {
9686        self.pos_z.is_some()
9687    }
9688
9689    // Param is passed by value, moved
9690    pub fn set_pos_z(&mut self, v: i32) {
9691        self.pos_z = ::std::option::Option::Some(v);
9692    }
9693
9694    // required int32 index = 4;
9695
9696    pub fn index(&self) -> i32 {
9697        self.index.unwrap_or(0)
9698    }
9699
9700    pub fn clear_index(&mut self) {
9701        self.index = ::std::option::Option::None;
9702    }
9703
9704    pub fn has_index(&self) -> bool {
9705        self.index.is_some()
9706    }
9707
9708    // Param is passed by value, moved
9709    pub fn set_index(&mut self, v: i32) {
9710        self.index = ::std::option::Option::Some(v);
9711    }
9712
9713    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
9714        let mut fields = ::std::vec::Vec::with_capacity(4);
9715        let mut oneofs = ::std::vec::Vec::with_capacity(0);
9716        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9717            "pos_x",
9718            |m: &PlantDef| { &m.pos_x },
9719            |m: &mut PlantDef| { &mut m.pos_x },
9720        ));
9721        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9722            "pos_y",
9723            |m: &PlantDef| { &m.pos_y },
9724            |m: &mut PlantDef| { &mut m.pos_y },
9725        ));
9726        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9727            "pos_z",
9728            |m: &PlantDef| { &m.pos_z },
9729            |m: &mut PlantDef| { &mut m.pos_z },
9730        ));
9731        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9732            "index",
9733            |m: &PlantDef| { &m.index },
9734            |m: &mut PlantDef| { &mut m.index },
9735        ));
9736        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PlantDef>(
9737            "PlantDef",
9738            fields,
9739            oneofs,
9740        )
9741    }
9742}
9743
9744impl ::protobuf::Message for PlantDef {
9745    const NAME: &'static str = "PlantDef";
9746
9747    fn is_initialized(&self) -> bool {
9748        if self.pos_x.is_none() {
9749            return false;
9750        }
9751        if self.pos_y.is_none() {
9752            return false;
9753        }
9754        if self.pos_z.is_none() {
9755            return false;
9756        }
9757        if self.index.is_none() {
9758            return false;
9759        }
9760        true
9761    }
9762
9763    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
9764        while let Some(tag) = is.read_raw_tag_or_eof()? {
9765            match tag {
9766                8 => {
9767                    self.pos_x = ::std::option::Option::Some(is.read_int32()?);
9768                },
9769                16 => {
9770                    self.pos_y = ::std::option::Option::Some(is.read_int32()?);
9771                },
9772                24 => {
9773                    self.pos_z = ::std::option::Option::Some(is.read_int32()?);
9774                },
9775                32 => {
9776                    self.index = ::std::option::Option::Some(is.read_int32()?);
9777                },
9778                tag => {
9779                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
9780                },
9781            };
9782        }
9783        ::std::result::Result::Ok(())
9784    }
9785
9786    // Compute sizes of nested messages
9787    #[allow(unused_variables)]
9788    fn compute_size(&self) -> u64 {
9789        let mut my_size = 0;
9790        if let Some(v) = self.pos_x {
9791            my_size += ::protobuf::rt::int32_size(1, v);
9792        }
9793        if let Some(v) = self.pos_y {
9794            my_size += ::protobuf::rt::int32_size(2, v);
9795        }
9796        if let Some(v) = self.pos_z {
9797            my_size += ::protobuf::rt::int32_size(3, v);
9798        }
9799        if let Some(v) = self.index {
9800            my_size += ::protobuf::rt::int32_size(4, v);
9801        }
9802        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
9803        self.special_fields.cached_size().set(my_size as u32);
9804        my_size
9805    }
9806
9807    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
9808        if let Some(v) = self.pos_x {
9809            os.write_int32(1, v)?;
9810        }
9811        if let Some(v) = self.pos_y {
9812            os.write_int32(2, v)?;
9813        }
9814        if let Some(v) = self.pos_z {
9815            os.write_int32(3, v)?;
9816        }
9817        if let Some(v) = self.index {
9818            os.write_int32(4, v)?;
9819        }
9820        os.write_unknown_fields(self.special_fields.unknown_fields())?;
9821        ::std::result::Result::Ok(())
9822    }
9823
9824    fn special_fields(&self) -> &::protobuf::SpecialFields {
9825        &self.special_fields
9826    }
9827
9828    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
9829        &mut self.special_fields
9830    }
9831
9832    fn new() -> PlantDef {
9833        PlantDef::new()
9834    }
9835
9836    fn clear(&mut self) {
9837        self.pos_x = ::std::option::Option::None;
9838        self.pos_y = ::std::option::Option::None;
9839        self.pos_z = ::std::option::Option::None;
9840        self.index = ::std::option::Option::None;
9841        self.special_fields.clear();
9842    }
9843
9844    fn default_instance() -> &'static PlantDef {
9845        static instance: PlantDef = PlantDef {
9846            pos_x: ::std::option::Option::None,
9847            pos_y: ::std::option::Option::None,
9848            pos_z: ::std::option::Option::None,
9849            index: ::std::option::Option::None,
9850            special_fields: ::protobuf::SpecialFields::new(),
9851        };
9852        &instance
9853    }
9854}
9855
9856impl ::protobuf::MessageFull for PlantDef {
9857    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
9858        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
9859        descriptor.get(|| file_descriptor().message_by_package_relative_name("PlantDef").unwrap()).clone()
9860    }
9861}
9862
9863impl ::std::fmt::Display for PlantDef {
9864    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9865        ::protobuf::text_format::fmt(self, f)
9866    }
9867}
9868
9869impl ::protobuf::reflect::ProtobufValue for PlantDef {
9870    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
9871}
9872
9873// @@protoc_insertion_point(message:RemoteFortressReader.PlantList)
9874#[derive(PartialEq,Clone,Default,Debug)]
9875pub struct PlantList {
9876    // message fields
9877    // @@protoc_insertion_point(field:RemoteFortressReader.PlantList.plant_list)
9878    pub plant_list: ::std::vec::Vec<PlantDef>,
9879    // special fields
9880    // @@protoc_insertion_point(special_field:RemoteFortressReader.PlantList.special_fields)
9881    pub special_fields: ::protobuf::SpecialFields,
9882}
9883
9884impl<'a> ::std::default::Default for &'a PlantList {
9885    fn default() -> &'a PlantList {
9886        <PlantList as ::protobuf::Message>::default_instance()
9887    }
9888}
9889
9890impl PlantList {
9891    pub fn new() -> PlantList {
9892        ::std::default::Default::default()
9893    }
9894
9895    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
9896        let mut fields = ::std::vec::Vec::with_capacity(1);
9897        let mut oneofs = ::std::vec::Vec::with_capacity(0);
9898        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
9899            "plant_list",
9900            |m: &PlantList| { &m.plant_list },
9901            |m: &mut PlantList| { &mut m.plant_list },
9902        ));
9903        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PlantList>(
9904            "PlantList",
9905            fields,
9906            oneofs,
9907        )
9908    }
9909}
9910
9911impl ::protobuf::Message for PlantList {
9912    const NAME: &'static str = "PlantList";
9913
9914    fn is_initialized(&self) -> bool {
9915        for v in &self.plant_list {
9916            if !v.is_initialized() {
9917                return false;
9918            }
9919        };
9920        true
9921    }
9922
9923    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
9924        while let Some(tag) = is.read_raw_tag_or_eof()? {
9925            match tag {
9926                10 => {
9927                    self.plant_list.push(is.read_message()?);
9928                },
9929                tag => {
9930                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
9931                },
9932            };
9933        }
9934        ::std::result::Result::Ok(())
9935    }
9936
9937    // Compute sizes of nested messages
9938    #[allow(unused_variables)]
9939    fn compute_size(&self) -> u64 {
9940        let mut my_size = 0;
9941        for value in &self.plant_list {
9942            let len = value.compute_size();
9943            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
9944        };
9945        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
9946        self.special_fields.cached_size().set(my_size as u32);
9947        my_size
9948    }
9949
9950    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
9951        for v in &self.plant_list {
9952            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
9953        };
9954        os.write_unknown_fields(self.special_fields.unknown_fields())?;
9955        ::std::result::Result::Ok(())
9956    }
9957
9958    fn special_fields(&self) -> &::protobuf::SpecialFields {
9959        &self.special_fields
9960    }
9961
9962    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
9963        &mut self.special_fields
9964    }
9965
9966    fn new() -> PlantList {
9967        PlantList::new()
9968    }
9969
9970    fn clear(&mut self) {
9971        self.plant_list.clear();
9972        self.special_fields.clear();
9973    }
9974
9975    fn default_instance() -> &'static PlantList {
9976        static instance: PlantList = PlantList {
9977            plant_list: ::std::vec::Vec::new(),
9978            special_fields: ::protobuf::SpecialFields::new(),
9979        };
9980        &instance
9981    }
9982}
9983
9984impl ::protobuf::MessageFull for PlantList {
9985    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
9986        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
9987        descriptor.get(|| file_descriptor().message_by_package_relative_name("PlantList").unwrap()).clone()
9988    }
9989}
9990
9991impl ::std::fmt::Display for PlantList {
9992    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9993        ::protobuf::text_format::fmt(self, f)
9994    }
9995}
9996
9997impl ::protobuf::reflect::ProtobufValue for PlantList {
9998    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
9999}
10000
10001// @@protoc_insertion_point(message:RemoteFortressReader.ViewInfo)
10002#[derive(PartialEq,Clone,Default,Debug)]
10003pub struct ViewInfo {
10004    // message fields
10005    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.view_pos_x)
10006    pub view_pos_x: ::std::option::Option<i32>,
10007    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.view_pos_y)
10008    pub view_pos_y: ::std::option::Option<i32>,
10009    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.view_pos_z)
10010    pub view_pos_z: ::std::option::Option<i32>,
10011    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.view_size_x)
10012    pub view_size_x: ::std::option::Option<i32>,
10013    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.view_size_y)
10014    pub view_size_y: ::std::option::Option<i32>,
10015    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.cursor_pos_x)
10016    pub cursor_pos_x: ::std::option::Option<i32>,
10017    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.cursor_pos_y)
10018    pub cursor_pos_y: ::std::option::Option<i32>,
10019    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.cursor_pos_z)
10020    pub cursor_pos_z: ::std::option::Option<i32>,
10021    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.follow_unit_id)
10022    pub follow_unit_id: ::std::option::Option<i32>,
10023    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.follow_item_id)
10024    pub follow_item_id: ::std::option::Option<i32>,
10025    // special fields
10026    // @@protoc_insertion_point(special_field:RemoteFortressReader.ViewInfo.special_fields)
10027    pub special_fields: ::protobuf::SpecialFields,
10028}
10029
10030impl<'a> ::std::default::Default for &'a ViewInfo {
10031    fn default() -> &'a ViewInfo {
10032        <ViewInfo as ::protobuf::Message>::default_instance()
10033    }
10034}
10035
10036impl ViewInfo {
10037    pub fn new() -> ViewInfo {
10038        ::std::default::Default::default()
10039    }
10040
10041    // optional int32 view_pos_x = 1;
10042
10043    pub fn view_pos_x(&self) -> i32 {
10044        self.view_pos_x.unwrap_or(0)
10045    }
10046
10047    pub fn clear_view_pos_x(&mut self) {
10048        self.view_pos_x = ::std::option::Option::None;
10049    }
10050
10051    pub fn has_view_pos_x(&self) -> bool {
10052        self.view_pos_x.is_some()
10053    }
10054
10055    // Param is passed by value, moved
10056    pub fn set_view_pos_x(&mut self, v: i32) {
10057        self.view_pos_x = ::std::option::Option::Some(v);
10058    }
10059
10060    // optional int32 view_pos_y = 2;
10061
10062    pub fn view_pos_y(&self) -> i32 {
10063        self.view_pos_y.unwrap_or(0)
10064    }
10065
10066    pub fn clear_view_pos_y(&mut self) {
10067        self.view_pos_y = ::std::option::Option::None;
10068    }
10069
10070    pub fn has_view_pos_y(&self) -> bool {
10071        self.view_pos_y.is_some()
10072    }
10073
10074    // Param is passed by value, moved
10075    pub fn set_view_pos_y(&mut self, v: i32) {
10076        self.view_pos_y = ::std::option::Option::Some(v);
10077    }
10078
10079    // optional int32 view_pos_z = 3;
10080
10081    pub fn view_pos_z(&self) -> i32 {
10082        self.view_pos_z.unwrap_or(0)
10083    }
10084
10085    pub fn clear_view_pos_z(&mut self) {
10086        self.view_pos_z = ::std::option::Option::None;
10087    }
10088
10089    pub fn has_view_pos_z(&self) -> bool {
10090        self.view_pos_z.is_some()
10091    }
10092
10093    // Param is passed by value, moved
10094    pub fn set_view_pos_z(&mut self, v: i32) {
10095        self.view_pos_z = ::std::option::Option::Some(v);
10096    }
10097
10098    // optional int32 view_size_x = 4;
10099
10100    pub fn view_size_x(&self) -> i32 {
10101        self.view_size_x.unwrap_or(0)
10102    }
10103
10104    pub fn clear_view_size_x(&mut self) {
10105        self.view_size_x = ::std::option::Option::None;
10106    }
10107
10108    pub fn has_view_size_x(&self) -> bool {
10109        self.view_size_x.is_some()
10110    }
10111
10112    // Param is passed by value, moved
10113    pub fn set_view_size_x(&mut self, v: i32) {
10114        self.view_size_x = ::std::option::Option::Some(v);
10115    }
10116
10117    // optional int32 view_size_y = 5;
10118
10119    pub fn view_size_y(&self) -> i32 {
10120        self.view_size_y.unwrap_or(0)
10121    }
10122
10123    pub fn clear_view_size_y(&mut self) {
10124        self.view_size_y = ::std::option::Option::None;
10125    }
10126
10127    pub fn has_view_size_y(&self) -> bool {
10128        self.view_size_y.is_some()
10129    }
10130
10131    // Param is passed by value, moved
10132    pub fn set_view_size_y(&mut self, v: i32) {
10133        self.view_size_y = ::std::option::Option::Some(v);
10134    }
10135
10136    // optional int32 cursor_pos_x = 6;
10137
10138    pub fn cursor_pos_x(&self) -> i32 {
10139        self.cursor_pos_x.unwrap_or(0)
10140    }
10141
10142    pub fn clear_cursor_pos_x(&mut self) {
10143        self.cursor_pos_x = ::std::option::Option::None;
10144    }
10145
10146    pub fn has_cursor_pos_x(&self) -> bool {
10147        self.cursor_pos_x.is_some()
10148    }
10149
10150    // Param is passed by value, moved
10151    pub fn set_cursor_pos_x(&mut self, v: i32) {
10152        self.cursor_pos_x = ::std::option::Option::Some(v);
10153    }
10154
10155    // optional int32 cursor_pos_y = 7;
10156
10157    pub fn cursor_pos_y(&self) -> i32 {
10158        self.cursor_pos_y.unwrap_or(0)
10159    }
10160
10161    pub fn clear_cursor_pos_y(&mut self) {
10162        self.cursor_pos_y = ::std::option::Option::None;
10163    }
10164
10165    pub fn has_cursor_pos_y(&self) -> bool {
10166        self.cursor_pos_y.is_some()
10167    }
10168
10169    // Param is passed by value, moved
10170    pub fn set_cursor_pos_y(&mut self, v: i32) {
10171        self.cursor_pos_y = ::std::option::Option::Some(v);
10172    }
10173
10174    // optional int32 cursor_pos_z = 8;
10175
10176    pub fn cursor_pos_z(&self) -> i32 {
10177        self.cursor_pos_z.unwrap_or(0)
10178    }
10179
10180    pub fn clear_cursor_pos_z(&mut self) {
10181        self.cursor_pos_z = ::std::option::Option::None;
10182    }
10183
10184    pub fn has_cursor_pos_z(&self) -> bool {
10185        self.cursor_pos_z.is_some()
10186    }
10187
10188    // Param is passed by value, moved
10189    pub fn set_cursor_pos_z(&mut self, v: i32) {
10190        self.cursor_pos_z = ::std::option::Option::Some(v);
10191    }
10192
10193    // optional int32 follow_unit_id = 9;
10194
10195    pub fn follow_unit_id(&self) -> i32 {
10196        self.follow_unit_id.unwrap_or(-1i32)
10197    }
10198
10199    pub fn clear_follow_unit_id(&mut self) {
10200        self.follow_unit_id = ::std::option::Option::None;
10201    }
10202
10203    pub fn has_follow_unit_id(&self) -> bool {
10204        self.follow_unit_id.is_some()
10205    }
10206
10207    // Param is passed by value, moved
10208    pub fn set_follow_unit_id(&mut self, v: i32) {
10209        self.follow_unit_id = ::std::option::Option::Some(v);
10210    }
10211
10212    // optional int32 follow_item_id = 10;
10213
10214    pub fn follow_item_id(&self) -> i32 {
10215        self.follow_item_id.unwrap_or(-1i32)
10216    }
10217
10218    pub fn clear_follow_item_id(&mut self) {
10219        self.follow_item_id = ::std::option::Option::None;
10220    }
10221
10222    pub fn has_follow_item_id(&self) -> bool {
10223        self.follow_item_id.is_some()
10224    }
10225
10226    // Param is passed by value, moved
10227    pub fn set_follow_item_id(&mut self, v: i32) {
10228        self.follow_item_id = ::std::option::Option::Some(v);
10229    }
10230
10231    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
10232        let mut fields = ::std::vec::Vec::with_capacity(10);
10233        let mut oneofs = ::std::vec::Vec::with_capacity(0);
10234        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10235            "view_pos_x",
10236            |m: &ViewInfo| { &m.view_pos_x },
10237            |m: &mut ViewInfo| { &mut m.view_pos_x },
10238        ));
10239        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10240            "view_pos_y",
10241            |m: &ViewInfo| { &m.view_pos_y },
10242            |m: &mut ViewInfo| { &mut m.view_pos_y },
10243        ));
10244        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10245            "view_pos_z",
10246            |m: &ViewInfo| { &m.view_pos_z },
10247            |m: &mut ViewInfo| { &mut m.view_pos_z },
10248        ));
10249        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10250            "view_size_x",
10251            |m: &ViewInfo| { &m.view_size_x },
10252            |m: &mut ViewInfo| { &mut m.view_size_x },
10253        ));
10254        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10255            "view_size_y",
10256            |m: &ViewInfo| { &m.view_size_y },
10257            |m: &mut ViewInfo| { &mut m.view_size_y },
10258        ));
10259        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10260            "cursor_pos_x",
10261            |m: &ViewInfo| { &m.cursor_pos_x },
10262            |m: &mut ViewInfo| { &mut m.cursor_pos_x },
10263        ));
10264        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10265            "cursor_pos_y",
10266            |m: &ViewInfo| { &m.cursor_pos_y },
10267            |m: &mut ViewInfo| { &mut m.cursor_pos_y },
10268        ));
10269        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10270            "cursor_pos_z",
10271            |m: &ViewInfo| { &m.cursor_pos_z },
10272            |m: &mut ViewInfo| { &mut m.cursor_pos_z },
10273        ));
10274        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10275            "follow_unit_id",
10276            |m: &ViewInfo| { &m.follow_unit_id },
10277            |m: &mut ViewInfo| { &mut m.follow_unit_id },
10278        ));
10279        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10280            "follow_item_id",
10281            |m: &ViewInfo| { &m.follow_item_id },
10282            |m: &mut ViewInfo| { &mut m.follow_item_id },
10283        ));
10284        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ViewInfo>(
10285            "ViewInfo",
10286            fields,
10287            oneofs,
10288        )
10289    }
10290}
10291
10292impl ::protobuf::Message for ViewInfo {
10293    const NAME: &'static str = "ViewInfo";
10294
10295    fn is_initialized(&self) -> bool {
10296        true
10297    }
10298
10299    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
10300        while let Some(tag) = is.read_raw_tag_or_eof()? {
10301            match tag {
10302                8 => {
10303                    self.view_pos_x = ::std::option::Option::Some(is.read_int32()?);
10304                },
10305                16 => {
10306                    self.view_pos_y = ::std::option::Option::Some(is.read_int32()?);
10307                },
10308                24 => {
10309                    self.view_pos_z = ::std::option::Option::Some(is.read_int32()?);
10310                },
10311                32 => {
10312                    self.view_size_x = ::std::option::Option::Some(is.read_int32()?);
10313                },
10314                40 => {
10315                    self.view_size_y = ::std::option::Option::Some(is.read_int32()?);
10316                },
10317                48 => {
10318                    self.cursor_pos_x = ::std::option::Option::Some(is.read_int32()?);
10319                },
10320                56 => {
10321                    self.cursor_pos_y = ::std::option::Option::Some(is.read_int32()?);
10322                },
10323                64 => {
10324                    self.cursor_pos_z = ::std::option::Option::Some(is.read_int32()?);
10325                },
10326                72 => {
10327                    self.follow_unit_id = ::std::option::Option::Some(is.read_int32()?);
10328                },
10329                80 => {
10330                    self.follow_item_id = ::std::option::Option::Some(is.read_int32()?);
10331                },
10332                tag => {
10333                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
10334                },
10335            };
10336        }
10337        ::std::result::Result::Ok(())
10338    }
10339
10340    // Compute sizes of nested messages
10341    #[allow(unused_variables)]
10342    fn compute_size(&self) -> u64 {
10343        let mut my_size = 0;
10344        if let Some(v) = self.view_pos_x {
10345            my_size += ::protobuf::rt::int32_size(1, v);
10346        }
10347        if let Some(v) = self.view_pos_y {
10348            my_size += ::protobuf::rt::int32_size(2, v);
10349        }
10350        if let Some(v) = self.view_pos_z {
10351            my_size += ::protobuf::rt::int32_size(3, v);
10352        }
10353        if let Some(v) = self.view_size_x {
10354            my_size += ::protobuf::rt::int32_size(4, v);
10355        }
10356        if let Some(v) = self.view_size_y {
10357            my_size += ::protobuf::rt::int32_size(5, v);
10358        }
10359        if let Some(v) = self.cursor_pos_x {
10360            my_size += ::protobuf::rt::int32_size(6, v);
10361        }
10362        if let Some(v) = self.cursor_pos_y {
10363            my_size += ::protobuf::rt::int32_size(7, v);
10364        }
10365        if let Some(v) = self.cursor_pos_z {
10366            my_size += ::protobuf::rt::int32_size(8, v);
10367        }
10368        if let Some(v) = self.follow_unit_id {
10369            my_size += ::protobuf::rt::int32_size(9, v);
10370        }
10371        if let Some(v) = self.follow_item_id {
10372            my_size += ::protobuf::rt::int32_size(10, v);
10373        }
10374        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
10375        self.special_fields.cached_size().set(my_size as u32);
10376        my_size
10377    }
10378
10379    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
10380        if let Some(v) = self.view_pos_x {
10381            os.write_int32(1, v)?;
10382        }
10383        if let Some(v) = self.view_pos_y {
10384            os.write_int32(2, v)?;
10385        }
10386        if let Some(v) = self.view_pos_z {
10387            os.write_int32(3, v)?;
10388        }
10389        if let Some(v) = self.view_size_x {
10390            os.write_int32(4, v)?;
10391        }
10392        if let Some(v) = self.view_size_y {
10393            os.write_int32(5, v)?;
10394        }
10395        if let Some(v) = self.cursor_pos_x {
10396            os.write_int32(6, v)?;
10397        }
10398        if let Some(v) = self.cursor_pos_y {
10399            os.write_int32(7, v)?;
10400        }
10401        if let Some(v) = self.cursor_pos_z {
10402            os.write_int32(8, v)?;
10403        }
10404        if let Some(v) = self.follow_unit_id {
10405            os.write_int32(9, v)?;
10406        }
10407        if let Some(v) = self.follow_item_id {
10408            os.write_int32(10, v)?;
10409        }
10410        os.write_unknown_fields(self.special_fields.unknown_fields())?;
10411        ::std::result::Result::Ok(())
10412    }
10413
10414    fn special_fields(&self) -> &::protobuf::SpecialFields {
10415        &self.special_fields
10416    }
10417
10418    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
10419        &mut self.special_fields
10420    }
10421
10422    fn new() -> ViewInfo {
10423        ViewInfo::new()
10424    }
10425
10426    fn clear(&mut self) {
10427        self.view_pos_x = ::std::option::Option::None;
10428        self.view_pos_y = ::std::option::Option::None;
10429        self.view_pos_z = ::std::option::Option::None;
10430        self.view_size_x = ::std::option::Option::None;
10431        self.view_size_y = ::std::option::Option::None;
10432        self.cursor_pos_x = ::std::option::Option::None;
10433        self.cursor_pos_y = ::std::option::Option::None;
10434        self.cursor_pos_z = ::std::option::Option::None;
10435        self.follow_unit_id = ::std::option::Option::None;
10436        self.follow_item_id = ::std::option::Option::None;
10437        self.special_fields.clear();
10438    }
10439
10440    fn default_instance() -> &'static ViewInfo {
10441        static instance: ViewInfo = ViewInfo {
10442            view_pos_x: ::std::option::Option::None,
10443            view_pos_y: ::std::option::Option::None,
10444            view_pos_z: ::std::option::Option::None,
10445            view_size_x: ::std::option::Option::None,
10446            view_size_y: ::std::option::Option::None,
10447            cursor_pos_x: ::std::option::Option::None,
10448            cursor_pos_y: ::std::option::Option::None,
10449            cursor_pos_z: ::std::option::Option::None,
10450            follow_unit_id: ::std::option::Option::None,
10451            follow_item_id: ::std::option::Option::None,
10452            special_fields: ::protobuf::SpecialFields::new(),
10453        };
10454        &instance
10455    }
10456}
10457
10458impl ::protobuf::MessageFull for ViewInfo {
10459    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
10460        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
10461        descriptor.get(|| file_descriptor().message_by_package_relative_name("ViewInfo").unwrap()).clone()
10462    }
10463}
10464
10465impl ::std::fmt::Display for ViewInfo {
10466    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10467        ::protobuf::text_format::fmt(self, f)
10468    }
10469}
10470
10471impl ::protobuf::reflect::ProtobufValue for ViewInfo {
10472    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
10473}
10474
10475// @@protoc_insertion_point(message:RemoteFortressReader.MapInfo)
10476#[derive(PartialEq,Clone,Default,Debug)]
10477pub struct MapInfo {
10478    // message fields
10479    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.block_size_x)
10480    pub block_size_x: ::std::option::Option<i32>,
10481    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.block_size_y)
10482    pub block_size_y: ::std::option::Option<i32>,
10483    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.block_size_z)
10484    pub block_size_z: ::std::option::Option<i32>,
10485    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.block_pos_x)
10486    pub block_pos_x: ::std::option::Option<i32>,
10487    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.block_pos_y)
10488    pub block_pos_y: ::std::option::Option<i32>,
10489    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.block_pos_z)
10490    pub block_pos_z: ::std::option::Option<i32>,
10491    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.world_name)
10492    pub world_name: ::std::option::Option<::std::string::String>,
10493    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.world_name_english)
10494    pub world_name_english: ::std::option::Option<::std::string::String>,
10495    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.save_name)
10496    pub save_name: ::std::option::Option<::std::string::String>,
10497    // special fields
10498    // @@protoc_insertion_point(special_field:RemoteFortressReader.MapInfo.special_fields)
10499    pub special_fields: ::protobuf::SpecialFields,
10500}
10501
10502impl<'a> ::std::default::Default for &'a MapInfo {
10503    fn default() -> &'a MapInfo {
10504        <MapInfo as ::protobuf::Message>::default_instance()
10505    }
10506}
10507
10508impl MapInfo {
10509    pub fn new() -> MapInfo {
10510        ::std::default::Default::default()
10511    }
10512
10513    // optional int32 block_size_x = 1;
10514
10515    pub fn block_size_x(&self) -> i32 {
10516        self.block_size_x.unwrap_or(0)
10517    }
10518
10519    pub fn clear_block_size_x(&mut self) {
10520        self.block_size_x = ::std::option::Option::None;
10521    }
10522
10523    pub fn has_block_size_x(&self) -> bool {
10524        self.block_size_x.is_some()
10525    }
10526
10527    // Param is passed by value, moved
10528    pub fn set_block_size_x(&mut self, v: i32) {
10529        self.block_size_x = ::std::option::Option::Some(v);
10530    }
10531
10532    // optional int32 block_size_y = 2;
10533
10534    pub fn block_size_y(&self) -> i32 {
10535        self.block_size_y.unwrap_or(0)
10536    }
10537
10538    pub fn clear_block_size_y(&mut self) {
10539        self.block_size_y = ::std::option::Option::None;
10540    }
10541
10542    pub fn has_block_size_y(&self) -> bool {
10543        self.block_size_y.is_some()
10544    }
10545
10546    // Param is passed by value, moved
10547    pub fn set_block_size_y(&mut self, v: i32) {
10548        self.block_size_y = ::std::option::Option::Some(v);
10549    }
10550
10551    // optional int32 block_size_z = 3;
10552
10553    pub fn block_size_z(&self) -> i32 {
10554        self.block_size_z.unwrap_or(0)
10555    }
10556
10557    pub fn clear_block_size_z(&mut self) {
10558        self.block_size_z = ::std::option::Option::None;
10559    }
10560
10561    pub fn has_block_size_z(&self) -> bool {
10562        self.block_size_z.is_some()
10563    }
10564
10565    // Param is passed by value, moved
10566    pub fn set_block_size_z(&mut self, v: i32) {
10567        self.block_size_z = ::std::option::Option::Some(v);
10568    }
10569
10570    // optional int32 block_pos_x = 4;
10571
10572    pub fn block_pos_x(&self) -> i32 {
10573        self.block_pos_x.unwrap_or(0)
10574    }
10575
10576    pub fn clear_block_pos_x(&mut self) {
10577        self.block_pos_x = ::std::option::Option::None;
10578    }
10579
10580    pub fn has_block_pos_x(&self) -> bool {
10581        self.block_pos_x.is_some()
10582    }
10583
10584    // Param is passed by value, moved
10585    pub fn set_block_pos_x(&mut self, v: i32) {
10586        self.block_pos_x = ::std::option::Option::Some(v);
10587    }
10588
10589    // optional int32 block_pos_y = 5;
10590
10591    pub fn block_pos_y(&self) -> i32 {
10592        self.block_pos_y.unwrap_or(0)
10593    }
10594
10595    pub fn clear_block_pos_y(&mut self) {
10596        self.block_pos_y = ::std::option::Option::None;
10597    }
10598
10599    pub fn has_block_pos_y(&self) -> bool {
10600        self.block_pos_y.is_some()
10601    }
10602
10603    // Param is passed by value, moved
10604    pub fn set_block_pos_y(&mut self, v: i32) {
10605        self.block_pos_y = ::std::option::Option::Some(v);
10606    }
10607
10608    // optional int32 block_pos_z = 6;
10609
10610    pub fn block_pos_z(&self) -> i32 {
10611        self.block_pos_z.unwrap_or(0)
10612    }
10613
10614    pub fn clear_block_pos_z(&mut self) {
10615        self.block_pos_z = ::std::option::Option::None;
10616    }
10617
10618    pub fn has_block_pos_z(&self) -> bool {
10619        self.block_pos_z.is_some()
10620    }
10621
10622    // Param is passed by value, moved
10623    pub fn set_block_pos_z(&mut self, v: i32) {
10624        self.block_pos_z = ::std::option::Option::Some(v);
10625    }
10626
10627    // optional string world_name = 7;
10628
10629    pub fn world_name(&self) -> &str {
10630        match self.world_name.as_ref() {
10631            Some(v) => v,
10632            None => "",
10633        }
10634    }
10635
10636    pub fn clear_world_name(&mut self) {
10637        self.world_name = ::std::option::Option::None;
10638    }
10639
10640    pub fn has_world_name(&self) -> bool {
10641        self.world_name.is_some()
10642    }
10643
10644    // Param is passed by value, moved
10645    pub fn set_world_name(&mut self, v: ::std::string::String) {
10646        self.world_name = ::std::option::Option::Some(v);
10647    }
10648
10649    // Mutable pointer to the field.
10650    // If field is not initialized, it is initialized with default value first.
10651    pub fn mut_world_name(&mut self) -> &mut ::std::string::String {
10652        if self.world_name.is_none() {
10653            self.world_name = ::std::option::Option::Some(::std::string::String::new());
10654        }
10655        self.world_name.as_mut().unwrap()
10656    }
10657
10658    // Take field
10659    pub fn take_world_name(&mut self) -> ::std::string::String {
10660        self.world_name.take().unwrap_or_else(|| ::std::string::String::new())
10661    }
10662
10663    // optional string world_name_english = 8;
10664
10665    pub fn world_name_english(&self) -> &str {
10666        match self.world_name_english.as_ref() {
10667            Some(v) => v,
10668            None => "",
10669        }
10670    }
10671
10672    pub fn clear_world_name_english(&mut self) {
10673        self.world_name_english = ::std::option::Option::None;
10674    }
10675
10676    pub fn has_world_name_english(&self) -> bool {
10677        self.world_name_english.is_some()
10678    }
10679
10680    // Param is passed by value, moved
10681    pub fn set_world_name_english(&mut self, v: ::std::string::String) {
10682        self.world_name_english = ::std::option::Option::Some(v);
10683    }
10684
10685    // Mutable pointer to the field.
10686    // If field is not initialized, it is initialized with default value first.
10687    pub fn mut_world_name_english(&mut self) -> &mut ::std::string::String {
10688        if self.world_name_english.is_none() {
10689            self.world_name_english = ::std::option::Option::Some(::std::string::String::new());
10690        }
10691        self.world_name_english.as_mut().unwrap()
10692    }
10693
10694    // Take field
10695    pub fn take_world_name_english(&mut self) -> ::std::string::String {
10696        self.world_name_english.take().unwrap_or_else(|| ::std::string::String::new())
10697    }
10698
10699    // optional string save_name = 9;
10700
10701    pub fn save_name(&self) -> &str {
10702        match self.save_name.as_ref() {
10703            Some(v) => v,
10704            None => "",
10705        }
10706    }
10707
10708    pub fn clear_save_name(&mut self) {
10709        self.save_name = ::std::option::Option::None;
10710    }
10711
10712    pub fn has_save_name(&self) -> bool {
10713        self.save_name.is_some()
10714    }
10715
10716    // Param is passed by value, moved
10717    pub fn set_save_name(&mut self, v: ::std::string::String) {
10718        self.save_name = ::std::option::Option::Some(v);
10719    }
10720
10721    // Mutable pointer to the field.
10722    // If field is not initialized, it is initialized with default value first.
10723    pub fn mut_save_name(&mut self) -> &mut ::std::string::String {
10724        if self.save_name.is_none() {
10725            self.save_name = ::std::option::Option::Some(::std::string::String::new());
10726        }
10727        self.save_name.as_mut().unwrap()
10728    }
10729
10730    // Take field
10731    pub fn take_save_name(&mut self) -> ::std::string::String {
10732        self.save_name.take().unwrap_or_else(|| ::std::string::String::new())
10733    }
10734
10735    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
10736        let mut fields = ::std::vec::Vec::with_capacity(9);
10737        let mut oneofs = ::std::vec::Vec::with_capacity(0);
10738        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10739            "block_size_x",
10740            |m: &MapInfo| { &m.block_size_x },
10741            |m: &mut MapInfo| { &mut m.block_size_x },
10742        ));
10743        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10744            "block_size_y",
10745            |m: &MapInfo| { &m.block_size_y },
10746            |m: &mut MapInfo| { &mut m.block_size_y },
10747        ));
10748        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10749            "block_size_z",
10750            |m: &MapInfo| { &m.block_size_z },
10751            |m: &mut MapInfo| { &mut m.block_size_z },
10752        ));
10753        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10754            "block_pos_x",
10755            |m: &MapInfo| { &m.block_pos_x },
10756            |m: &mut MapInfo| { &mut m.block_pos_x },
10757        ));
10758        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10759            "block_pos_y",
10760            |m: &MapInfo| { &m.block_pos_y },
10761            |m: &mut MapInfo| { &mut m.block_pos_y },
10762        ));
10763        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10764            "block_pos_z",
10765            |m: &MapInfo| { &m.block_pos_z },
10766            |m: &mut MapInfo| { &mut m.block_pos_z },
10767        ));
10768        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10769            "world_name",
10770            |m: &MapInfo| { &m.world_name },
10771            |m: &mut MapInfo| { &mut m.world_name },
10772        ));
10773        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10774            "world_name_english",
10775            |m: &MapInfo| { &m.world_name_english },
10776            |m: &mut MapInfo| { &mut m.world_name_english },
10777        ));
10778        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10779            "save_name",
10780            |m: &MapInfo| { &m.save_name },
10781            |m: &mut MapInfo| { &mut m.save_name },
10782        ));
10783        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<MapInfo>(
10784            "MapInfo",
10785            fields,
10786            oneofs,
10787        )
10788    }
10789}
10790
10791impl ::protobuf::Message for MapInfo {
10792    const NAME: &'static str = "MapInfo";
10793
10794    fn is_initialized(&self) -> bool {
10795        true
10796    }
10797
10798    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
10799        while let Some(tag) = is.read_raw_tag_or_eof()? {
10800            match tag {
10801                8 => {
10802                    self.block_size_x = ::std::option::Option::Some(is.read_int32()?);
10803                },
10804                16 => {
10805                    self.block_size_y = ::std::option::Option::Some(is.read_int32()?);
10806                },
10807                24 => {
10808                    self.block_size_z = ::std::option::Option::Some(is.read_int32()?);
10809                },
10810                32 => {
10811                    self.block_pos_x = ::std::option::Option::Some(is.read_int32()?);
10812                },
10813                40 => {
10814                    self.block_pos_y = ::std::option::Option::Some(is.read_int32()?);
10815                },
10816                48 => {
10817                    self.block_pos_z = ::std::option::Option::Some(is.read_int32()?);
10818                },
10819                58 => {
10820                    self.world_name = ::std::option::Option::Some(is.read_string()?);
10821                },
10822                66 => {
10823                    self.world_name_english = ::std::option::Option::Some(is.read_string()?);
10824                },
10825                74 => {
10826                    self.save_name = ::std::option::Option::Some(is.read_string()?);
10827                },
10828                tag => {
10829                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
10830                },
10831            };
10832        }
10833        ::std::result::Result::Ok(())
10834    }
10835
10836    // Compute sizes of nested messages
10837    #[allow(unused_variables)]
10838    fn compute_size(&self) -> u64 {
10839        let mut my_size = 0;
10840        if let Some(v) = self.block_size_x {
10841            my_size += ::protobuf::rt::int32_size(1, v);
10842        }
10843        if let Some(v) = self.block_size_y {
10844            my_size += ::protobuf::rt::int32_size(2, v);
10845        }
10846        if let Some(v) = self.block_size_z {
10847            my_size += ::protobuf::rt::int32_size(3, v);
10848        }
10849        if let Some(v) = self.block_pos_x {
10850            my_size += ::protobuf::rt::int32_size(4, v);
10851        }
10852        if let Some(v) = self.block_pos_y {
10853            my_size += ::protobuf::rt::int32_size(5, v);
10854        }
10855        if let Some(v) = self.block_pos_z {
10856            my_size += ::protobuf::rt::int32_size(6, v);
10857        }
10858        if let Some(v) = self.world_name.as_ref() {
10859            my_size += ::protobuf::rt::string_size(7, &v);
10860        }
10861        if let Some(v) = self.world_name_english.as_ref() {
10862            my_size += ::protobuf::rt::string_size(8, &v);
10863        }
10864        if let Some(v) = self.save_name.as_ref() {
10865            my_size += ::protobuf::rt::string_size(9, &v);
10866        }
10867        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
10868        self.special_fields.cached_size().set(my_size as u32);
10869        my_size
10870    }
10871
10872    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
10873        if let Some(v) = self.block_size_x {
10874            os.write_int32(1, v)?;
10875        }
10876        if let Some(v) = self.block_size_y {
10877            os.write_int32(2, v)?;
10878        }
10879        if let Some(v) = self.block_size_z {
10880            os.write_int32(3, v)?;
10881        }
10882        if let Some(v) = self.block_pos_x {
10883            os.write_int32(4, v)?;
10884        }
10885        if let Some(v) = self.block_pos_y {
10886            os.write_int32(5, v)?;
10887        }
10888        if let Some(v) = self.block_pos_z {
10889            os.write_int32(6, v)?;
10890        }
10891        if let Some(v) = self.world_name.as_ref() {
10892            os.write_string(7, v)?;
10893        }
10894        if let Some(v) = self.world_name_english.as_ref() {
10895            os.write_string(8, v)?;
10896        }
10897        if let Some(v) = self.save_name.as_ref() {
10898            os.write_string(9, v)?;
10899        }
10900        os.write_unknown_fields(self.special_fields.unknown_fields())?;
10901        ::std::result::Result::Ok(())
10902    }
10903
10904    fn special_fields(&self) -> &::protobuf::SpecialFields {
10905        &self.special_fields
10906    }
10907
10908    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
10909        &mut self.special_fields
10910    }
10911
10912    fn new() -> MapInfo {
10913        MapInfo::new()
10914    }
10915
10916    fn clear(&mut self) {
10917        self.block_size_x = ::std::option::Option::None;
10918        self.block_size_y = ::std::option::Option::None;
10919        self.block_size_z = ::std::option::Option::None;
10920        self.block_pos_x = ::std::option::Option::None;
10921        self.block_pos_y = ::std::option::Option::None;
10922        self.block_pos_z = ::std::option::Option::None;
10923        self.world_name = ::std::option::Option::None;
10924        self.world_name_english = ::std::option::Option::None;
10925        self.save_name = ::std::option::Option::None;
10926        self.special_fields.clear();
10927    }
10928
10929    fn default_instance() -> &'static MapInfo {
10930        static instance: MapInfo = MapInfo {
10931            block_size_x: ::std::option::Option::None,
10932            block_size_y: ::std::option::Option::None,
10933            block_size_z: ::std::option::Option::None,
10934            block_pos_x: ::std::option::Option::None,
10935            block_pos_y: ::std::option::Option::None,
10936            block_pos_z: ::std::option::Option::None,
10937            world_name: ::std::option::Option::None,
10938            world_name_english: ::std::option::Option::None,
10939            save_name: ::std::option::Option::None,
10940            special_fields: ::protobuf::SpecialFields::new(),
10941        };
10942        &instance
10943    }
10944}
10945
10946impl ::protobuf::MessageFull for MapInfo {
10947    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
10948        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
10949        descriptor.get(|| file_descriptor().message_by_package_relative_name("MapInfo").unwrap()).clone()
10950    }
10951}
10952
10953impl ::std::fmt::Display for MapInfo {
10954    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10955        ::protobuf::text_format::fmt(self, f)
10956    }
10957}
10958
10959impl ::protobuf::reflect::ProtobufValue for MapInfo {
10960    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
10961}
10962
10963// @@protoc_insertion_point(message:RemoteFortressReader.Cloud)
10964#[derive(PartialEq,Clone,Default,Debug)]
10965pub struct Cloud {
10966    // message fields
10967    // @@protoc_insertion_point(field:RemoteFortressReader.Cloud.front)
10968    pub front: ::std::option::Option<::protobuf::EnumOrUnknown<FrontType>>,
10969    // @@protoc_insertion_point(field:RemoteFortressReader.Cloud.cumulus)
10970    pub cumulus: ::std::option::Option<::protobuf::EnumOrUnknown<CumulusType>>,
10971    // @@protoc_insertion_point(field:RemoteFortressReader.Cloud.cirrus)
10972    pub cirrus: ::std::option::Option<bool>,
10973    // @@protoc_insertion_point(field:RemoteFortressReader.Cloud.stratus)
10974    pub stratus: ::std::option::Option<::protobuf::EnumOrUnknown<StratusType>>,
10975    // @@protoc_insertion_point(field:RemoteFortressReader.Cloud.fog)
10976    pub fog: ::std::option::Option<::protobuf::EnumOrUnknown<FogType>>,
10977    // special fields
10978    // @@protoc_insertion_point(special_field:RemoteFortressReader.Cloud.special_fields)
10979    pub special_fields: ::protobuf::SpecialFields,
10980}
10981
10982impl<'a> ::std::default::Default for &'a Cloud {
10983    fn default() -> &'a Cloud {
10984        <Cloud as ::protobuf::Message>::default_instance()
10985    }
10986}
10987
10988impl Cloud {
10989    pub fn new() -> Cloud {
10990        ::std::default::Default::default()
10991    }
10992
10993    // optional .RemoteFortressReader.FrontType front = 1;
10994
10995    pub fn front(&self) -> FrontType {
10996        match self.front {
10997            Some(e) => e.enum_value_or(FrontType::FRONT_NONE),
10998            None => FrontType::FRONT_NONE,
10999        }
11000    }
11001
11002    pub fn clear_front(&mut self) {
11003        self.front = ::std::option::Option::None;
11004    }
11005
11006    pub fn has_front(&self) -> bool {
11007        self.front.is_some()
11008    }
11009
11010    // Param is passed by value, moved
11011    pub fn set_front(&mut self, v: FrontType) {
11012        self.front = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
11013    }
11014
11015    // optional .RemoteFortressReader.CumulusType cumulus = 2;
11016
11017    pub fn cumulus(&self) -> CumulusType {
11018        match self.cumulus {
11019            Some(e) => e.enum_value_or(CumulusType::CUMULUS_NONE),
11020            None => CumulusType::CUMULUS_NONE,
11021        }
11022    }
11023
11024    pub fn clear_cumulus(&mut self) {
11025        self.cumulus = ::std::option::Option::None;
11026    }
11027
11028    pub fn has_cumulus(&self) -> bool {
11029        self.cumulus.is_some()
11030    }
11031
11032    // Param is passed by value, moved
11033    pub fn set_cumulus(&mut self, v: CumulusType) {
11034        self.cumulus = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
11035    }
11036
11037    // optional bool cirrus = 3;
11038
11039    pub fn cirrus(&self) -> bool {
11040        self.cirrus.unwrap_or(false)
11041    }
11042
11043    pub fn clear_cirrus(&mut self) {
11044        self.cirrus = ::std::option::Option::None;
11045    }
11046
11047    pub fn has_cirrus(&self) -> bool {
11048        self.cirrus.is_some()
11049    }
11050
11051    // Param is passed by value, moved
11052    pub fn set_cirrus(&mut self, v: bool) {
11053        self.cirrus = ::std::option::Option::Some(v);
11054    }
11055
11056    // optional .RemoteFortressReader.StratusType stratus = 4;
11057
11058    pub fn stratus(&self) -> StratusType {
11059        match self.stratus {
11060            Some(e) => e.enum_value_or(StratusType::STRATUS_NONE),
11061            None => StratusType::STRATUS_NONE,
11062        }
11063    }
11064
11065    pub fn clear_stratus(&mut self) {
11066        self.stratus = ::std::option::Option::None;
11067    }
11068
11069    pub fn has_stratus(&self) -> bool {
11070        self.stratus.is_some()
11071    }
11072
11073    // Param is passed by value, moved
11074    pub fn set_stratus(&mut self, v: StratusType) {
11075        self.stratus = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
11076    }
11077
11078    // optional .RemoteFortressReader.FogType fog = 5;
11079
11080    pub fn fog(&self) -> FogType {
11081        match self.fog {
11082            Some(e) => e.enum_value_or(FogType::FOG_NONE),
11083            None => FogType::FOG_NONE,
11084        }
11085    }
11086
11087    pub fn clear_fog(&mut self) {
11088        self.fog = ::std::option::Option::None;
11089    }
11090
11091    pub fn has_fog(&self) -> bool {
11092        self.fog.is_some()
11093    }
11094
11095    // Param is passed by value, moved
11096    pub fn set_fog(&mut self, v: FogType) {
11097        self.fog = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
11098    }
11099
11100    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
11101        let mut fields = ::std::vec::Vec::with_capacity(5);
11102        let mut oneofs = ::std::vec::Vec::with_capacity(0);
11103        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11104            "front",
11105            |m: &Cloud| { &m.front },
11106            |m: &mut Cloud| { &mut m.front },
11107        ));
11108        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11109            "cumulus",
11110            |m: &Cloud| { &m.cumulus },
11111            |m: &mut Cloud| { &mut m.cumulus },
11112        ));
11113        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11114            "cirrus",
11115            |m: &Cloud| { &m.cirrus },
11116            |m: &mut Cloud| { &mut m.cirrus },
11117        ));
11118        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11119            "stratus",
11120            |m: &Cloud| { &m.stratus },
11121            |m: &mut Cloud| { &mut m.stratus },
11122        ));
11123        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11124            "fog",
11125            |m: &Cloud| { &m.fog },
11126            |m: &mut Cloud| { &mut m.fog },
11127        ));
11128        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Cloud>(
11129            "Cloud",
11130            fields,
11131            oneofs,
11132        )
11133    }
11134}
11135
11136impl ::protobuf::Message for Cloud {
11137    const NAME: &'static str = "Cloud";
11138
11139    fn is_initialized(&self) -> bool {
11140        true
11141    }
11142
11143    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
11144        while let Some(tag) = is.read_raw_tag_or_eof()? {
11145            match tag {
11146                8 => {
11147                    self.front = ::std::option::Option::Some(is.read_enum_or_unknown()?);
11148                },
11149                16 => {
11150                    self.cumulus = ::std::option::Option::Some(is.read_enum_or_unknown()?);
11151                },
11152                24 => {
11153                    self.cirrus = ::std::option::Option::Some(is.read_bool()?);
11154                },
11155                32 => {
11156                    self.stratus = ::std::option::Option::Some(is.read_enum_or_unknown()?);
11157                },
11158                40 => {
11159                    self.fog = ::std::option::Option::Some(is.read_enum_or_unknown()?);
11160                },
11161                tag => {
11162                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
11163                },
11164            };
11165        }
11166        ::std::result::Result::Ok(())
11167    }
11168
11169    // Compute sizes of nested messages
11170    #[allow(unused_variables)]
11171    fn compute_size(&self) -> u64 {
11172        let mut my_size = 0;
11173        if let Some(v) = self.front {
11174            my_size += ::protobuf::rt::int32_size(1, v.value());
11175        }
11176        if let Some(v) = self.cumulus {
11177            my_size += ::protobuf::rt::int32_size(2, v.value());
11178        }
11179        if let Some(v) = self.cirrus {
11180            my_size += 1 + 1;
11181        }
11182        if let Some(v) = self.stratus {
11183            my_size += ::protobuf::rt::int32_size(4, v.value());
11184        }
11185        if let Some(v) = self.fog {
11186            my_size += ::protobuf::rt::int32_size(5, v.value());
11187        }
11188        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
11189        self.special_fields.cached_size().set(my_size as u32);
11190        my_size
11191    }
11192
11193    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
11194        if let Some(v) = self.front {
11195            os.write_enum(1, ::protobuf::EnumOrUnknown::value(&v))?;
11196        }
11197        if let Some(v) = self.cumulus {
11198            os.write_enum(2, ::protobuf::EnumOrUnknown::value(&v))?;
11199        }
11200        if let Some(v) = self.cirrus {
11201            os.write_bool(3, v)?;
11202        }
11203        if let Some(v) = self.stratus {
11204            os.write_enum(4, ::protobuf::EnumOrUnknown::value(&v))?;
11205        }
11206        if let Some(v) = self.fog {
11207            os.write_enum(5, ::protobuf::EnumOrUnknown::value(&v))?;
11208        }
11209        os.write_unknown_fields(self.special_fields.unknown_fields())?;
11210        ::std::result::Result::Ok(())
11211    }
11212
11213    fn special_fields(&self) -> &::protobuf::SpecialFields {
11214        &self.special_fields
11215    }
11216
11217    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
11218        &mut self.special_fields
11219    }
11220
11221    fn new() -> Cloud {
11222        Cloud::new()
11223    }
11224
11225    fn clear(&mut self) {
11226        self.front = ::std::option::Option::None;
11227        self.cumulus = ::std::option::Option::None;
11228        self.cirrus = ::std::option::Option::None;
11229        self.stratus = ::std::option::Option::None;
11230        self.fog = ::std::option::Option::None;
11231        self.special_fields.clear();
11232    }
11233
11234    fn default_instance() -> &'static Cloud {
11235        static instance: Cloud = Cloud {
11236            front: ::std::option::Option::None,
11237            cumulus: ::std::option::Option::None,
11238            cirrus: ::std::option::Option::None,
11239            stratus: ::std::option::Option::None,
11240            fog: ::std::option::Option::None,
11241            special_fields: ::protobuf::SpecialFields::new(),
11242        };
11243        &instance
11244    }
11245}
11246
11247impl ::protobuf::MessageFull for Cloud {
11248    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
11249        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
11250        descriptor.get(|| file_descriptor().message_by_package_relative_name("Cloud").unwrap()).clone()
11251    }
11252}
11253
11254impl ::std::fmt::Display for Cloud {
11255    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11256        ::protobuf::text_format::fmt(self, f)
11257    }
11258}
11259
11260impl ::protobuf::reflect::ProtobufValue for Cloud {
11261    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
11262}
11263
11264// @@protoc_insertion_point(message:RemoteFortressReader.WorldMap)
11265#[derive(PartialEq,Clone,Default,Debug)]
11266pub struct WorldMap {
11267    // message fields
11268    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.world_width)
11269    pub world_width: ::std::option::Option<i32>,
11270    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.world_height)
11271    pub world_height: ::std::option::Option<i32>,
11272    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.name)
11273    pub name: ::std::option::Option<::std::vec::Vec<u8>>,
11274    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.name_english)
11275    pub name_english: ::std::option::Option<::std::string::String>,
11276    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.elevation)
11277    pub elevation: ::std::vec::Vec<i32>,
11278    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.rainfall)
11279    pub rainfall: ::std::vec::Vec<i32>,
11280    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.vegetation)
11281    pub vegetation: ::std::vec::Vec<i32>,
11282    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.temperature)
11283    pub temperature: ::std::vec::Vec<i32>,
11284    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.evilness)
11285    pub evilness: ::std::vec::Vec<i32>,
11286    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.drainage)
11287    pub drainage: ::std::vec::Vec<i32>,
11288    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.volcanism)
11289    pub volcanism: ::std::vec::Vec<i32>,
11290    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.savagery)
11291    pub savagery: ::std::vec::Vec<i32>,
11292    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.clouds)
11293    pub clouds: ::std::vec::Vec<Cloud>,
11294    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.salinity)
11295    pub salinity: ::std::vec::Vec<i32>,
11296    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.map_x)
11297    pub map_x: ::std::option::Option<i32>,
11298    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.map_y)
11299    pub map_y: ::std::option::Option<i32>,
11300    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.center_x)
11301    pub center_x: ::std::option::Option<i32>,
11302    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.center_y)
11303    pub center_y: ::std::option::Option<i32>,
11304    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.center_z)
11305    pub center_z: ::std::option::Option<i32>,
11306    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.cur_year)
11307    pub cur_year: ::std::option::Option<i32>,
11308    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.cur_year_tick)
11309    pub cur_year_tick: ::std::option::Option<i32>,
11310    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.world_poles)
11311    pub world_poles: ::std::option::Option<::protobuf::EnumOrUnknown<WorldPoles>>,
11312    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.river_tiles)
11313    pub river_tiles: ::std::vec::Vec<RiverTile>,
11314    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.water_elevation)
11315    pub water_elevation: ::std::vec::Vec<i32>,
11316    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.region_tiles)
11317    pub region_tiles: ::std::vec::Vec<RegionTile>,
11318    // special fields
11319    // @@protoc_insertion_point(special_field:RemoteFortressReader.WorldMap.special_fields)
11320    pub special_fields: ::protobuf::SpecialFields,
11321}
11322
11323impl<'a> ::std::default::Default for &'a WorldMap {
11324    fn default() -> &'a WorldMap {
11325        <WorldMap as ::protobuf::Message>::default_instance()
11326    }
11327}
11328
11329impl WorldMap {
11330    pub fn new() -> WorldMap {
11331        ::std::default::Default::default()
11332    }
11333
11334    // required int32 world_width = 1;
11335
11336    pub fn world_width(&self) -> i32 {
11337        self.world_width.unwrap_or(0)
11338    }
11339
11340    pub fn clear_world_width(&mut self) {
11341        self.world_width = ::std::option::Option::None;
11342    }
11343
11344    pub fn has_world_width(&self) -> bool {
11345        self.world_width.is_some()
11346    }
11347
11348    // Param is passed by value, moved
11349    pub fn set_world_width(&mut self, v: i32) {
11350        self.world_width = ::std::option::Option::Some(v);
11351    }
11352
11353    // required int32 world_height = 2;
11354
11355    pub fn world_height(&self) -> i32 {
11356        self.world_height.unwrap_or(0)
11357    }
11358
11359    pub fn clear_world_height(&mut self) {
11360        self.world_height = ::std::option::Option::None;
11361    }
11362
11363    pub fn has_world_height(&self) -> bool {
11364        self.world_height.is_some()
11365    }
11366
11367    // Param is passed by value, moved
11368    pub fn set_world_height(&mut self, v: i32) {
11369        self.world_height = ::std::option::Option::Some(v);
11370    }
11371
11372    // optional bytes name = 3;
11373
11374    pub fn name(&self) -> &[u8] {
11375        match self.name.as_ref() {
11376            Some(v) => v,
11377            None => &[],
11378        }
11379    }
11380
11381    pub fn clear_name(&mut self) {
11382        self.name = ::std::option::Option::None;
11383    }
11384
11385    pub fn has_name(&self) -> bool {
11386        self.name.is_some()
11387    }
11388
11389    // Param is passed by value, moved
11390    pub fn set_name(&mut self, v: ::std::vec::Vec<u8>) {
11391        self.name = ::std::option::Option::Some(v);
11392    }
11393
11394    // Mutable pointer to the field.
11395    // If field is not initialized, it is initialized with default value first.
11396    pub fn mut_name(&mut self) -> &mut ::std::vec::Vec<u8> {
11397        if self.name.is_none() {
11398            self.name = ::std::option::Option::Some(::std::vec::Vec::new());
11399        }
11400        self.name.as_mut().unwrap()
11401    }
11402
11403    // Take field
11404    pub fn take_name(&mut self) -> ::std::vec::Vec<u8> {
11405        self.name.take().unwrap_or_else(|| ::std::vec::Vec::new())
11406    }
11407
11408    // optional string name_english = 4;
11409
11410    pub fn name_english(&self) -> &str {
11411        match self.name_english.as_ref() {
11412            Some(v) => v,
11413            None => "",
11414        }
11415    }
11416
11417    pub fn clear_name_english(&mut self) {
11418        self.name_english = ::std::option::Option::None;
11419    }
11420
11421    pub fn has_name_english(&self) -> bool {
11422        self.name_english.is_some()
11423    }
11424
11425    // Param is passed by value, moved
11426    pub fn set_name_english(&mut self, v: ::std::string::String) {
11427        self.name_english = ::std::option::Option::Some(v);
11428    }
11429
11430    // Mutable pointer to the field.
11431    // If field is not initialized, it is initialized with default value first.
11432    pub fn mut_name_english(&mut self) -> &mut ::std::string::String {
11433        if self.name_english.is_none() {
11434            self.name_english = ::std::option::Option::Some(::std::string::String::new());
11435        }
11436        self.name_english.as_mut().unwrap()
11437    }
11438
11439    // Take field
11440    pub fn take_name_english(&mut self) -> ::std::string::String {
11441        self.name_english.take().unwrap_or_else(|| ::std::string::String::new())
11442    }
11443
11444    // optional int32 map_x = 15;
11445
11446    pub fn map_x(&self) -> i32 {
11447        self.map_x.unwrap_or(0)
11448    }
11449
11450    pub fn clear_map_x(&mut self) {
11451        self.map_x = ::std::option::Option::None;
11452    }
11453
11454    pub fn has_map_x(&self) -> bool {
11455        self.map_x.is_some()
11456    }
11457
11458    // Param is passed by value, moved
11459    pub fn set_map_x(&mut self, v: i32) {
11460        self.map_x = ::std::option::Option::Some(v);
11461    }
11462
11463    // optional int32 map_y = 16;
11464
11465    pub fn map_y(&self) -> i32 {
11466        self.map_y.unwrap_or(0)
11467    }
11468
11469    pub fn clear_map_y(&mut self) {
11470        self.map_y = ::std::option::Option::None;
11471    }
11472
11473    pub fn has_map_y(&self) -> bool {
11474        self.map_y.is_some()
11475    }
11476
11477    // Param is passed by value, moved
11478    pub fn set_map_y(&mut self, v: i32) {
11479        self.map_y = ::std::option::Option::Some(v);
11480    }
11481
11482    // optional int32 center_x = 17;
11483
11484    pub fn center_x(&self) -> i32 {
11485        self.center_x.unwrap_or(0)
11486    }
11487
11488    pub fn clear_center_x(&mut self) {
11489        self.center_x = ::std::option::Option::None;
11490    }
11491
11492    pub fn has_center_x(&self) -> bool {
11493        self.center_x.is_some()
11494    }
11495
11496    // Param is passed by value, moved
11497    pub fn set_center_x(&mut self, v: i32) {
11498        self.center_x = ::std::option::Option::Some(v);
11499    }
11500
11501    // optional int32 center_y = 18;
11502
11503    pub fn center_y(&self) -> i32 {
11504        self.center_y.unwrap_or(0)
11505    }
11506
11507    pub fn clear_center_y(&mut self) {
11508        self.center_y = ::std::option::Option::None;
11509    }
11510
11511    pub fn has_center_y(&self) -> bool {
11512        self.center_y.is_some()
11513    }
11514
11515    // Param is passed by value, moved
11516    pub fn set_center_y(&mut self, v: i32) {
11517        self.center_y = ::std::option::Option::Some(v);
11518    }
11519
11520    // optional int32 center_z = 19;
11521
11522    pub fn center_z(&self) -> i32 {
11523        self.center_z.unwrap_or(0)
11524    }
11525
11526    pub fn clear_center_z(&mut self) {
11527        self.center_z = ::std::option::Option::None;
11528    }
11529
11530    pub fn has_center_z(&self) -> bool {
11531        self.center_z.is_some()
11532    }
11533
11534    // Param is passed by value, moved
11535    pub fn set_center_z(&mut self, v: i32) {
11536        self.center_z = ::std::option::Option::Some(v);
11537    }
11538
11539    // optional int32 cur_year = 20;
11540
11541    pub fn cur_year(&self) -> i32 {
11542        self.cur_year.unwrap_or(0)
11543    }
11544
11545    pub fn clear_cur_year(&mut self) {
11546        self.cur_year = ::std::option::Option::None;
11547    }
11548
11549    pub fn has_cur_year(&self) -> bool {
11550        self.cur_year.is_some()
11551    }
11552
11553    // Param is passed by value, moved
11554    pub fn set_cur_year(&mut self, v: i32) {
11555        self.cur_year = ::std::option::Option::Some(v);
11556    }
11557
11558    // optional int32 cur_year_tick = 21;
11559
11560    pub fn cur_year_tick(&self) -> i32 {
11561        self.cur_year_tick.unwrap_or(0)
11562    }
11563
11564    pub fn clear_cur_year_tick(&mut self) {
11565        self.cur_year_tick = ::std::option::Option::None;
11566    }
11567
11568    pub fn has_cur_year_tick(&self) -> bool {
11569        self.cur_year_tick.is_some()
11570    }
11571
11572    // Param is passed by value, moved
11573    pub fn set_cur_year_tick(&mut self, v: i32) {
11574        self.cur_year_tick = ::std::option::Option::Some(v);
11575    }
11576
11577    // optional .RemoteFortressReader.WorldPoles world_poles = 22;
11578
11579    pub fn world_poles(&self) -> WorldPoles {
11580        match self.world_poles {
11581            Some(e) => e.enum_value_or(WorldPoles::NO_POLES),
11582            None => WorldPoles::NO_POLES,
11583        }
11584    }
11585
11586    pub fn clear_world_poles(&mut self) {
11587        self.world_poles = ::std::option::Option::None;
11588    }
11589
11590    pub fn has_world_poles(&self) -> bool {
11591        self.world_poles.is_some()
11592    }
11593
11594    // Param is passed by value, moved
11595    pub fn set_world_poles(&mut self, v: WorldPoles) {
11596        self.world_poles = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
11597    }
11598
11599    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
11600        let mut fields = ::std::vec::Vec::with_capacity(25);
11601        let mut oneofs = ::std::vec::Vec::with_capacity(0);
11602        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11603            "world_width",
11604            |m: &WorldMap| { &m.world_width },
11605            |m: &mut WorldMap| { &mut m.world_width },
11606        ));
11607        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11608            "world_height",
11609            |m: &WorldMap| { &m.world_height },
11610            |m: &mut WorldMap| { &mut m.world_height },
11611        ));
11612        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11613            "name",
11614            |m: &WorldMap| { &m.name },
11615            |m: &mut WorldMap| { &mut m.name },
11616        ));
11617        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11618            "name_english",
11619            |m: &WorldMap| { &m.name_english },
11620            |m: &mut WorldMap| { &mut m.name_english },
11621        ));
11622        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11623            "elevation",
11624            |m: &WorldMap| { &m.elevation },
11625            |m: &mut WorldMap| { &mut m.elevation },
11626        ));
11627        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11628            "rainfall",
11629            |m: &WorldMap| { &m.rainfall },
11630            |m: &mut WorldMap| { &mut m.rainfall },
11631        ));
11632        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11633            "vegetation",
11634            |m: &WorldMap| { &m.vegetation },
11635            |m: &mut WorldMap| { &mut m.vegetation },
11636        ));
11637        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11638            "temperature",
11639            |m: &WorldMap| { &m.temperature },
11640            |m: &mut WorldMap| { &mut m.temperature },
11641        ));
11642        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11643            "evilness",
11644            |m: &WorldMap| { &m.evilness },
11645            |m: &mut WorldMap| { &mut m.evilness },
11646        ));
11647        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11648            "drainage",
11649            |m: &WorldMap| { &m.drainage },
11650            |m: &mut WorldMap| { &mut m.drainage },
11651        ));
11652        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11653            "volcanism",
11654            |m: &WorldMap| { &m.volcanism },
11655            |m: &mut WorldMap| { &mut m.volcanism },
11656        ));
11657        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11658            "savagery",
11659            |m: &WorldMap| { &m.savagery },
11660            |m: &mut WorldMap| { &mut m.savagery },
11661        ));
11662        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11663            "clouds",
11664            |m: &WorldMap| { &m.clouds },
11665            |m: &mut WorldMap| { &mut m.clouds },
11666        ));
11667        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11668            "salinity",
11669            |m: &WorldMap| { &m.salinity },
11670            |m: &mut WorldMap| { &mut m.salinity },
11671        ));
11672        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11673            "map_x",
11674            |m: &WorldMap| { &m.map_x },
11675            |m: &mut WorldMap| { &mut m.map_x },
11676        ));
11677        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11678            "map_y",
11679            |m: &WorldMap| { &m.map_y },
11680            |m: &mut WorldMap| { &mut m.map_y },
11681        ));
11682        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11683            "center_x",
11684            |m: &WorldMap| { &m.center_x },
11685            |m: &mut WorldMap| { &mut m.center_x },
11686        ));
11687        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11688            "center_y",
11689            |m: &WorldMap| { &m.center_y },
11690            |m: &mut WorldMap| { &mut m.center_y },
11691        ));
11692        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11693            "center_z",
11694            |m: &WorldMap| { &m.center_z },
11695            |m: &mut WorldMap| { &mut m.center_z },
11696        ));
11697        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11698            "cur_year",
11699            |m: &WorldMap| { &m.cur_year },
11700            |m: &mut WorldMap| { &mut m.cur_year },
11701        ));
11702        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11703            "cur_year_tick",
11704            |m: &WorldMap| { &m.cur_year_tick },
11705            |m: &mut WorldMap| { &mut m.cur_year_tick },
11706        ));
11707        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11708            "world_poles",
11709            |m: &WorldMap| { &m.world_poles },
11710            |m: &mut WorldMap| { &mut m.world_poles },
11711        ));
11712        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11713            "river_tiles",
11714            |m: &WorldMap| { &m.river_tiles },
11715            |m: &mut WorldMap| { &mut m.river_tiles },
11716        ));
11717        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11718            "water_elevation",
11719            |m: &WorldMap| { &m.water_elevation },
11720            |m: &mut WorldMap| { &mut m.water_elevation },
11721        ));
11722        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11723            "region_tiles",
11724            |m: &WorldMap| { &m.region_tiles },
11725            |m: &mut WorldMap| { &mut m.region_tiles },
11726        ));
11727        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<WorldMap>(
11728            "WorldMap",
11729            fields,
11730            oneofs,
11731        )
11732    }
11733}
11734
11735impl ::protobuf::Message for WorldMap {
11736    const NAME: &'static str = "WorldMap";
11737
11738    fn is_initialized(&self) -> bool {
11739        if self.world_width.is_none() {
11740            return false;
11741        }
11742        if self.world_height.is_none() {
11743            return false;
11744        }
11745        for v in &self.clouds {
11746            if !v.is_initialized() {
11747                return false;
11748            }
11749        };
11750        for v in &self.river_tiles {
11751            if !v.is_initialized() {
11752                return false;
11753            }
11754        };
11755        for v in &self.region_tiles {
11756            if !v.is_initialized() {
11757                return false;
11758            }
11759        };
11760        true
11761    }
11762
11763    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
11764        while let Some(tag) = is.read_raw_tag_or_eof()? {
11765            match tag {
11766                8 => {
11767                    self.world_width = ::std::option::Option::Some(is.read_int32()?);
11768                },
11769                16 => {
11770                    self.world_height = ::std::option::Option::Some(is.read_int32()?);
11771                },
11772                26 => {
11773                    self.name = ::std::option::Option::Some(is.read_bytes()?);
11774                },
11775                34 => {
11776                    self.name_english = ::std::option::Option::Some(is.read_string()?);
11777                },
11778                42 => {
11779                    is.read_repeated_packed_int32_into(&mut self.elevation)?;
11780                },
11781                40 => {
11782                    self.elevation.push(is.read_int32()?);
11783                },
11784                50 => {
11785                    is.read_repeated_packed_int32_into(&mut self.rainfall)?;
11786                },
11787                48 => {
11788                    self.rainfall.push(is.read_int32()?);
11789                },
11790                58 => {
11791                    is.read_repeated_packed_int32_into(&mut self.vegetation)?;
11792                },
11793                56 => {
11794                    self.vegetation.push(is.read_int32()?);
11795                },
11796                66 => {
11797                    is.read_repeated_packed_int32_into(&mut self.temperature)?;
11798                },
11799                64 => {
11800                    self.temperature.push(is.read_int32()?);
11801                },
11802                74 => {
11803                    is.read_repeated_packed_int32_into(&mut self.evilness)?;
11804                },
11805                72 => {
11806                    self.evilness.push(is.read_int32()?);
11807                },
11808                82 => {
11809                    is.read_repeated_packed_int32_into(&mut self.drainage)?;
11810                },
11811                80 => {
11812                    self.drainage.push(is.read_int32()?);
11813                },
11814                90 => {
11815                    is.read_repeated_packed_int32_into(&mut self.volcanism)?;
11816                },
11817                88 => {
11818                    self.volcanism.push(is.read_int32()?);
11819                },
11820                98 => {
11821                    is.read_repeated_packed_int32_into(&mut self.savagery)?;
11822                },
11823                96 => {
11824                    self.savagery.push(is.read_int32()?);
11825                },
11826                106 => {
11827                    self.clouds.push(is.read_message()?);
11828                },
11829                114 => {
11830                    is.read_repeated_packed_int32_into(&mut self.salinity)?;
11831                },
11832                112 => {
11833                    self.salinity.push(is.read_int32()?);
11834                },
11835                120 => {
11836                    self.map_x = ::std::option::Option::Some(is.read_int32()?);
11837                },
11838                128 => {
11839                    self.map_y = ::std::option::Option::Some(is.read_int32()?);
11840                },
11841                136 => {
11842                    self.center_x = ::std::option::Option::Some(is.read_int32()?);
11843                },
11844                144 => {
11845                    self.center_y = ::std::option::Option::Some(is.read_int32()?);
11846                },
11847                152 => {
11848                    self.center_z = ::std::option::Option::Some(is.read_int32()?);
11849                },
11850                160 => {
11851                    self.cur_year = ::std::option::Option::Some(is.read_int32()?);
11852                },
11853                168 => {
11854                    self.cur_year_tick = ::std::option::Option::Some(is.read_int32()?);
11855                },
11856                176 => {
11857                    self.world_poles = ::std::option::Option::Some(is.read_enum_or_unknown()?);
11858                },
11859                186 => {
11860                    self.river_tiles.push(is.read_message()?);
11861                },
11862                194 => {
11863                    is.read_repeated_packed_int32_into(&mut self.water_elevation)?;
11864                },
11865                192 => {
11866                    self.water_elevation.push(is.read_int32()?);
11867                },
11868                202 => {
11869                    self.region_tiles.push(is.read_message()?);
11870                },
11871                tag => {
11872                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
11873                },
11874            };
11875        }
11876        ::std::result::Result::Ok(())
11877    }
11878
11879    // Compute sizes of nested messages
11880    #[allow(unused_variables)]
11881    fn compute_size(&self) -> u64 {
11882        let mut my_size = 0;
11883        if let Some(v) = self.world_width {
11884            my_size += ::protobuf::rt::int32_size(1, v);
11885        }
11886        if let Some(v) = self.world_height {
11887            my_size += ::protobuf::rt::int32_size(2, v);
11888        }
11889        if let Some(v) = self.name.as_ref() {
11890            my_size += ::protobuf::rt::bytes_size(3, &v);
11891        }
11892        if let Some(v) = self.name_english.as_ref() {
11893            my_size += ::protobuf::rt::string_size(4, &v);
11894        }
11895        for value in &self.elevation {
11896            my_size += ::protobuf::rt::int32_size(5, *value);
11897        };
11898        for value in &self.rainfall {
11899            my_size += ::protobuf::rt::int32_size(6, *value);
11900        };
11901        for value in &self.vegetation {
11902            my_size += ::protobuf::rt::int32_size(7, *value);
11903        };
11904        for value in &self.temperature {
11905            my_size += ::protobuf::rt::int32_size(8, *value);
11906        };
11907        for value in &self.evilness {
11908            my_size += ::protobuf::rt::int32_size(9, *value);
11909        };
11910        for value in &self.drainage {
11911            my_size += ::protobuf::rt::int32_size(10, *value);
11912        };
11913        for value in &self.volcanism {
11914            my_size += ::protobuf::rt::int32_size(11, *value);
11915        };
11916        for value in &self.savagery {
11917            my_size += ::protobuf::rt::int32_size(12, *value);
11918        };
11919        for value in &self.clouds {
11920            let len = value.compute_size();
11921            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
11922        };
11923        for value in &self.salinity {
11924            my_size += ::protobuf::rt::int32_size(14, *value);
11925        };
11926        if let Some(v) = self.map_x {
11927            my_size += ::protobuf::rt::int32_size(15, v);
11928        }
11929        if let Some(v) = self.map_y {
11930            my_size += ::protobuf::rt::int32_size(16, v);
11931        }
11932        if let Some(v) = self.center_x {
11933            my_size += ::protobuf::rt::int32_size(17, v);
11934        }
11935        if let Some(v) = self.center_y {
11936            my_size += ::protobuf::rt::int32_size(18, v);
11937        }
11938        if let Some(v) = self.center_z {
11939            my_size += ::protobuf::rt::int32_size(19, v);
11940        }
11941        if let Some(v) = self.cur_year {
11942            my_size += ::protobuf::rt::int32_size(20, v);
11943        }
11944        if let Some(v) = self.cur_year_tick {
11945            my_size += ::protobuf::rt::int32_size(21, v);
11946        }
11947        if let Some(v) = self.world_poles {
11948            my_size += ::protobuf::rt::int32_size(22, v.value());
11949        }
11950        for value in &self.river_tiles {
11951            let len = value.compute_size();
11952            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
11953        };
11954        for value in &self.water_elevation {
11955            my_size += ::protobuf::rt::int32_size(24, *value);
11956        };
11957        for value in &self.region_tiles {
11958            let len = value.compute_size();
11959            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
11960        };
11961        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
11962        self.special_fields.cached_size().set(my_size as u32);
11963        my_size
11964    }
11965
11966    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
11967        if let Some(v) = self.world_width {
11968            os.write_int32(1, v)?;
11969        }
11970        if let Some(v) = self.world_height {
11971            os.write_int32(2, v)?;
11972        }
11973        if let Some(v) = self.name.as_ref() {
11974            os.write_bytes(3, v)?;
11975        }
11976        if let Some(v) = self.name_english.as_ref() {
11977            os.write_string(4, v)?;
11978        }
11979        for v in &self.elevation {
11980            os.write_int32(5, *v)?;
11981        };
11982        for v in &self.rainfall {
11983            os.write_int32(6, *v)?;
11984        };
11985        for v in &self.vegetation {
11986            os.write_int32(7, *v)?;
11987        };
11988        for v in &self.temperature {
11989            os.write_int32(8, *v)?;
11990        };
11991        for v in &self.evilness {
11992            os.write_int32(9, *v)?;
11993        };
11994        for v in &self.drainage {
11995            os.write_int32(10, *v)?;
11996        };
11997        for v in &self.volcanism {
11998            os.write_int32(11, *v)?;
11999        };
12000        for v in &self.savagery {
12001            os.write_int32(12, *v)?;
12002        };
12003        for v in &self.clouds {
12004            ::protobuf::rt::write_message_field_with_cached_size(13, v, os)?;
12005        };
12006        for v in &self.salinity {
12007            os.write_int32(14, *v)?;
12008        };
12009        if let Some(v) = self.map_x {
12010            os.write_int32(15, v)?;
12011        }
12012        if let Some(v) = self.map_y {
12013            os.write_int32(16, v)?;
12014        }
12015        if let Some(v) = self.center_x {
12016            os.write_int32(17, v)?;
12017        }
12018        if let Some(v) = self.center_y {
12019            os.write_int32(18, v)?;
12020        }
12021        if let Some(v) = self.center_z {
12022            os.write_int32(19, v)?;
12023        }
12024        if let Some(v) = self.cur_year {
12025            os.write_int32(20, v)?;
12026        }
12027        if let Some(v) = self.cur_year_tick {
12028            os.write_int32(21, v)?;
12029        }
12030        if let Some(v) = self.world_poles {
12031            os.write_enum(22, ::protobuf::EnumOrUnknown::value(&v))?;
12032        }
12033        for v in &self.river_tiles {
12034            ::protobuf::rt::write_message_field_with_cached_size(23, v, os)?;
12035        };
12036        for v in &self.water_elevation {
12037            os.write_int32(24, *v)?;
12038        };
12039        for v in &self.region_tiles {
12040            ::protobuf::rt::write_message_field_with_cached_size(25, v, os)?;
12041        };
12042        os.write_unknown_fields(self.special_fields.unknown_fields())?;
12043        ::std::result::Result::Ok(())
12044    }
12045
12046    fn special_fields(&self) -> &::protobuf::SpecialFields {
12047        &self.special_fields
12048    }
12049
12050    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
12051        &mut self.special_fields
12052    }
12053
12054    fn new() -> WorldMap {
12055        WorldMap::new()
12056    }
12057
12058    fn clear(&mut self) {
12059        self.world_width = ::std::option::Option::None;
12060        self.world_height = ::std::option::Option::None;
12061        self.name = ::std::option::Option::None;
12062        self.name_english = ::std::option::Option::None;
12063        self.elevation.clear();
12064        self.rainfall.clear();
12065        self.vegetation.clear();
12066        self.temperature.clear();
12067        self.evilness.clear();
12068        self.drainage.clear();
12069        self.volcanism.clear();
12070        self.savagery.clear();
12071        self.clouds.clear();
12072        self.salinity.clear();
12073        self.map_x = ::std::option::Option::None;
12074        self.map_y = ::std::option::Option::None;
12075        self.center_x = ::std::option::Option::None;
12076        self.center_y = ::std::option::Option::None;
12077        self.center_z = ::std::option::Option::None;
12078        self.cur_year = ::std::option::Option::None;
12079        self.cur_year_tick = ::std::option::Option::None;
12080        self.world_poles = ::std::option::Option::None;
12081        self.river_tiles.clear();
12082        self.water_elevation.clear();
12083        self.region_tiles.clear();
12084        self.special_fields.clear();
12085    }
12086
12087    fn default_instance() -> &'static WorldMap {
12088        static instance: WorldMap = WorldMap {
12089            world_width: ::std::option::Option::None,
12090            world_height: ::std::option::Option::None,
12091            name: ::std::option::Option::None,
12092            name_english: ::std::option::Option::None,
12093            elevation: ::std::vec::Vec::new(),
12094            rainfall: ::std::vec::Vec::new(),
12095            vegetation: ::std::vec::Vec::new(),
12096            temperature: ::std::vec::Vec::new(),
12097            evilness: ::std::vec::Vec::new(),
12098            drainage: ::std::vec::Vec::new(),
12099            volcanism: ::std::vec::Vec::new(),
12100            savagery: ::std::vec::Vec::new(),
12101            clouds: ::std::vec::Vec::new(),
12102            salinity: ::std::vec::Vec::new(),
12103            map_x: ::std::option::Option::None,
12104            map_y: ::std::option::Option::None,
12105            center_x: ::std::option::Option::None,
12106            center_y: ::std::option::Option::None,
12107            center_z: ::std::option::Option::None,
12108            cur_year: ::std::option::Option::None,
12109            cur_year_tick: ::std::option::Option::None,
12110            world_poles: ::std::option::Option::None,
12111            river_tiles: ::std::vec::Vec::new(),
12112            water_elevation: ::std::vec::Vec::new(),
12113            region_tiles: ::std::vec::Vec::new(),
12114            special_fields: ::protobuf::SpecialFields::new(),
12115        };
12116        &instance
12117    }
12118}
12119
12120impl ::protobuf::MessageFull for WorldMap {
12121    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
12122        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
12123        descriptor.get(|| file_descriptor().message_by_package_relative_name("WorldMap").unwrap()).clone()
12124    }
12125}
12126
12127impl ::std::fmt::Display for WorldMap {
12128    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12129        ::protobuf::text_format::fmt(self, f)
12130    }
12131}
12132
12133impl ::protobuf::reflect::ProtobufValue for WorldMap {
12134    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
12135}
12136
12137// @@protoc_insertion_point(message:RemoteFortressReader.SiteRealizationBuildingWall)
12138#[derive(PartialEq,Clone,Default,Debug)]
12139pub struct SiteRealizationBuildingWall {
12140    // message fields
12141    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingWall.start_x)
12142    pub start_x: ::std::option::Option<i32>,
12143    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingWall.start_y)
12144    pub start_y: ::std::option::Option<i32>,
12145    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingWall.start_z)
12146    pub start_z: ::std::option::Option<i32>,
12147    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingWall.end_x)
12148    pub end_x: ::std::option::Option<i32>,
12149    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingWall.end_y)
12150    pub end_y: ::std::option::Option<i32>,
12151    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingWall.end_z)
12152    pub end_z: ::std::option::Option<i32>,
12153    // special fields
12154    // @@protoc_insertion_point(special_field:RemoteFortressReader.SiteRealizationBuildingWall.special_fields)
12155    pub special_fields: ::protobuf::SpecialFields,
12156}
12157
12158impl<'a> ::std::default::Default for &'a SiteRealizationBuildingWall {
12159    fn default() -> &'a SiteRealizationBuildingWall {
12160        <SiteRealizationBuildingWall as ::protobuf::Message>::default_instance()
12161    }
12162}
12163
12164impl SiteRealizationBuildingWall {
12165    pub fn new() -> SiteRealizationBuildingWall {
12166        ::std::default::Default::default()
12167    }
12168
12169    // optional int32 start_x = 1;
12170
12171    pub fn start_x(&self) -> i32 {
12172        self.start_x.unwrap_or(0)
12173    }
12174
12175    pub fn clear_start_x(&mut self) {
12176        self.start_x = ::std::option::Option::None;
12177    }
12178
12179    pub fn has_start_x(&self) -> bool {
12180        self.start_x.is_some()
12181    }
12182
12183    // Param is passed by value, moved
12184    pub fn set_start_x(&mut self, v: i32) {
12185        self.start_x = ::std::option::Option::Some(v);
12186    }
12187
12188    // optional int32 start_y = 2;
12189
12190    pub fn start_y(&self) -> i32 {
12191        self.start_y.unwrap_or(0)
12192    }
12193
12194    pub fn clear_start_y(&mut self) {
12195        self.start_y = ::std::option::Option::None;
12196    }
12197
12198    pub fn has_start_y(&self) -> bool {
12199        self.start_y.is_some()
12200    }
12201
12202    // Param is passed by value, moved
12203    pub fn set_start_y(&mut self, v: i32) {
12204        self.start_y = ::std::option::Option::Some(v);
12205    }
12206
12207    // optional int32 start_z = 3;
12208
12209    pub fn start_z(&self) -> i32 {
12210        self.start_z.unwrap_or(0)
12211    }
12212
12213    pub fn clear_start_z(&mut self) {
12214        self.start_z = ::std::option::Option::None;
12215    }
12216
12217    pub fn has_start_z(&self) -> bool {
12218        self.start_z.is_some()
12219    }
12220
12221    // Param is passed by value, moved
12222    pub fn set_start_z(&mut self, v: i32) {
12223        self.start_z = ::std::option::Option::Some(v);
12224    }
12225
12226    // optional int32 end_x = 4;
12227
12228    pub fn end_x(&self) -> i32 {
12229        self.end_x.unwrap_or(0)
12230    }
12231
12232    pub fn clear_end_x(&mut self) {
12233        self.end_x = ::std::option::Option::None;
12234    }
12235
12236    pub fn has_end_x(&self) -> bool {
12237        self.end_x.is_some()
12238    }
12239
12240    // Param is passed by value, moved
12241    pub fn set_end_x(&mut self, v: i32) {
12242        self.end_x = ::std::option::Option::Some(v);
12243    }
12244
12245    // optional int32 end_y = 5;
12246
12247    pub fn end_y(&self) -> i32 {
12248        self.end_y.unwrap_or(0)
12249    }
12250
12251    pub fn clear_end_y(&mut self) {
12252        self.end_y = ::std::option::Option::None;
12253    }
12254
12255    pub fn has_end_y(&self) -> bool {
12256        self.end_y.is_some()
12257    }
12258
12259    // Param is passed by value, moved
12260    pub fn set_end_y(&mut self, v: i32) {
12261        self.end_y = ::std::option::Option::Some(v);
12262    }
12263
12264    // optional int32 end_z = 6;
12265
12266    pub fn end_z(&self) -> i32 {
12267        self.end_z.unwrap_or(0)
12268    }
12269
12270    pub fn clear_end_z(&mut self) {
12271        self.end_z = ::std::option::Option::None;
12272    }
12273
12274    pub fn has_end_z(&self) -> bool {
12275        self.end_z.is_some()
12276    }
12277
12278    // Param is passed by value, moved
12279    pub fn set_end_z(&mut self, v: i32) {
12280        self.end_z = ::std::option::Option::Some(v);
12281    }
12282
12283    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
12284        let mut fields = ::std::vec::Vec::with_capacity(6);
12285        let mut oneofs = ::std::vec::Vec::with_capacity(0);
12286        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12287            "start_x",
12288            |m: &SiteRealizationBuildingWall| { &m.start_x },
12289            |m: &mut SiteRealizationBuildingWall| { &mut m.start_x },
12290        ));
12291        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12292            "start_y",
12293            |m: &SiteRealizationBuildingWall| { &m.start_y },
12294            |m: &mut SiteRealizationBuildingWall| { &mut m.start_y },
12295        ));
12296        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12297            "start_z",
12298            |m: &SiteRealizationBuildingWall| { &m.start_z },
12299            |m: &mut SiteRealizationBuildingWall| { &mut m.start_z },
12300        ));
12301        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12302            "end_x",
12303            |m: &SiteRealizationBuildingWall| { &m.end_x },
12304            |m: &mut SiteRealizationBuildingWall| { &mut m.end_x },
12305        ));
12306        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12307            "end_y",
12308            |m: &SiteRealizationBuildingWall| { &m.end_y },
12309            |m: &mut SiteRealizationBuildingWall| { &mut m.end_y },
12310        ));
12311        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12312            "end_z",
12313            |m: &SiteRealizationBuildingWall| { &m.end_z },
12314            |m: &mut SiteRealizationBuildingWall| { &mut m.end_z },
12315        ));
12316        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SiteRealizationBuildingWall>(
12317            "SiteRealizationBuildingWall",
12318            fields,
12319            oneofs,
12320        )
12321    }
12322}
12323
12324impl ::protobuf::Message for SiteRealizationBuildingWall {
12325    const NAME: &'static str = "SiteRealizationBuildingWall";
12326
12327    fn is_initialized(&self) -> bool {
12328        true
12329    }
12330
12331    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
12332        while let Some(tag) = is.read_raw_tag_or_eof()? {
12333            match tag {
12334                8 => {
12335                    self.start_x = ::std::option::Option::Some(is.read_int32()?);
12336                },
12337                16 => {
12338                    self.start_y = ::std::option::Option::Some(is.read_int32()?);
12339                },
12340                24 => {
12341                    self.start_z = ::std::option::Option::Some(is.read_int32()?);
12342                },
12343                32 => {
12344                    self.end_x = ::std::option::Option::Some(is.read_int32()?);
12345                },
12346                40 => {
12347                    self.end_y = ::std::option::Option::Some(is.read_int32()?);
12348                },
12349                48 => {
12350                    self.end_z = ::std::option::Option::Some(is.read_int32()?);
12351                },
12352                tag => {
12353                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
12354                },
12355            };
12356        }
12357        ::std::result::Result::Ok(())
12358    }
12359
12360    // Compute sizes of nested messages
12361    #[allow(unused_variables)]
12362    fn compute_size(&self) -> u64 {
12363        let mut my_size = 0;
12364        if let Some(v) = self.start_x {
12365            my_size += ::protobuf::rt::int32_size(1, v);
12366        }
12367        if let Some(v) = self.start_y {
12368            my_size += ::protobuf::rt::int32_size(2, v);
12369        }
12370        if let Some(v) = self.start_z {
12371            my_size += ::protobuf::rt::int32_size(3, v);
12372        }
12373        if let Some(v) = self.end_x {
12374            my_size += ::protobuf::rt::int32_size(4, v);
12375        }
12376        if let Some(v) = self.end_y {
12377            my_size += ::protobuf::rt::int32_size(5, v);
12378        }
12379        if let Some(v) = self.end_z {
12380            my_size += ::protobuf::rt::int32_size(6, v);
12381        }
12382        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
12383        self.special_fields.cached_size().set(my_size as u32);
12384        my_size
12385    }
12386
12387    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
12388        if let Some(v) = self.start_x {
12389            os.write_int32(1, v)?;
12390        }
12391        if let Some(v) = self.start_y {
12392            os.write_int32(2, v)?;
12393        }
12394        if let Some(v) = self.start_z {
12395            os.write_int32(3, v)?;
12396        }
12397        if let Some(v) = self.end_x {
12398            os.write_int32(4, v)?;
12399        }
12400        if let Some(v) = self.end_y {
12401            os.write_int32(5, v)?;
12402        }
12403        if let Some(v) = self.end_z {
12404            os.write_int32(6, v)?;
12405        }
12406        os.write_unknown_fields(self.special_fields.unknown_fields())?;
12407        ::std::result::Result::Ok(())
12408    }
12409
12410    fn special_fields(&self) -> &::protobuf::SpecialFields {
12411        &self.special_fields
12412    }
12413
12414    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
12415        &mut self.special_fields
12416    }
12417
12418    fn new() -> SiteRealizationBuildingWall {
12419        SiteRealizationBuildingWall::new()
12420    }
12421
12422    fn clear(&mut self) {
12423        self.start_x = ::std::option::Option::None;
12424        self.start_y = ::std::option::Option::None;
12425        self.start_z = ::std::option::Option::None;
12426        self.end_x = ::std::option::Option::None;
12427        self.end_y = ::std::option::Option::None;
12428        self.end_z = ::std::option::Option::None;
12429        self.special_fields.clear();
12430    }
12431
12432    fn default_instance() -> &'static SiteRealizationBuildingWall {
12433        static instance: SiteRealizationBuildingWall = SiteRealizationBuildingWall {
12434            start_x: ::std::option::Option::None,
12435            start_y: ::std::option::Option::None,
12436            start_z: ::std::option::Option::None,
12437            end_x: ::std::option::Option::None,
12438            end_y: ::std::option::Option::None,
12439            end_z: ::std::option::Option::None,
12440            special_fields: ::protobuf::SpecialFields::new(),
12441        };
12442        &instance
12443    }
12444}
12445
12446impl ::protobuf::MessageFull for SiteRealizationBuildingWall {
12447    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
12448        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
12449        descriptor.get(|| file_descriptor().message_by_package_relative_name("SiteRealizationBuildingWall").unwrap()).clone()
12450    }
12451}
12452
12453impl ::std::fmt::Display for SiteRealizationBuildingWall {
12454    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12455        ::protobuf::text_format::fmt(self, f)
12456    }
12457}
12458
12459impl ::protobuf::reflect::ProtobufValue for SiteRealizationBuildingWall {
12460    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
12461}
12462
12463// @@protoc_insertion_point(message:RemoteFortressReader.SiteRealizationBuildingTower)
12464#[derive(PartialEq,Clone,Default,Debug)]
12465pub struct SiteRealizationBuildingTower {
12466    // message fields
12467    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingTower.roof_z)
12468    pub roof_z: ::std::option::Option<i32>,
12469    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingTower.round)
12470    pub round: ::std::option::Option<bool>,
12471    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingTower.goblin)
12472    pub goblin: ::std::option::Option<bool>,
12473    // special fields
12474    // @@protoc_insertion_point(special_field:RemoteFortressReader.SiteRealizationBuildingTower.special_fields)
12475    pub special_fields: ::protobuf::SpecialFields,
12476}
12477
12478impl<'a> ::std::default::Default for &'a SiteRealizationBuildingTower {
12479    fn default() -> &'a SiteRealizationBuildingTower {
12480        <SiteRealizationBuildingTower as ::protobuf::Message>::default_instance()
12481    }
12482}
12483
12484impl SiteRealizationBuildingTower {
12485    pub fn new() -> SiteRealizationBuildingTower {
12486        ::std::default::Default::default()
12487    }
12488
12489    // optional int32 roof_z = 1;
12490
12491    pub fn roof_z(&self) -> i32 {
12492        self.roof_z.unwrap_or(0)
12493    }
12494
12495    pub fn clear_roof_z(&mut self) {
12496        self.roof_z = ::std::option::Option::None;
12497    }
12498
12499    pub fn has_roof_z(&self) -> bool {
12500        self.roof_z.is_some()
12501    }
12502
12503    // Param is passed by value, moved
12504    pub fn set_roof_z(&mut self, v: i32) {
12505        self.roof_z = ::std::option::Option::Some(v);
12506    }
12507
12508    // optional bool round = 2;
12509
12510    pub fn round(&self) -> bool {
12511        self.round.unwrap_or(false)
12512    }
12513
12514    pub fn clear_round(&mut self) {
12515        self.round = ::std::option::Option::None;
12516    }
12517
12518    pub fn has_round(&self) -> bool {
12519        self.round.is_some()
12520    }
12521
12522    // Param is passed by value, moved
12523    pub fn set_round(&mut self, v: bool) {
12524        self.round = ::std::option::Option::Some(v);
12525    }
12526
12527    // optional bool goblin = 3;
12528
12529    pub fn goblin(&self) -> bool {
12530        self.goblin.unwrap_or(false)
12531    }
12532
12533    pub fn clear_goblin(&mut self) {
12534        self.goblin = ::std::option::Option::None;
12535    }
12536
12537    pub fn has_goblin(&self) -> bool {
12538        self.goblin.is_some()
12539    }
12540
12541    // Param is passed by value, moved
12542    pub fn set_goblin(&mut self, v: bool) {
12543        self.goblin = ::std::option::Option::Some(v);
12544    }
12545
12546    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
12547        let mut fields = ::std::vec::Vec::with_capacity(3);
12548        let mut oneofs = ::std::vec::Vec::with_capacity(0);
12549        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12550            "roof_z",
12551            |m: &SiteRealizationBuildingTower| { &m.roof_z },
12552            |m: &mut SiteRealizationBuildingTower| { &mut m.roof_z },
12553        ));
12554        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12555            "round",
12556            |m: &SiteRealizationBuildingTower| { &m.round },
12557            |m: &mut SiteRealizationBuildingTower| { &mut m.round },
12558        ));
12559        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12560            "goblin",
12561            |m: &SiteRealizationBuildingTower| { &m.goblin },
12562            |m: &mut SiteRealizationBuildingTower| { &mut m.goblin },
12563        ));
12564        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SiteRealizationBuildingTower>(
12565            "SiteRealizationBuildingTower",
12566            fields,
12567            oneofs,
12568        )
12569    }
12570}
12571
12572impl ::protobuf::Message for SiteRealizationBuildingTower {
12573    const NAME: &'static str = "SiteRealizationBuildingTower";
12574
12575    fn is_initialized(&self) -> bool {
12576        true
12577    }
12578
12579    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
12580        while let Some(tag) = is.read_raw_tag_or_eof()? {
12581            match tag {
12582                8 => {
12583                    self.roof_z = ::std::option::Option::Some(is.read_int32()?);
12584                },
12585                16 => {
12586                    self.round = ::std::option::Option::Some(is.read_bool()?);
12587                },
12588                24 => {
12589                    self.goblin = ::std::option::Option::Some(is.read_bool()?);
12590                },
12591                tag => {
12592                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
12593                },
12594            };
12595        }
12596        ::std::result::Result::Ok(())
12597    }
12598
12599    // Compute sizes of nested messages
12600    #[allow(unused_variables)]
12601    fn compute_size(&self) -> u64 {
12602        let mut my_size = 0;
12603        if let Some(v) = self.roof_z {
12604            my_size += ::protobuf::rt::int32_size(1, v);
12605        }
12606        if let Some(v) = self.round {
12607            my_size += 1 + 1;
12608        }
12609        if let Some(v) = self.goblin {
12610            my_size += 1 + 1;
12611        }
12612        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
12613        self.special_fields.cached_size().set(my_size as u32);
12614        my_size
12615    }
12616
12617    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
12618        if let Some(v) = self.roof_z {
12619            os.write_int32(1, v)?;
12620        }
12621        if let Some(v) = self.round {
12622            os.write_bool(2, v)?;
12623        }
12624        if let Some(v) = self.goblin {
12625            os.write_bool(3, v)?;
12626        }
12627        os.write_unknown_fields(self.special_fields.unknown_fields())?;
12628        ::std::result::Result::Ok(())
12629    }
12630
12631    fn special_fields(&self) -> &::protobuf::SpecialFields {
12632        &self.special_fields
12633    }
12634
12635    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
12636        &mut self.special_fields
12637    }
12638
12639    fn new() -> SiteRealizationBuildingTower {
12640        SiteRealizationBuildingTower::new()
12641    }
12642
12643    fn clear(&mut self) {
12644        self.roof_z = ::std::option::Option::None;
12645        self.round = ::std::option::Option::None;
12646        self.goblin = ::std::option::Option::None;
12647        self.special_fields.clear();
12648    }
12649
12650    fn default_instance() -> &'static SiteRealizationBuildingTower {
12651        static instance: SiteRealizationBuildingTower = SiteRealizationBuildingTower {
12652            roof_z: ::std::option::Option::None,
12653            round: ::std::option::Option::None,
12654            goblin: ::std::option::Option::None,
12655            special_fields: ::protobuf::SpecialFields::new(),
12656        };
12657        &instance
12658    }
12659}
12660
12661impl ::protobuf::MessageFull for SiteRealizationBuildingTower {
12662    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
12663        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
12664        descriptor.get(|| file_descriptor().message_by_package_relative_name("SiteRealizationBuildingTower").unwrap()).clone()
12665    }
12666}
12667
12668impl ::std::fmt::Display for SiteRealizationBuildingTower {
12669    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12670        ::protobuf::text_format::fmt(self, f)
12671    }
12672}
12673
12674impl ::protobuf::reflect::ProtobufValue for SiteRealizationBuildingTower {
12675    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
12676}
12677
12678// @@protoc_insertion_point(message:RemoteFortressReader.TrenchSpoke)
12679#[derive(PartialEq,Clone,Default,Debug)]
12680pub struct TrenchSpoke {
12681    // message fields
12682    // @@protoc_insertion_point(field:RemoteFortressReader.TrenchSpoke.mound_start)
12683    pub mound_start: ::std::option::Option<i32>,
12684    // @@protoc_insertion_point(field:RemoteFortressReader.TrenchSpoke.trench_start)
12685    pub trench_start: ::std::option::Option<i32>,
12686    // @@protoc_insertion_point(field:RemoteFortressReader.TrenchSpoke.trench_end)
12687    pub trench_end: ::std::option::Option<i32>,
12688    // @@protoc_insertion_point(field:RemoteFortressReader.TrenchSpoke.mound_end)
12689    pub mound_end: ::std::option::Option<i32>,
12690    // special fields
12691    // @@protoc_insertion_point(special_field:RemoteFortressReader.TrenchSpoke.special_fields)
12692    pub special_fields: ::protobuf::SpecialFields,
12693}
12694
12695impl<'a> ::std::default::Default for &'a TrenchSpoke {
12696    fn default() -> &'a TrenchSpoke {
12697        <TrenchSpoke as ::protobuf::Message>::default_instance()
12698    }
12699}
12700
12701impl TrenchSpoke {
12702    pub fn new() -> TrenchSpoke {
12703        ::std::default::Default::default()
12704    }
12705
12706    // optional int32 mound_start = 1;
12707
12708    pub fn mound_start(&self) -> i32 {
12709        self.mound_start.unwrap_or(0)
12710    }
12711
12712    pub fn clear_mound_start(&mut self) {
12713        self.mound_start = ::std::option::Option::None;
12714    }
12715
12716    pub fn has_mound_start(&self) -> bool {
12717        self.mound_start.is_some()
12718    }
12719
12720    // Param is passed by value, moved
12721    pub fn set_mound_start(&mut self, v: i32) {
12722        self.mound_start = ::std::option::Option::Some(v);
12723    }
12724
12725    // optional int32 trench_start = 2;
12726
12727    pub fn trench_start(&self) -> i32 {
12728        self.trench_start.unwrap_or(0)
12729    }
12730
12731    pub fn clear_trench_start(&mut self) {
12732        self.trench_start = ::std::option::Option::None;
12733    }
12734
12735    pub fn has_trench_start(&self) -> bool {
12736        self.trench_start.is_some()
12737    }
12738
12739    // Param is passed by value, moved
12740    pub fn set_trench_start(&mut self, v: i32) {
12741        self.trench_start = ::std::option::Option::Some(v);
12742    }
12743
12744    // optional int32 trench_end = 3;
12745
12746    pub fn trench_end(&self) -> i32 {
12747        self.trench_end.unwrap_or(0)
12748    }
12749
12750    pub fn clear_trench_end(&mut self) {
12751        self.trench_end = ::std::option::Option::None;
12752    }
12753
12754    pub fn has_trench_end(&self) -> bool {
12755        self.trench_end.is_some()
12756    }
12757
12758    // Param is passed by value, moved
12759    pub fn set_trench_end(&mut self, v: i32) {
12760        self.trench_end = ::std::option::Option::Some(v);
12761    }
12762
12763    // optional int32 mound_end = 4;
12764
12765    pub fn mound_end(&self) -> i32 {
12766        self.mound_end.unwrap_or(0)
12767    }
12768
12769    pub fn clear_mound_end(&mut self) {
12770        self.mound_end = ::std::option::Option::None;
12771    }
12772
12773    pub fn has_mound_end(&self) -> bool {
12774        self.mound_end.is_some()
12775    }
12776
12777    // Param is passed by value, moved
12778    pub fn set_mound_end(&mut self, v: i32) {
12779        self.mound_end = ::std::option::Option::Some(v);
12780    }
12781
12782    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
12783        let mut fields = ::std::vec::Vec::with_capacity(4);
12784        let mut oneofs = ::std::vec::Vec::with_capacity(0);
12785        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12786            "mound_start",
12787            |m: &TrenchSpoke| { &m.mound_start },
12788            |m: &mut TrenchSpoke| { &mut m.mound_start },
12789        ));
12790        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12791            "trench_start",
12792            |m: &TrenchSpoke| { &m.trench_start },
12793            |m: &mut TrenchSpoke| { &mut m.trench_start },
12794        ));
12795        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12796            "trench_end",
12797            |m: &TrenchSpoke| { &m.trench_end },
12798            |m: &mut TrenchSpoke| { &mut m.trench_end },
12799        ));
12800        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12801            "mound_end",
12802            |m: &TrenchSpoke| { &m.mound_end },
12803            |m: &mut TrenchSpoke| { &mut m.mound_end },
12804        ));
12805        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<TrenchSpoke>(
12806            "TrenchSpoke",
12807            fields,
12808            oneofs,
12809        )
12810    }
12811}
12812
12813impl ::protobuf::Message for TrenchSpoke {
12814    const NAME: &'static str = "TrenchSpoke";
12815
12816    fn is_initialized(&self) -> bool {
12817        true
12818    }
12819
12820    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
12821        while let Some(tag) = is.read_raw_tag_or_eof()? {
12822            match tag {
12823                8 => {
12824                    self.mound_start = ::std::option::Option::Some(is.read_int32()?);
12825                },
12826                16 => {
12827                    self.trench_start = ::std::option::Option::Some(is.read_int32()?);
12828                },
12829                24 => {
12830                    self.trench_end = ::std::option::Option::Some(is.read_int32()?);
12831                },
12832                32 => {
12833                    self.mound_end = ::std::option::Option::Some(is.read_int32()?);
12834                },
12835                tag => {
12836                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
12837                },
12838            };
12839        }
12840        ::std::result::Result::Ok(())
12841    }
12842
12843    // Compute sizes of nested messages
12844    #[allow(unused_variables)]
12845    fn compute_size(&self) -> u64 {
12846        let mut my_size = 0;
12847        if let Some(v) = self.mound_start {
12848            my_size += ::protobuf::rt::int32_size(1, v);
12849        }
12850        if let Some(v) = self.trench_start {
12851            my_size += ::protobuf::rt::int32_size(2, v);
12852        }
12853        if let Some(v) = self.trench_end {
12854            my_size += ::protobuf::rt::int32_size(3, v);
12855        }
12856        if let Some(v) = self.mound_end {
12857            my_size += ::protobuf::rt::int32_size(4, v);
12858        }
12859        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
12860        self.special_fields.cached_size().set(my_size as u32);
12861        my_size
12862    }
12863
12864    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
12865        if let Some(v) = self.mound_start {
12866            os.write_int32(1, v)?;
12867        }
12868        if let Some(v) = self.trench_start {
12869            os.write_int32(2, v)?;
12870        }
12871        if let Some(v) = self.trench_end {
12872            os.write_int32(3, v)?;
12873        }
12874        if let Some(v) = self.mound_end {
12875            os.write_int32(4, v)?;
12876        }
12877        os.write_unknown_fields(self.special_fields.unknown_fields())?;
12878        ::std::result::Result::Ok(())
12879    }
12880
12881    fn special_fields(&self) -> &::protobuf::SpecialFields {
12882        &self.special_fields
12883    }
12884
12885    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
12886        &mut self.special_fields
12887    }
12888
12889    fn new() -> TrenchSpoke {
12890        TrenchSpoke::new()
12891    }
12892
12893    fn clear(&mut self) {
12894        self.mound_start = ::std::option::Option::None;
12895        self.trench_start = ::std::option::Option::None;
12896        self.trench_end = ::std::option::Option::None;
12897        self.mound_end = ::std::option::Option::None;
12898        self.special_fields.clear();
12899    }
12900
12901    fn default_instance() -> &'static TrenchSpoke {
12902        static instance: TrenchSpoke = TrenchSpoke {
12903            mound_start: ::std::option::Option::None,
12904            trench_start: ::std::option::Option::None,
12905            trench_end: ::std::option::Option::None,
12906            mound_end: ::std::option::Option::None,
12907            special_fields: ::protobuf::SpecialFields::new(),
12908        };
12909        &instance
12910    }
12911}
12912
12913impl ::protobuf::MessageFull for TrenchSpoke {
12914    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
12915        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
12916        descriptor.get(|| file_descriptor().message_by_package_relative_name("TrenchSpoke").unwrap()).clone()
12917    }
12918}
12919
12920impl ::std::fmt::Display for TrenchSpoke {
12921    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12922        ::protobuf::text_format::fmt(self, f)
12923    }
12924}
12925
12926impl ::protobuf::reflect::ProtobufValue for TrenchSpoke {
12927    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
12928}
12929
12930// @@protoc_insertion_point(message:RemoteFortressReader.SiteRealizationBuildingTrenches)
12931#[derive(PartialEq,Clone,Default,Debug)]
12932pub struct SiteRealizationBuildingTrenches {
12933    // message fields
12934    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingTrenches.spokes)
12935    pub spokes: ::std::vec::Vec<TrenchSpoke>,
12936    // special fields
12937    // @@protoc_insertion_point(special_field:RemoteFortressReader.SiteRealizationBuildingTrenches.special_fields)
12938    pub special_fields: ::protobuf::SpecialFields,
12939}
12940
12941impl<'a> ::std::default::Default for &'a SiteRealizationBuildingTrenches {
12942    fn default() -> &'a SiteRealizationBuildingTrenches {
12943        <SiteRealizationBuildingTrenches as ::protobuf::Message>::default_instance()
12944    }
12945}
12946
12947impl SiteRealizationBuildingTrenches {
12948    pub fn new() -> SiteRealizationBuildingTrenches {
12949        ::std::default::Default::default()
12950    }
12951
12952    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
12953        let mut fields = ::std::vec::Vec::with_capacity(1);
12954        let mut oneofs = ::std::vec::Vec::with_capacity(0);
12955        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
12956            "spokes",
12957            |m: &SiteRealizationBuildingTrenches| { &m.spokes },
12958            |m: &mut SiteRealizationBuildingTrenches| { &mut m.spokes },
12959        ));
12960        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SiteRealizationBuildingTrenches>(
12961            "SiteRealizationBuildingTrenches",
12962            fields,
12963            oneofs,
12964        )
12965    }
12966}
12967
12968impl ::protobuf::Message for SiteRealizationBuildingTrenches {
12969    const NAME: &'static str = "SiteRealizationBuildingTrenches";
12970
12971    fn is_initialized(&self) -> bool {
12972        true
12973    }
12974
12975    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
12976        while let Some(tag) = is.read_raw_tag_or_eof()? {
12977            match tag {
12978                10 => {
12979                    self.spokes.push(is.read_message()?);
12980                },
12981                tag => {
12982                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
12983                },
12984            };
12985        }
12986        ::std::result::Result::Ok(())
12987    }
12988
12989    // Compute sizes of nested messages
12990    #[allow(unused_variables)]
12991    fn compute_size(&self) -> u64 {
12992        let mut my_size = 0;
12993        for value in &self.spokes {
12994            let len = value.compute_size();
12995            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
12996        };
12997        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
12998        self.special_fields.cached_size().set(my_size as u32);
12999        my_size
13000    }
13001
13002    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
13003        for v in &self.spokes {
13004            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
13005        };
13006        os.write_unknown_fields(self.special_fields.unknown_fields())?;
13007        ::std::result::Result::Ok(())
13008    }
13009
13010    fn special_fields(&self) -> &::protobuf::SpecialFields {
13011        &self.special_fields
13012    }
13013
13014    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
13015        &mut self.special_fields
13016    }
13017
13018    fn new() -> SiteRealizationBuildingTrenches {
13019        SiteRealizationBuildingTrenches::new()
13020    }
13021
13022    fn clear(&mut self) {
13023        self.spokes.clear();
13024        self.special_fields.clear();
13025    }
13026
13027    fn default_instance() -> &'static SiteRealizationBuildingTrenches {
13028        static instance: SiteRealizationBuildingTrenches = SiteRealizationBuildingTrenches {
13029            spokes: ::std::vec::Vec::new(),
13030            special_fields: ::protobuf::SpecialFields::new(),
13031        };
13032        &instance
13033    }
13034}
13035
13036impl ::protobuf::MessageFull for SiteRealizationBuildingTrenches {
13037    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
13038        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
13039        descriptor.get(|| file_descriptor().message_by_package_relative_name("SiteRealizationBuildingTrenches").unwrap()).clone()
13040    }
13041}
13042
13043impl ::std::fmt::Display for SiteRealizationBuildingTrenches {
13044    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13045        ::protobuf::text_format::fmt(self, f)
13046    }
13047}
13048
13049impl ::protobuf::reflect::ProtobufValue for SiteRealizationBuildingTrenches {
13050    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
13051}
13052
13053// @@protoc_insertion_point(message:RemoteFortressReader.SiteRealizationBuilding)
13054#[derive(PartialEq,Clone,Default,Debug)]
13055pub struct SiteRealizationBuilding {
13056    // message fields
13057    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.id)
13058    pub id: ::std::option::Option<i32>,
13059    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.min_x)
13060    pub min_x: ::std::option::Option<i32>,
13061    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.min_y)
13062    pub min_y: ::std::option::Option<i32>,
13063    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.max_x)
13064    pub max_x: ::std::option::Option<i32>,
13065    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.max_y)
13066    pub max_y: ::std::option::Option<i32>,
13067    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.material)
13068    pub material: ::protobuf::MessageField<MatPair>,
13069    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.wall_info)
13070    pub wall_info: ::protobuf::MessageField<SiteRealizationBuildingWall>,
13071    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.tower_info)
13072    pub tower_info: ::protobuf::MessageField<SiteRealizationBuildingTower>,
13073    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.trench_info)
13074    pub trench_info: ::protobuf::MessageField<SiteRealizationBuildingTrenches>,
13075    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.type)
13076    pub type_: ::std::option::Option<i32>,
13077    // special fields
13078    // @@protoc_insertion_point(special_field:RemoteFortressReader.SiteRealizationBuilding.special_fields)
13079    pub special_fields: ::protobuf::SpecialFields,
13080}
13081
13082impl<'a> ::std::default::Default for &'a SiteRealizationBuilding {
13083    fn default() -> &'a SiteRealizationBuilding {
13084        <SiteRealizationBuilding as ::protobuf::Message>::default_instance()
13085    }
13086}
13087
13088impl SiteRealizationBuilding {
13089    pub fn new() -> SiteRealizationBuilding {
13090        ::std::default::Default::default()
13091    }
13092
13093    // optional int32 id = 1;
13094
13095    pub fn id(&self) -> i32 {
13096        self.id.unwrap_or(0)
13097    }
13098
13099    pub fn clear_id(&mut self) {
13100        self.id = ::std::option::Option::None;
13101    }
13102
13103    pub fn has_id(&self) -> bool {
13104        self.id.is_some()
13105    }
13106
13107    // Param is passed by value, moved
13108    pub fn set_id(&mut self, v: i32) {
13109        self.id = ::std::option::Option::Some(v);
13110    }
13111
13112    // optional int32 min_x = 3;
13113
13114    pub fn min_x(&self) -> i32 {
13115        self.min_x.unwrap_or(0)
13116    }
13117
13118    pub fn clear_min_x(&mut self) {
13119        self.min_x = ::std::option::Option::None;
13120    }
13121
13122    pub fn has_min_x(&self) -> bool {
13123        self.min_x.is_some()
13124    }
13125
13126    // Param is passed by value, moved
13127    pub fn set_min_x(&mut self, v: i32) {
13128        self.min_x = ::std::option::Option::Some(v);
13129    }
13130
13131    // optional int32 min_y = 4;
13132
13133    pub fn min_y(&self) -> i32 {
13134        self.min_y.unwrap_or(0)
13135    }
13136
13137    pub fn clear_min_y(&mut self) {
13138        self.min_y = ::std::option::Option::None;
13139    }
13140
13141    pub fn has_min_y(&self) -> bool {
13142        self.min_y.is_some()
13143    }
13144
13145    // Param is passed by value, moved
13146    pub fn set_min_y(&mut self, v: i32) {
13147        self.min_y = ::std::option::Option::Some(v);
13148    }
13149
13150    // optional int32 max_x = 5;
13151
13152    pub fn max_x(&self) -> i32 {
13153        self.max_x.unwrap_or(0)
13154    }
13155
13156    pub fn clear_max_x(&mut self) {
13157        self.max_x = ::std::option::Option::None;
13158    }
13159
13160    pub fn has_max_x(&self) -> bool {
13161        self.max_x.is_some()
13162    }
13163
13164    // Param is passed by value, moved
13165    pub fn set_max_x(&mut self, v: i32) {
13166        self.max_x = ::std::option::Option::Some(v);
13167    }
13168
13169    // optional int32 max_y = 6;
13170
13171    pub fn max_y(&self) -> i32 {
13172        self.max_y.unwrap_or(0)
13173    }
13174
13175    pub fn clear_max_y(&mut self) {
13176        self.max_y = ::std::option::Option::None;
13177    }
13178
13179    pub fn has_max_y(&self) -> bool {
13180        self.max_y.is_some()
13181    }
13182
13183    // Param is passed by value, moved
13184    pub fn set_max_y(&mut self, v: i32) {
13185        self.max_y = ::std::option::Option::Some(v);
13186    }
13187
13188    // optional int32 type = 11;
13189
13190    pub fn type_(&self) -> i32 {
13191        self.type_.unwrap_or(0)
13192    }
13193
13194    pub fn clear_type_(&mut self) {
13195        self.type_ = ::std::option::Option::None;
13196    }
13197
13198    pub fn has_type(&self) -> bool {
13199        self.type_.is_some()
13200    }
13201
13202    // Param is passed by value, moved
13203    pub fn set_type(&mut self, v: i32) {
13204        self.type_ = ::std::option::Option::Some(v);
13205    }
13206
13207    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
13208        let mut fields = ::std::vec::Vec::with_capacity(10);
13209        let mut oneofs = ::std::vec::Vec::with_capacity(0);
13210        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13211            "id",
13212            |m: &SiteRealizationBuilding| { &m.id },
13213            |m: &mut SiteRealizationBuilding| { &mut m.id },
13214        ));
13215        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13216            "min_x",
13217            |m: &SiteRealizationBuilding| { &m.min_x },
13218            |m: &mut SiteRealizationBuilding| { &mut m.min_x },
13219        ));
13220        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13221            "min_y",
13222            |m: &SiteRealizationBuilding| { &m.min_y },
13223            |m: &mut SiteRealizationBuilding| { &mut m.min_y },
13224        ));
13225        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13226            "max_x",
13227            |m: &SiteRealizationBuilding| { &m.max_x },
13228            |m: &mut SiteRealizationBuilding| { &mut m.max_x },
13229        ));
13230        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13231            "max_y",
13232            |m: &SiteRealizationBuilding| { &m.max_y },
13233            |m: &mut SiteRealizationBuilding| { &mut m.max_y },
13234        ));
13235        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
13236            "material",
13237            |m: &SiteRealizationBuilding| { &m.material },
13238            |m: &mut SiteRealizationBuilding| { &mut m.material },
13239        ));
13240        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, SiteRealizationBuildingWall>(
13241            "wall_info",
13242            |m: &SiteRealizationBuilding| { &m.wall_info },
13243            |m: &mut SiteRealizationBuilding| { &mut m.wall_info },
13244        ));
13245        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, SiteRealizationBuildingTower>(
13246            "tower_info",
13247            |m: &SiteRealizationBuilding| { &m.tower_info },
13248            |m: &mut SiteRealizationBuilding| { &mut m.tower_info },
13249        ));
13250        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, SiteRealizationBuildingTrenches>(
13251            "trench_info",
13252            |m: &SiteRealizationBuilding| { &m.trench_info },
13253            |m: &mut SiteRealizationBuilding| { &mut m.trench_info },
13254        ));
13255        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13256            "type",
13257            |m: &SiteRealizationBuilding| { &m.type_ },
13258            |m: &mut SiteRealizationBuilding| { &mut m.type_ },
13259        ));
13260        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SiteRealizationBuilding>(
13261            "SiteRealizationBuilding",
13262            fields,
13263            oneofs,
13264        )
13265    }
13266}
13267
13268impl ::protobuf::Message for SiteRealizationBuilding {
13269    const NAME: &'static str = "SiteRealizationBuilding";
13270
13271    fn is_initialized(&self) -> bool {
13272        for v in &self.material {
13273            if !v.is_initialized() {
13274                return false;
13275            }
13276        };
13277        for v in &self.wall_info {
13278            if !v.is_initialized() {
13279                return false;
13280            }
13281        };
13282        for v in &self.tower_info {
13283            if !v.is_initialized() {
13284                return false;
13285            }
13286        };
13287        for v in &self.trench_info {
13288            if !v.is_initialized() {
13289                return false;
13290            }
13291        };
13292        true
13293    }
13294
13295    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
13296        while let Some(tag) = is.read_raw_tag_or_eof()? {
13297            match tag {
13298                8 => {
13299                    self.id = ::std::option::Option::Some(is.read_int32()?);
13300                },
13301                24 => {
13302                    self.min_x = ::std::option::Option::Some(is.read_int32()?);
13303                },
13304                32 => {
13305                    self.min_y = ::std::option::Option::Some(is.read_int32()?);
13306                },
13307                40 => {
13308                    self.max_x = ::std::option::Option::Some(is.read_int32()?);
13309                },
13310                48 => {
13311                    self.max_y = ::std::option::Option::Some(is.read_int32()?);
13312                },
13313                58 => {
13314                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
13315                },
13316                66 => {
13317                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.wall_info)?;
13318                },
13319                74 => {
13320                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.tower_info)?;
13321                },
13322                82 => {
13323                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.trench_info)?;
13324                },
13325                88 => {
13326                    self.type_ = ::std::option::Option::Some(is.read_int32()?);
13327                },
13328                tag => {
13329                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
13330                },
13331            };
13332        }
13333        ::std::result::Result::Ok(())
13334    }
13335
13336    // Compute sizes of nested messages
13337    #[allow(unused_variables)]
13338    fn compute_size(&self) -> u64 {
13339        let mut my_size = 0;
13340        if let Some(v) = self.id {
13341            my_size += ::protobuf::rt::int32_size(1, v);
13342        }
13343        if let Some(v) = self.min_x {
13344            my_size += ::protobuf::rt::int32_size(3, v);
13345        }
13346        if let Some(v) = self.min_y {
13347            my_size += ::protobuf::rt::int32_size(4, v);
13348        }
13349        if let Some(v) = self.max_x {
13350            my_size += ::protobuf::rt::int32_size(5, v);
13351        }
13352        if let Some(v) = self.max_y {
13353            my_size += ::protobuf::rt::int32_size(6, v);
13354        }
13355        if let Some(v) = self.material.as_ref() {
13356            let len = v.compute_size();
13357            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13358        }
13359        if let Some(v) = self.wall_info.as_ref() {
13360            let len = v.compute_size();
13361            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13362        }
13363        if let Some(v) = self.tower_info.as_ref() {
13364            let len = v.compute_size();
13365            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13366        }
13367        if let Some(v) = self.trench_info.as_ref() {
13368            let len = v.compute_size();
13369            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13370        }
13371        if let Some(v) = self.type_ {
13372            my_size += ::protobuf::rt::int32_size(11, v);
13373        }
13374        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
13375        self.special_fields.cached_size().set(my_size as u32);
13376        my_size
13377    }
13378
13379    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
13380        if let Some(v) = self.id {
13381            os.write_int32(1, v)?;
13382        }
13383        if let Some(v) = self.min_x {
13384            os.write_int32(3, v)?;
13385        }
13386        if let Some(v) = self.min_y {
13387            os.write_int32(4, v)?;
13388        }
13389        if let Some(v) = self.max_x {
13390            os.write_int32(5, v)?;
13391        }
13392        if let Some(v) = self.max_y {
13393            os.write_int32(6, v)?;
13394        }
13395        if let Some(v) = self.material.as_ref() {
13396            ::protobuf::rt::write_message_field_with_cached_size(7, v, os)?;
13397        }
13398        if let Some(v) = self.wall_info.as_ref() {
13399            ::protobuf::rt::write_message_field_with_cached_size(8, v, os)?;
13400        }
13401        if let Some(v) = self.tower_info.as_ref() {
13402            ::protobuf::rt::write_message_field_with_cached_size(9, v, os)?;
13403        }
13404        if let Some(v) = self.trench_info.as_ref() {
13405            ::protobuf::rt::write_message_field_with_cached_size(10, v, os)?;
13406        }
13407        if let Some(v) = self.type_ {
13408            os.write_int32(11, v)?;
13409        }
13410        os.write_unknown_fields(self.special_fields.unknown_fields())?;
13411        ::std::result::Result::Ok(())
13412    }
13413
13414    fn special_fields(&self) -> &::protobuf::SpecialFields {
13415        &self.special_fields
13416    }
13417
13418    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
13419        &mut self.special_fields
13420    }
13421
13422    fn new() -> SiteRealizationBuilding {
13423        SiteRealizationBuilding::new()
13424    }
13425
13426    fn clear(&mut self) {
13427        self.id = ::std::option::Option::None;
13428        self.min_x = ::std::option::Option::None;
13429        self.min_y = ::std::option::Option::None;
13430        self.max_x = ::std::option::Option::None;
13431        self.max_y = ::std::option::Option::None;
13432        self.material.clear();
13433        self.wall_info.clear();
13434        self.tower_info.clear();
13435        self.trench_info.clear();
13436        self.type_ = ::std::option::Option::None;
13437        self.special_fields.clear();
13438    }
13439
13440    fn default_instance() -> &'static SiteRealizationBuilding {
13441        static instance: SiteRealizationBuilding = SiteRealizationBuilding {
13442            id: ::std::option::Option::None,
13443            min_x: ::std::option::Option::None,
13444            min_y: ::std::option::Option::None,
13445            max_x: ::std::option::Option::None,
13446            max_y: ::std::option::Option::None,
13447            material: ::protobuf::MessageField::none(),
13448            wall_info: ::protobuf::MessageField::none(),
13449            tower_info: ::protobuf::MessageField::none(),
13450            trench_info: ::protobuf::MessageField::none(),
13451            type_: ::std::option::Option::None,
13452            special_fields: ::protobuf::SpecialFields::new(),
13453        };
13454        &instance
13455    }
13456}
13457
13458impl ::protobuf::MessageFull for SiteRealizationBuilding {
13459    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
13460        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
13461        descriptor.get(|| file_descriptor().message_by_package_relative_name("SiteRealizationBuilding").unwrap()).clone()
13462    }
13463}
13464
13465impl ::std::fmt::Display for SiteRealizationBuilding {
13466    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13467        ::protobuf::text_format::fmt(self, f)
13468    }
13469}
13470
13471impl ::protobuf::reflect::ProtobufValue for SiteRealizationBuilding {
13472    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
13473}
13474
13475// @@protoc_insertion_point(message:RemoteFortressReader.RegionTile)
13476#[derive(PartialEq,Clone,Default,Debug)]
13477pub struct RegionTile {
13478    // message fields
13479    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.elevation)
13480    pub elevation: ::std::option::Option<i32>,
13481    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.rainfall)
13482    pub rainfall: ::std::option::Option<i32>,
13483    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.vegetation)
13484    pub vegetation: ::std::option::Option<i32>,
13485    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.temperature)
13486    pub temperature: ::std::option::Option<i32>,
13487    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.evilness)
13488    pub evilness: ::std::option::Option<i32>,
13489    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.drainage)
13490    pub drainage: ::std::option::Option<i32>,
13491    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.volcanism)
13492    pub volcanism: ::std::option::Option<i32>,
13493    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.savagery)
13494    pub savagery: ::std::option::Option<i32>,
13495    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.salinity)
13496    pub salinity: ::std::option::Option<i32>,
13497    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.river_tiles)
13498    pub river_tiles: ::protobuf::MessageField<RiverTile>,
13499    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.water_elevation)
13500    pub water_elevation: ::std::option::Option<i32>,
13501    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.surface_material)
13502    pub surface_material: ::protobuf::MessageField<MatPair>,
13503    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.plant_materials)
13504    pub plant_materials: ::std::vec::Vec<MatPair>,
13505    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.buildings)
13506    pub buildings: ::std::vec::Vec<SiteRealizationBuilding>,
13507    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.stone_materials)
13508    pub stone_materials: ::std::vec::Vec<MatPair>,
13509    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.tree_materials)
13510    pub tree_materials: ::std::vec::Vec<MatPair>,
13511    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.snow)
13512    pub snow: ::std::option::Option<i32>,
13513    // special fields
13514    // @@protoc_insertion_point(special_field:RemoteFortressReader.RegionTile.special_fields)
13515    pub special_fields: ::protobuf::SpecialFields,
13516}
13517
13518impl<'a> ::std::default::Default for &'a RegionTile {
13519    fn default() -> &'a RegionTile {
13520        <RegionTile as ::protobuf::Message>::default_instance()
13521    }
13522}
13523
13524impl RegionTile {
13525    pub fn new() -> RegionTile {
13526        ::std::default::Default::default()
13527    }
13528
13529    // optional int32 elevation = 1;
13530
13531    pub fn elevation(&self) -> i32 {
13532        self.elevation.unwrap_or(0)
13533    }
13534
13535    pub fn clear_elevation(&mut self) {
13536        self.elevation = ::std::option::Option::None;
13537    }
13538
13539    pub fn has_elevation(&self) -> bool {
13540        self.elevation.is_some()
13541    }
13542
13543    // Param is passed by value, moved
13544    pub fn set_elevation(&mut self, v: i32) {
13545        self.elevation = ::std::option::Option::Some(v);
13546    }
13547
13548    // optional int32 rainfall = 2;
13549
13550    pub fn rainfall(&self) -> i32 {
13551        self.rainfall.unwrap_or(0)
13552    }
13553
13554    pub fn clear_rainfall(&mut self) {
13555        self.rainfall = ::std::option::Option::None;
13556    }
13557
13558    pub fn has_rainfall(&self) -> bool {
13559        self.rainfall.is_some()
13560    }
13561
13562    // Param is passed by value, moved
13563    pub fn set_rainfall(&mut self, v: i32) {
13564        self.rainfall = ::std::option::Option::Some(v);
13565    }
13566
13567    // optional int32 vegetation = 3;
13568
13569    pub fn vegetation(&self) -> i32 {
13570        self.vegetation.unwrap_or(0)
13571    }
13572
13573    pub fn clear_vegetation(&mut self) {
13574        self.vegetation = ::std::option::Option::None;
13575    }
13576
13577    pub fn has_vegetation(&self) -> bool {
13578        self.vegetation.is_some()
13579    }
13580
13581    // Param is passed by value, moved
13582    pub fn set_vegetation(&mut self, v: i32) {
13583        self.vegetation = ::std::option::Option::Some(v);
13584    }
13585
13586    // optional int32 temperature = 4;
13587
13588    pub fn temperature(&self) -> i32 {
13589        self.temperature.unwrap_or(0)
13590    }
13591
13592    pub fn clear_temperature(&mut self) {
13593        self.temperature = ::std::option::Option::None;
13594    }
13595
13596    pub fn has_temperature(&self) -> bool {
13597        self.temperature.is_some()
13598    }
13599
13600    // Param is passed by value, moved
13601    pub fn set_temperature(&mut self, v: i32) {
13602        self.temperature = ::std::option::Option::Some(v);
13603    }
13604
13605    // optional int32 evilness = 5;
13606
13607    pub fn evilness(&self) -> i32 {
13608        self.evilness.unwrap_or(0)
13609    }
13610
13611    pub fn clear_evilness(&mut self) {
13612        self.evilness = ::std::option::Option::None;
13613    }
13614
13615    pub fn has_evilness(&self) -> bool {
13616        self.evilness.is_some()
13617    }
13618
13619    // Param is passed by value, moved
13620    pub fn set_evilness(&mut self, v: i32) {
13621        self.evilness = ::std::option::Option::Some(v);
13622    }
13623
13624    // optional int32 drainage = 6;
13625
13626    pub fn drainage(&self) -> i32 {
13627        self.drainage.unwrap_or(0)
13628    }
13629
13630    pub fn clear_drainage(&mut self) {
13631        self.drainage = ::std::option::Option::None;
13632    }
13633
13634    pub fn has_drainage(&self) -> bool {
13635        self.drainage.is_some()
13636    }
13637
13638    // Param is passed by value, moved
13639    pub fn set_drainage(&mut self, v: i32) {
13640        self.drainage = ::std::option::Option::Some(v);
13641    }
13642
13643    // optional int32 volcanism = 7;
13644
13645    pub fn volcanism(&self) -> i32 {
13646        self.volcanism.unwrap_or(0)
13647    }
13648
13649    pub fn clear_volcanism(&mut self) {
13650        self.volcanism = ::std::option::Option::None;
13651    }
13652
13653    pub fn has_volcanism(&self) -> bool {
13654        self.volcanism.is_some()
13655    }
13656
13657    // Param is passed by value, moved
13658    pub fn set_volcanism(&mut self, v: i32) {
13659        self.volcanism = ::std::option::Option::Some(v);
13660    }
13661
13662    // optional int32 savagery = 8;
13663
13664    pub fn savagery(&self) -> i32 {
13665        self.savagery.unwrap_or(0)
13666    }
13667
13668    pub fn clear_savagery(&mut self) {
13669        self.savagery = ::std::option::Option::None;
13670    }
13671
13672    pub fn has_savagery(&self) -> bool {
13673        self.savagery.is_some()
13674    }
13675
13676    // Param is passed by value, moved
13677    pub fn set_savagery(&mut self, v: i32) {
13678        self.savagery = ::std::option::Option::Some(v);
13679    }
13680
13681    // optional int32 salinity = 9;
13682
13683    pub fn salinity(&self) -> i32 {
13684        self.salinity.unwrap_or(0)
13685    }
13686
13687    pub fn clear_salinity(&mut self) {
13688        self.salinity = ::std::option::Option::None;
13689    }
13690
13691    pub fn has_salinity(&self) -> bool {
13692        self.salinity.is_some()
13693    }
13694
13695    // Param is passed by value, moved
13696    pub fn set_salinity(&mut self, v: i32) {
13697        self.salinity = ::std::option::Option::Some(v);
13698    }
13699
13700    // optional int32 water_elevation = 11;
13701
13702    pub fn water_elevation(&self) -> i32 {
13703        self.water_elevation.unwrap_or(0)
13704    }
13705
13706    pub fn clear_water_elevation(&mut self) {
13707        self.water_elevation = ::std::option::Option::None;
13708    }
13709
13710    pub fn has_water_elevation(&self) -> bool {
13711        self.water_elevation.is_some()
13712    }
13713
13714    // Param is passed by value, moved
13715    pub fn set_water_elevation(&mut self, v: i32) {
13716        self.water_elevation = ::std::option::Option::Some(v);
13717    }
13718
13719    // optional int32 snow = 17;
13720
13721    pub fn snow(&self) -> i32 {
13722        self.snow.unwrap_or(0)
13723    }
13724
13725    pub fn clear_snow(&mut self) {
13726        self.snow = ::std::option::Option::None;
13727    }
13728
13729    pub fn has_snow(&self) -> bool {
13730        self.snow.is_some()
13731    }
13732
13733    // Param is passed by value, moved
13734    pub fn set_snow(&mut self, v: i32) {
13735        self.snow = ::std::option::Option::Some(v);
13736    }
13737
13738    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
13739        let mut fields = ::std::vec::Vec::with_capacity(17);
13740        let mut oneofs = ::std::vec::Vec::with_capacity(0);
13741        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13742            "elevation",
13743            |m: &RegionTile| { &m.elevation },
13744            |m: &mut RegionTile| { &mut m.elevation },
13745        ));
13746        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13747            "rainfall",
13748            |m: &RegionTile| { &m.rainfall },
13749            |m: &mut RegionTile| { &mut m.rainfall },
13750        ));
13751        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13752            "vegetation",
13753            |m: &RegionTile| { &m.vegetation },
13754            |m: &mut RegionTile| { &mut m.vegetation },
13755        ));
13756        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13757            "temperature",
13758            |m: &RegionTile| { &m.temperature },
13759            |m: &mut RegionTile| { &mut m.temperature },
13760        ));
13761        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13762            "evilness",
13763            |m: &RegionTile| { &m.evilness },
13764            |m: &mut RegionTile| { &mut m.evilness },
13765        ));
13766        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13767            "drainage",
13768            |m: &RegionTile| { &m.drainage },
13769            |m: &mut RegionTile| { &mut m.drainage },
13770        ));
13771        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13772            "volcanism",
13773            |m: &RegionTile| { &m.volcanism },
13774            |m: &mut RegionTile| { &mut m.volcanism },
13775        ));
13776        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13777            "savagery",
13778            |m: &RegionTile| { &m.savagery },
13779            |m: &mut RegionTile| { &mut m.savagery },
13780        ));
13781        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13782            "salinity",
13783            |m: &RegionTile| { &m.salinity },
13784            |m: &mut RegionTile| { &mut m.salinity },
13785        ));
13786        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, RiverTile>(
13787            "river_tiles",
13788            |m: &RegionTile| { &m.river_tiles },
13789            |m: &mut RegionTile| { &mut m.river_tiles },
13790        ));
13791        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13792            "water_elevation",
13793            |m: &RegionTile| { &m.water_elevation },
13794            |m: &mut RegionTile| { &mut m.water_elevation },
13795        ));
13796        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
13797            "surface_material",
13798            |m: &RegionTile| { &m.surface_material },
13799            |m: &mut RegionTile| { &mut m.surface_material },
13800        ));
13801        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
13802            "plant_materials",
13803            |m: &RegionTile| { &m.plant_materials },
13804            |m: &mut RegionTile| { &mut m.plant_materials },
13805        ));
13806        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
13807            "buildings",
13808            |m: &RegionTile| { &m.buildings },
13809            |m: &mut RegionTile| { &mut m.buildings },
13810        ));
13811        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
13812            "stone_materials",
13813            |m: &RegionTile| { &m.stone_materials },
13814            |m: &mut RegionTile| { &mut m.stone_materials },
13815        ));
13816        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
13817            "tree_materials",
13818            |m: &RegionTile| { &m.tree_materials },
13819            |m: &mut RegionTile| { &mut m.tree_materials },
13820        ));
13821        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13822            "snow",
13823            |m: &RegionTile| { &m.snow },
13824            |m: &mut RegionTile| { &mut m.snow },
13825        ));
13826        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<RegionTile>(
13827            "RegionTile",
13828            fields,
13829            oneofs,
13830        )
13831    }
13832}
13833
13834impl ::protobuf::Message for RegionTile {
13835    const NAME: &'static str = "RegionTile";
13836
13837    fn is_initialized(&self) -> bool {
13838        for v in &self.river_tiles {
13839            if !v.is_initialized() {
13840                return false;
13841            }
13842        };
13843        for v in &self.surface_material {
13844            if !v.is_initialized() {
13845                return false;
13846            }
13847        };
13848        for v in &self.plant_materials {
13849            if !v.is_initialized() {
13850                return false;
13851            }
13852        };
13853        for v in &self.buildings {
13854            if !v.is_initialized() {
13855                return false;
13856            }
13857        };
13858        for v in &self.stone_materials {
13859            if !v.is_initialized() {
13860                return false;
13861            }
13862        };
13863        for v in &self.tree_materials {
13864            if !v.is_initialized() {
13865                return false;
13866            }
13867        };
13868        true
13869    }
13870
13871    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
13872        while let Some(tag) = is.read_raw_tag_or_eof()? {
13873            match tag {
13874                8 => {
13875                    self.elevation = ::std::option::Option::Some(is.read_int32()?);
13876                },
13877                16 => {
13878                    self.rainfall = ::std::option::Option::Some(is.read_int32()?);
13879                },
13880                24 => {
13881                    self.vegetation = ::std::option::Option::Some(is.read_int32()?);
13882                },
13883                32 => {
13884                    self.temperature = ::std::option::Option::Some(is.read_int32()?);
13885                },
13886                40 => {
13887                    self.evilness = ::std::option::Option::Some(is.read_int32()?);
13888                },
13889                48 => {
13890                    self.drainage = ::std::option::Option::Some(is.read_int32()?);
13891                },
13892                56 => {
13893                    self.volcanism = ::std::option::Option::Some(is.read_int32()?);
13894                },
13895                64 => {
13896                    self.savagery = ::std::option::Option::Some(is.read_int32()?);
13897                },
13898                72 => {
13899                    self.salinity = ::std::option::Option::Some(is.read_int32()?);
13900                },
13901                82 => {
13902                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.river_tiles)?;
13903                },
13904                88 => {
13905                    self.water_elevation = ::std::option::Option::Some(is.read_int32()?);
13906                },
13907                98 => {
13908                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.surface_material)?;
13909                },
13910                106 => {
13911                    self.plant_materials.push(is.read_message()?);
13912                },
13913                114 => {
13914                    self.buildings.push(is.read_message()?);
13915                },
13916                122 => {
13917                    self.stone_materials.push(is.read_message()?);
13918                },
13919                130 => {
13920                    self.tree_materials.push(is.read_message()?);
13921                },
13922                136 => {
13923                    self.snow = ::std::option::Option::Some(is.read_int32()?);
13924                },
13925                tag => {
13926                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
13927                },
13928            };
13929        }
13930        ::std::result::Result::Ok(())
13931    }
13932
13933    // Compute sizes of nested messages
13934    #[allow(unused_variables)]
13935    fn compute_size(&self) -> u64 {
13936        let mut my_size = 0;
13937        if let Some(v) = self.elevation {
13938            my_size += ::protobuf::rt::int32_size(1, v);
13939        }
13940        if let Some(v) = self.rainfall {
13941            my_size += ::protobuf::rt::int32_size(2, v);
13942        }
13943        if let Some(v) = self.vegetation {
13944            my_size += ::protobuf::rt::int32_size(3, v);
13945        }
13946        if let Some(v) = self.temperature {
13947            my_size += ::protobuf::rt::int32_size(4, v);
13948        }
13949        if let Some(v) = self.evilness {
13950            my_size += ::protobuf::rt::int32_size(5, v);
13951        }
13952        if let Some(v) = self.drainage {
13953            my_size += ::protobuf::rt::int32_size(6, v);
13954        }
13955        if let Some(v) = self.volcanism {
13956            my_size += ::protobuf::rt::int32_size(7, v);
13957        }
13958        if let Some(v) = self.savagery {
13959            my_size += ::protobuf::rt::int32_size(8, v);
13960        }
13961        if let Some(v) = self.salinity {
13962            my_size += ::protobuf::rt::int32_size(9, v);
13963        }
13964        if let Some(v) = self.river_tiles.as_ref() {
13965            let len = v.compute_size();
13966            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13967        }
13968        if let Some(v) = self.water_elevation {
13969            my_size += ::protobuf::rt::int32_size(11, v);
13970        }
13971        if let Some(v) = self.surface_material.as_ref() {
13972            let len = v.compute_size();
13973            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13974        }
13975        for value in &self.plant_materials {
13976            let len = value.compute_size();
13977            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13978        };
13979        for value in &self.buildings {
13980            let len = value.compute_size();
13981            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13982        };
13983        for value in &self.stone_materials {
13984            let len = value.compute_size();
13985            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13986        };
13987        for value in &self.tree_materials {
13988            let len = value.compute_size();
13989            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13990        };
13991        if let Some(v) = self.snow {
13992            my_size += ::protobuf::rt::int32_size(17, v);
13993        }
13994        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
13995        self.special_fields.cached_size().set(my_size as u32);
13996        my_size
13997    }
13998
13999    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
14000        if let Some(v) = self.elevation {
14001            os.write_int32(1, v)?;
14002        }
14003        if let Some(v) = self.rainfall {
14004            os.write_int32(2, v)?;
14005        }
14006        if let Some(v) = self.vegetation {
14007            os.write_int32(3, v)?;
14008        }
14009        if let Some(v) = self.temperature {
14010            os.write_int32(4, v)?;
14011        }
14012        if let Some(v) = self.evilness {
14013            os.write_int32(5, v)?;
14014        }
14015        if let Some(v) = self.drainage {
14016            os.write_int32(6, v)?;
14017        }
14018        if let Some(v) = self.volcanism {
14019            os.write_int32(7, v)?;
14020        }
14021        if let Some(v) = self.savagery {
14022            os.write_int32(8, v)?;
14023        }
14024        if let Some(v) = self.salinity {
14025            os.write_int32(9, v)?;
14026        }
14027        if let Some(v) = self.river_tiles.as_ref() {
14028            ::protobuf::rt::write_message_field_with_cached_size(10, v, os)?;
14029        }
14030        if let Some(v) = self.water_elevation {
14031            os.write_int32(11, v)?;
14032        }
14033        if let Some(v) = self.surface_material.as_ref() {
14034            ::protobuf::rt::write_message_field_with_cached_size(12, v, os)?;
14035        }
14036        for v in &self.plant_materials {
14037            ::protobuf::rt::write_message_field_with_cached_size(13, v, os)?;
14038        };
14039        for v in &self.buildings {
14040            ::protobuf::rt::write_message_field_with_cached_size(14, v, os)?;
14041        };
14042        for v in &self.stone_materials {
14043            ::protobuf::rt::write_message_field_with_cached_size(15, v, os)?;
14044        };
14045        for v in &self.tree_materials {
14046            ::protobuf::rt::write_message_field_with_cached_size(16, v, os)?;
14047        };
14048        if let Some(v) = self.snow {
14049            os.write_int32(17, v)?;
14050        }
14051        os.write_unknown_fields(self.special_fields.unknown_fields())?;
14052        ::std::result::Result::Ok(())
14053    }
14054
14055    fn special_fields(&self) -> &::protobuf::SpecialFields {
14056        &self.special_fields
14057    }
14058
14059    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
14060        &mut self.special_fields
14061    }
14062
14063    fn new() -> RegionTile {
14064        RegionTile::new()
14065    }
14066
14067    fn clear(&mut self) {
14068        self.elevation = ::std::option::Option::None;
14069        self.rainfall = ::std::option::Option::None;
14070        self.vegetation = ::std::option::Option::None;
14071        self.temperature = ::std::option::Option::None;
14072        self.evilness = ::std::option::Option::None;
14073        self.drainage = ::std::option::Option::None;
14074        self.volcanism = ::std::option::Option::None;
14075        self.savagery = ::std::option::Option::None;
14076        self.salinity = ::std::option::Option::None;
14077        self.river_tiles.clear();
14078        self.water_elevation = ::std::option::Option::None;
14079        self.surface_material.clear();
14080        self.plant_materials.clear();
14081        self.buildings.clear();
14082        self.stone_materials.clear();
14083        self.tree_materials.clear();
14084        self.snow = ::std::option::Option::None;
14085        self.special_fields.clear();
14086    }
14087
14088    fn default_instance() -> &'static RegionTile {
14089        static instance: RegionTile = RegionTile {
14090            elevation: ::std::option::Option::None,
14091            rainfall: ::std::option::Option::None,
14092            vegetation: ::std::option::Option::None,
14093            temperature: ::std::option::Option::None,
14094            evilness: ::std::option::Option::None,
14095            drainage: ::std::option::Option::None,
14096            volcanism: ::std::option::Option::None,
14097            savagery: ::std::option::Option::None,
14098            salinity: ::std::option::Option::None,
14099            river_tiles: ::protobuf::MessageField::none(),
14100            water_elevation: ::std::option::Option::None,
14101            surface_material: ::protobuf::MessageField::none(),
14102            plant_materials: ::std::vec::Vec::new(),
14103            buildings: ::std::vec::Vec::new(),
14104            stone_materials: ::std::vec::Vec::new(),
14105            tree_materials: ::std::vec::Vec::new(),
14106            snow: ::std::option::Option::None,
14107            special_fields: ::protobuf::SpecialFields::new(),
14108        };
14109        &instance
14110    }
14111}
14112
14113impl ::protobuf::MessageFull for RegionTile {
14114    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
14115        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
14116        descriptor.get(|| file_descriptor().message_by_package_relative_name("RegionTile").unwrap()).clone()
14117    }
14118}
14119
14120impl ::std::fmt::Display for RegionTile {
14121    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14122        ::protobuf::text_format::fmt(self, f)
14123    }
14124}
14125
14126impl ::protobuf::reflect::ProtobufValue for RegionTile {
14127    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
14128}
14129
14130// @@protoc_insertion_point(message:RemoteFortressReader.RegionMap)
14131#[derive(PartialEq,Clone,Default,Debug)]
14132pub struct RegionMap {
14133    // message fields
14134    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMap.map_x)
14135    pub map_x: ::std::option::Option<i32>,
14136    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMap.map_y)
14137    pub map_y: ::std::option::Option<i32>,
14138    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMap.name)
14139    pub name: ::std::option::Option<::std::string::String>,
14140    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMap.name_english)
14141    pub name_english: ::std::option::Option<::std::string::String>,
14142    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMap.tiles)
14143    pub tiles: ::std::vec::Vec<RegionTile>,
14144    // special fields
14145    // @@protoc_insertion_point(special_field:RemoteFortressReader.RegionMap.special_fields)
14146    pub special_fields: ::protobuf::SpecialFields,
14147}
14148
14149impl<'a> ::std::default::Default for &'a RegionMap {
14150    fn default() -> &'a RegionMap {
14151        <RegionMap as ::protobuf::Message>::default_instance()
14152    }
14153}
14154
14155impl RegionMap {
14156    pub fn new() -> RegionMap {
14157        ::std::default::Default::default()
14158    }
14159
14160    // optional int32 map_x = 1;
14161
14162    pub fn map_x(&self) -> i32 {
14163        self.map_x.unwrap_or(0)
14164    }
14165
14166    pub fn clear_map_x(&mut self) {
14167        self.map_x = ::std::option::Option::None;
14168    }
14169
14170    pub fn has_map_x(&self) -> bool {
14171        self.map_x.is_some()
14172    }
14173
14174    // Param is passed by value, moved
14175    pub fn set_map_x(&mut self, v: i32) {
14176        self.map_x = ::std::option::Option::Some(v);
14177    }
14178
14179    // optional int32 map_y = 2;
14180
14181    pub fn map_y(&self) -> i32 {
14182        self.map_y.unwrap_or(0)
14183    }
14184
14185    pub fn clear_map_y(&mut self) {
14186        self.map_y = ::std::option::Option::None;
14187    }
14188
14189    pub fn has_map_y(&self) -> bool {
14190        self.map_y.is_some()
14191    }
14192
14193    // Param is passed by value, moved
14194    pub fn set_map_y(&mut self, v: i32) {
14195        self.map_y = ::std::option::Option::Some(v);
14196    }
14197
14198    // optional string name = 3;
14199
14200    pub fn name(&self) -> &str {
14201        match self.name.as_ref() {
14202            Some(v) => v,
14203            None => "",
14204        }
14205    }
14206
14207    pub fn clear_name(&mut self) {
14208        self.name = ::std::option::Option::None;
14209    }
14210
14211    pub fn has_name(&self) -> bool {
14212        self.name.is_some()
14213    }
14214
14215    // Param is passed by value, moved
14216    pub fn set_name(&mut self, v: ::std::string::String) {
14217        self.name = ::std::option::Option::Some(v);
14218    }
14219
14220    // Mutable pointer to the field.
14221    // If field is not initialized, it is initialized with default value first.
14222    pub fn mut_name(&mut self) -> &mut ::std::string::String {
14223        if self.name.is_none() {
14224            self.name = ::std::option::Option::Some(::std::string::String::new());
14225        }
14226        self.name.as_mut().unwrap()
14227    }
14228
14229    // Take field
14230    pub fn take_name(&mut self) -> ::std::string::String {
14231        self.name.take().unwrap_or_else(|| ::std::string::String::new())
14232    }
14233
14234    // optional string name_english = 4;
14235
14236    pub fn name_english(&self) -> &str {
14237        match self.name_english.as_ref() {
14238            Some(v) => v,
14239            None => "",
14240        }
14241    }
14242
14243    pub fn clear_name_english(&mut self) {
14244        self.name_english = ::std::option::Option::None;
14245    }
14246
14247    pub fn has_name_english(&self) -> bool {
14248        self.name_english.is_some()
14249    }
14250
14251    // Param is passed by value, moved
14252    pub fn set_name_english(&mut self, v: ::std::string::String) {
14253        self.name_english = ::std::option::Option::Some(v);
14254    }
14255
14256    // Mutable pointer to the field.
14257    // If field is not initialized, it is initialized with default value first.
14258    pub fn mut_name_english(&mut self) -> &mut ::std::string::String {
14259        if self.name_english.is_none() {
14260            self.name_english = ::std::option::Option::Some(::std::string::String::new());
14261        }
14262        self.name_english.as_mut().unwrap()
14263    }
14264
14265    // Take field
14266    pub fn take_name_english(&mut self) -> ::std::string::String {
14267        self.name_english.take().unwrap_or_else(|| ::std::string::String::new())
14268    }
14269
14270    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
14271        let mut fields = ::std::vec::Vec::with_capacity(5);
14272        let mut oneofs = ::std::vec::Vec::with_capacity(0);
14273        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14274            "map_x",
14275            |m: &RegionMap| { &m.map_x },
14276            |m: &mut RegionMap| { &mut m.map_x },
14277        ));
14278        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14279            "map_y",
14280            |m: &RegionMap| { &m.map_y },
14281            |m: &mut RegionMap| { &mut m.map_y },
14282        ));
14283        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14284            "name",
14285            |m: &RegionMap| { &m.name },
14286            |m: &mut RegionMap| { &mut m.name },
14287        ));
14288        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14289            "name_english",
14290            |m: &RegionMap| { &m.name_english },
14291            |m: &mut RegionMap| { &mut m.name_english },
14292        ));
14293        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14294            "tiles",
14295            |m: &RegionMap| { &m.tiles },
14296            |m: &mut RegionMap| { &mut m.tiles },
14297        ));
14298        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<RegionMap>(
14299            "RegionMap",
14300            fields,
14301            oneofs,
14302        )
14303    }
14304}
14305
14306impl ::protobuf::Message for RegionMap {
14307    const NAME: &'static str = "RegionMap";
14308
14309    fn is_initialized(&self) -> bool {
14310        for v in &self.tiles {
14311            if !v.is_initialized() {
14312                return false;
14313            }
14314        };
14315        true
14316    }
14317
14318    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
14319        while let Some(tag) = is.read_raw_tag_or_eof()? {
14320            match tag {
14321                8 => {
14322                    self.map_x = ::std::option::Option::Some(is.read_int32()?);
14323                },
14324                16 => {
14325                    self.map_y = ::std::option::Option::Some(is.read_int32()?);
14326                },
14327                26 => {
14328                    self.name = ::std::option::Option::Some(is.read_string()?);
14329                },
14330                34 => {
14331                    self.name_english = ::std::option::Option::Some(is.read_string()?);
14332                },
14333                42 => {
14334                    self.tiles.push(is.read_message()?);
14335                },
14336                tag => {
14337                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
14338                },
14339            };
14340        }
14341        ::std::result::Result::Ok(())
14342    }
14343
14344    // Compute sizes of nested messages
14345    #[allow(unused_variables)]
14346    fn compute_size(&self) -> u64 {
14347        let mut my_size = 0;
14348        if let Some(v) = self.map_x {
14349            my_size += ::protobuf::rt::int32_size(1, v);
14350        }
14351        if let Some(v) = self.map_y {
14352            my_size += ::protobuf::rt::int32_size(2, v);
14353        }
14354        if let Some(v) = self.name.as_ref() {
14355            my_size += ::protobuf::rt::string_size(3, &v);
14356        }
14357        if let Some(v) = self.name_english.as_ref() {
14358            my_size += ::protobuf::rt::string_size(4, &v);
14359        }
14360        for value in &self.tiles {
14361            let len = value.compute_size();
14362            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
14363        };
14364        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
14365        self.special_fields.cached_size().set(my_size as u32);
14366        my_size
14367    }
14368
14369    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
14370        if let Some(v) = self.map_x {
14371            os.write_int32(1, v)?;
14372        }
14373        if let Some(v) = self.map_y {
14374            os.write_int32(2, v)?;
14375        }
14376        if let Some(v) = self.name.as_ref() {
14377            os.write_string(3, v)?;
14378        }
14379        if let Some(v) = self.name_english.as_ref() {
14380            os.write_string(4, v)?;
14381        }
14382        for v in &self.tiles {
14383            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
14384        };
14385        os.write_unknown_fields(self.special_fields.unknown_fields())?;
14386        ::std::result::Result::Ok(())
14387    }
14388
14389    fn special_fields(&self) -> &::protobuf::SpecialFields {
14390        &self.special_fields
14391    }
14392
14393    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
14394        &mut self.special_fields
14395    }
14396
14397    fn new() -> RegionMap {
14398        RegionMap::new()
14399    }
14400
14401    fn clear(&mut self) {
14402        self.map_x = ::std::option::Option::None;
14403        self.map_y = ::std::option::Option::None;
14404        self.name = ::std::option::Option::None;
14405        self.name_english = ::std::option::Option::None;
14406        self.tiles.clear();
14407        self.special_fields.clear();
14408    }
14409
14410    fn default_instance() -> &'static RegionMap {
14411        static instance: RegionMap = RegionMap {
14412            map_x: ::std::option::Option::None,
14413            map_y: ::std::option::Option::None,
14414            name: ::std::option::Option::None,
14415            name_english: ::std::option::Option::None,
14416            tiles: ::std::vec::Vec::new(),
14417            special_fields: ::protobuf::SpecialFields::new(),
14418        };
14419        &instance
14420    }
14421}
14422
14423impl ::protobuf::MessageFull for RegionMap {
14424    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
14425        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
14426        descriptor.get(|| file_descriptor().message_by_package_relative_name("RegionMap").unwrap()).clone()
14427    }
14428}
14429
14430impl ::std::fmt::Display for RegionMap {
14431    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14432        ::protobuf::text_format::fmt(self, f)
14433    }
14434}
14435
14436impl ::protobuf::reflect::ProtobufValue for RegionMap {
14437    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
14438}
14439
14440// @@protoc_insertion_point(message:RemoteFortressReader.RegionMaps)
14441#[derive(PartialEq,Clone,Default,Debug)]
14442pub struct RegionMaps {
14443    // message fields
14444    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMaps.world_maps)
14445    pub world_maps: ::std::vec::Vec<WorldMap>,
14446    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMaps.region_maps)
14447    pub region_maps: ::std::vec::Vec<RegionMap>,
14448    // special fields
14449    // @@protoc_insertion_point(special_field:RemoteFortressReader.RegionMaps.special_fields)
14450    pub special_fields: ::protobuf::SpecialFields,
14451}
14452
14453impl<'a> ::std::default::Default for &'a RegionMaps {
14454    fn default() -> &'a RegionMaps {
14455        <RegionMaps as ::protobuf::Message>::default_instance()
14456    }
14457}
14458
14459impl RegionMaps {
14460    pub fn new() -> RegionMaps {
14461        ::std::default::Default::default()
14462    }
14463
14464    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
14465        let mut fields = ::std::vec::Vec::with_capacity(2);
14466        let mut oneofs = ::std::vec::Vec::with_capacity(0);
14467        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14468            "world_maps",
14469            |m: &RegionMaps| { &m.world_maps },
14470            |m: &mut RegionMaps| { &mut m.world_maps },
14471        ));
14472        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14473            "region_maps",
14474            |m: &RegionMaps| { &m.region_maps },
14475            |m: &mut RegionMaps| { &mut m.region_maps },
14476        ));
14477        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<RegionMaps>(
14478            "RegionMaps",
14479            fields,
14480            oneofs,
14481        )
14482    }
14483}
14484
14485impl ::protobuf::Message for RegionMaps {
14486    const NAME: &'static str = "RegionMaps";
14487
14488    fn is_initialized(&self) -> bool {
14489        for v in &self.world_maps {
14490            if !v.is_initialized() {
14491                return false;
14492            }
14493        };
14494        for v in &self.region_maps {
14495            if !v.is_initialized() {
14496                return false;
14497            }
14498        };
14499        true
14500    }
14501
14502    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
14503        while let Some(tag) = is.read_raw_tag_or_eof()? {
14504            match tag {
14505                10 => {
14506                    self.world_maps.push(is.read_message()?);
14507                },
14508                18 => {
14509                    self.region_maps.push(is.read_message()?);
14510                },
14511                tag => {
14512                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
14513                },
14514            };
14515        }
14516        ::std::result::Result::Ok(())
14517    }
14518
14519    // Compute sizes of nested messages
14520    #[allow(unused_variables)]
14521    fn compute_size(&self) -> u64 {
14522        let mut my_size = 0;
14523        for value in &self.world_maps {
14524            let len = value.compute_size();
14525            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
14526        };
14527        for value in &self.region_maps {
14528            let len = value.compute_size();
14529            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
14530        };
14531        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
14532        self.special_fields.cached_size().set(my_size as u32);
14533        my_size
14534    }
14535
14536    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
14537        for v in &self.world_maps {
14538            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
14539        };
14540        for v in &self.region_maps {
14541            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
14542        };
14543        os.write_unknown_fields(self.special_fields.unknown_fields())?;
14544        ::std::result::Result::Ok(())
14545    }
14546
14547    fn special_fields(&self) -> &::protobuf::SpecialFields {
14548        &self.special_fields
14549    }
14550
14551    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
14552        &mut self.special_fields
14553    }
14554
14555    fn new() -> RegionMaps {
14556        RegionMaps::new()
14557    }
14558
14559    fn clear(&mut self) {
14560        self.world_maps.clear();
14561        self.region_maps.clear();
14562        self.special_fields.clear();
14563    }
14564
14565    fn default_instance() -> &'static RegionMaps {
14566        static instance: RegionMaps = RegionMaps {
14567            world_maps: ::std::vec::Vec::new(),
14568            region_maps: ::std::vec::Vec::new(),
14569            special_fields: ::protobuf::SpecialFields::new(),
14570        };
14571        &instance
14572    }
14573}
14574
14575impl ::protobuf::MessageFull for RegionMaps {
14576    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
14577        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
14578        descriptor.get(|| file_descriptor().message_by_package_relative_name("RegionMaps").unwrap()).clone()
14579    }
14580}
14581
14582impl ::std::fmt::Display for RegionMaps {
14583    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14584        ::protobuf::text_format::fmt(self, f)
14585    }
14586}
14587
14588impl ::protobuf::reflect::ProtobufValue for RegionMaps {
14589    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
14590}
14591
14592// @@protoc_insertion_point(message:RemoteFortressReader.PatternDescriptor)
14593#[derive(PartialEq,Clone,Default,Debug)]
14594pub struct PatternDescriptor {
14595    // message fields
14596    // @@protoc_insertion_point(field:RemoteFortressReader.PatternDescriptor.id)
14597    pub id: ::std::option::Option<::std::string::String>,
14598    // @@protoc_insertion_point(field:RemoteFortressReader.PatternDescriptor.colors)
14599    pub colors: ::std::vec::Vec<ColorDefinition>,
14600    // @@protoc_insertion_point(field:RemoteFortressReader.PatternDescriptor.pattern)
14601    pub pattern: ::std::option::Option<::protobuf::EnumOrUnknown<PatternType>>,
14602    // special fields
14603    // @@protoc_insertion_point(special_field:RemoteFortressReader.PatternDescriptor.special_fields)
14604    pub special_fields: ::protobuf::SpecialFields,
14605}
14606
14607impl<'a> ::std::default::Default for &'a PatternDescriptor {
14608    fn default() -> &'a PatternDescriptor {
14609        <PatternDescriptor as ::protobuf::Message>::default_instance()
14610    }
14611}
14612
14613impl PatternDescriptor {
14614    pub fn new() -> PatternDescriptor {
14615        ::std::default::Default::default()
14616    }
14617
14618    // optional string id = 1;
14619
14620    pub fn id(&self) -> &str {
14621        match self.id.as_ref() {
14622            Some(v) => v,
14623            None => "",
14624        }
14625    }
14626
14627    pub fn clear_id(&mut self) {
14628        self.id = ::std::option::Option::None;
14629    }
14630
14631    pub fn has_id(&self) -> bool {
14632        self.id.is_some()
14633    }
14634
14635    // Param is passed by value, moved
14636    pub fn set_id(&mut self, v: ::std::string::String) {
14637        self.id = ::std::option::Option::Some(v);
14638    }
14639
14640    // Mutable pointer to the field.
14641    // If field is not initialized, it is initialized with default value first.
14642    pub fn mut_id(&mut self) -> &mut ::std::string::String {
14643        if self.id.is_none() {
14644            self.id = ::std::option::Option::Some(::std::string::String::new());
14645        }
14646        self.id.as_mut().unwrap()
14647    }
14648
14649    // Take field
14650    pub fn take_id(&mut self) -> ::std::string::String {
14651        self.id.take().unwrap_or_else(|| ::std::string::String::new())
14652    }
14653
14654    // optional .RemoteFortressReader.PatternType pattern = 3;
14655
14656    pub fn pattern(&self) -> PatternType {
14657        match self.pattern {
14658            Some(e) => e.enum_value_or(PatternType::MONOTONE),
14659            None => PatternType::MONOTONE,
14660        }
14661    }
14662
14663    pub fn clear_pattern(&mut self) {
14664        self.pattern = ::std::option::Option::None;
14665    }
14666
14667    pub fn has_pattern(&self) -> bool {
14668        self.pattern.is_some()
14669    }
14670
14671    // Param is passed by value, moved
14672    pub fn set_pattern(&mut self, v: PatternType) {
14673        self.pattern = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
14674    }
14675
14676    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
14677        let mut fields = ::std::vec::Vec::with_capacity(3);
14678        let mut oneofs = ::std::vec::Vec::with_capacity(0);
14679        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14680            "id",
14681            |m: &PatternDescriptor| { &m.id },
14682            |m: &mut PatternDescriptor| { &mut m.id },
14683        ));
14684        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14685            "colors",
14686            |m: &PatternDescriptor| { &m.colors },
14687            |m: &mut PatternDescriptor| { &mut m.colors },
14688        ));
14689        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14690            "pattern",
14691            |m: &PatternDescriptor| { &m.pattern },
14692            |m: &mut PatternDescriptor| { &mut m.pattern },
14693        ));
14694        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PatternDescriptor>(
14695            "PatternDescriptor",
14696            fields,
14697            oneofs,
14698        )
14699    }
14700}
14701
14702impl ::protobuf::Message for PatternDescriptor {
14703    const NAME: &'static str = "PatternDescriptor";
14704
14705    fn is_initialized(&self) -> bool {
14706        for v in &self.colors {
14707            if !v.is_initialized() {
14708                return false;
14709            }
14710        };
14711        true
14712    }
14713
14714    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
14715        while let Some(tag) = is.read_raw_tag_or_eof()? {
14716            match tag {
14717                10 => {
14718                    self.id = ::std::option::Option::Some(is.read_string()?);
14719                },
14720                18 => {
14721                    self.colors.push(is.read_message()?);
14722                },
14723                24 => {
14724                    self.pattern = ::std::option::Option::Some(is.read_enum_or_unknown()?);
14725                },
14726                tag => {
14727                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
14728                },
14729            };
14730        }
14731        ::std::result::Result::Ok(())
14732    }
14733
14734    // Compute sizes of nested messages
14735    #[allow(unused_variables)]
14736    fn compute_size(&self) -> u64 {
14737        let mut my_size = 0;
14738        if let Some(v) = self.id.as_ref() {
14739            my_size += ::protobuf::rt::string_size(1, &v);
14740        }
14741        for value in &self.colors {
14742            let len = value.compute_size();
14743            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
14744        };
14745        if let Some(v) = self.pattern {
14746            my_size += ::protobuf::rt::int32_size(3, v.value());
14747        }
14748        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
14749        self.special_fields.cached_size().set(my_size as u32);
14750        my_size
14751    }
14752
14753    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
14754        if let Some(v) = self.id.as_ref() {
14755            os.write_string(1, v)?;
14756        }
14757        for v in &self.colors {
14758            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
14759        };
14760        if let Some(v) = self.pattern {
14761            os.write_enum(3, ::protobuf::EnumOrUnknown::value(&v))?;
14762        }
14763        os.write_unknown_fields(self.special_fields.unknown_fields())?;
14764        ::std::result::Result::Ok(())
14765    }
14766
14767    fn special_fields(&self) -> &::protobuf::SpecialFields {
14768        &self.special_fields
14769    }
14770
14771    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
14772        &mut self.special_fields
14773    }
14774
14775    fn new() -> PatternDescriptor {
14776        PatternDescriptor::new()
14777    }
14778
14779    fn clear(&mut self) {
14780        self.id = ::std::option::Option::None;
14781        self.colors.clear();
14782        self.pattern = ::std::option::Option::None;
14783        self.special_fields.clear();
14784    }
14785
14786    fn default_instance() -> &'static PatternDescriptor {
14787        static instance: PatternDescriptor = PatternDescriptor {
14788            id: ::std::option::Option::None,
14789            colors: ::std::vec::Vec::new(),
14790            pattern: ::std::option::Option::None,
14791            special_fields: ::protobuf::SpecialFields::new(),
14792        };
14793        &instance
14794    }
14795}
14796
14797impl ::protobuf::MessageFull for PatternDescriptor {
14798    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
14799        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
14800        descriptor.get(|| file_descriptor().message_by_package_relative_name("PatternDescriptor").unwrap()).clone()
14801    }
14802}
14803
14804impl ::std::fmt::Display for PatternDescriptor {
14805    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14806        ::protobuf::text_format::fmt(self, f)
14807    }
14808}
14809
14810impl ::protobuf::reflect::ProtobufValue for PatternDescriptor {
14811    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
14812}
14813
14814// @@protoc_insertion_point(message:RemoteFortressReader.ColorModifierRaw)
14815#[derive(PartialEq,Clone,Default,Debug)]
14816pub struct ColorModifierRaw {
14817    // message fields
14818    // @@protoc_insertion_point(field:RemoteFortressReader.ColorModifierRaw.patterns)
14819    pub patterns: ::std::vec::Vec<PatternDescriptor>,
14820    // @@protoc_insertion_point(field:RemoteFortressReader.ColorModifierRaw.body_part_id)
14821    pub body_part_id: ::std::vec::Vec<i32>,
14822    // @@protoc_insertion_point(field:RemoteFortressReader.ColorModifierRaw.tissue_layer_id)
14823    pub tissue_layer_id: ::std::vec::Vec<i32>,
14824    // @@protoc_insertion_point(field:RemoteFortressReader.ColorModifierRaw.start_date)
14825    pub start_date: ::std::option::Option<i32>,
14826    // @@protoc_insertion_point(field:RemoteFortressReader.ColorModifierRaw.end_date)
14827    pub end_date: ::std::option::Option<i32>,
14828    // @@protoc_insertion_point(field:RemoteFortressReader.ColorModifierRaw.part)
14829    pub part: ::std::option::Option<::std::string::String>,
14830    // special fields
14831    // @@protoc_insertion_point(special_field:RemoteFortressReader.ColorModifierRaw.special_fields)
14832    pub special_fields: ::protobuf::SpecialFields,
14833}
14834
14835impl<'a> ::std::default::Default for &'a ColorModifierRaw {
14836    fn default() -> &'a ColorModifierRaw {
14837        <ColorModifierRaw as ::protobuf::Message>::default_instance()
14838    }
14839}
14840
14841impl ColorModifierRaw {
14842    pub fn new() -> ColorModifierRaw {
14843        ::std::default::Default::default()
14844    }
14845
14846    // optional int32 start_date = 4;
14847
14848    pub fn start_date(&self) -> i32 {
14849        self.start_date.unwrap_or(0)
14850    }
14851
14852    pub fn clear_start_date(&mut self) {
14853        self.start_date = ::std::option::Option::None;
14854    }
14855
14856    pub fn has_start_date(&self) -> bool {
14857        self.start_date.is_some()
14858    }
14859
14860    // Param is passed by value, moved
14861    pub fn set_start_date(&mut self, v: i32) {
14862        self.start_date = ::std::option::Option::Some(v);
14863    }
14864
14865    // optional int32 end_date = 5;
14866
14867    pub fn end_date(&self) -> i32 {
14868        self.end_date.unwrap_or(0)
14869    }
14870
14871    pub fn clear_end_date(&mut self) {
14872        self.end_date = ::std::option::Option::None;
14873    }
14874
14875    pub fn has_end_date(&self) -> bool {
14876        self.end_date.is_some()
14877    }
14878
14879    // Param is passed by value, moved
14880    pub fn set_end_date(&mut self, v: i32) {
14881        self.end_date = ::std::option::Option::Some(v);
14882    }
14883
14884    // optional string part = 6;
14885
14886    pub fn part(&self) -> &str {
14887        match self.part.as_ref() {
14888            Some(v) => v,
14889            None => "",
14890        }
14891    }
14892
14893    pub fn clear_part(&mut self) {
14894        self.part = ::std::option::Option::None;
14895    }
14896
14897    pub fn has_part(&self) -> bool {
14898        self.part.is_some()
14899    }
14900
14901    // Param is passed by value, moved
14902    pub fn set_part(&mut self, v: ::std::string::String) {
14903        self.part = ::std::option::Option::Some(v);
14904    }
14905
14906    // Mutable pointer to the field.
14907    // If field is not initialized, it is initialized with default value first.
14908    pub fn mut_part(&mut self) -> &mut ::std::string::String {
14909        if self.part.is_none() {
14910            self.part = ::std::option::Option::Some(::std::string::String::new());
14911        }
14912        self.part.as_mut().unwrap()
14913    }
14914
14915    // Take field
14916    pub fn take_part(&mut self) -> ::std::string::String {
14917        self.part.take().unwrap_or_else(|| ::std::string::String::new())
14918    }
14919
14920    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
14921        let mut fields = ::std::vec::Vec::with_capacity(6);
14922        let mut oneofs = ::std::vec::Vec::with_capacity(0);
14923        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14924            "patterns",
14925            |m: &ColorModifierRaw| { &m.patterns },
14926            |m: &mut ColorModifierRaw| { &mut m.patterns },
14927        ));
14928        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14929            "body_part_id",
14930            |m: &ColorModifierRaw| { &m.body_part_id },
14931            |m: &mut ColorModifierRaw| { &mut m.body_part_id },
14932        ));
14933        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14934            "tissue_layer_id",
14935            |m: &ColorModifierRaw| { &m.tissue_layer_id },
14936            |m: &mut ColorModifierRaw| { &mut m.tissue_layer_id },
14937        ));
14938        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14939            "start_date",
14940            |m: &ColorModifierRaw| { &m.start_date },
14941            |m: &mut ColorModifierRaw| { &mut m.start_date },
14942        ));
14943        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14944            "end_date",
14945            |m: &ColorModifierRaw| { &m.end_date },
14946            |m: &mut ColorModifierRaw| { &mut m.end_date },
14947        ));
14948        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14949            "part",
14950            |m: &ColorModifierRaw| { &m.part },
14951            |m: &mut ColorModifierRaw| { &mut m.part },
14952        ));
14953        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ColorModifierRaw>(
14954            "ColorModifierRaw",
14955            fields,
14956            oneofs,
14957        )
14958    }
14959}
14960
14961impl ::protobuf::Message for ColorModifierRaw {
14962    const NAME: &'static str = "ColorModifierRaw";
14963
14964    fn is_initialized(&self) -> bool {
14965        for v in &self.patterns {
14966            if !v.is_initialized() {
14967                return false;
14968            }
14969        };
14970        true
14971    }
14972
14973    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
14974        while let Some(tag) = is.read_raw_tag_or_eof()? {
14975            match tag {
14976                10 => {
14977                    self.patterns.push(is.read_message()?);
14978                },
14979                18 => {
14980                    is.read_repeated_packed_int32_into(&mut self.body_part_id)?;
14981                },
14982                16 => {
14983                    self.body_part_id.push(is.read_int32()?);
14984                },
14985                26 => {
14986                    is.read_repeated_packed_int32_into(&mut self.tissue_layer_id)?;
14987                },
14988                24 => {
14989                    self.tissue_layer_id.push(is.read_int32()?);
14990                },
14991                32 => {
14992                    self.start_date = ::std::option::Option::Some(is.read_int32()?);
14993                },
14994                40 => {
14995                    self.end_date = ::std::option::Option::Some(is.read_int32()?);
14996                },
14997                50 => {
14998                    self.part = ::std::option::Option::Some(is.read_string()?);
14999                },
15000                tag => {
15001                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
15002                },
15003            };
15004        }
15005        ::std::result::Result::Ok(())
15006    }
15007
15008    // Compute sizes of nested messages
15009    #[allow(unused_variables)]
15010    fn compute_size(&self) -> u64 {
15011        let mut my_size = 0;
15012        for value in &self.patterns {
15013            let len = value.compute_size();
15014            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
15015        };
15016        for value in &self.body_part_id {
15017            my_size += ::protobuf::rt::int32_size(2, *value);
15018        };
15019        for value in &self.tissue_layer_id {
15020            my_size += ::protobuf::rt::int32_size(3, *value);
15021        };
15022        if let Some(v) = self.start_date {
15023            my_size += ::protobuf::rt::int32_size(4, v);
15024        }
15025        if let Some(v) = self.end_date {
15026            my_size += ::protobuf::rt::int32_size(5, v);
15027        }
15028        if let Some(v) = self.part.as_ref() {
15029            my_size += ::protobuf::rt::string_size(6, &v);
15030        }
15031        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
15032        self.special_fields.cached_size().set(my_size as u32);
15033        my_size
15034    }
15035
15036    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
15037        for v in &self.patterns {
15038            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
15039        };
15040        for v in &self.body_part_id {
15041            os.write_int32(2, *v)?;
15042        };
15043        for v in &self.tissue_layer_id {
15044            os.write_int32(3, *v)?;
15045        };
15046        if let Some(v) = self.start_date {
15047            os.write_int32(4, v)?;
15048        }
15049        if let Some(v) = self.end_date {
15050            os.write_int32(5, v)?;
15051        }
15052        if let Some(v) = self.part.as_ref() {
15053            os.write_string(6, v)?;
15054        }
15055        os.write_unknown_fields(self.special_fields.unknown_fields())?;
15056        ::std::result::Result::Ok(())
15057    }
15058
15059    fn special_fields(&self) -> &::protobuf::SpecialFields {
15060        &self.special_fields
15061    }
15062
15063    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
15064        &mut self.special_fields
15065    }
15066
15067    fn new() -> ColorModifierRaw {
15068        ColorModifierRaw::new()
15069    }
15070
15071    fn clear(&mut self) {
15072        self.patterns.clear();
15073        self.body_part_id.clear();
15074        self.tissue_layer_id.clear();
15075        self.start_date = ::std::option::Option::None;
15076        self.end_date = ::std::option::Option::None;
15077        self.part = ::std::option::Option::None;
15078        self.special_fields.clear();
15079    }
15080
15081    fn default_instance() -> &'static ColorModifierRaw {
15082        static instance: ColorModifierRaw = ColorModifierRaw {
15083            patterns: ::std::vec::Vec::new(),
15084            body_part_id: ::std::vec::Vec::new(),
15085            tissue_layer_id: ::std::vec::Vec::new(),
15086            start_date: ::std::option::Option::None,
15087            end_date: ::std::option::Option::None,
15088            part: ::std::option::Option::None,
15089            special_fields: ::protobuf::SpecialFields::new(),
15090        };
15091        &instance
15092    }
15093}
15094
15095impl ::protobuf::MessageFull for ColorModifierRaw {
15096    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
15097        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
15098        descriptor.get(|| file_descriptor().message_by_package_relative_name("ColorModifierRaw").unwrap()).clone()
15099    }
15100}
15101
15102impl ::std::fmt::Display for ColorModifierRaw {
15103    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15104        ::protobuf::text_format::fmt(self, f)
15105    }
15106}
15107
15108impl ::protobuf::reflect::ProtobufValue for ColorModifierRaw {
15109    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
15110}
15111
15112// @@protoc_insertion_point(message:RemoteFortressReader.BodyPartLayerRaw)
15113#[derive(PartialEq,Clone,Default,Debug)]
15114pub struct BodyPartLayerRaw {
15115    // message fields
15116    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartLayerRaw.layer_name)
15117    pub layer_name: ::std::option::Option<::std::string::String>,
15118    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartLayerRaw.tissue_id)
15119    pub tissue_id: ::std::option::Option<i32>,
15120    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartLayerRaw.layer_depth)
15121    pub layer_depth: ::std::option::Option<i32>,
15122    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartLayerRaw.bp_modifiers)
15123    pub bp_modifiers: ::std::vec::Vec<i32>,
15124    // special fields
15125    // @@protoc_insertion_point(special_field:RemoteFortressReader.BodyPartLayerRaw.special_fields)
15126    pub special_fields: ::protobuf::SpecialFields,
15127}
15128
15129impl<'a> ::std::default::Default for &'a BodyPartLayerRaw {
15130    fn default() -> &'a BodyPartLayerRaw {
15131        <BodyPartLayerRaw as ::protobuf::Message>::default_instance()
15132    }
15133}
15134
15135impl BodyPartLayerRaw {
15136    pub fn new() -> BodyPartLayerRaw {
15137        ::std::default::Default::default()
15138    }
15139
15140    // optional string layer_name = 1;
15141
15142    pub fn layer_name(&self) -> &str {
15143        match self.layer_name.as_ref() {
15144            Some(v) => v,
15145            None => "",
15146        }
15147    }
15148
15149    pub fn clear_layer_name(&mut self) {
15150        self.layer_name = ::std::option::Option::None;
15151    }
15152
15153    pub fn has_layer_name(&self) -> bool {
15154        self.layer_name.is_some()
15155    }
15156
15157    // Param is passed by value, moved
15158    pub fn set_layer_name(&mut self, v: ::std::string::String) {
15159        self.layer_name = ::std::option::Option::Some(v);
15160    }
15161
15162    // Mutable pointer to the field.
15163    // If field is not initialized, it is initialized with default value first.
15164    pub fn mut_layer_name(&mut self) -> &mut ::std::string::String {
15165        if self.layer_name.is_none() {
15166            self.layer_name = ::std::option::Option::Some(::std::string::String::new());
15167        }
15168        self.layer_name.as_mut().unwrap()
15169    }
15170
15171    // Take field
15172    pub fn take_layer_name(&mut self) -> ::std::string::String {
15173        self.layer_name.take().unwrap_or_else(|| ::std::string::String::new())
15174    }
15175
15176    // optional int32 tissue_id = 2;
15177
15178    pub fn tissue_id(&self) -> i32 {
15179        self.tissue_id.unwrap_or(0)
15180    }
15181
15182    pub fn clear_tissue_id(&mut self) {
15183        self.tissue_id = ::std::option::Option::None;
15184    }
15185
15186    pub fn has_tissue_id(&self) -> bool {
15187        self.tissue_id.is_some()
15188    }
15189
15190    // Param is passed by value, moved
15191    pub fn set_tissue_id(&mut self, v: i32) {
15192        self.tissue_id = ::std::option::Option::Some(v);
15193    }
15194
15195    // optional int32 layer_depth = 3;
15196
15197    pub fn layer_depth(&self) -> i32 {
15198        self.layer_depth.unwrap_or(0)
15199    }
15200
15201    pub fn clear_layer_depth(&mut self) {
15202        self.layer_depth = ::std::option::Option::None;
15203    }
15204
15205    pub fn has_layer_depth(&self) -> bool {
15206        self.layer_depth.is_some()
15207    }
15208
15209    // Param is passed by value, moved
15210    pub fn set_layer_depth(&mut self, v: i32) {
15211        self.layer_depth = ::std::option::Option::Some(v);
15212    }
15213
15214    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
15215        let mut fields = ::std::vec::Vec::with_capacity(4);
15216        let mut oneofs = ::std::vec::Vec::with_capacity(0);
15217        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15218            "layer_name",
15219            |m: &BodyPartLayerRaw| { &m.layer_name },
15220            |m: &mut BodyPartLayerRaw| { &mut m.layer_name },
15221        ));
15222        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15223            "tissue_id",
15224            |m: &BodyPartLayerRaw| { &m.tissue_id },
15225            |m: &mut BodyPartLayerRaw| { &mut m.tissue_id },
15226        ));
15227        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15228            "layer_depth",
15229            |m: &BodyPartLayerRaw| { &m.layer_depth },
15230            |m: &mut BodyPartLayerRaw| { &mut m.layer_depth },
15231        ));
15232        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
15233            "bp_modifiers",
15234            |m: &BodyPartLayerRaw| { &m.bp_modifiers },
15235            |m: &mut BodyPartLayerRaw| { &mut m.bp_modifiers },
15236        ));
15237        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BodyPartLayerRaw>(
15238            "BodyPartLayerRaw",
15239            fields,
15240            oneofs,
15241        )
15242    }
15243}
15244
15245impl ::protobuf::Message for BodyPartLayerRaw {
15246    const NAME: &'static str = "BodyPartLayerRaw";
15247
15248    fn is_initialized(&self) -> bool {
15249        true
15250    }
15251
15252    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
15253        while let Some(tag) = is.read_raw_tag_or_eof()? {
15254            match tag {
15255                10 => {
15256                    self.layer_name = ::std::option::Option::Some(is.read_string()?);
15257                },
15258                16 => {
15259                    self.tissue_id = ::std::option::Option::Some(is.read_int32()?);
15260                },
15261                24 => {
15262                    self.layer_depth = ::std::option::Option::Some(is.read_int32()?);
15263                },
15264                34 => {
15265                    is.read_repeated_packed_int32_into(&mut self.bp_modifiers)?;
15266                },
15267                32 => {
15268                    self.bp_modifiers.push(is.read_int32()?);
15269                },
15270                tag => {
15271                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
15272                },
15273            };
15274        }
15275        ::std::result::Result::Ok(())
15276    }
15277
15278    // Compute sizes of nested messages
15279    #[allow(unused_variables)]
15280    fn compute_size(&self) -> u64 {
15281        let mut my_size = 0;
15282        if let Some(v) = self.layer_name.as_ref() {
15283            my_size += ::protobuf::rt::string_size(1, &v);
15284        }
15285        if let Some(v) = self.tissue_id {
15286            my_size += ::protobuf::rt::int32_size(2, v);
15287        }
15288        if let Some(v) = self.layer_depth {
15289            my_size += ::protobuf::rt::int32_size(3, v);
15290        }
15291        for value in &self.bp_modifiers {
15292            my_size += ::protobuf::rt::int32_size(4, *value);
15293        };
15294        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
15295        self.special_fields.cached_size().set(my_size as u32);
15296        my_size
15297    }
15298
15299    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
15300        if let Some(v) = self.layer_name.as_ref() {
15301            os.write_string(1, v)?;
15302        }
15303        if let Some(v) = self.tissue_id {
15304            os.write_int32(2, v)?;
15305        }
15306        if let Some(v) = self.layer_depth {
15307            os.write_int32(3, v)?;
15308        }
15309        for v in &self.bp_modifiers {
15310            os.write_int32(4, *v)?;
15311        };
15312        os.write_unknown_fields(self.special_fields.unknown_fields())?;
15313        ::std::result::Result::Ok(())
15314    }
15315
15316    fn special_fields(&self) -> &::protobuf::SpecialFields {
15317        &self.special_fields
15318    }
15319
15320    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
15321        &mut self.special_fields
15322    }
15323
15324    fn new() -> BodyPartLayerRaw {
15325        BodyPartLayerRaw::new()
15326    }
15327
15328    fn clear(&mut self) {
15329        self.layer_name = ::std::option::Option::None;
15330        self.tissue_id = ::std::option::Option::None;
15331        self.layer_depth = ::std::option::Option::None;
15332        self.bp_modifiers.clear();
15333        self.special_fields.clear();
15334    }
15335
15336    fn default_instance() -> &'static BodyPartLayerRaw {
15337        static instance: BodyPartLayerRaw = BodyPartLayerRaw {
15338            layer_name: ::std::option::Option::None,
15339            tissue_id: ::std::option::Option::None,
15340            layer_depth: ::std::option::Option::None,
15341            bp_modifiers: ::std::vec::Vec::new(),
15342            special_fields: ::protobuf::SpecialFields::new(),
15343        };
15344        &instance
15345    }
15346}
15347
15348impl ::protobuf::MessageFull for BodyPartLayerRaw {
15349    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
15350        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
15351        descriptor.get(|| file_descriptor().message_by_package_relative_name("BodyPartLayerRaw").unwrap()).clone()
15352    }
15353}
15354
15355impl ::std::fmt::Display for BodyPartLayerRaw {
15356    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15357        ::protobuf::text_format::fmt(self, f)
15358    }
15359}
15360
15361impl ::protobuf::reflect::ProtobufValue for BodyPartLayerRaw {
15362    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
15363}
15364
15365// @@protoc_insertion_point(message:RemoteFortressReader.BodyPartRaw)
15366#[derive(PartialEq,Clone,Default,Debug)]
15367pub struct BodyPartRaw {
15368    // message fields
15369    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartRaw.token)
15370    pub token: ::std::option::Option<::std::string::String>,
15371    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartRaw.category)
15372    pub category: ::std::option::Option<::std::string::String>,
15373    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartRaw.parent)
15374    pub parent: ::std::option::Option<i32>,
15375    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartRaw.flags)
15376    pub flags: ::std::vec::Vec<bool>,
15377    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartRaw.layers)
15378    pub layers: ::std::vec::Vec<BodyPartLayerRaw>,
15379    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartRaw.relsize)
15380    pub relsize: ::std::option::Option<i32>,
15381    // special fields
15382    // @@protoc_insertion_point(special_field:RemoteFortressReader.BodyPartRaw.special_fields)
15383    pub special_fields: ::protobuf::SpecialFields,
15384}
15385
15386impl<'a> ::std::default::Default for &'a BodyPartRaw {
15387    fn default() -> &'a BodyPartRaw {
15388        <BodyPartRaw as ::protobuf::Message>::default_instance()
15389    }
15390}
15391
15392impl BodyPartRaw {
15393    pub fn new() -> BodyPartRaw {
15394        ::std::default::Default::default()
15395    }
15396
15397    // optional string token = 1;
15398
15399    pub fn token(&self) -> &str {
15400        match self.token.as_ref() {
15401            Some(v) => v,
15402            None => "",
15403        }
15404    }
15405
15406    pub fn clear_token(&mut self) {
15407        self.token = ::std::option::Option::None;
15408    }
15409
15410    pub fn has_token(&self) -> bool {
15411        self.token.is_some()
15412    }
15413
15414    // Param is passed by value, moved
15415    pub fn set_token(&mut self, v: ::std::string::String) {
15416        self.token = ::std::option::Option::Some(v);
15417    }
15418
15419    // Mutable pointer to the field.
15420    // If field is not initialized, it is initialized with default value first.
15421    pub fn mut_token(&mut self) -> &mut ::std::string::String {
15422        if self.token.is_none() {
15423            self.token = ::std::option::Option::Some(::std::string::String::new());
15424        }
15425        self.token.as_mut().unwrap()
15426    }
15427
15428    // Take field
15429    pub fn take_token(&mut self) -> ::std::string::String {
15430        self.token.take().unwrap_or_else(|| ::std::string::String::new())
15431    }
15432
15433    // optional string category = 2;
15434
15435    pub fn category(&self) -> &str {
15436        match self.category.as_ref() {
15437            Some(v) => v,
15438            None => "",
15439        }
15440    }
15441
15442    pub fn clear_category(&mut self) {
15443        self.category = ::std::option::Option::None;
15444    }
15445
15446    pub fn has_category(&self) -> bool {
15447        self.category.is_some()
15448    }
15449
15450    // Param is passed by value, moved
15451    pub fn set_category(&mut self, v: ::std::string::String) {
15452        self.category = ::std::option::Option::Some(v);
15453    }
15454
15455    // Mutable pointer to the field.
15456    // If field is not initialized, it is initialized with default value first.
15457    pub fn mut_category(&mut self) -> &mut ::std::string::String {
15458        if self.category.is_none() {
15459            self.category = ::std::option::Option::Some(::std::string::String::new());
15460        }
15461        self.category.as_mut().unwrap()
15462    }
15463
15464    // Take field
15465    pub fn take_category(&mut self) -> ::std::string::String {
15466        self.category.take().unwrap_or_else(|| ::std::string::String::new())
15467    }
15468
15469    // optional int32 parent = 3;
15470
15471    pub fn parent(&self) -> i32 {
15472        self.parent.unwrap_or(0)
15473    }
15474
15475    pub fn clear_parent(&mut self) {
15476        self.parent = ::std::option::Option::None;
15477    }
15478
15479    pub fn has_parent(&self) -> bool {
15480        self.parent.is_some()
15481    }
15482
15483    // Param is passed by value, moved
15484    pub fn set_parent(&mut self, v: i32) {
15485        self.parent = ::std::option::Option::Some(v);
15486    }
15487
15488    // optional int32 relsize = 6;
15489
15490    pub fn relsize(&self) -> i32 {
15491        self.relsize.unwrap_or(0)
15492    }
15493
15494    pub fn clear_relsize(&mut self) {
15495        self.relsize = ::std::option::Option::None;
15496    }
15497
15498    pub fn has_relsize(&self) -> bool {
15499        self.relsize.is_some()
15500    }
15501
15502    // Param is passed by value, moved
15503    pub fn set_relsize(&mut self, v: i32) {
15504        self.relsize = ::std::option::Option::Some(v);
15505    }
15506
15507    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
15508        let mut fields = ::std::vec::Vec::with_capacity(6);
15509        let mut oneofs = ::std::vec::Vec::with_capacity(0);
15510        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15511            "token",
15512            |m: &BodyPartRaw| { &m.token },
15513            |m: &mut BodyPartRaw| { &mut m.token },
15514        ));
15515        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15516            "category",
15517            |m: &BodyPartRaw| { &m.category },
15518            |m: &mut BodyPartRaw| { &mut m.category },
15519        ));
15520        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15521            "parent",
15522            |m: &BodyPartRaw| { &m.parent },
15523            |m: &mut BodyPartRaw| { &mut m.parent },
15524        ));
15525        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
15526            "flags",
15527            |m: &BodyPartRaw| { &m.flags },
15528            |m: &mut BodyPartRaw| { &mut m.flags },
15529        ));
15530        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
15531            "layers",
15532            |m: &BodyPartRaw| { &m.layers },
15533            |m: &mut BodyPartRaw| { &mut m.layers },
15534        ));
15535        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15536            "relsize",
15537            |m: &BodyPartRaw| { &m.relsize },
15538            |m: &mut BodyPartRaw| { &mut m.relsize },
15539        ));
15540        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BodyPartRaw>(
15541            "BodyPartRaw",
15542            fields,
15543            oneofs,
15544        )
15545    }
15546}
15547
15548impl ::protobuf::Message for BodyPartRaw {
15549    const NAME: &'static str = "BodyPartRaw";
15550
15551    fn is_initialized(&self) -> bool {
15552        true
15553    }
15554
15555    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
15556        while let Some(tag) = is.read_raw_tag_or_eof()? {
15557            match tag {
15558                10 => {
15559                    self.token = ::std::option::Option::Some(is.read_string()?);
15560                },
15561                18 => {
15562                    self.category = ::std::option::Option::Some(is.read_string()?);
15563                },
15564                24 => {
15565                    self.parent = ::std::option::Option::Some(is.read_int32()?);
15566                },
15567                34 => {
15568                    is.read_repeated_packed_bool_into(&mut self.flags)?;
15569                },
15570                32 => {
15571                    self.flags.push(is.read_bool()?);
15572                },
15573                42 => {
15574                    self.layers.push(is.read_message()?);
15575                },
15576                48 => {
15577                    self.relsize = ::std::option::Option::Some(is.read_int32()?);
15578                },
15579                tag => {
15580                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
15581                },
15582            };
15583        }
15584        ::std::result::Result::Ok(())
15585    }
15586
15587    // Compute sizes of nested messages
15588    #[allow(unused_variables)]
15589    fn compute_size(&self) -> u64 {
15590        let mut my_size = 0;
15591        if let Some(v) = self.token.as_ref() {
15592            my_size += ::protobuf::rt::string_size(1, &v);
15593        }
15594        if let Some(v) = self.category.as_ref() {
15595            my_size += ::protobuf::rt::string_size(2, &v);
15596        }
15597        if let Some(v) = self.parent {
15598            my_size += ::protobuf::rt::int32_size(3, v);
15599        }
15600        my_size += 2 * self.flags.len() as u64;
15601        for value in &self.layers {
15602            let len = value.compute_size();
15603            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
15604        };
15605        if let Some(v) = self.relsize {
15606            my_size += ::protobuf::rt::int32_size(6, v);
15607        }
15608        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
15609        self.special_fields.cached_size().set(my_size as u32);
15610        my_size
15611    }
15612
15613    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
15614        if let Some(v) = self.token.as_ref() {
15615            os.write_string(1, v)?;
15616        }
15617        if let Some(v) = self.category.as_ref() {
15618            os.write_string(2, v)?;
15619        }
15620        if let Some(v) = self.parent {
15621            os.write_int32(3, v)?;
15622        }
15623        for v in &self.flags {
15624            os.write_bool(4, *v)?;
15625        };
15626        for v in &self.layers {
15627            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
15628        };
15629        if let Some(v) = self.relsize {
15630            os.write_int32(6, v)?;
15631        }
15632        os.write_unknown_fields(self.special_fields.unknown_fields())?;
15633        ::std::result::Result::Ok(())
15634    }
15635
15636    fn special_fields(&self) -> &::protobuf::SpecialFields {
15637        &self.special_fields
15638    }
15639
15640    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
15641        &mut self.special_fields
15642    }
15643
15644    fn new() -> BodyPartRaw {
15645        BodyPartRaw::new()
15646    }
15647
15648    fn clear(&mut self) {
15649        self.token = ::std::option::Option::None;
15650        self.category = ::std::option::Option::None;
15651        self.parent = ::std::option::Option::None;
15652        self.flags.clear();
15653        self.layers.clear();
15654        self.relsize = ::std::option::Option::None;
15655        self.special_fields.clear();
15656    }
15657
15658    fn default_instance() -> &'static BodyPartRaw {
15659        static instance: BodyPartRaw = BodyPartRaw {
15660            token: ::std::option::Option::None,
15661            category: ::std::option::Option::None,
15662            parent: ::std::option::Option::None,
15663            flags: ::std::vec::Vec::new(),
15664            layers: ::std::vec::Vec::new(),
15665            relsize: ::std::option::Option::None,
15666            special_fields: ::protobuf::SpecialFields::new(),
15667        };
15668        &instance
15669    }
15670}
15671
15672impl ::protobuf::MessageFull for BodyPartRaw {
15673    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
15674        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
15675        descriptor.get(|| file_descriptor().message_by_package_relative_name("BodyPartRaw").unwrap()).clone()
15676    }
15677}
15678
15679impl ::std::fmt::Display for BodyPartRaw {
15680    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15681        ::protobuf::text_format::fmt(self, f)
15682    }
15683}
15684
15685impl ::protobuf::reflect::ProtobufValue for BodyPartRaw {
15686    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
15687}
15688
15689// @@protoc_insertion_point(message:RemoteFortressReader.BpAppearanceModifier)
15690#[derive(PartialEq,Clone,Default,Debug)]
15691pub struct BpAppearanceModifier {
15692    // message fields
15693    // @@protoc_insertion_point(field:RemoteFortressReader.BpAppearanceModifier.type)
15694    pub type_: ::std::option::Option<::std::string::String>,
15695    // @@protoc_insertion_point(field:RemoteFortressReader.BpAppearanceModifier.mod_min)
15696    pub mod_min: ::std::option::Option<i32>,
15697    // @@protoc_insertion_point(field:RemoteFortressReader.BpAppearanceModifier.mod_max)
15698    pub mod_max: ::std::option::Option<i32>,
15699    // special fields
15700    // @@protoc_insertion_point(special_field:RemoteFortressReader.BpAppearanceModifier.special_fields)
15701    pub special_fields: ::protobuf::SpecialFields,
15702}
15703
15704impl<'a> ::std::default::Default for &'a BpAppearanceModifier {
15705    fn default() -> &'a BpAppearanceModifier {
15706        <BpAppearanceModifier as ::protobuf::Message>::default_instance()
15707    }
15708}
15709
15710impl BpAppearanceModifier {
15711    pub fn new() -> BpAppearanceModifier {
15712        ::std::default::Default::default()
15713    }
15714
15715    // optional string type = 1;
15716
15717    pub fn type_(&self) -> &str {
15718        match self.type_.as_ref() {
15719            Some(v) => v,
15720            None => "",
15721        }
15722    }
15723
15724    pub fn clear_type_(&mut self) {
15725        self.type_ = ::std::option::Option::None;
15726    }
15727
15728    pub fn has_type(&self) -> bool {
15729        self.type_.is_some()
15730    }
15731
15732    // Param is passed by value, moved
15733    pub fn set_type(&mut self, v: ::std::string::String) {
15734        self.type_ = ::std::option::Option::Some(v);
15735    }
15736
15737    // Mutable pointer to the field.
15738    // If field is not initialized, it is initialized with default value first.
15739    pub fn mut_type(&mut self) -> &mut ::std::string::String {
15740        if self.type_.is_none() {
15741            self.type_ = ::std::option::Option::Some(::std::string::String::new());
15742        }
15743        self.type_.as_mut().unwrap()
15744    }
15745
15746    // Take field
15747    pub fn take_type_(&mut self) -> ::std::string::String {
15748        self.type_.take().unwrap_or_else(|| ::std::string::String::new())
15749    }
15750
15751    // optional int32 mod_min = 2;
15752
15753    pub fn mod_min(&self) -> i32 {
15754        self.mod_min.unwrap_or(0)
15755    }
15756
15757    pub fn clear_mod_min(&mut self) {
15758        self.mod_min = ::std::option::Option::None;
15759    }
15760
15761    pub fn has_mod_min(&self) -> bool {
15762        self.mod_min.is_some()
15763    }
15764
15765    // Param is passed by value, moved
15766    pub fn set_mod_min(&mut self, v: i32) {
15767        self.mod_min = ::std::option::Option::Some(v);
15768    }
15769
15770    // optional int32 mod_max = 3;
15771
15772    pub fn mod_max(&self) -> i32 {
15773        self.mod_max.unwrap_or(0)
15774    }
15775
15776    pub fn clear_mod_max(&mut self) {
15777        self.mod_max = ::std::option::Option::None;
15778    }
15779
15780    pub fn has_mod_max(&self) -> bool {
15781        self.mod_max.is_some()
15782    }
15783
15784    // Param is passed by value, moved
15785    pub fn set_mod_max(&mut self, v: i32) {
15786        self.mod_max = ::std::option::Option::Some(v);
15787    }
15788
15789    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
15790        let mut fields = ::std::vec::Vec::with_capacity(3);
15791        let mut oneofs = ::std::vec::Vec::with_capacity(0);
15792        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15793            "type",
15794            |m: &BpAppearanceModifier| { &m.type_ },
15795            |m: &mut BpAppearanceModifier| { &mut m.type_ },
15796        ));
15797        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15798            "mod_min",
15799            |m: &BpAppearanceModifier| { &m.mod_min },
15800            |m: &mut BpAppearanceModifier| { &mut m.mod_min },
15801        ));
15802        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15803            "mod_max",
15804            |m: &BpAppearanceModifier| { &m.mod_max },
15805            |m: &mut BpAppearanceModifier| { &mut m.mod_max },
15806        ));
15807        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BpAppearanceModifier>(
15808            "BpAppearanceModifier",
15809            fields,
15810            oneofs,
15811        )
15812    }
15813}
15814
15815impl ::protobuf::Message for BpAppearanceModifier {
15816    const NAME: &'static str = "BpAppearanceModifier";
15817
15818    fn is_initialized(&self) -> bool {
15819        true
15820    }
15821
15822    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
15823        while let Some(tag) = is.read_raw_tag_or_eof()? {
15824            match tag {
15825                10 => {
15826                    self.type_ = ::std::option::Option::Some(is.read_string()?);
15827                },
15828                16 => {
15829                    self.mod_min = ::std::option::Option::Some(is.read_int32()?);
15830                },
15831                24 => {
15832                    self.mod_max = ::std::option::Option::Some(is.read_int32()?);
15833                },
15834                tag => {
15835                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
15836                },
15837            };
15838        }
15839        ::std::result::Result::Ok(())
15840    }
15841
15842    // Compute sizes of nested messages
15843    #[allow(unused_variables)]
15844    fn compute_size(&self) -> u64 {
15845        let mut my_size = 0;
15846        if let Some(v) = self.type_.as_ref() {
15847            my_size += ::protobuf::rt::string_size(1, &v);
15848        }
15849        if let Some(v) = self.mod_min {
15850            my_size += ::protobuf::rt::int32_size(2, v);
15851        }
15852        if let Some(v) = self.mod_max {
15853            my_size += ::protobuf::rt::int32_size(3, v);
15854        }
15855        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
15856        self.special_fields.cached_size().set(my_size as u32);
15857        my_size
15858    }
15859
15860    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
15861        if let Some(v) = self.type_.as_ref() {
15862            os.write_string(1, v)?;
15863        }
15864        if let Some(v) = self.mod_min {
15865            os.write_int32(2, v)?;
15866        }
15867        if let Some(v) = self.mod_max {
15868            os.write_int32(3, v)?;
15869        }
15870        os.write_unknown_fields(self.special_fields.unknown_fields())?;
15871        ::std::result::Result::Ok(())
15872    }
15873
15874    fn special_fields(&self) -> &::protobuf::SpecialFields {
15875        &self.special_fields
15876    }
15877
15878    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
15879        &mut self.special_fields
15880    }
15881
15882    fn new() -> BpAppearanceModifier {
15883        BpAppearanceModifier::new()
15884    }
15885
15886    fn clear(&mut self) {
15887        self.type_ = ::std::option::Option::None;
15888        self.mod_min = ::std::option::Option::None;
15889        self.mod_max = ::std::option::Option::None;
15890        self.special_fields.clear();
15891    }
15892
15893    fn default_instance() -> &'static BpAppearanceModifier {
15894        static instance: BpAppearanceModifier = BpAppearanceModifier {
15895            type_: ::std::option::Option::None,
15896            mod_min: ::std::option::Option::None,
15897            mod_max: ::std::option::Option::None,
15898            special_fields: ::protobuf::SpecialFields::new(),
15899        };
15900        &instance
15901    }
15902}
15903
15904impl ::protobuf::MessageFull for BpAppearanceModifier {
15905    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
15906        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
15907        descriptor.get(|| file_descriptor().message_by_package_relative_name("BpAppearanceModifier").unwrap()).clone()
15908    }
15909}
15910
15911impl ::std::fmt::Display for BpAppearanceModifier {
15912    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15913        ::protobuf::text_format::fmt(self, f)
15914    }
15915}
15916
15917impl ::protobuf::reflect::ProtobufValue for BpAppearanceModifier {
15918    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
15919}
15920
15921// @@protoc_insertion_point(message:RemoteFortressReader.TissueRaw)
15922#[derive(PartialEq,Clone,Default,Debug)]
15923pub struct TissueRaw {
15924    // message fields
15925    // @@protoc_insertion_point(field:RemoteFortressReader.TissueRaw.id)
15926    pub id: ::std::option::Option<::std::string::String>,
15927    // @@protoc_insertion_point(field:RemoteFortressReader.TissueRaw.name)
15928    pub name: ::std::option::Option<::std::string::String>,
15929    // @@protoc_insertion_point(field:RemoteFortressReader.TissueRaw.material)
15930    pub material: ::protobuf::MessageField<MatPair>,
15931    // @@protoc_insertion_point(field:RemoteFortressReader.TissueRaw.subordinate_to_tissue)
15932    pub subordinate_to_tissue: ::std::option::Option<::std::string::String>,
15933    // special fields
15934    // @@protoc_insertion_point(special_field:RemoteFortressReader.TissueRaw.special_fields)
15935    pub special_fields: ::protobuf::SpecialFields,
15936}
15937
15938impl<'a> ::std::default::Default for &'a TissueRaw {
15939    fn default() -> &'a TissueRaw {
15940        <TissueRaw as ::protobuf::Message>::default_instance()
15941    }
15942}
15943
15944impl TissueRaw {
15945    pub fn new() -> TissueRaw {
15946        ::std::default::Default::default()
15947    }
15948
15949    // optional string id = 1;
15950
15951    pub fn id(&self) -> &str {
15952        match self.id.as_ref() {
15953            Some(v) => v,
15954            None => "",
15955        }
15956    }
15957
15958    pub fn clear_id(&mut self) {
15959        self.id = ::std::option::Option::None;
15960    }
15961
15962    pub fn has_id(&self) -> bool {
15963        self.id.is_some()
15964    }
15965
15966    // Param is passed by value, moved
15967    pub fn set_id(&mut self, v: ::std::string::String) {
15968        self.id = ::std::option::Option::Some(v);
15969    }
15970
15971    // Mutable pointer to the field.
15972    // If field is not initialized, it is initialized with default value first.
15973    pub fn mut_id(&mut self) -> &mut ::std::string::String {
15974        if self.id.is_none() {
15975            self.id = ::std::option::Option::Some(::std::string::String::new());
15976        }
15977        self.id.as_mut().unwrap()
15978    }
15979
15980    // Take field
15981    pub fn take_id(&mut self) -> ::std::string::String {
15982        self.id.take().unwrap_or_else(|| ::std::string::String::new())
15983    }
15984
15985    // optional string name = 2;
15986
15987    pub fn name(&self) -> &str {
15988        match self.name.as_ref() {
15989            Some(v) => v,
15990            None => "",
15991        }
15992    }
15993
15994    pub fn clear_name(&mut self) {
15995        self.name = ::std::option::Option::None;
15996    }
15997
15998    pub fn has_name(&self) -> bool {
15999        self.name.is_some()
16000    }
16001
16002    // Param is passed by value, moved
16003    pub fn set_name(&mut self, v: ::std::string::String) {
16004        self.name = ::std::option::Option::Some(v);
16005    }
16006
16007    // Mutable pointer to the field.
16008    // If field is not initialized, it is initialized with default value first.
16009    pub fn mut_name(&mut self) -> &mut ::std::string::String {
16010        if self.name.is_none() {
16011            self.name = ::std::option::Option::Some(::std::string::String::new());
16012        }
16013        self.name.as_mut().unwrap()
16014    }
16015
16016    // Take field
16017    pub fn take_name(&mut self) -> ::std::string::String {
16018        self.name.take().unwrap_or_else(|| ::std::string::String::new())
16019    }
16020
16021    // optional string subordinate_to_tissue = 4;
16022
16023    pub fn subordinate_to_tissue(&self) -> &str {
16024        match self.subordinate_to_tissue.as_ref() {
16025            Some(v) => v,
16026            None => "",
16027        }
16028    }
16029
16030    pub fn clear_subordinate_to_tissue(&mut self) {
16031        self.subordinate_to_tissue = ::std::option::Option::None;
16032    }
16033
16034    pub fn has_subordinate_to_tissue(&self) -> bool {
16035        self.subordinate_to_tissue.is_some()
16036    }
16037
16038    // Param is passed by value, moved
16039    pub fn set_subordinate_to_tissue(&mut self, v: ::std::string::String) {
16040        self.subordinate_to_tissue = ::std::option::Option::Some(v);
16041    }
16042
16043    // Mutable pointer to the field.
16044    // If field is not initialized, it is initialized with default value first.
16045    pub fn mut_subordinate_to_tissue(&mut self) -> &mut ::std::string::String {
16046        if self.subordinate_to_tissue.is_none() {
16047            self.subordinate_to_tissue = ::std::option::Option::Some(::std::string::String::new());
16048        }
16049        self.subordinate_to_tissue.as_mut().unwrap()
16050    }
16051
16052    // Take field
16053    pub fn take_subordinate_to_tissue(&mut self) -> ::std::string::String {
16054        self.subordinate_to_tissue.take().unwrap_or_else(|| ::std::string::String::new())
16055    }
16056
16057    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
16058        let mut fields = ::std::vec::Vec::with_capacity(4);
16059        let mut oneofs = ::std::vec::Vec::with_capacity(0);
16060        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16061            "id",
16062            |m: &TissueRaw| { &m.id },
16063            |m: &mut TissueRaw| { &mut m.id },
16064        ));
16065        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16066            "name",
16067            |m: &TissueRaw| { &m.name },
16068            |m: &mut TissueRaw| { &mut m.name },
16069        ));
16070        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
16071            "material",
16072            |m: &TissueRaw| { &m.material },
16073            |m: &mut TissueRaw| { &mut m.material },
16074        ));
16075        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16076            "subordinate_to_tissue",
16077            |m: &TissueRaw| { &m.subordinate_to_tissue },
16078            |m: &mut TissueRaw| { &mut m.subordinate_to_tissue },
16079        ));
16080        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<TissueRaw>(
16081            "TissueRaw",
16082            fields,
16083            oneofs,
16084        )
16085    }
16086}
16087
16088impl ::protobuf::Message for TissueRaw {
16089    const NAME: &'static str = "TissueRaw";
16090
16091    fn is_initialized(&self) -> bool {
16092        for v in &self.material {
16093            if !v.is_initialized() {
16094                return false;
16095            }
16096        };
16097        true
16098    }
16099
16100    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
16101        while let Some(tag) = is.read_raw_tag_or_eof()? {
16102            match tag {
16103                10 => {
16104                    self.id = ::std::option::Option::Some(is.read_string()?);
16105                },
16106                18 => {
16107                    self.name = ::std::option::Option::Some(is.read_string()?);
16108                },
16109                26 => {
16110                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
16111                },
16112                34 => {
16113                    self.subordinate_to_tissue = ::std::option::Option::Some(is.read_string()?);
16114                },
16115                tag => {
16116                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
16117                },
16118            };
16119        }
16120        ::std::result::Result::Ok(())
16121    }
16122
16123    // Compute sizes of nested messages
16124    #[allow(unused_variables)]
16125    fn compute_size(&self) -> u64 {
16126        let mut my_size = 0;
16127        if let Some(v) = self.id.as_ref() {
16128            my_size += ::protobuf::rt::string_size(1, &v);
16129        }
16130        if let Some(v) = self.name.as_ref() {
16131            my_size += ::protobuf::rt::string_size(2, &v);
16132        }
16133        if let Some(v) = self.material.as_ref() {
16134            let len = v.compute_size();
16135            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
16136        }
16137        if let Some(v) = self.subordinate_to_tissue.as_ref() {
16138            my_size += ::protobuf::rt::string_size(4, &v);
16139        }
16140        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
16141        self.special_fields.cached_size().set(my_size as u32);
16142        my_size
16143    }
16144
16145    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
16146        if let Some(v) = self.id.as_ref() {
16147            os.write_string(1, v)?;
16148        }
16149        if let Some(v) = self.name.as_ref() {
16150            os.write_string(2, v)?;
16151        }
16152        if let Some(v) = self.material.as_ref() {
16153            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
16154        }
16155        if let Some(v) = self.subordinate_to_tissue.as_ref() {
16156            os.write_string(4, v)?;
16157        }
16158        os.write_unknown_fields(self.special_fields.unknown_fields())?;
16159        ::std::result::Result::Ok(())
16160    }
16161
16162    fn special_fields(&self) -> &::protobuf::SpecialFields {
16163        &self.special_fields
16164    }
16165
16166    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
16167        &mut self.special_fields
16168    }
16169
16170    fn new() -> TissueRaw {
16171        TissueRaw::new()
16172    }
16173
16174    fn clear(&mut self) {
16175        self.id = ::std::option::Option::None;
16176        self.name = ::std::option::Option::None;
16177        self.material.clear();
16178        self.subordinate_to_tissue = ::std::option::Option::None;
16179        self.special_fields.clear();
16180    }
16181
16182    fn default_instance() -> &'static TissueRaw {
16183        static instance: TissueRaw = TissueRaw {
16184            id: ::std::option::Option::None,
16185            name: ::std::option::Option::None,
16186            material: ::protobuf::MessageField::none(),
16187            subordinate_to_tissue: ::std::option::Option::None,
16188            special_fields: ::protobuf::SpecialFields::new(),
16189        };
16190        &instance
16191    }
16192}
16193
16194impl ::protobuf::MessageFull for TissueRaw {
16195    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
16196        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
16197        descriptor.get(|| file_descriptor().message_by_package_relative_name("TissueRaw").unwrap()).clone()
16198    }
16199}
16200
16201impl ::std::fmt::Display for TissueRaw {
16202    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16203        ::protobuf::text_format::fmt(self, f)
16204    }
16205}
16206
16207impl ::protobuf::reflect::ProtobufValue for TissueRaw {
16208    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
16209}
16210
16211// @@protoc_insertion_point(message:RemoteFortressReader.CasteRaw)
16212#[derive(PartialEq,Clone,Default,Debug)]
16213pub struct CasteRaw {
16214    // message fields
16215    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.index)
16216    pub index: ::std::option::Option<i32>,
16217    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.caste_id)
16218    pub caste_id: ::std::option::Option<::std::string::String>,
16219    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.caste_name)
16220    pub caste_name: ::std::vec::Vec<::std::string::String>,
16221    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.baby_name)
16222    pub baby_name: ::std::vec::Vec<::std::string::String>,
16223    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.child_name)
16224    pub child_name: ::std::vec::Vec<::std::string::String>,
16225    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.gender)
16226    pub gender: ::std::option::Option<i32>,
16227    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.body_parts)
16228    pub body_parts: ::std::vec::Vec<BodyPartRaw>,
16229    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.total_relsize)
16230    pub total_relsize: ::std::option::Option<i32>,
16231    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.modifiers)
16232    pub modifiers: ::std::vec::Vec<BpAppearanceModifier>,
16233    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.modifier_idx)
16234    pub modifier_idx: ::std::vec::Vec<i32>,
16235    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.part_idx)
16236    pub part_idx: ::std::vec::Vec<i32>,
16237    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.layer_idx)
16238    pub layer_idx: ::std::vec::Vec<i32>,
16239    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.body_appearance_modifiers)
16240    pub body_appearance_modifiers: ::std::vec::Vec<BpAppearanceModifier>,
16241    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.color_modifiers)
16242    pub color_modifiers: ::std::vec::Vec<ColorModifierRaw>,
16243    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.description)
16244    pub description: ::std::option::Option<::std::string::String>,
16245    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.adult_size)
16246    pub adult_size: ::std::option::Option<i32>,
16247    // special fields
16248    // @@protoc_insertion_point(special_field:RemoteFortressReader.CasteRaw.special_fields)
16249    pub special_fields: ::protobuf::SpecialFields,
16250}
16251
16252impl<'a> ::std::default::Default for &'a CasteRaw {
16253    fn default() -> &'a CasteRaw {
16254        <CasteRaw as ::protobuf::Message>::default_instance()
16255    }
16256}
16257
16258impl CasteRaw {
16259    pub fn new() -> CasteRaw {
16260        ::std::default::Default::default()
16261    }
16262
16263    // optional int32 index = 1;
16264
16265    pub fn index(&self) -> i32 {
16266        self.index.unwrap_or(0)
16267    }
16268
16269    pub fn clear_index(&mut self) {
16270        self.index = ::std::option::Option::None;
16271    }
16272
16273    pub fn has_index(&self) -> bool {
16274        self.index.is_some()
16275    }
16276
16277    // Param is passed by value, moved
16278    pub fn set_index(&mut self, v: i32) {
16279        self.index = ::std::option::Option::Some(v);
16280    }
16281
16282    // optional string caste_id = 2;
16283
16284    pub fn caste_id(&self) -> &str {
16285        match self.caste_id.as_ref() {
16286            Some(v) => v,
16287            None => "",
16288        }
16289    }
16290
16291    pub fn clear_caste_id(&mut self) {
16292        self.caste_id = ::std::option::Option::None;
16293    }
16294
16295    pub fn has_caste_id(&self) -> bool {
16296        self.caste_id.is_some()
16297    }
16298
16299    // Param is passed by value, moved
16300    pub fn set_caste_id(&mut self, v: ::std::string::String) {
16301        self.caste_id = ::std::option::Option::Some(v);
16302    }
16303
16304    // Mutable pointer to the field.
16305    // If field is not initialized, it is initialized with default value first.
16306    pub fn mut_caste_id(&mut self) -> &mut ::std::string::String {
16307        if self.caste_id.is_none() {
16308            self.caste_id = ::std::option::Option::Some(::std::string::String::new());
16309        }
16310        self.caste_id.as_mut().unwrap()
16311    }
16312
16313    // Take field
16314    pub fn take_caste_id(&mut self) -> ::std::string::String {
16315        self.caste_id.take().unwrap_or_else(|| ::std::string::String::new())
16316    }
16317
16318    // optional int32 gender = 6;
16319
16320    pub fn gender(&self) -> i32 {
16321        self.gender.unwrap_or(0)
16322    }
16323
16324    pub fn clear_gender(&mut self) {
16325        self.gender = ::std::option::Option::None;
16326    }
16327
16328    pub fn has_gender(&self) -> bool {
16329        self.gender.is_some()
16330    }
16331
16332    // Param is passed by value, moved
16333    pub fn set_gender(&mut self, v: i32) {
16334        self.gender = ::std::option::Option::Some(v);
16335    }
16336
16337    // optional int32 total_relsize = 8;
16338
16339    pub fn total_relsize(&self) -> i32 {
16340        self.total_relsize.unwrap_or(0)
16341    }
16342
16343    pub fn clear_total_relsize(&mut self) {
16344        self.total_relsize = ::std::option::Option::None;
16345    }
16346
16347    pub fn has_total_relsize(&self) -> bool {
16348        self.total_relsize.is_some()
16349    }
16350
16351    // Param is passed by value, moved
16352    pub fn set_total_relsize(&mut self, v: i32) {
16353        self.total_relsize = ::std::option::Option::Some(v);
16354    }
16355
16356    // optional string description = 15;
16357
16358    pub fn description(&self) -> &str {
16359        match self.description.as_ref() {
16360            Some(v) => v,
16361            None => "",
16362        }
16363    }
16364
16365    pub fn clear_description(&mut self) {
16366        self.description = ::std::option::Option::None;
16367    }
16368
16369    pub fn has_description(&self) -> bool {
16370        self.description.is_some()
16371    }
16372
16373    // Param is passed by value, moved
16374    pub fn set_description(&mut self, v: ::std::string::String) {
16375        self.description = ::std::option::Option::Some(v);
16376    }
16377
16378    // Mutable pointer to the field.
16379    // If field is not initialized, it is initialized with default value first.
16380    pub fn mut_description(&mut self) -> &mut ::std::string::String {
16381        if self.description.is_none() {
16382            self.description = ::std::option::Option::Some(::std::string::String::new());
16383        }
16384        self.description.as_mut().unwrap()
16385    }
16386
16387    // Take field
16388    pub fn take_description(&mut self) -> ::std::string::String {
16389        self.description.take().unwrap_or_else(|| ::std::string::String::new())
16390    }
16391
16392    // optional int32 adult_size = 16;
16393
16394    pub fn adult_size(&self) -> i32 {
16395        self.adult_size.unwrap_or(0)
16396    }
16397
16398    pub fn clear_adult_size(&mut self) {
16399        self.adult_size = ::std::option::Option::None;
16400    }
16401
16402    pub fn has_adult_size(&self) -> bool {
16403        self.adult_size.is_some()
16404    }
16405
16406    // Param is passed by value, moved
16407    pub fn set_adult_size(&mut self, v: i32) {
16408        self.adult_size = ::std::option::Option::Some(v);
16409    }
16410
16411    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
16412        let mut fields = ::std::vec::Vec::with_capacity(16);
16413        let mut oneofs = ::std::vec::Vec::with_capacity(0);
16414        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16415            "index",
16416            |m: &CasteRaw| { &m.index },
16417            |m: &mut CasteRaw| { &mut m.index },
16418        ));
16419        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16420            "caste_id",
16421            |m: &CasteRaw| { &m.caste_id },
16422            |m: &mut CasteRaw| { &mut m.caste_id },
16423        ));
16424        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16425            "caste_name",
16426            |m: &CasteRaw| { &m.caste_name },
16427            |m: &mut CasteRaw| { &mut m.caste_name },
16428        ));
16429        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16430            "baby_name",
16431            |m: &CasteRaw| { &m.baby_name },
16432            |m: &mut CasteRaw| { &mut m.baby_name },
16433        ));
16434        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16435            "child_name",
16436            |m: &CasteRaw| { &m.child_name },
16437            |m: &mut CasteRaw| { &mut m.child_name },
16438        ));
16439        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16440            "gender",
16441            |m: &CasteRaw| { &m.gender },
16442            |m: &mut CasteRaw| { &mut m.gender },
16443        ));
16444        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16445            "body_parts",
16446            |m: &CasteRaw| { &m.body_parts },
16447            |m: &mut CasteRaw| { &mut m.body_parts },
16448        ));
16449        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16450            "total_relsize",
16451            |m: &CasteRaw| { &m.total_relsize },
16452            |m: &mut CasteRaw| { &mut m.total_relsize },
16453        ));
16454        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16455            "modifiers",
16456            |m: &CasteRaw| { &m.modifiers },
16457            |m: &mut CasteRaw| { &mut m.modifiers },
16458        ));
16459        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16460            "modifier_idx",
16461            |m: &CasteRaw| { &m.modifier_idx },
16462            |m: &mut CasteRaw| { &mut m.modifier_idx },
16463        ));
16464        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16465            "part_idx",
16466            |m: &CasteRaw| { &m.part_idx },
16467            |m: &mut CasteRaw| { &mut m.part_idx },
16468        ));
16469        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16470            "layer_idx",
16471            |m: &CasteRaw| { &m.layer_idx },
16472            |m: &mut CasteRaw| { &mut m.layer_idx },
16473        ));
16474        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16475            "body_appearance_modifiers",
16476            |m: &CasteRaw| { &m.body_appearance_modifiers },
16477            |m: &mut CasteRaw| { &mut m.body_appearance_modifiers },
16478        ));
16479        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16480            "color_modifiers",
16481            |m: &CasteRaw| { &m.color_modifiers },
16482            |m: &mut CasteRaw| { &mut m.color_modifiers },
16483        ));
16484        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16485            "description",
16486            |m: &CasteRaw| { &m.description },
16487            |m: &mut CasteRaw| { &mut m.description },
16488        ));
16489        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16490            "adult_size",
16491            |m: &CasteRaw| { &m.adult_size },
16492            |m: &mut CasteRaw| { &mut m.adult_size },
16493        ));
16494        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<CasteRaw>(
16495            "CasteRaw",
16496            fields,
16497            oneofs,
16498        )
16499    }
16500}
16501
16502impl ::protobuf::Message for CasteRaw {
16503    const NAME: &'static str = "CasteRaw";
16504
16505    fn is_initialized(&self) -> bool {
16506        for v in &self.body_parts {
16507            if !v.is_initialized() {
16508                return false;
16509            }
16510        };
16511        for v in &self.modifiers {
16512            if !v.is_initialized() {
16513                return false;
16514            }
16515        };
16516        for v in &self.body_appearance_modifiers {
16517            if !v.is_initialized() {
16518                return false;
16519            }
16520        };
16521        for v in &self.color_modifiers {
16522            if !v.is_initialized() {
16523                return false;
16524            }
16525        };
16526        true
16527    }
16528
16529    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
16530        while let Some(tag) = is.read_raw_tag_or_eof()? {
16531            match tag {
16532                8 => {
16533                    self.index = ::std::option::Option::Some(is.read_int32()?);
16534                },
16535                18 => {
16536                    self.caste_id = ::std::option::Option::Some(is.read_string()?);
16537                },
16538                26 => {
16539                    self.caste_name.push(is.read_string()?);
16540                },
16541                34 => {
16542                    self.baby_name.push(is.read_string()?);
16543                },
16544                42 => {
16545                    self.child_name.push(is.read_string()?);
16546                },
16547                48 => {
16548                    self.gender = ::std::option::Option::Some(is.read_int32()?);
16549                },
16550                58 => {
16551                    self.body_parts.push(is.read_message()?);
16552                },
16553                64 => {
16554                    self.total_relsize = ::std::option::Option::Some(is.read_int32()?);
16555                },
16556                74 => {
16557                    self.modifiers.push(is.read_message()?);
16558                },
16559                82 => {
16560                    is.read_repeated_packed_int32_into(&mut self.modifier_idx)?;
16561                },
16562                80 => {
16563                    self.modifier_idx.push(is.read_int32()?);
16564                },
16565                90 => {
16566                    is.read_repeated_packed_int32_into(&mut self.part_idx)?;
16567                },
16568                88 => {
16569                    self.part_idx.push(is.read_int32()?);
16570                },
16571                98 => {
16572                    is.read_repeated_packed_int32_into(&mut self.layer_idx)?;
16573                },
16574                96 => {
16575                    self.layer_idx.push(is.read_int32()?);
16576                },
16577                106 => {
16578                    self.body_appearance_modifiers.push(is.read_message()?);
16579                },
16580                114 => {
16581                    self.color_modifiers.push(is.read_message()?);
16582                },
16583                122 => {
16584                    self.description = ::std::option::Option::Some(is.read_string()?);
16585                },
16586                128 => {
16587                    self.adult_size = ::std::option::Option::Some(is.read_int32()?);
16588                },
16589                tag => {
16590                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
16591                },
16592            };
16593        }
16594        ::std::result::Result::Ok(())
16595    }
16596
16597    // Compute sizes of nested messages
16598    #[allow(unused_variables)]
16599    fn compute_size(&self) -> u64 {
16600        let mut my_size = 0;
16601        if let Some(v) = self.index {
16602            my_size += ::protobuf::rt::int32_size(1, v);
16603        }
16604        if let Some(v) = self.caste_id.as_ref() {
16605            my_size += ::protobuf::rt::string_size(2, &v);
16606        }
16607        for value in &self.caste_name {
16608            my_size += ::protobuf::rt::string_size(3, &value);
16609        };
16610        for value in &self.baby_name {
16611            my_size += ::protobuf::rt::string_size(4, &value);
16612        };
16613        for value in &self.child_name {
16614            my_size += ::protobuf::rt::string_size(5, &value);
16615        };
16616        if let Some(v) = self.gender {
16617            my_size += ::protobuf::rt::int32_size(6, v);
16618        }
16619        for value in &self.body_parts {
16620            let len = value.compute_size();
16621            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
16622        };
16623        if let Some(v) = self.total_relsize {
16624            my_size += ::protobuf::rt::int32_size(8, v);
16625        }
16626        for value in &self.modifiers {
16627            let len = value.compute_size();
16628            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
16629        };
16630        for value in &self.modifier_idx {
16631            my_size += ::protobuf::rt::int32_size(10, *value);
16632        };
16633        for value in &self.part_idx {
16634            my_size += ::protobuf::rt::int32_size(11, *value);
16635        };
16636        for value in &self.layer_idx {
16637            my_size += ::protobuf::rt::int32_size(12, *value);
16638        };
16639        for value in &self.body_appearance_modifiers {
16640            let len = value.compute_size();
16641            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
16642        };
16643        for value in &self.color_modifiers {
16644            let len = value.compute_size();
16645            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
16646        };
16647        if let Some(v) = self.description.as_ref() {
16648            my_size += ::protobuf::rt::string_size(15, &v);
16649        }
16650        if let Some(v) = self.adult_size {
16651            my_size += ::protobuf::rt::int32_size(16, v);
16652        }
16653        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
16654        self.special_fields.cached_size().set(my_size as u32);
16655        my_size
16656    }
16657
16658    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
16659        if let Some(v) = self.index {
16660            os.write_int32(1, v)?;
16661        }
16662        if let Some(v) = self.caste_id.as_ref() {
16663            os.write_string(2, v)?;
16664        }
16665        for v in &self.caste_name {
16666            os.write_string(3, &v)?;
16667        };
16668        for v in &self.baby_name {
16669            os.write_string(4, &v)?;
16670        };
16671        for v in &self.child_name {
16672            os.write_string(5, &v)?;
16673        };
16674        if let Some(v) = self.gender {
16675            os.write_int32(6, v)?;
16676        }
16677        for v in &self.body_parts {
16678            ::protobuf::rt::write_message_field_with_cached_size(7, v, os)?;
16679        };
16680        if let Some(v) = self.total_relsize {
16681            os.write_int32(8, v)?;
16682        }
16683        for v in &self.modifiers {
16684            ::protobuf::rt::write_message_field_with_cached_size(9, v, os)?;
16685        };
16686        for v in &self.modifier_idx {
16687            os.write_int32(10, *v)?;
16688        };
16689        for v in &self.part_idx {
16690            os.write_int32(11, *v)?;
16691        };
16692        for v in &self.layer_idx {
16693            os.write_int32(12, *v)?;
16694        };
16695        for v in &self.body_appearance_modifiers {
16696            ::protobuf::rt::write_message_field_with_cached_size(13, v, os)?;
16697        };
16698        for v in &self.color_modifiers {
16699            ::protobuf::rt::write_message_field_with_cached_size(14, v, os)?;
16700        };
16701        if let Some(v) = self.description.as_ref() {
16702            os.write_string(15, v)?;
16703        }
16704        if let Some(v) = self.adult_size {
16705            os.write_int32(16, v)?;
16706        }
16707        os.write_unknown_fields(self.special_fields.unknown_fields())?;
16708        ::std::result::Result::Ok(())
16709    }
16710
16711    fn special_fields(&self) -> &::protobuf::SpecialFields {
16712        &self.special_fields
16713    }
16714
16715    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
16716        &mut self.special_fields
16717    }
16718
16719    fn new() -> CasteRaw {
16720        CasteRaw::new()
16721    }
16722
16723    fn clear(&mut self) {
16724        self.index = ::std::option::Option::None;
16725        self.caste_id = ::std::option::Option::None;
16726        self.caste_name.clear();
16727        self.baby_name.clear();
16728        self.child_name.clear();
16729        self.gender = ::std::option::Option::None;
16730        self.body_parts.clear();
16731        self.total_relsize = ::std::option::Option::None;
16732        self.modifiers.clear();
16733        self.modifier_idx.clear();
16734        self.part_idx.clear();
16735        self.layer_idx.clear();
16736        self.body_appearance_modifiers.clear();
16737        self.color_modifiers.clear();
16738        self.description = ::std::option::Option::None;
16739        self.adult_size = ::std::option::Option::None;
16740        self.special_fields.clear();
16741    }
16742
16743    fn default_instance() -> &'static CasteRaw {
16744        static instance: CasteRaw = CasteRaw {
16745            index: ::std::option::Option::None,
16746            caste_id: ::std::option::Option::None,
16747            caste_name: ::std::vec::Vec::new(),
16748            baby_name: ::std::vec::Vec::new(),
16749            child_name: ::std::vec::Vec::new(),
16750            gender: ::std::option::Option::None,
16751            body_parts: ::std::vec::Vec::new(),
16752            total_relsize: ::std::option::Option::None,
16753            modifiers: ::std::vec::Vec::new(),
16754            modifier_idx: ::std::vec::Vec::new(),
16755            part_idx: ::std::vec::Vec::new(),
16756            layer_idx: ::std::vec::Vec::new(),
16757            body_appearance_modifiers: ::std::vec::Vec::new(),
16758            color_modifiers: ::std::vec::Vec::new(),
16759            description: ::std::option::Option::None,
16760            adult_size: ::std::option::Option::None,
16761            special_fields: ::protobuf::SpecialFields::new(),
16762        };
16763        &instance
16764    }
16765}
16766
16767impl ::protobuf::MessageFull for CasteRaw {
16768    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
16769        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
16770        descriptor.get(|| file_descriptor().message_by_package_relative_name("CasteRaw").unwrap()).clone()
16771    }
16772}
16773
16774impl ::std::fmt::Display for CasteRaw {
16775    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16776        ::protobuf::text_format::fmt(self, f)
16777    }
16778}
16779
16780impl ::protobuf::reflect::ProtobufValue for CasteRaw {
16781    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
16782}
16783
16784// @@protoc_insertion_point(message:RemoteFortressReader.CreatureRaw)
16785#[derive(PartialEq,Clone,Default,Debug)]
16786pub struct CreatureRaw {
16787    // message fields
16788    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.index)
16789    pub index: ::std::option::Option<i32>,
16790    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.creature_id)
16791    pub creature_id: ::std::option::Option<::std::string::String>,
16792    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.name)
16793    pub name: ::std::vec::Vec<::std::string::String>,
16794    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.general_baby_name)
16795    pub general_baby_name: ::std::vec::Vec<::std::string::String>,
16796    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.general_child_name)
16797    pub general_child_name: ::std::vec::Vec<::std::string::String>,
16798    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.creature_tile)
16799    pub creature_tile: ::std::option::Option<i32>,
16800    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.creature_soldier_tile)
16801    pub creature_soldier_tile: ::std::option::Option<i32>,
16802    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.color)
16803    pub color: ::protobuf::MessageField<ColorDefinition>,
16804    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.adultsize)
16805    pub adultsize: ::std::option::Option<i32>,
16806    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.caste)
16807    pub caste: ::std::vec::Vec<CasteRaw>,
16808    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.tissues)
16809    pub tissues: ::std::vec::Vec<TissueRaw>,
16810    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.flags)
16811    pub flags: ::std::vec::Vec<bool>,
16812    // special fields
16813    // @@protoc_insertion_point(special_field:RemoteFortressReader.CreatureRaw.special_fields)
16814    pub special_fields: ::protobuf::SpecialFields,
16815}
16816
16817impl<'a> ::std::default::Default for &'a CreatureRaw {
16818    fn default() -> &'a CreatureRaw {
16819        <CreatureRaw as ::protobuf::Message>::default_instance()
16820    }
16821}
16822
16823impl CreatureRaw {
16824    pub fn new() -> CreatureRaw {
16825        ::std::default::Default::default()
16826    }
16827
16828    // optional int32 index = 1;
16829
16830    pub fn index(&self) -> i32 {
16831        self.index.unwrap_or(0)
16832    }
16833
16834    pub fn clear_index(&mut self) {
16835        self.index = ::std::option::Option::None;
16836    }
16837
16838    pub fn has_index(&self) -> bool {
16839        self.index.is_some()
16840    }
16841
16842    // Param is passed by value, moved
16843    pub fn set_index(&mut self, v: i32) {
16844        self.index = ::std::option::Option::Some(v);
16845    }
16846
16847    // optional string creature_id = 2;
16848
16849    pub fn creature_id(&self) -> &str {
16850        match self.creature_id.as_ref() {
16851            Some(v) => v,
16852            None => "",
16853        }
16854    }
16855
16856    pub fn clear_creature_id(&mut self) {
16857        self.creature_id = ::std::option::Option::None;
16858    }
16859
16860    pub fn has_creature_id(&self) -> bool {
16861        self.creature_id.is_some()
16862    }
16863
16864    // Param is passed by value, moved
16865    pub fn set_creature_id(&mut self, v: ::std::string::String) {
16866        self.creature_id = ::std::option::Option::Some(v);
16867    }
16868
16869    // Mutable pointer to the field.
16870    // If field is not initialized, it is initialized with default value first.
16871    pub fn mut_creature_id(&mut self) -> &mut ::std::string::String {
16872        if self.creature_id.is_none() {
16873            self.creature_id = ::std::option::Option::Some(::std::string::String::new());
16874        }
16875        self.creature_id.as_mut().unwrap()
16876    }
16877
16878    // Take field
16879    pub fn take_creature_id(&mut self) -> ::std::string::String {
16880        self.creature_id.take().unwrap_or_else(|| ::std::string::String::new())
16881    }
16882
16883    // optional int32 creature_tile = 6;
16884
16885    pub fn creature_tile(&self) -> i32 {
16886        self.creature_tile.unwrap_or(0)
16887    }
16888
16889    pub fn clear_creature_tile(&mut self) {
16890        self.creature_tile = ::std::option::Option::None;
16891    }
16892
16893    pub fn has_creature_tile(&self) -> bool {
16894        self.creature_tile.is_some()
16895    }
16896
16897    // Param is passed by value, moved
16898    pub fn set_creature_tile(&mut self, v: i32) {
16899        self.creature_tile = ::std::option::Option::Some(v);
16900    }
16901
16902    // optional int32 creature_soldier_tile = 7;
16903
16904    pub fn creature_soldier_tile(&self) -> i32 {
16905        self.creature_soldier_tile.unwrap_or(0)
16906    }
16907
16908    pub fn clear_creature_soldier_tile(&mut self) {
16909        self.creature_soldier_tile = ::std::option::Option::None;
16910    }
16911
16912    pub fn has_creature_soldier_tile(&self) -> bool {
16913        self.creature_soldier_tile.is_some()
16914    }
16915
16916    // Param is passed by value, moved
16917    pub fn set_creature_soldier_tile(&mut self, v: i32) {
16918        self.creature_soldier_tile = ::std::option::Option::Some(v);
16919    }
16920
16921    // optional int32 adultsize = 9;
16922
16923    pub fn adultsize(&self) -> i32 {
16924        self.adultsize.unwrap_or(0)
16925    }
16926
16927    pub fn clear_adultsize(&mut self) {
16928        self.adultsize = ::std::option::Option::None;
16929    }
16930
16931    pub fn has_adultsize(&self) -> bool {
16932        self.adultsize.is_some()
16933    }
16934
16935    // Param is passed by value, moved
16936    pub fn set_adultsize(&mut self, v: i32) {
16937        self.adultsize = ::std::option::Option::Some(v);
16938    }
16939
16940    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
16941        let mut fields = ::std::vec::Vec::with_capacity(12);
16942        let mut oneofs = ::std::vec::Vec::with_capacity(0);
16943        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16944            "index",
16945            |m: &CreatureRaw| { &m.index },
16946            |m: &mut CreatureRaw| { &mut m.index },
16947        ));
16948        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16949            "creature_id",
16950            |m: &CreatureRaw| { &m.creature_id },
16951            |m: &mut CreatureRaw| { &mut m.creature_id },
16952        ));
16953        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16954            "name",
16955            |m: &CreatureRaw| { &m.name },
16956            |m: &mut CreatureRaw| { &mut m.name },
16957        ));
16958        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16959            "general_baby_name",
16960            |m: &CreatureRaw| { &m.general_baby_name },
16961            |m: &mut CreatureRaw| { &mut m.general_baby_name },
16962        ));
16963        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16964            "general_child_name",
16965            |m: &CreatureRaw| { &m.general_child_name },
16966            |m: &mut CreatureRaw| { &mut m.general_child_name },
16967        ));
16968        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16969            "creature_tile",
16970            |m: &CreatureRaw| { &m.creature_tile },
16971            |m: &mut CreatureRaw| { &mut m.creature_tile },
16972        ));
16973        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16974            "creature_soldier_tile",
16975            |m: &CreatureRaw| { &m.creature_soldier_tile },
16976            |m: &mut CreatureRaw| { &mut m.creature_soldier_tile },
16977        ));
16978        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ColorDefinition>(
16979            "color",
16980            |m: &CreatureRaw| { &m.color },
16981            |m: &mut CreatureRaw| { &mut m.color },
16982        ));
16983        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16984            "adultsize",
16985            |m: &CreatureRaw| { &m.adultsize },
16986            |m: &mut CreatureRaw| { &mut m.adultsize },
16987        ));
16988        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16989            "caste",
16990            |m: &CreatureRaw| { &m.caste },
16991            |m: &mut CreatureRaw| { &mut m.caste },
16992        ));
16993        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16994            "tissues",
16995            |m: &CreatureRaw| { &m.tissues },
16996            |m: &mut CreatureRaw| { &mut m.tissues },
16997        ));
16998        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16999            "flags",
17000            |m: &CreatureRaw| { &m.flags },
17001            |m: &mut CreatureRaw| { &mut m.flags },
17002        ));
17003        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<CreatureRaw>(
17004            "CreatureRaw",
17005            fields,
17006            oneofs,
17007        )
17008    }
17009}
17010
17011impl ::protobuf::Message for CreatureRaw {
17012    const NAME: &'static str = "CreatureRaw";
17013
17014    fn is_initialized(&self) -> bool {
17015        for v in &self.color {
17016            if !v.is_initialized() {
17017                return false;
17018            }
17019        };
17020        for v in &self.caste {
17021            if !v.is_initialized() {
17022                return false;
17023            }
17024        };
17025        for v in &self.tissues {
17026            if !v.is_initialized() {
17027                return false;
17028            }
17029        };
17030        true
17031    }
17032
17033    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
17034        while let Some(tag) = is.read_raw_tag_or_eof()? {
17035            match tag {
17036                8 => {
17037                    self.index = ::std::option::Option::Some(is.read_int32()?);
17038                },
17039                18 => {
17040                    self.creature_id = ::std::option::Option::Some(is.read_string()?);
17041                },
17042                26 => {
17043                    self.name.push(is.read_string()?);
17044                },
17045                34 => {
17046                    self.general_baby_name.push(is.read_string()?);
17047                },
17048                42 => {
17049                    self.general_child_name.push(is.read_string()?);
17050                },
17051                48 => {
17052                    self.creature_tile = ::std::option::Option::Some(is.read_int32()?);
17053                },
17054                56 => {
17055                    self.creature_soldier_tile = ::std::option::Option::Some(is.read_int32()?);
17056                },
17057                66 => {
17058                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.color)?;
17059                },
17060                72 => {
17061                    self.adultsize = ::std::option::Option::Some(is.read_int32()?);
17062                },
17063                82 => {
17064                    self.caste.push(is.read_message()?);
17065                },
17066                90 => {
17067                    self.tissues.push(is.read_message()?);
17068                },
17069                98 => {
17070                    is.read_repeated_packed_bool_into(&mut self.flags)?;
17071                },
17072                96 => {
17073                    self.flags.push(is.read_bool()?);
17074                },
17075                tag => {
17076                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
17077                },
17078            };
17079        }
17080        ::std::result::Result::Ok(())
17081    }
17082
17083    // Compute sizes of nested messages
17084    #[allow(unused_variables)]
17085    fn compute_size(&self) -> u64 {
17086        let mut my_size = 0;
17087        if let Some(v) = self.index {
17088            my_size += ::protobuf::rt::int32_size(1, v);
17089        }
17090        if let Some(v) = self.creature_id.as_ref() {
17091            my_size += ::protobuf::rt::string_size(2, &v);
17092        }
17093        for value in &self.name {
17094            my_size += ::protobuf::rt::string_size(3, &value);
17095        };
17096        for value in &self.general_baby_name {
17097            my_size += ::protobuf::rt::string_size(4, &value);
17098        };
17099        for value in &self.general_child_name {
17100            my_size += ::protobuf::rt::string_size(5, &value);
17101        };
17102        if let Some(v) = self.creature_tile {
17103            my_size += ::protobuf::rt::int32_size(6, v);
17104        }
17105        if let Some(v) = self.creature_soldier_tile {
17106            my_size += ::protobuf::rt::int32_size(7, v);
17107        }
17108        if let Some(v) = self.color.as_ref() {
17109            let len = v.compute_size();
17110            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17111        }
17112        if let Some(v) = self.adultsize {
17113            my_size += ::protobuf::rt::int32_size(9, v);
17114        }
17115        for value in &self.caste {
17116            let len = value.compute_size();
17117            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17118        };
17119        for value in &self.tissues {
17120            let len = value.compute_size();
17121            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17122        };
17123        my_size += 2 * self.flags.len() as u64;
17124        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
17125        self.special_fields.cached_size().set(my_size as u32);
17126        my_size
17127    }
17128
17129    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
17130        if let Some(v) = self.index {
17131            os.write_int32(1, v)?;
17132        }
17133        if let Some(v) = self.creature_id.as_ref() {
17134            os.write_string(2, v)?;
17135        }
17136        for v in &self.name {
17137            os.write_string(3, &v)?;
17138        };
17139        for v in &self.general_baby_name {
17140            os.write_string(4, &v)?;
17141        };
17142        for v in &self.general_child_name {
17143            os.write_string(5, &v)?;
17144        };
17145        if let Some(v) = self.creature_tile {
17146            os.write_int32(6, v)?;
17147        }
17148        if let Some(v) = self.creature_soldier_tile {
17149            os.write_int32(7, v)?;
17150        }
17151        if let Some(v) = self.color.as_ref() {
17152            ::protobuf::rt::write_message_field_with_cached_size(8, v, os)?;
17153        }
17154        if let Some(v) = self.adultsize {
17155            os.write_int32(9, v)?;
17156        }
17157        for v in &self.caste {
17158            ::protobuf::rt::write_message_field_with_cached_size(10, v, os)?;
17159        };
17160        for v in &self.tissues {
17161            ::protobuf::rt::write_message_field_with_cached_size(11, v, os)?;
17162        };
17163        for v in &self.flags {
17164            os.write_bool(12, *v)?;
17165        };
17166        os.write_unknown_fields(self.special_fields.unknown_fields())?;
17167        ::std::result::Result::Ok(())
17168    }
17169
17170    fn special_fields(&self) -> &::protobuf::SpecialFields {
17171        &self.special_fields
17172    }
17173
17174    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
17175        &mut self.special_fields
17176    }
17177
17178    fn new() -> CreatureRaw {
17179        CreatureRaw::new()
17180    }
17181
17182    fn clear(&mut self) {
17183        self.index = ::std::option::Option::None;
17184        self.creature_id = ::std::option::Option::None;
17185        self.name.clear();
17186        self.general_baby_name.clear();
17187        self.general_child_name.clear();
17188        self.creature_tile = ::std::option::Option::None;
17189        self.creature_soldier_tile = ::std::option::Option::None;
17190        self.color.clear();
17191        self.adultsize = ::std::option::Option::None;
17192        self.caste.clear();
17193        self.tissues.clear();
17194        self.flags.clear();
17195        self.special_fields.clear();
17196    }
17197
17198    fn default_instance() -> &'static CreatureRaw {
17199        static instance: CreatureRaw = CreatureRaw {
17200            index: ::std::option::Option::None,
17201            creature_id: ::std::option::Option::None,
17202            name: ::std::vec::Vec::new(),
17203            general_baby_name: ::std::vec::Vec::new(),
17204            general_child_name: ::std::vec::Vec::new(),
17205            creature_tile: ::std::option::Option::None,
17206            creature_soldier_tile: ::std::option::Option::None,
17207            color: ::protobuf::MessageField::none(),
17208            adultsize: ::std::option::Option::None,
17209            caste: ::std::vec::Vec::new(),
17210            tissues: ::std::vec::Vec::new(),
17211            flags: ::std::vec::Vec::new(),
17212            special_fields: ::protobuf::SpecialFields::new(),
17213        };
17214        &instance
17215    }
17216}
17217
17218impl ::protobuf::MessageFull for CreatureRaw {
17219    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
17220        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
17221        descriptor.get(|| file_descriptor().message_by_package_relative_name("CreatureRaw").unwrap()).clone()
17222    }
17223}
17224
17225impl ::std::fmt::Display for CreatureRaw {
17226    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17227        ::protobuf::text_format::fmt(self, f)
17228    }
17229}
17230
17231impl ::protobuf::reflect::ProtobufValue for CreatureRaw {
17232    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
17233}
17234
17235// @@protoc_insertion_point(message:RemoteFortressReader.CreatureRawList)
17236#[derive(PartialEq,Clone,Default,Debug)]
17237pub struct CreatureRawList {
17238    // message fields
17239    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRawList.creature_raws)
17240    pub creature_raws: ::std::vec::Vec<CreatureRaw>,
17241    // special fields
17242    // @@protoc_insertion_point(special_field:RemoteFortressReader.CreatureRawList.special_fields)
17243    pub special_fields: ::protobuf::SpecialFields,
17244}
17245
17246impl<'a> ::std::default::Default for &'a CreatureRawList {
17247    fn default() -> &'a CreatureRawList {
17248        <CreatureRawList as ::protobuf::Message>::default_instance()
17249    }
17250}
17251
17252impl CreatureRawList {
17253    pub fn new() -> CreatureRawList {
17254        ::std::default::Default::default()
17255    }
17256
17257    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
17258        let mut fields = ::std::vec::Vec::with_capacity(1);
17259        let mut oneofs = ::std::vec::Vec::with_capacity(0);
17260        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
17261            "creature_raws",
17262            |m: &CreatureRawList| { &m.creature_raws },
17263            |m: &mut CreatureRawList| { &mut m.creature_raws },
17264        ));
17265        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<CreatureRawList>(
17266            "CreatureRawList",
17267            fields,
17268            oneofs,
17269        )
17270    }
17271}
17272
17273impl ::protobuf::Message for CreatureRawList {
17274    const NAME: &'static str = "CreatureRawList";
17275
17276    fn is_initialized(&self) -> bool {
17277        for v in &self.creature_raws {
17278            if !v.is_initialized() {
17279                return false;
17280            }
17281        };
17282        true
17283    }
17284
17285    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
17286        while let Some(tag) = is.read_raw_tag_or_eof()? {
17287            match tag {
17288                10 => {
17289                    self.creature_raws.push(is.read_message()?);
17290                },
17291                tag => {
17292                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
17293                },
17294            };
17295        }
17296        ::std::result::Result::Ok(())
17297    }
17298
17299    // Compute sizes of nested messages
17300    #[allow(unused_variables)]
17301    fn compute_size(&self) -> u64 {
17302        let mut my_size = 0;
17303        for value in &self.creature_raws {
17304            let len = value.compute_size();
17305            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17306        };
17307        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
17308        self.special_fields.cached_size().set(my_size as u32);
17309        my_size
17310    }
17311
17312    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
17313        for v in &self.creature_raws {
17314            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
17315        };
17316        os.write_unknown_fields(self.special_fields.unknown_fields())?;
17317        ::std::result::Result::Ok(())
17318    }
17319
17320    fn special_fields(&self) -> &::protobuf::SpecialFields {
17321        &self.special_fields
17322    }
17323
17324    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
17325        &mut self.special_fields
17326    }
17327
17328    fn new() -> CreatureRawList {
17329        CreatureRawList::new()
17330    }
17331
17332    fn clear(&mut self) {
17333        self.creature_raws.clear();
17334        self.special_fields.clear();
17335    }
17336
17337    fn default_instance() -> &'static CreatureRawList {
17338        static instance: CreatureRawList = CreatureRawList {
17339            creature_raws: ::std::vec::Vec::new(),
17340            special_fields: ::protobuf::SpecialFields::new(),
17341        };
17342        &instance
17343    }
17344}
17345
17346impl ::protobuf::MessageFull for CreatureRawList {
17347    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
17348        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
17349        descriptor.get(|| file_descriptor().message_by_package_relative_name("CreatureRawList").unwrap()).clone()
17350    }
17351}
17352
17353impl ::std::fmt::Display for CreatureRawList {
17354    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17355        ::protobuf::text_format::fmt(self, f)
17356    }
17357}
17358
17359impl ::protobuf::reflect::ProtobufValue for CreatureRawList {
17360    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
17361}
17362
17363// @@protoc_insertion_point(message:RemoteFortressReader.Army)
17364#[derive(PartialEq,Clone,Default,Debug)]
17365pub struct Army {
17366    // message fields
17367    // @@protoc_insertion_point(field:RemoteFortressReader.Army.id)
17368    pub id: ::std::option::Option<i32>,
17369    // @@protoc_insertion_point(field:RemoteFortressReader.Army.pos_x)
17370    pub pos_x: ::std::option::Option<i32>,
17371    // @@protoc_insertion_point(field:RemoteFortressReader.Army.pos_y)
17372    pub pos_y: ::std::option::Option<i32>,
17373    // @@protoc_insertion_point(field:RemoteFortressReader.Army.pos_z)
17374    pub pos_z: ::std::option::Option<i32>,
17375    // @@protoc_insertion_point(field:RemoteFortressReader.Army.leader)
17376    pub leader: ::protobuf::MessageField<UnitDefinition>,
17377    // @@protoc_insertion_point(field:RemoteFortressReader.Army.members)
17378    pub members: ::std::vec::Vec<UnitDefinition>,
17379    // @@protoc_insertion_point(field:RemoteFortressReader.Army.flags)
17380    pub flags: ::std::option::Option<u32>,
17381    // special fields
17382    // @@protoc_insertion_point(special_field:RemoteFortressReader.Army.special_fields)
17383    pub special_fields: ::protobuf::SpecialFields,
17384}
17385
17386impl<'a> ::std::default::Default for &'a Army {
17387    fn default() -> &'a Army {
17388        <Army as ::protobuf::Message>::default_instance()
17389    }
17390}
17391
17392impl Army {
17393    pub fn new() -> Army {
17394        ::std::default::Default::default()
17395    }
17396
17397    // optional int32 id = 1;
17398
17399    pub fn id(&self) -> i32 {
17400        self.id.unwrap_or(0)
17401    }
17402
17403    pub fn clear_id(&mut self) {
17404        self.id = ::std::option::Option::None;
17405    }
17406
17407    pub fn has_id(&self) -> bool {
17408        self.id.is_some()
17409    }
17410
17411    // Param is passed by value, moved
17412    pub fn set_id(&mut self, v: i32) {
17413        self.id = ::std::option::Option::Some(v);
17414    }
17415
17416    // optional int32 pos_x = 2;
17417
17418    pub fn pos_x(&self) -> i32 {
17419        self.pos_x.unwrap_or(0)
17420    }
17421
17422    pub fn clear_pos_x(&mut self) {
17423        self.pos_x = ::std::option::Option::None;
17424    }
17425
17426    pub fn has_pos_x(&self) -> bool {
17427        self.pos_x.is_some()
17428    }
17429
17430    // Param is passed by value, moved
17431    pub fn set_pos_x(&mut self, v: i32) {
17432        self.pos_x = ::std::option::Option::Some(v);
17433    }
17434
17435    // optional int32 pos_y = 3;
17436
17437    pub fn pos_y(&self) -> i32 {
17438        self.pos_y.unwrap_or(0)
17439    }
17440
17441    pub fn clear_pos_y(&mut self) {
17442        self.pos_y = ::std::option::Option::None;
17443    }
17444
17445    pub fn has_pos_y(&self) -> bool {
17446        self.pos_y.is_some()
17447    }
17448
17449    // Param is passed by value, moved
17450    pub fn set_pos_y(&mut self, v: i32) {
17451        self.pos_y = ::std::option::Option::Some(v);
17452    }
17453
17454    // optional int32 pos_z = 4;
17455
17456    pub fn pos_z(&self) -> i32 {
17457        self.pos_z.unwrap_or(0)
17458    }
17459
17460    pub fn clear_pos_z(&mut self) {
17461        self.pos_z = ::std::option::Option::None;
17462    }
17463
17464    pub fn has_pos_z(&self) -> bool {
17465        self.pos_z.is_some()
17466    }
17467
17468    // Param is passed by value, moved
17469    pub fn set_pos_z(&mut self, v: i32) {
17470        self.pos_z = ::std::option::Option::Some(v);
17471    }
17472
17473    // optional uint32 flags = 7;
17474
17475    pub fn flags(&self) -> u32 {
17476        self.flags.unwrap_or(0)
17477    }
17478
17479    pub fn clear_flags(&mut self) {
17480        self.flags = ::std::option::Option::None;
17481    }
17482
17483    pub fn has_flags(&self) -> bool {
17484        self.flags.is_some()
17485    }
17486
17487    // Param is passed by value, moved
17488    pub fn set_flags(&mut self, v: u32) {
17489        self.flags = ::std::option::Option::Some(v);
17490    }
17491
17492    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
17493        let mut fields = ::std::vec::Vec::with_capacity(7);
17494        let mut oneofs = ::std::vec::Vec::with_capacity(0);
17495        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17496            "id",
17497            |m: &Army| { &m.id },
17498            |m: &mut Army| { &mut m.id },
17499        ));
17500        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17501            "pos_x",
17502            |m: &Army| { &m.pos_x },
17503            |m: &mut Army| { &mut m.pos_x },
17504        ));
17505        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17506            "pos_y",
17507            |m: &Army| { &m.pos_y },
17508            |m: &mut Army| { &mut m.pos_y },
17509        ));
17510        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17511            "pos_z",
17512            |m: &Army| { &m.pos_z },
17513            |m: &mut Army| { &mut m.pos_z },
17514        ));
17515        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, UnitDefinition>(
17516            "leader",
17517            |m: &Army| { &m.leader },
17518            |m: &mut Army| { &mut m.leader },
17519        ));
17520        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
17521            "members",
17522            |m: &Army| { &m.members },
17523            |m: &mut Army| { &mut m.members },
17524        ));
17525        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17526            "flags",
17527            |m: &Army| { &m.flags },
17528            |m: &mut Army| { &mut m.flags },
17529        ));
17530        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Army>(
17531            "Army",
17532            fields,
17533            oneofs,
17534        )
17535    }
17536}
17537
17538impl ::protobuf::Message for Army {
17539    const NAME: &'static str = "Army";
17540
17541    fn is_initialized(&self) -> bool {
17542        for v in &self.leader {
17543            if !v.is_initialized() {
17544                return false;
17545            }
17546        };
17547        for v in &self.members {
17548            if !v.is_initialized() {
17549                return false;
17550            }
17551        };
17552        true
17553    }
17554
17555    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
17556        while let Some(tag) = is.read_raw_tag_or_eof()? {
17557            match tag {
17558                8 => {
17559                    self.id = ::std::option::Option::Some(is.read_int32()?);
17560                },
17561                16 => {
17562                    self.pos_x = ::std::option::Option::Some(is.read_int32()?);
17563                },
17564                24 => {
17565                    self.pos_y = ::std::option::Option::Some(is.read_int32()?);
17566                },
17567                32 => {
17568                    self.pos_z = ::std::option::Option::Some(is.read_int32()?);
17569                },
17570                42 => {
17571                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.leader)?;
17572                },
17573                50 => {
17574                    self.members.push(is.read_message()?);
17575                },
17576                56 => {
17577                    self.flags = ::std::option::Option::Some(is.read_uint32()?);
17578                },
17579                tag => {
17580                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
17581                },
17582            };
17583        }
17584        ::std::result::Result::Ok(())
17585    }
17586
17587    // Compute sizes of nested messages
17588    #[allow(unused_variables)]
17589    fn compute_size(&self) -> u64 {
17590        let mut my_size = 0;
17591        if let Some(v) = self.id {
17592            my_size += ::protobuf::rt::int32_size(1, v);
17593        }
17594        if let Some(v) = self.pos_x {
17595            my_size += ::protobuf::rt::int32_size(2, v);
17596        }
17597        if let Some(v) = self.pos_y {
17598            my_size += ::protobuf::rt::int32_size(3, v);
17599        }
17600        if let Some(v) = self.pos_z {
17601            my_size += ::protobuf::rt::int32_size(4, v);
17602        }
17603        if let Some(v) = self.leader.as_ref() {
17604            let len = v.compute_size();
17605            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17606        }
17607        for value in &self.members {
17608            let len = value.compute_size();
17609            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17610        };
17611        if let Some(v) = self.flags {
17612            my_size += ::protobuf::rt::uint32_size(7, v);
17613        }
17614        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
17615        self.special_fields.cached_size().set(my_size as u32);
17616        my_size
17617    }
17618
17619    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
17620        if let Some(v) = self.id {
17621            os.write_int32(1, v)?;
17622        }
17623        if let Some(v) = self.pos_x {
17624            os.write_int32(2, v)?;
17625        }
17626        if let Some(v) = self.pos_y {
17627            os.write_int32(3, v)?;
17628        }
17629        if let Some(v) = self.pos_z {
17630            os.write_int32(4, v)?;
17631        }
17632        if let Some(v) = self.leader.as_ref() {
17633            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
17634        }
17635        for v in &self.members {
17636            ::protobuf::rt::write_message_field_with_cached_size(6, v, os)?;
17637        };
17638        if let Some(v) = self.flags {
17639            os.write_uint32(7, v)?;
17640        }
17641        os.write_unknown_fields(self.special_fields.unknown_fields())?;
17642        ::std::result::Result::Ok(())
17643    }
17644
17645    fn special_fields(&self) -> &::protobuf::SpecialFields {
17646        &self.special_fields
17647    }
17648
17649    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
17650        &mut self.special_fields
17651    }
17652
17653    fn new() -> Army {
17654        Army::new()
17655    }
17656
17657    fn clear(&mut self) {
17658        self.id = ::std::option::Option::None;
17659        self.pos_x = ::std::option::Option::None;
17660        self.pos_y = ::std::option::Option::None;
17661        self.pos_z = ::std::option::Option::None;
17662        self.leader.clear();
17663        self.members.clear();
17664        self.flags = ::std::option::Option::None;
17665        self.special_fields.clear();
17666    }
17667
17668    fn default_instance() -> &'static Army {
17669        static instance: Army = Army {
17670            id: ::std::option::Option::None,
17671            pos_x: ::std::option::Option::None,
17672            pos_y: ::std::option::Option::None,
17673            pos_z: ::std::option::Option::None,
17674            leader: ::protobuf::MessageField::none(),
17675            members: ::std::vec::Vec::new(),
17676            flags: ::std::option::Option::None,
17677            special_fields: ::protobuf::SpecialFields::new(),
17678        };
17679        &instance
17680    }
17681}
17682
17683impl ::protobuf::MessageFull for Army {
17684    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
17685        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
17686        descriptor.get(|| file_descriptor().message_by_package_relative_name("Army").unwrap()).clone()
17687    }
17688}
17689
17690impl ::std::fmt::Display for Army {
17691    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17692        ::protobuf::text_format::fmt(self, f)
17693    }
17694}
17695
17696impl ::protobuf::reflect::ProtobufValue for Army {
17697    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
17698}
17699
17700// @@protoc_insertion_point(message:RemoteFortressReader.ArmyList)
17701#[derive(PartialEq,Clone,Default,Debug)]
17702pub struct ArmyList {
17703    // message fields
17704    // @@protoc_insertion_point(field:RemoteFortressReader.ArmyList.armies)
17705    pub armies: ::std::vec::Vec<Army>,
17706    // special fields
17707    // @@protoc_insertion_point(special_field:RemoteFortressReader.ArmyList.special_fields)
17708    pub special_fields: ::protobuf::SpecialFields,
17709}
17710
17711impl<'a> ::std::default::Default for &'a ArmyList {
17712    fn default() -> &'a ArmyList {
17713        <ArmyList as ::protobuf::Message>::default_instance()
17714    }
17715}
17716
17717impl ArmyList {
17718    pub fn new() -> ArmyList {
17719        ::std::default::Default::default()
17720    }
17721
17722    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
17723        let mut fields = ::std::vec::Vec::with_capacity(1);
17724        let mut oneofs = ::std::vec::Vec::with_capacity(0);
17725        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
17726            "armies",
17727            |m: &ArmyList| { &m.armies },
17728            |m: &mut ArmyList| { &mut m.armies },
17729        ));
17730        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ArmyList>(
17731            "ArmyList",
17732            fields,
17733            oneofs,
17734        )
17735    }
17736}
17737
17738impl ::protobuf::Message for ArmyList {
17739    const NAME: &'static str = "ArmyList";
17740
17741    fn is_initialized(&self) -> bool {
17742        for v in &self.armies {
17743            if !v.is_initialized() {
17744                return false;
17745            }
17746        };
17747        true
17748    }
17749
17750    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
17751        while let Some(tag) = is.read_raw_tag_or_eof()? {
17752            match tag {
17753                10 => {
17754                    self.armies.push(is.read_message()?);
17755                },
17756                tag => {
17757                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
17758                },
17759            };
17760        }
17761        ::std::result::Result::Ok(())
17762    }
17763
17764    // Compute sizes of nested messages
17765    #[allow(unused_variables)]
17766    fn compute_size(&self) -> u64 {
17767        let mut my_size = 0;
17768        for value in &self.armies {
17769            let len = value.compute_size();
17770            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17771        };
17772        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
17773        self.special_fields.cached_size().set(my_size as u32);
17774        my_size
17775    }
17776
17777    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
17778        for v in &self.armies {
17779            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
17780        };
17781        os.write_unknown_fields(self.special_fields.unknown_fields())?;
17782        ::std::result::Result::Ok(())
17783    }
17784
17785    fn special_fields(&self) -> &::protobuf::SpecialFields {
17786        &self.special_fields
17787    }
17788
17789    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
17790        &mut self.special_fields
17791    }
17792
17793    fn new() -> ArmyList {
17794        ArmyList::new()
17795    }
17796
17797    fn clear(&mut self) {
17798        self.armies.clear();
17799        self.special_fields.clear();
17800    }
17801
17802    fn default_instance() -> &'static ArmyList {
17803        static instance: ArmyList = ArmyList {
17804            armies: ::std::vec::Vec::new(),
17805            special_fields: ::protobuf::SpecialFields::new(),
17806        };
17807        &instance
17808    }
17809}
17810
17811impl ::protobuf::MessageFull for ArmyList {
17812    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
17813        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
17814        descriptor.get(|| file_descriptor().message_by_package_relative_name("ArmyList").unwrap()).clone()
17815    }
17816}
17817
17818impl ::std::fmt::Display for ArmyList {
17819    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17820        ::protobuf::text_format::fmt(self, f)
17821    }
17822}
17823
17824impl ::protobuf::reflect::ProtobufValue for ArmyList {
17825    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
17826}
17827
17828// @@protoc_insertion_point(message:RemoteFortressReader.GrowthPrint)
17829#[derive(PartialEq,Clone,Default,Debug)]
17830pub struct GrowthPrint {
17831    // message fields
17832    // @@protoc_insertion_point(field:RemoteFortressReader.GrowthPrint.priority)
17833    pub priority: ::std::option::Option<i32>,
17834    // @@protoc_insertion_point(field:RemoteFortressReader.GrowthPrint.color)
17835    pub color: ::std::option::Option<i32>,
17836    // @@protoc_insertion_point(field:RemoteFortressReader.GrowthPrint.timing_start)
17837    pub timing_start: ::std::option::Option<i32>,
17838    // @@protoc_insertion_point(field:RemoteFortressReader.GrowthPrint.timing_end)
17839    pub timing_end: ::std::option::Option<i32>,
17840    // @@protoc_insertion_point(field:RemoteFortressReader.GrowthPrint.tile)
17841    pub tile: ::std::option::Option<i32>,
17842    // special fields
17843    // @@protoc_insertion_point(special_field:RemoteFortressReader.GrowthPrint.special_fields)
17844    pub special_fields: ::protobuf::SpecialFields,
17845}
17846
17847impl<'a> ::std::default::Default for &'a GrowthPrint {
17848    fn default() -> &'a GrowthPrint {
17849        <GrowthPrint as ::protobuf::Message>::default_instance()
17850    }
17851}
17852
17853impl GrowthPrint {
17854    pub fn new() -> GrowthPrint {
17855        ::std::default::Default::default()
17856    }
17857
17858    // optional int32 priority = 1;
17859
17860    pub fn priority(&self) -> i32 {
17861        self.priority.unwrap_or(0)
17862    }
17863
17864    pub fn clear_priority(&mut self) {
17865        self.priority = ::std::option::Option::None;
17866    }
17867
17868    pub fn has_priority(&self) -> bool {
17869        self.priority.is_some()
17870    }
17871
17872    // Param is passed by value, moved
17873    pub fn set_priority(&mut self, v: i32) {
17874        self.priority = ::std::option::Option::Some(v);
17875    }
17876
17877    // optional int32 color = 2;
17878
17879    pub fn color(&self) -> i32 {
17880        self.color.unwrap_or(0)
17881    }
17882
17883    pub fn clear_color(&mut self) {
17884        self.color = ::std::option::Option::None;
17885    }
17886
17887    pub fn has_color(&self) -> bool {
17888        self.color.is_some()
17889    }
17890
17891    // Param is passed by value, moved
17892    pub fn set_color(&mut self, v: i32) {
17893        self.color = ::std::option::Option::Some(v);
17894    }
17895
17896    // optional int32 timing_start = 3;
17897
17898    pub fn timing_start(&self) -> i32 {
17899        self.timing_start.unwrap_or(0)
17900    }
17901
17902    pub fn clear_timing_start(&mut self) {
17903        self.timing_start = ::std::option::Option::None;
17904    }
17905
17906    pub fn has_timing_start(&self) -> bool {
17907        self.timing_start.is_some()
17908    }
17909
17910    // Param is passed by value, moved
17911    pub fn set_timing_start(&mut self, v: i32) {
17912        self.timing_start = ::std::option::Option::Some(v);
17913    }
17914
17915    // optional int32 timing_end = 4;
17916
17917    pub fn timing_end(&self) -> i32 {
17918        self.timing_end.unwrap_or(0)
17919    }
17920
17921    pub fn clear_timing_end(&mut self) {
17922        self.timing_end = ::std::option::Option::None;
17923    }
17924
17925    pub fn has_timing_end(&self) -> bool {
17926        self.timing_end.is_some()
17927    }
17928
17929    // Param is passed by value, moved
17930    pub fn set_timing_end(&mut self, v: i32) {
17931        self.timing_end = ::std::option::Option::Some(v);
17932    }
17933
17934    // optional int32 tile = 5;
17935
17936    pub fn tile(&self) -> i32 {
17937        self.tile.unwrap_or(0)
17938    }
17939
17940    pub fn clear_tile(&mut self) {
17941        self.tile = ::std::option::Option::None;
17942    }
17943
17944    pub fn has_tile(&self) -> bool {
17945        self.tile.is_some()
17946    }
17947
17948    // Param is passed by value, moved
17949    pub fn set_tile(&mut self, v: i32) {
17950        self.tile = ::std::option::Option::Some(v);
17951    }
17952
17953    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
17954        let mut fields = ::std::vec::Vec::with_capacity(5);
17955        let mut oneofs = ::std::vec::Vec::with_capacity(0);
17956        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17957            "priority",
17958            |m: &GrowthPrint| { &m.priority },
17959            |m: &mut GrowthPrint| { &mut m.priority },
17960        ));
17961        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17962            "color",
17963            |m: &GrowthPrint| { &m.color },
17964            |m: &mut GrowthPrint| { &mut m.color },
17965        ));
17966        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17967            "timing_start",
17968            |m: &GrowthPrint| { &m.timing_start },
17969            |m: &mut GrowthPrint| { &mut m.timing_start },
17970        ));
17971        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17972            "timing_end",
17973            |m: &GrowthPrint| { &m.timing_end },
17974            |m: &mut GrowthPrint| { &mut m.timing_end },
17975        ));
17976        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17977            "tile",
17978            |m: &GrowthPrint| { &m.tile },
17979            |m: &mut GrowthPrint| { &mut m.tile },
17980        ));
17981        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<GrowthPrint>(
17982            "GrowthPrint",
17983            fields,
17984            oneofs,
17985        )
17986    }
17987}
17988
17989impl ::protobuf::Message for GrowthPrint {
17990    const NAME: &'static str = "GrowthPrint";
17991
17992    fn is_initialized(&self) -> bool {
17993        true
17994    }
17995
17996    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
17997        while let Some(tag) = is.read_raw_tag_or_eof()? {
17998            match tag {
17999                8 => {
18000                    self.priority = ::std::option::Option::Some(is.read_int32()?);
18001                },
18002                16 => {
18003                    self.color = ::std::option::Option::Some(is.read_int32()?);
18004                },
18005                24 => {
18006                    self.timing_start = ::std::option::Option::Some(is.read_int32()?);
18007                },
18008                32 => {
18009                    self.timing_end = ::std::option::Option::Some(is.read_int32()?);
18010                },
18011                40 => {
18012                    self.tile = ::std::option::Option::Some(is.read_int32()?);
18013                },
18014                tag => {
18015                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
18016                },
18017            };
18018        }
18019        ::std::result::Result::Ok(())
18020    }
18021
18022    // Compute sizes of nested messages
18023    #[allow(unused_variables)]
18024    fn compute_size(&self) -> u64 {
18025        let mut my_size = 0;
18026        if let Some(v) = self.priority {
18027            my_size += ::protobuf::rt::int32_size(1, v);
18028        }
18029        if let Some(v) = self.color {
18030            my_size += ::protobuf::rt::int32_size(2, v);
18031        }
18032        if let Some(v) = self.timing_start {
18033            my_size += ::protobuf::rt::int32_size(3, v);
18034        }
18035        if let Some(v) = self.timing_end {
18036            my_size += ::protobuf::rt::int32_size(4, v);
18037        }
18038        if let Some(v) = self.tile {
18039            my_size += ::protobuf::rt::int32_size(5, v);
18040        }
18041        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
18042        self.special_fields.cached_size().set(my_size as u32);
18043        my_size
18044    }
18045
18046    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
18047        if let Some(v) = self.priority {
18048            os.write_int32(1, v)?;
18049        }
18050        if let Some(v) = self.color {
18051            os.write_int32(2, v)?;
18052        }
18053        if let Some(v) = self.timing_start {
18054            os.write_int32(3, v)?;
18055        }
18056        if let Some(v) = self.timing_end {
18057            os.write_int32(4, v)?;
18058        }
18059        if let Some(v) = self.tile {
18060            os.write_int32(5, v)?;
18061        }
18062        os.write_unknown_fields(self.special_fields.unknown_fields())?;
18063        ::std::result::Result::Ok(())
18064    }
18065
18066    fn special_fields(&self) -> &::protobuf::SpecialFields {
18067        &self.special_fields
18068    }
18069
18070    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
18071        &mut self.special_fields
18072    }
18073
18074    fn new() -> GrowthPrint {
18075        GrowthPrint::new()
18076    }
18077
18078    fn clear(&mut self) {
18079        self.priority = ::std::option::Option::None;
18080        self.color = ::std::option::Option::None;
18081        self.timing_start = ::std::option::Option::None;
18082        self.timing_end = ::std::option::Option::None;
18083        self.tile = ::std::option::Option::None;
18084        self.special_fields.clear();
18085    }
18086
18087    fn default_instance() -> &'static GrowthPrint {
18088        static instance: GrowthPrint = GrowthPrint {
18089            priority: ::std::option::Option::None,
18090            color: ::std::option::Option::None,
18091            timing_start: ::std::option::Option::None,
18092            timing_end: ::std::option::Option::None,
18093            tile: ::std::option::Option::None,
18094            special_fields: ::protobuf::SpecialFields::new(),
18095        };
18096        &instance
18097    }
18098}
18099
18100impl ::protobuf::MessageFull for GrowthPrint {
18101    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
18102        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
18103        descriptor.get(|| file_descriptor().message_by_package_relative_name("GrowthPrint").unwrap()).clone()
18104    }
18105}
18106
18107impl ::std::fmt::Display for GrowthPrint {
18108    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18109        ::protobuf::text_format::fmt(self, f)
18110    }
18111}
18112
18113impl ::protobuf::reflect::ProtobufValue for GrowthPrint {
18114    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
18115}
18116
18117// @@protoc_insertion_point(message:RemoteFortressReader.TreeGrowth)
18118#[derive(PartialEq,Clone,Default,Debug)]
18119pub struct TreeGrowth {
18120    // message fields
18121    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.index)
18122    pub index: ::std::option::Option<i32>,
18123    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.id)
18124    pub id: ::std::option::Option<::std::string::String>,
18125    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.name)
18126    pub name: ::std::option::Option<::std::string::String>,
18127    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.mat)
18128    pub mat: ::protobuf::MessageField<MatPair>,
18129    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.prints)
18130    pub prints: ::std::vec::Vec<GrowthPrint>,
18131    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.timing_start)
18132    pub timing_start: ::std::option::Option<i32>,
18133    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.timing_end)
18134    pub timing_end: ::std::option::Option<i32>,
18135    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.twigs)
18136    pub twigs: ::std::option::Option<bool>,
18137    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.light_branches)
18138    pub light_branches: ::std::option::Option<bool>,
18139    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.heavy_branches)
18140    pub heavy_branches: ::std::option::Option<bool>,
18141    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.trunk)
18142    pub trunk: ::std::option::Option<bool>,
18143    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.roots)
18144    pub roots: ::std::option::Option<bool>,
18145    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.cap)
18146    pub cap: ::std::option::Option<bool>,
18147    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.sapling)
18148    pub sapling: ::std::option::Option<bool>,
18149    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.trunk_height_start)
18150    pub trunk_height_start: ::std::option::Option<i32>,
18151    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.trunk_height_end)
18152    pub trunk_height_end: ::std::option::Option<i32>,
18153    // special fields
18154    // @@protoc_insertion_point(special_field:RemoteFortressReader.TreeGrowth.special_fields)
18155    pub special_fields: ::protobuf::SpecialFields,
18156}
18157
18158impl<'a> ::std::default::Default for &'a TreeGrowth {
18159    fn default() -> &'a TreeGrowth {
18160        <TreeGrowth as ::protobuf::Message>::default_instance()
18161    }
18162}
18163
18164impl TreeGrowth {
18165    pub fn new() -> TreeGrowth {
18166        ::std::default::Default::default()
18167    }
18168
18169    // optional int32 index = 1;
18170
18171    pub fn index(&self) -> i32 {
18172        self.index.unwrap_or(0)
18173    }
18174
18175    pub fn clear_index(&mut self) {
18176        self.index = ::std::option::Option::None;
18177    }
18178
18179    pub fn has_index(&self) -> bool {
18180        self.index.is_some()
18181    }
18182
18183    // Param is passed by value, moved
18184    pub fn set_index(&mut self, v: i32) {
18185        self.index = ::std::option::Option::Some(v);
18186    }
18187
18188    // optional string id = 2;
18189
18190    pub fn id(&self) -> &str {
18191        match self.id.as_ref() {
18192            Some(v) => v,
18193            None => "",
18194        }
18195    }
18196
18197    pub fn clear_id(&mut self) {
18198        self.id = ::std::option::Option::None;
18199    }
18200
18201    pub fn has_id(&self) -> bool {
18202        self.id.is_some()
18203    }
18204
18205    // Param is passed by value, moved
18206    pub fn set_id(&mut self, v: ::std::string::String) {
18207        self.id = ::std::option::Option::Some(v);
18208    }
18209
18210    // Mutable pointer to the field.
18211    // If field is not initialized, it is initialized with default value first.
18212    pub fn mut_id(&mut self) -> &mut ::std::string::String {
18213        if self.id.is_none() {
18214            self.id = ::std::option::Option::Some(::std::string::String::new());
18215        }
18216        self.id.as_mut().unwrap()
18217    }
18218
18219    // Take field
18220    pub fn take_id(&mut self) -> ::std::string::String {
18221        self.id.take().unwrap_or_else(|| ::std::string::String::new())
18222    }
18223
18224    // optional string name = 3;
18225
18226    pub fn name(&self) -> &str {
18227        match self.name.as_ref() {
18228            Some(v) => v,
18229            None => "",
18230        }
18231    }
18232
18233    pub fn clear_name(&mut self) {
18234        self.name = ::std::option::Option::None;
18235    }
18236
18237    pub fn has_name(&self) -> bool {
18238        self.name.is_some()
18239    }
18240
18241    // Param is passed by value, moved
18242    pub fn set_name(&mut self, v: ::std::string::String) {
18243        self.name = ::std::option::Option::Some(v);
18244    }
18245
18246    // Mutable pointer to the field.
18247    // If field is not initialized, it is initialized with default value first.
18248    pub fn mut_name(&mut self) -> &mut ::std::string::String {
18249        if self.name.is_none() {
18250            self.name = ::std::option::Option::Some(::std::string::String::new());
18251        }
18252        self.name.as_mut().unwrap()
18253    }
18254
18255    // Take field
18256    pub fn take_name(&mut self) -> ::std::string::String {
18257        self.name.take().unwrap_or_else(|| ::std::string::String::new())
18258    }
18259
18260    // optional int32 timing_start = 6;
18261
18262    pub fn timing_start(&self) -> i32 {
18263        self.timing_start.unwrap_or(0)
18264    }
18265
18266    pub fn clear_timing_start(&mut self) {
18267        self.timing_start = ::std::option::Option::None;
18268    }
18269
18270    pub fn has_timing_start(&self) -> bool {
18271        self.timing_start.is_some()
18272    }
18273
18274    // Param is passed by value, moved
18275    pub fn set_timing_start(&mut self, v: i32) {
18276        self.timing_start = ::std::option::Option::Some(v);
18277    }
18278
18279    // optional int32 timing_end = 7;
18280
18281    pub fn timing_end(&self) -> i32 {
18282        self.timing_end.unwrap_or(0)
18283    }
18284
18285    pub fn clear_timing_end(&mut self) {
18286        self.timing_end = ::std::option::Option::None;
18287    }
18288
18289    pub fn has_timing_end(&self) -> bool {
18290        self.timing_end.is_some()
18291    }
18292
18293    // Param is passed by value, moved
18294    pub fn set_timing_end(&mut self, v: i32) {
18295        self.timing_end = ::std::option::Option::Some(v);
18296    }
18297
18298    // optional bool twigs = 8;
18299
18300    pub fn twigs(&self) -> bool {
18301        self.twigs.unwrap_or(false)
18302    }
18303
18304    pub fn clear_twigs(&mut self) {
18305        self.twigs = ::std::option::Option::None;
18306    }
18307
18308    pub fn has_twigs(&self) -> bool {
18309        self.twigs.is_some()
18310    }
18311
18312    // Param is passed by value, moved
18313    pub fn set_twigs(&mut self, v: bool) {
18314        self.twigs = ::std::option::Option::Some(v);
18315    }
18316
18317    // optional bool light_branches = 9;
18318
18319    pub fn light_branches(&self) -> bool {
18320        self.light_branches.unwrap_or(false)
18321    }
18322
18323    pub fn clear_light_branches(&mut self) {
18324        self.light_branches = ::std::option::Option::None;
18325    }
18326
18327    pub fn has_light_branches(&self) -> bool {
18328        self.light_branches.is_some()
18329    }
18330
18331    // Param is passed by value, moved
18332    pub fn set_light_branches(&mut self, v: bool) {
18333        self.light_branches = ::std::option::Option::Some(v);
18334    }
18335
18336    // optional bool heavy_branches = 10;
18337
18338    pub fn heavy_branches(&self) -> bool {
18339        self.heavy_branches.unwrap_or(false)
18340    }
18341
18342    pub fn clear_heavy_branches(&mut self) {
18343        self.heavy_branches = ::std::option::Option::None;
18344    }
18345
18346    pub fn has_heavy_branches(&self) -> bool {
18347        self.heavy_branches.is_some()
18348    }
18349
18350    // Param is passed by value, moved
18351    pub fn set_heavy_branches(&mut self, v: bool) {
18352        self.heavy_branches = ::std::option::Option::Some(v);
18353    }
18354
18355    // optional bool trunk = 11;
18356
18357    pub fn trunk(&self) -> bool {
18358        self.trunk.unwrap_or(false)
18359    }
18360
18361    pub fn clear_trunk(&mut self) {
18362        self.trunk = ::std::option::Option::None;
18363    }
18364
18365    pub fn has_trunk(&self) -> bool {
18366        self.trunk.is_some()
18367    }
18368
18369    // Param is passed by value, moved
18370    pub fn set_trunk(&mut self, v: bool) {
18371        self.trunk = ::std::option::Option::Some(v);
18372    }
18373
18374    // optional bool roots = 12;
18375
18376    pub fn roots(&self) -> bool {
18377        self.roots.unwrap_or(false)
18378    }
18379
18380    pub fn clear_roots(&mut self) {
18381        self.roots = ::std::option::Option::None;
18382    }
18383
18384    pub fn has_roots(&self) -> bool {
18385        self.roots.is_some()
18386    }
18387
18388    // Param is passed by value, moved
18389    pub fn set_roots(&mut self, v: bool) {
18390        self.roots = ::std::option::Option::Some(v);
18391    }
18392
18393    // optional bool cap = 13;
18394
18395    pub fn cap(&self) -> bool {
18396        self.cap.unwrap_or(false)
18397    }
18398
18399    pub fn clear_cap(&mut self) {
18400        self.cap = ::std::option::Option::None;
18401    }
18402
18403    pub fn has_cap(&self) -> bool {
18404        self.cap.is_some()
18405    }
18406
18407    // Param is passed by value, moved
18408    pub fn set_cap(&mut self, v: bool) {
18409        self.cap = ::std::option::Option::Some(v);
18410    }
18411
18412    // optional bool sapling = 14;
18413
18414    pub fn sapling(&self) -> bool {
18415        self.sapling.unwrap_or(false)
18416    }
18417
18418    pub fn clear_sapling(&mut self) {
18419        self.sapling = ::std::option::Option::None;
18420    }
18421
18422    pub fn has_sapling(&self) -> bool {
18423        self.sapling.is_some()
18424    }
18425
18426    // Param is passed by value, moved
18427    pub fn set_sapling(&mut self, v: bool) {
18428        self.sapling = ::std::option::Option::Some(v);
18429    }
18430
18431    // optional int32 trunk_height_start = 15;
18432
18433    pub fn trunk_height_start(&self) -> i32 {
18434        self.trunk_height_start.unwrap_or(0)
18435    }
18436
18437    pub fn clear_trunk_height_start(&mut self) {
18438        self.trunk_height_start = ::std::option::Option::None;
18439    }
18440
18441    pub fn has_trunk_height_start(&self) -> bool {
18442        self.trunk_height_start.is_some()
18443    }
18444
18445    // Param is passed by value, moved
18446    pub fn set_trunk_height_start(&mut self, v: i32) {
18447        self.trunk_height_start = ::std::option::Option::Some(v);
18448    }
18449
18450    // optional int32 trunk_height_end = 16;
18451
18452    pub fn trunk_height_end(&self) -> i32 {
18453        self.trunk_height_end.unwrap_or(0)
18454    }
18455
18456    pub fn clear_trunk_height_end(&mut self) {
18457        self.trunk_height_end = ::std::option::Option::None;
18458    }
18459
18460    pub fn has_trunk_height_end(&self) -> bool {
18461        self.trunk_height_end.is_some()
18462    }
18463
18464    // Param is passed by value, moved
18465    pub fn set_trunk_height_end(&mut self, v: i32) {
18466        self.trunk_height_end = ::std::option::Option::Some(v);
18467    }
18468
18469    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
18470        let mut fields = ::std::vec::Vec::with_capacity(16);
18471        let mut oneofs = ::std::vec::Vec::with_capacity(0);
18472        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18473            "index",
18474            |m: &TreeGrowth| { &m.index },
18475            |m: &mut TreeGrowth| { &mut m.index },
18476        ));
18477        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18478            "id",
18479            |m: &TreeGrowth| { &m.id },
18480            |m: &mut TreeGrowth| { &mut m.id },
18481        ));
18482        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18483            "name",
18484            |m: &TreeGrowth| { &m.name },
18485            |m: &mut TreeGrowth| { &mut m.name },
18486        ));
18487        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
18488            "mat",
18489            |m: &TreeGrowth| { &m.mat },
18490            |m: &mut TreeGrowth| { &mut m.mat },
18491        ));
18492        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
18493            "prints",
18494            |m: &TreeGrowth| { &m.prints },
18495            |m: &mut TreeGrowth| { &mut m.prints },
18496        ));
18497        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18498            "timing_start",
18499            |m: &TreeGrowth| { &m.timing_start },
18500            |m: &mut TreeGrowth| { &mut m.timing_start },
18501        ));
18502        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18503            "timing_end",
18504            |m: &TreeGrowth| { &m.timing_end },
18505            |m: &mut TreeGrowth| { &mut m.timing_end },
18506        ));
18507        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18508            "twigs",
18509            |m: &TreeGrowth| { &m.twigs },
18510            |m: &mut TreeGrowth| { &mut m.twigs },
18511        ));
18512        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18513            "light_branches",
18514            |m: &TreeGrowth| { &m.light_branches },
18515            |m: &mut TreeGrowth| { &mut m.light_branches },
18516        ));
18517        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18518            "heavy_branches",
18519            |m: &TreeGrowth| { &m.heavy_branches },
18520            |m: &mut TreeGrowth| { &mut m.heavy_branches },
18521        ));
18522        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18523            "trunk",
18524            |m: &TreeGrowth| { &m.trunk },
18525            |m: &mut TreeGrowth| { &mut m.trunk },
18526        ));
18527        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18528            "roots",
18529            |m: &TreeGrowth| { &m.roots },
18530            |m: &mut TreeGrowth| { &mut m.roots },
18531        ));
18532        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18533            "cap",
18534            |m: &TreeGrowth| { &m.cap },
18535            |m: &mut TreeGrowth| { &mut m.cap },
18536        ));
18537        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18538            "sapling",
18539            |m: &TreeGrowth| { &m.sapling },
18540            |m: &mut TreeGrowth| { &mut m.sapling },
18541        ));
18542        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18543            "trunk_height_start",
18544            |m: &TreeGrowth| { &m.trunk_height_start },
18545            |m: &mut TreeGrowth| { &mut m.trunk_height_start },
18546        ));
18547        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18548            "trunk_height_end",
18549            |m: &TreeGrowth| { &m.trunk_height_end },
18550            |m: &mut TreeGrowth| { &mut m.trunk_height_end },
18551        ));
18552        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<TreeGrowth>(
18553            "TreeGrowth",
18554            fields,
18555            oneofs,
18556        )
18557    }
18558}
18559
18560impl ::protobuf::Message for TreeGrowth {
18561    const NAME: &'static str = "TreeGrowth";
18562
18563    fn is_initialized(&self) -> bool {
18564        for v in &self.mat {
18565            if !v.is_initialized() {
18566                return false;
18567            }
18568        };
18569        for v in &self.prints {
18570            if !v.is_initialized() {
18571                return false;
18572            }
18573        };
18574        true
18575    }
18576
18577    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
18578        while let Some(tag) = is.read_raw_tag_or_eof()? {
18579            match tag {
18580                8 => {
18581                    self.index = ::std::option::Option::Some(is.read_int32()?);
18582                },
18583                18 => {
18584                    self.id = ::std::option::Option::Some(is.read_string()?);
18585                },
18586                26 => {
18587                    self.name = ::std::option::Option::Some(is.read_string()?);
18588                },
18589                34 => {
18590                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.mat)?;
18591                },
18592                42 => {
18593                    self.prints.push(is.read_message()?);
18594                },
18595                48 => {
18596                    self.timing_start = ::std::option::Option::Some(is.read_int32()?);
18597                },
18598                56 => {
18599                    self.timing_end = ::std::option::Option::Some(is.read_int32()?);
18600                },
18601                64 => {
18602                    self.twigs = ::std::option::Option::Some(is.read_bool()?);
18603                },
18604                72 => {
18605                    self.light_branches = ::std::option::Option::Some(is.read_bool()?);
18606                },
18607                80 => {
18608                    self.heavy_branches = ::std::option::Option::Some(is.read_bool()?);
18609                },
18610                88 => {
18611                    self.trunk = ::std::option::Option::Some(is.read_bool()?);
18612                },
18613                96 => {
18614                    self.roots = ::std::option::Option::Some(is.read_bool()?);
18615                },
18616                104 => {
18617                    self.cap = ::std::option::Option::Some(is.read_bool()?);
18618                },
18619                112 => {
18620                    self.sapling = ::std::option::Option::Some(is.read_bool()?);
18621                },
18622                120 => {
18623                    self.trunk_height_start = ::std::option::Option::Some(is.read_int32()?);
18624                },
18625                128 => {
18626                    self.trunk_height_end = ::std::option::Option::Some(is.read_int32()?);
18627                },
18628                tag => {
18629                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
18630                },
18631            };
18632        }
18633        ::std::result::Result::Ok(())
18634    }
18635
18636    // Compute sizes of nested messages
18637    #[allow(unused_variables)]
18638    fn compute_size(&self) -> u64 {
18639        let mut my_size = 0;
18640        if let Some(v) = self.index {
18641            my_size += ::protobuf::rt::int32_size(1, v);
18642        }
18643        if let Some(v) = self.id.as_ref() {
18644            my_size += ::protobuf::rt::string_size(2, &v);
18645        }
18646        if let Some(v) = self.name.as_ref() {
18647            my_size += ::protobuf::rt::string_size(3, &v);
18648        }
18649        if let Some(v) = self.mat.as_ref() {
18650            let len = v.compute_size();
18651            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
18652        }
18653        for value in &self.prints {
18654            let len = value.compute_size();
18655            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
18656        };
18657        if let Some(v) = self.timing_start {
18658            my_size += ::protobuf::rt::int32_size(6, v);
18659        }
18660        if let Some(v) = self.timing_end {
18661            my_size += ::protobuf::rt::int32_size(7, v);
18662        }
18663        if let Some(v) = self.twigs {
18664            my_size += 1 + 1;
18665        }
18666        if let Some(v) = self.light_branches {
18667            my_size += 1 + 1;
18668        }
18669        if let Some(v) = self.heavy_branches {
18670            my_size += 1 + 1;
18671        }
18672        if let Some(v) = self.trunk {
18673            my_size += 1 + 1;
18674        }
18675        if let Some(v) = self.roots {
18676            my_size += 1 + 1;
18677        }
18678        if let Some(v) = self.cap {
18679            my_size += 1 + 1;
18680        }
18681        if let Some(v) = self.sapling {
18682            my_size += 1 + 1;
18683        }
18684        if let Some(v) = self.trunk_height_start {
18685            my_size += ::protobuf::rt::int32_size(15, v);
18686        }
18687        if let Some(v) = self.trunk_height_end {
18688            my_size += ::protobuf::rt::int32_size(16, v);
18689        }
18690        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
18691        self.special_fields.cached_size().set(my_size as u32);
18692        my_size
18693    }
18694
18695    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
18696        if let Some(v) = self.index {
18697            os.write_int32(1, v)?;
18698        }
18699        if let Some(v) = self.id.as_ref() {
18700            os.write_string(2, v)?;
18701        }
18702        if let Some(v) = self.name.as_ref() {
18703            os.write_string(3, v)?;
18704        }
18705        if let Some(v) = self.mat.as_ref() {
18706            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
18707        }
18708        for v in &self.prints {
18709            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
18710        };
18711        if let Some(v) = self.timing_start {
18712            os.write_int32(6, v)?;
18713        }
18714        if let Some(v) = self.timing_end {
18715            os.write_int32(7, v)?;
18716        }
18717        if let Some(v) = self.twigs {
18718            os.write_bool(8, v)?;
18719        }
18720        if let Some(v) = self.light_branches {
18721            os.write_bool(9, v)?;
18722        }
18723        if let Some(v) = self.heavy_branches {
18724            os.write_bool(10, v)?;
18725        }
18726        if let Some(v) = self.trunk {
18727            os.write_bool(11, v)?;
18728        }
18729        if let Some(v) = self.roots {
18730            os.write_bool(12, v)?;
18731        }
18732        if let Some(v) = self.cap {
18733            os.write_bool(13, v)?;
18734        }
18735        if let Some(v) = self.sapling {
18736            os.write_bool(14, v)?;
18737        }
18738        if let Some(v) = self.trunk_height_start {
18739            os.write_int32(15, v)?;
18740        }
18741        if let Some(v) = self.trunk_height_end {
18742            os.write_int32(16, v)?;
18743        }
18744        os.write_unknown_fields(self.special_fields.unknown_fields())?;
18745        ::std::result::Result::Ok(())
18746    }
18747
18748    fn special_fields(&self) -> &::protobuf::SpecialFields {
18749        &self.special_fields
18750    }
18751
18752    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
18753        &mut self.special_fields
18754    }
18755
18756    fn new() -> TreeGrowth {
18757        TreeGrowth::new()
18758    }
18759
18760    fn clear(&mut self) {
18761        self.index = ::std::option::Option::None;
18762        self.id = ::std::option::Option::None;
18763        self.name = ::std::option::Option::None;
18764        self.mat.clear();
18765        self.prints.clear();
18766        self.timing_start = ::std::option::Option::None;
18767        self.timing_end = ::std::option::Option::None;
18768        self.twigs = ::std::option::Option::None;
18769        self.light_branches = ::std::option::Option::None;
18770        self.heavy_branches = ::std::option::Option::None;
18771        self.trunk = ::std::option::Option::None;
18772        self.roots = ::std::option::Option::None;
18773        self.cap = ::std::option::Option::None;
18774        self.sapling = ::std::option::Option::None;
18775        self.trunk_height_start = ::std::option::Option::None;
18776        self.trunk_height_end = ::std::option::Option::None;
18777        self.special_fields.clear();
18778    }
18779
18780    fn default_instance() -> &'static TreeGrowth {
18781        static instance: TreeGrowth = TreeGrowth {
18782            index: ::std::option::Option::None,
18783            id: ::std::option::Option::None,
18784            name: ::std::option::Option::None,
18785            mat: ::protobuf::MessageField::none(),
18786            prints: ::std::vec::Vec::new(),
18787            timing_start: ::std::option::Option::None,
18788            timing_end: ::std::option::Option::None,
18789            twigs: ::std::option::Option::None,
18790            light_branches: ::std::option::Option::None,
18791            heavy_branches: ::std::option::Option::None,
18792            trunk: ::std::option::Option::None,
18793            roots: ::std::option::Option::None,
18794            cap: ::std::option::Option::None,
18795            sapling: ::std::option::Option::None,
18796            trunk_height_start: ::std::option::Option::None,
18797            trunk_height_end: ::std::option::Option::None,
18798            special_fields: ::protobuf::SpecialFields::new(),
18799        };
18800        &instance
18801    }
18802}
18803
18804impl ::protobuf::MessageFull for TreeGrowth {
18805    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
18806        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
18807        descriptor.get(|| file_descriptor().message_by_package_relative_name("TreeGrowth").unwrap()).clone()
18808    }
18809}
18810
18811impl ::std::fmt::Display for TreeGrowth {
18812    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18813        ::protobuf::text_format::fmt(self, f)
18814    }
18815}
18816
18817impl ::protobuf::reflect::ProtobufValue for TreeGrowth {
18818    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
18819}
18820
18821// @@protoc_insertion_point(message:RemoteFortressReader.PlantRaw)
18822#[derive(PartialEq,Clone,Default,Debug)]
18823pub struct PlantRaw {
18824    // message fields
18825    // @@protoc_insertion_point(field:RemoteFortressReader.PlantRaw.index)
18826    pub index: ::std::option::Option<i32>,
18827    // @@protoc_insertion_point(field:RemoteFortressReader.PlantRaw.id)
18828    pub id: ::std::option::Option<::std::string::String>,
18829    // @@protoc_insertion_point(field:RemoteFortressReader.PlantRaw.name)
18830    pub name: ::std::option::Option<::std::string::String>,
18831    // @@protoc_insertion_point(field:RemoteFortressReader.PlantRaw.growths)
18832    pub growths: ::std::vec::Vec<TreeGrowth>,
18833    // @@protoc_insertion_point(field:RemoteFortressReader.PlantRaw.tile)
18834    pub tile: ::std::option::Option<i32>,
18835    // special fields
18836    // @@protoc_insertion_point(special_field:RemoteFortressReader.PlantRaw.special_fields)
18837    pub special_fields: ::protobuf::SpecialFields,
18838}
18839
18840impl<'a> ::std::default::Default for &'a PlantRaw {
18841    fn default() -> &'a PlantRaw {
18842        <PlantRaw as ::protobuf::Message>::default_instance()
18843    }
18844}
18845
18846impl PlantRaw {
18847    pub fn new() -> PlantRaw {
18848        ::std::default::Default::default()
18849    }
18850
18851    // optional int32 index = 1;
18852
18853    pub fn index(&self) -> i32 {
18854        self.index.unwrap_or(0)
18855    }
18856
18857    pub fn clear_index(&mut self) {
18858        self.index = ::std::option::Option::None;
18859    }
18860
18861    pub fn has_index(&self) -> bool {
18862        self.index.is_some()
18863    }
18864
18865    // Param is passed by value, moved
18866    pub fn set_index(&mut self, v: i32) {
18867        self.index = ::std::option::Option::Some(v);
18868    }
18869
18870    // optional string id = 2;
18871
18872    pub fn id(&self) -> &str {
18873        match self.id.as_ref() {
18874            Some(v) => v,
18875            None => "",
18876        }
18877    }
18878
18879    pub fn clear_id(&mut self) {
18880        self.id = ::std::option::Option::None;
18881    }
18882
18883    pub fn has_id(&self) -> bool {
18884        self.id.is_some()
18885    }
18886
18887    // Param is passed by value, moved
18888    pub fn set_id(&mut self, v: ::std::string::String) {
18889        self.id = ::std::option::Option::Some(v);
18890    }
18891
18892    // Mutable pointer to the field.
18893    // If field is not initialized, it is initialized with default value first.
18894    pub fn mut_id(&mut self) -> &mut ::std::string::String {
18895        if self.id.is_none() {
18896            self.id = ::std::option::Option::Some(::std::string::String::new());
18897        }
18898        self.id.as_mut().unwrap()
18899    }
18900
18901    // Take field
18902    pub fn take_id(&mut self) -> ::std::string::String {
18903        self.id.take().unwrap_or_else(|| ::std::string::String::new())
18904    }
18905
18906    // optional string name = 3;
18907
18908    pub fn name(&self) -> &str {
18909        match self.name.as_ref() {
18910            Some(v) => v,
18911            None => "",
18912        }
18913    }
18914
18915    pub fn clear_name(&mut self) {
18916        self.name = ::std::option::Option::None;
18917    }
18918
18919    pub fn has_name(&self) -> bool {
18920        self.name.is_some()
18921    }
18922
18923    // Param is passed by value, moved
18924    pub fn set_name(&mut self, v: ::std::string::String) {
18925        self.name = ::std::option::Option::Some(v);
18926    }
18927
18928    // Mutable pointer to the field.
18929    // If field is not initialized, it is initialized with default value first.
18930    pub fn mut_name(&mut self) -> &mut ::std::string::String {
18931        if self.name.is_none() {
18932            self.name = ::std::option::Option::Some(::std::string::String::new());
18933        }
18934        self.name.as_mut().unwrap()
18935    }
18936
18937    // Take field
18938    pub fn take_name(&mut self) -> ::std::string::String {
18939        self.name.take().unwrap_or_else(|| ::std::string::String::new())
18940    }
18941
18942    // optional int32 tile = 5;
18943
18944    pub fn tile(&self) -> i32 {
18945        self.tile.unwrap_or(0)
18946    }
18947
18948    pub fn clear_tile(&mut self) {
18949        self.tile = ::std::option::Option::None;
18950    }
18951
18952    pub fn has_tile(&self) -> bool {
18953        self.tile.is_some()
18954    }
18955
18956    // Param is passed by value, moved
18957    pub fn set_tile(&mut self, v: i32) {
18958        self.tile = ::std::option::Option::Some(v);
18959    }
18960
18961    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
18962        let mut fields = ::std::vec::Vec::with_capacity(5);
18963        let mut oneofs = ::std::vec::Vec::with_capacity(0);
18964        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18965            "index",
18966            |m: &PlantRaw| { &m.index },
18967            |m: &mut PlantRaw| { &mut m.index },
18968        ));
18969        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18970            "id",
18971            |m: &PlantRaw| { &m.id },
18972            |m: &mut PlantRaw| { &mut m.id },
18973        ));
18974        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18975            "name",
18976            |m: &PlantRaw| { &m.name },
18977            |m: &mut PlantRaw| { &mut m.name },
18978        ));
18979        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
18980            "growths",
18981            |m: &PlantRaw| { &m.growths },
18982            |m: &mut PlantRaw| { &mut m.growths },
18983        ));
18984        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18985            "tile",
18986            |m: &PlantRaw| { &m.tile },
18987            |m: &mut PlantRaw| { &mut m.tile },
18988        ));
18989        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PlantRaw>(
18990            "PlantRaw",
18991            fields,
18992            oneofs,
18993        )
18994    }
18995}
18996
18997impl ::protobuf::Message for PlantRaw {
18998    const NAME: &'static str = "PlantRaw";
18999
19000    fn is_initialized(&self) -> bool {
19001        for v in &self.growths {
19002            if !v.is_initialized() {
19003                return false;
19004            }
19005        };
19006        true
19007    }
19008
19009    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
19010        while let Some(tag) = is.read_raw_tag_or_eof()? {
19011            match tag {
19012                8 => {
19013                    self.index = ::std::option::Option::Some(is.read_int32()?);
19014                },
19015                18 => {
19016                    self.id = ::std::option::Option::Some(is.read_string()?);
19017                },
19018                26 => {
19019                    self.name = ::std::option::Option::Some(is.read_string()?);
19020                },
19021                34 => {
19022                    self.growths.push(is.read_message()?);
19023                },
19024                40 => {
19025                    self.tile = ::std::option::Option::Some(is.read_int32()?);
19026                },
19027                tag => {
19028                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
19029                },
19030            };
19031        }
19032        ::std::result::Result::Ok(())
19033    }
19034
19035    // Compute sizes of nested messages
19036    #[allow(unused_variables)]
19037    fn compute_size(&self) -> u64 {
19038        let mut my_size = 0;
19039        if let Some(v) = self.index {
19040            my_size += ::protobuf::rt::int32_size(1, v);
19041        }
19042        if let Some(v) = self.id.as_ref() {
19043            my_size += ::protobuf::rt::string_size(2, &v);
19044        }
19045        if let Some(v) = self.name.as_ref() {
19046            my_size += ::protobuf::rt::string_size(3, &v);
19047        }
19048        for value in &self.growths {
19049            let len = value.compute_size();
19050            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
19051        };
19052        if let Some(v) = self.tile {
19053            my_size += ::protobuf::rt::int32_size(5, v);
19054        }
19055        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
19056        self.special_fields.cached_size().set(my_size as u32);
19057        my_size
19058    }
19059
19060    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
19061        if let Some(v) = self.index {
19062            os.write_int32(1, v)?;
19063        }
19064        if let Some(v) = self.id.as_ref() {
19065            os.write_string(2, v)?;
19066        }
19067        if let Some(v) = self.name.as_ref() {
19068            os.write_string(3, v)?;
19069        }
19070        for v in &self.growths {
19071            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
19072        };
19073        if let Some(v) = self.tile {
19074            os.write_int32(5, v)?;
19075        }
19076        os.write_unknown_fields(self.special_fields.unknown_fields())?;
19077        ::std::result::Result::Ok(())
19078    }
19079
19080    fn special_fields(&self) -> &::protobuf::SpecialFields {
19081        &self.special_fields
19082    }
19083
19084    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
19085        &mut self.special_fields
19086    }
19087
19088    fn new() -> PlantRaw {
19089        PlantRaw::new()
19090    }
19091
19092    fn clear(&mut self) {
19093        self.index = ::std::option::Option::None;
19094        self.id = ::std::option::Option::None;
19095        self.name = ::std::option::Option::None;
19096        self.growths.clear();
19097        self.tile = ::std::option::Option::None;
19098        self.special_fields.clear();
19099    }
19100
19101    fn default_instance() -> &'static PlantRaw {
19102        static instance: PlantRaw = PlantRaw {
19103            index: ::std::option::Option::None,
19104            id: ::std::option::Option::None,
19105            name: ::std::option::Option::None,
19106            growths: ::std::vec::Vec::new(),
19107            tile: ::std::option::Option::None,
19108            special_fields: ::protobuf::SpecialFields::new(),
19109        };
19110        &instance
19111    }
19112}
19113
19114impl ::protobuf::MessageFull for PlantRaw {
19115    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
19116        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
19117        descriptor.get(|| file_descriptor().message_by_package_relative_name("PlantRaw").unwrap()).clone()
19118    }
19119}
19120
19121impl ::std::fmt::Display for PlantRaw {
19122    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19123        ::protobuf::text_format::fmt(self, f)
19124    }
19125}
19126
19127impl ::protobuf::reflect::ProtobufValue for PlantRaw {
19128    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
19129}
19130
19131// @@protoc_insertion_point(message:RemoteFortressReader.PlantRawList)
19132#[derive(PartialEq,Clone,Default,Debug)]
19133pub struct PlantRawList {
19134    // message fields
19135    // @@protoc_insertion_point(field:RemoteFortressReader.PlantRawList.plant_raws)
19136    pub plant_raws: ::std::vec::Vec<PlantRaw>,
19137    // special fields
19138    // @@protoc_insertion_point(special_field:RemoteFortressReader.PlantRawList.special_fields)
19139    pub special_fields: ::protobuf::SpecialFields,
19140}
19141
19142impl<'a> ::std::default::Default for &'a PlantRawList {
19143    fn default() -> &'a PlantRawList {
19144        <PlantRawList as ::protobuf::Message>::default_instance()
19145    }
19146}
19147
19148impl PlantRawList {
19149    pub fn new() -> PlantRawList {
19150        ::std::default::Default::default()
19151    }
19152
19153    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
19154        let mut fields = ::std::vec::Vec::with_capacity(1);
19155        let mut oneofs = ::std::vec::Vec::with_capacity(0);
19156        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
19157            "plant_raws",
19158            |m: &PlantRawList| { &m.plant_raws },
19159            |m: &mut PlantRawList| { &mut m.plant_raws },
19160        ));
19161        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PlantRawList>(
19162            "PlantRawList",
19163            fields,
19164            oneofs,
19165        )
19166    }
19167}
19168
19169impl ::protobuf::Message for PlantRawList {
19170    const NAME: &'static str = "PlantRawList";
19171
19172    fn is_initialized(&self) -> bool {
19173        for v in &self.plant_raws {
19174            if !v.is_initialized() {
19175                return false;
19176            }
19177        };
19178        true
19179    }
19180
19181    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
19182        while let Some(tag) = is.read_raw_tag_or_eof()? {
19183            match tag {
19184                10 => {
19185                    self.plant_raws.push(is.read_message()?);
19186                },
19187                tag => {
19188                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
19189                },
19190            };
19191        }
19192        ::std::result::Result::Ok(())
19193    }
19194
19195    // Compute sizes of nested messages
19196    #[allow(unused_variables)]
19197    fn compute_size(&self) -> u64 {
19198        let mut my_size = 0;
19199        for value in &self.plant_raws {
19200            let len = value.compute_size();
19201            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
19202        };
19203        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
19204        self.special_fields.cached_size().set(my_size as u32);
19205        my_size
19206    }
19207
19208    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
19209        for v in &self.plant_raws {
19210            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
19211        };
19212        os.write_unknown_fields(self.special_fields.unknown_fields())?;
19213        ::std::result::Result::Ok(())
19214    }
19215
19216    fn special_fields(&self) -> &::protobuf::SpecialFields {
19217        &self.special_fields
19218    }
19219
19220    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
19221        &mut self.special_fields
19222    }
19223
19224    fn new() -> PlantRawList {
19225        PlantRawList::new()
19226    }
19227
19228    fn clear(&mut self) {
19229        self.plant_raws.clear();
19230        self.special_fields.clear();
19231    }
19232
19233    fn default_instance() -> &'static PlantRawList {
19234        static instance: PlantRawList = PlantRawList {
19235            plant_raws: ::std::vec::Vec::new(),
19236            special_fields: ::protobuf::SpecialFields::new(),
19237        };
19238        &instance
19239    }
19240}
19241
19242impl ::protobuf::MessageFull for PlantRawList {
19243    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
19244        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
19245        descriptor.get(|| file_descriptor().message_by_package_relative_name("PlantRawList").unwrap()).clone()
19246    }
19247}
19248
19249impl ::std::fmt::Display for PlantRawList {
19250    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19251        ::protobuf::text_format::fmt(self, f)
19252    }
19253}
19254
19255impl ::protobuf::reflect::ProtobufValue for PlantRawList {
19256    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
19257}
19258
19259// @@protoc_insertion_point(message:RemoteFortressReader.ScreenTile)
19260#[derive(PartialEq,Clone,Default,Debug)]
19261pub struct ScreenTile {
19262    // message fields
19263    // @@protoc_insertion_point(field:RemoteFortressReader.ScreenTile.character)
19264    pub character: ::std::option::Option<u32>,
19265    // @@protoc_insertion_point(field:RemoteFortressReader.ScreenTile.foreground)
19266    pub foreground: ::std::option::Option<u32>,
19267    // @@protoc_insertion_point(field:RemoteFortressReader.ScreenTile.background)
19268    pub background: ::std::option::Option<u32>,
19269    // special fields
19270    // @@protoc_insertion_point(special_field:RemoteFortressReader.ScreenTile.special_fields)
19271    pub special_fields: ::protobuf::SpecialFields,
19272}
19273
19274impl<'a> ::std::default::Default for &'a ScreenTile {
19275    fn default() -> &'a ScreenTile {
19276        <ScreenTile as ::protobuf::Message>::default_instance()
19277    }
19278}
19279
19280impl ScreenTile {
19281    pub fn new() -> ScreenTile {
19282        ::std::default::Default::default()
19283    }
19284
19285    // optional uint32 character = 1;
19286
19287    pub fn character(&self) -> u32 {
19288        self.character.unwrap_or(0)
19289    }
19290
19291    pub fn clear_character(&mut self) {
19292        self.character = ::std::option::Option::None;
19293    }
19294
19295    pub fn has_character(&self) -> bool {
19296        self.character.is_some()
19297    }
19298
19299    // Param is passed by value, moved
19300    pub fn set_character(&mut self, v: u32) {
19301        self.character = ::std::option::Option::Some(v);
19302    }
19303
19304    // optional uint32 foreground = 2;
19305
19306    pub fn foreground(&self) -> u32 {
19307        self.foreground.unwrap_or(0)
19308    }
19309
19310    pub fn clear_foreground(&mut self) {
19311        self.foreground = ::std::option::Option::None;
19312    }
19313
19314    pub fn has_foreground(&self) -> bool {
19315        self.foreground.is_some()
19316    }
19317
19318    // Param is passed by value, moved
19319    pub fn set_foreground(&mut self, v: u32) {
19320        self.foreground = ::std::option::Option::Some(v);
19321    }
19322
19323    // optional uint32 background = 3;
19324
19325    pub fn background(&self) -> u32 {
19326        self.background.unwrap_or(0)
19327    }
19328
19329    pub fn clear_background(&mut self) {
19330        self.background = ::std::option::Option::None;
19331    }
19332
19333    pub fn has_background(&self) -> bool {
19334        self.background.is_some()
19335    }
19336
19337    // Param is passed by value, moved
19338    pub fn set_background(&mut self, v: u32) {
19339        self.background = ::std::option::Option::Some(v);
19340    }
19341
19342    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
19343        let mut fields = ::std::vec::Vec::with_capacity(3);
19344        let mut oneofs = ::std::vec::Vec::with_capacity(0);
19345        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19346            "character",
19347            |m: &ScreenTile| { &m.character },
19348            |m: &mut ScreenTile| { &mut m.character },
19349        ));
19350        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19351            "foreground",
19352            |m: &ScreenTile| { &m.foreground },
19353            |m: &mut ScreenTile| { &mut m.foreground },
19354        ));
19355        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19356            "background",
19357            |m: &ScreenTile| { &m.background },
19358            |m: &mut ScreenTile| { &mut m.background },
19359        ));
19360        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ScreenTile>(
19361            "ScreenTile",
19362            fields,
19363            oneofs,
19364        )
19365    }
19366}
19367
19368impl ::protobuf::Message for ScreenTile {
19369    const NAME: &'static str = "ScreenTile";
19370
19371    fn is_initialized(&self) -> bool {
19372        true
19373    }
19374
19375    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
19376        while let Some(tag) = is.read_raw_tag_or_eof()? {
19377            match tag {
19378                8 => {
19379                    self.character = ::std::option::Option::Some(is.read_uint32()?);
19380                },
19381                16 => {
19382                    self.foreground = ::std::option::Option::Some(is.read_uint32()?);
19383                },
19384                24 => {
19385                    self.background = ::std::option::Option::Some(is.read_uint32()?);
19386                },
19387                tag => {
19388                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
19389                },
19390            };
19391        }
19392        ::std::result::Result::Ok(())
19393    }
19394
19395    // Compute sizes of nested messages
19396    #[allow(unused_variables)]
19397    fn compute_size(&self) -> u64 {
19398        let mut my_size = 0;
19399        if let Some(v) = self.character {
19400            my_size += ::protobuf::rt::uint32_size(1, v);
19401        }
19402        if let Some(v) = self.foreground {
19403            my_size += ::protobuf::rt::uint32_size(2, v);
19404        }
19405        if let Some(v) = self.background {
19406            my_size += ::protobuf::rt::uint32_size(3, v);
19407        }
19408        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
19409        self.special_fields.cached_size().set(my_size as u32);
19410        my_size
19411    }
19412
19413    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
19414        if let Some(v) = self.character {
19415            os.write_uint32(1, v)?;
19416        }
19417        if let Some(v) = self.foreground {
19418            os.write_uint32(2, v)?;
19419        }
19420        if let Some(v) = self.background {
19421            os.write_uint32(3, v)?;
19422        }
19423        os.write_unknown_fields(self.special_fields.unknown_fields())?;
19424        ::std::result::Result::Ok(())
19425    }
19426
19427    fn special_fields(&self) -> &::protobuf::SpecialFields {
19428        &self.special_fields
19429    }
19430
19431    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
19432        &mut self.special_fields
19433    }
19434
19435    fn new() -> ScreenTile {
19436        ScreenTile::new()
19437    }
19438
19439    fn clear(&mut self) {
19440        self.character = ::std::option::Option::None;
19441        self.foreground = ::std::option::Option::None;
19442        self.background = ::std::option::Option::None;
19443        self.special_fields.clear();
19444    }
19445
19446    fn default_instance() -> &'static ScreenTile {
19447        static instance: ScreenTile = ScreenTile {
19448            character: ::std::option::Option::None,
19449            foreground: ::std::option::Option::None,
19450            background: ::std::option::Option::None,
19451            special_fields: ::protobuf::SpecialFields::new(),
19452        };
19453        &instance
19454    }
19455}
19456
19457impl ::protobuf::MessageFull for ScreenTile {
19458    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
19459        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
19460        descriptor.get(|| file_descriptor().message_by_package_relative_name("ScreenTile").unwrap()).clone()
19461    }
19462}
19463
19464impl ::std::fmt::Display for ScreenTile {
19465    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19466        ::protobuf::text_format::fmt(self, f)
19467    }
19468}
19469
19470impl ::protobuf::reflect::ProtobufValue for ScreenTile {
19471    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
19472}
19473
19474// @@protoc_insertion_point(message:RemoteFortressReader.ScreenCapture)
19475#[derive(PartialEq,Clone,Default,Debug)]
19476pub struct ScreenCapture {
19477    // message fields
19478    // @@protoc_insertion_point(field:RemoteFortressReader.ScreenCapture.width)
19479    pub width: ::std::option::Option<u32>,
19480    // @@protoc_insertion_point(field:RemoteFortressReader.ScreenCapture.height)
19481    pub height: ::std::option::Option<u32>,
19482    // @@protoc_insertion_point(field:RemoteFortressReader.ScreenCapture.tiles)
19483    pub tiles: ::std::vec::Vec<ScreenTile>,
19484    // special fields
19485    // @@protoc_insertion_point(special_field:RemoteFortressReader.ScreenCapture.special_fields)
19486    pub special_fields: ::protobuf::SpecialFields,
19487}
19488
19489impl<'a> ::std::default::Default for &'a ScreenCapture {
19490    fn default() -> &'a ScreenCapture {
19491        <ScreenCapture as ::protobuf::Message>::default_instance()
19492    }
19493}
19494
19495impl ScreenCapture {
19496    pub fn new() -> ScreenCapture {
19497        ::std::default::Default::default()
19498    }
19499
19500    // optional uint32 width = 1;
19501
19502    pub fn width(&self) -> u32 {
19503        self.width.unwrap_or(0)
19504    }
19505
19506    pub fn clear_width(&mut self) {
19507        self.width = ::std::option::Option::None;
19508    }
19509
19510    pub fn has_width(&self) -> bool {
19511        self.width.is_some()
19512    }
19513
19514    // Param is passed by value, moved
19515    pub fn set_width(&mut self, v: u32) {
19516        self.width = ::std::option::Option::Some(v);
19517    }
19518
19519    // optional uint32 height = 2;
19520
19521    pub fn height(&self) -> u32 {
19522        self.height.unwrap_or(0)
19523    }
19524
19525    pub fn clear_height(&mut self) {
19526        self.height = ::std::option::Option::None;
19527    }
19528
19529    pub fn has_height(&self) -> bool {
19530        self.height.is_some()
19531    }
19532
19533    // Param is passed by value, moved
19534    pub fn set_height(&mut self, v: u32) {
19535        self.height = ::std::option::Option::Some(v);
19536    }
19537
19538    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
19539        let mut fields = ::std::vec::Vec::with_capacity(3);
19540        let mut oneofs = ::std::vec::Vec::with_capacity(0);
19541        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19542            "width",
19543            |m: &ScreenCapture| { &m.width },
19544            |m: &mut ScreenCapture| { &mut m.width },
19545        ));
19546        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19547            "height",
19548            |m: &ScreenCapture| { &m.height },
19549            |m: &mut ScreenCapture| { &mut m.height },
19550        ));
19551        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
19552            "tiles",
19553            |m: &ScreenCapture| { &m.tiles },
19554            |m: &mut ScreenCapture| { &mut m.tiles },
19555        ));
19556        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ScreenCapture>(
19557            "ScreenCapture",
19558            fields,
19559            oneofs,
19560        )
19561    }
19562}
19563
19564impl ::protobuf::Message for ScreenCapture {
19565    const NAME: &'static str = "ScreenCapture";
19566
19567    fn is_initialized(&self) -> bool {
19568        true
19569    }
19570
19571    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
19572        while let Some(tag) = is.read_raw_tag_or_eof()? {
19573            match tag {
19574                8 => {
19575                    self.width = ::std::option::Option::Some(is.read_uint32()?);
19576                },
19577                16 => {
19578                    self.height = ::std::option::Option::Some(is.read_uint32()?);
19579                },
19580                26 => {
19581                    self.tiles.push(is.read_message()?);
19582                },
19583                tag => {
19584                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
19585                },
19586            };
19587        }
19588        ::std::result::Result::Ok(())
19589    }
19590
19591    // Compute sizes of nested messages
19592    #[allow(unused_variables)]
19593    fn compute_size(&self) -> u64 {
19594        let mut my_size = 0;
19595        if let Some(v) = self.width {
19596            my_size += ::protobuf::rt::uint32_size(1, v);
19597        }
19598        if let Some(v) = self.height {
19599            my_size += ::protobuf::rt::uint32_size(2, v);
19600        }
19601        for value in &self.tiles {
19602            let len = value.compute_size();
19603            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
19604        };
19605        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
19606        self.special_fields.cached_size().set(my_size as u32);
19607        my_size
19608    }
19609
19610    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
19611        if let Some(v) = self.width {
19612            os.write_uint32(1, v)?;
19613        }
19614        if let Some(v) = self.height {
19615            os.write_uint32(2, v)?;
19616        }
19617        for v in &self.tiles {
19618            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
19619        };
19620        os.write_unknown_fields(self.special_fields.unknown_fields())?;
19621        ::std::result::Result::Ok(())
19622    }
19623
19624    fn special_fields(&self) -> &::protobuf::SpecialFields {
19625        &self.special_fields
19626    }
19627
19628    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
19629        &mut self.special_fields
19630    }
19631
19632    fn new() -> ScreenCapture {
19633        ScreenCapture::new()
19634    }
19635
19636    fn clear(&mut self) {
19637        self.width = ::std::option::Option::None;
19638        self.height = ::std::option::Option::None;
19639        self.tiles.clear();
19640        self.special_fields.clear();
19641    }
19642
19643    fn default_instance() -> &'static ScreenCapture {
19644        static instance: ScreenCapture = ScreenCapture {
19645            width: ::std::option::Option::None,
19646            height: ::std::option::Option::None,
19647            tiles: ::std::vec::Vec::new(),
19648            special_fields: ::protobuf::SpecialFields::new(),
19649        };
19650        &instance
19651    }
19652}
19653
19654impl ::protobuf::MessageFull for ScreenCapture {
19655    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
19656        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
19657        descriptor.get(|| file_descriptor().message_by_package_relative_name("ScreenCapture").unwrap()).clone()
19658    }
19659}
19660
19661impl ::std::fmt::Display for ScreenCapture {
19662    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19663        ::protobuf::text_format::fmt(self, f)
19664    }
19665}
19666
19667impl ::protobuf::reflect::ProtobufValue for ScreenCapture {
19668    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
19669}
19670
19671// @@protoc_insertion_point(message:RemoteFortressReader.KeyboardEvent)
19672#[derive(PartialEq,Clone,Default,Debug)]
19673pub struct KeyboardEvent {
19674    // message fields
19675    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.type)
19676    pub type_: ::std::option::Option<u32>,
19677    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.which)
19678    pub which: ::std::option::Option<u32>,
19679    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.state)
19680    pub state: ::std::option::Option<u32>,
19681    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.scancode)
19682    pub scancode: ::std::option::Option<u32>,
19683    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.sym)
19684    pub sym: ::std::option::Option<u32>,
19685    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.mod)
19686    pub mod_: ::std::option::Option<u32>,
19687    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.unicode)
19688    pub unicode: ::std::option::Option<u32>,
19689    // special fields
19690    // @@protoc_insertion_point(special_field:RemoteFortressReader.KeyboardEvent.special_fields)
19691    pub special_fields: ::protobuf::SpecialFields,
19692}
19693
19694impl<'a> ::std::default::Default for &'a KeyboardEvent {
19695    fn default() -> &'a KeyboardEvent {
19696        <KeyboardEvent as ::protobuf::Message>::default_instance()
19697    }
19698}
19699
19700impl KeyboardEvent {
19701    pub fn new() -> KeyboardEvent {
19702        ::std::default::Default::default()
19703    }
19704
19705    // optional uint32 type = 1;
19706
19707    pub fn type_(&self) -> u32 {
19708        self.type_.unwrap_or(0)
19709    }
19710
19711    pub fn clear_type_(&mut self) {
19712        self.type_ = ::std::option::Option::None;
19713    }
19714
19715    pub fn has_type(&self) -> bool {
19716        self.type_.is_some()
19717    }
19718
19719    // Param is passed by value, moved
19720    pub fn set_type(&mut self, v: u32) {
19721        self.type_ = ::std::option::Option::Some(v);
19722    }
19723
19724    // optional uint32 which = 2;
19725
19726    pub fn which(&self) -> u32 {
19727        self.which.unwrap_or(0)
19728    }
19729
19730    pub fn clear_which(&mut self) {
19731        self.which = ::std::option::Option::None;
19732    }
19733
19734    pub fn has_which(&self) -> bool {
19735        self.which.is_some()
19736    }
19737
19738    // Param is passed by value, moved
19739    pub fn set_which(&mut self, v: u32) {
19740        self.which = ::std::option::Option::Some(v);
19741    }
19742
19743    // optional uint32 state = 3;
19744
19745    pub fn state(&self) -> u32 {
19746        self.state.unwrap_or(0)
19747    }
19748
19749    pub fn clear_state(&mut self) {
19750        self.state = ::std::option::Option::None;
19751    }
19752
19753    pub fn has_state(&self) -> bool {
19754        self.state.is_some()
19755    }
19756
19757    // Param is passed by value, moved
19758    pub fn set_state(&mut self, v: u32) {
19759        self.state = ::std::option::Option::Some(v);
19760    }
19761
19762    // optional uint32 scancode = 4;
19763
19764    pub fn scancode(&self) -> u32 {
19765        self.scancode.unwrap_or(0)
19766    }
19767
19768    pub fn clear_scancode(&mut self) {
19769        self.scancode = ::std::option::Option::None;
19770    }
19771
19772    pub fn has_scancode(&self) -> bool {
19773        self.scancode.is_some()
19774    }
19775
19776    // Param is passed by value, moved
19777    pub fn set_scancode(&mut self, v: u32) {
19778        self.scancode = ::std::option::Option::Some(v);
19779    }
19780
19781    // optional uint32 sym = 5;
19782
19783    pub fn sym(&self) -> u32 {
19784        self.sym.unwrap_or(0)
19785    }
19786
19787    pub fn clear_sym(&mut self) {
19788        self.sym = ::std::option::Option::None;
19789    }
19790
19791    pub fn has_sym(&self) -> bool {
19792        self.sym.is_some()
19793    }
19794
19795    // Param is passed by value, moved
19796    pub fn set_sym(&mut self, v: u32) {
19797        self.sym = ::std::option::Option::Some(v);
19798    }
19799
19800    // optional uint32 mod = 6;
19801
19802    pub fn mod_(&self) -> u32 {
19803        self.mod_.unwrap_or(0)
19804    }
19805
19806    pub fn clear_mod_(&mut self) {
19807        self.mod_ = ::std::option::Option::None;
19808    }
19809
19810    pub fn has_mod(&self) -> bool {
19811        self.mod_.is_some()
19812    }
19813
19814    // Param is passed by value, moved
19815    pub fn set_mod(&mut self, v: u32) {
19816        self.mod_ = ::std::option::Option::Some(v);
19817    }
19818
19819    // optional uint32 unicode = 7;
19820
19821    pub fn unicode(&self) -> u32 {
19822        self.unicode.unwrap_or(0)
19823    }
19824
19825    pub fn clear_unicode(&mut self) {
19826        self.unicode = ::std::option::Option::None;
19827    }
19828
19829    pub fn has_unicode(&self) -> bool {
19830        self.unicode.is_some()
19831    }
19832
19833    // Param is passed by value, moved
19834    pub fn set_unicode(&mut self, v: u32) {
19835        self.unicode = ::std::option::Option::Some(v);
19836    }
19837
19838    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
19839        let mut fields = ::std::vec::Vec::with_capacity(7);
19840        let mut oneofs = ::std::vec::Vec::with_capacity(0);
19841        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19842            "type",
19843            |m: &KeyboardEvent| { &m.type_ },
19844            |m: &mut KeyboardEvent| { &mut m.type_ },
19845        ));
19846        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19847            "which",
19848            |m: &KeyboardEvent| { &m.which },
19849            |m: &mut KeyboardEvent| { &mut m.which },
19850        ));
19851        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19852            "state",
19853            |m: &KeyboardEvent| { &m.state },
19854            |m: &mut KeyboardEvent| { &mut m.state },
19855        ));
19856        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19857            "scancode",
19858            |m: &KeyboardEvent| { &m.scancode },
19859            |m: &mut KeyboardEvent| { &mut m.scancode },
19860        ));
19861        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19862            "sym",
19863            |m: &KeyboardEvent| { &m.sym },
19864            |m: &mut KeyboardEvent| { &mut m.sym },
19865        ));
19866        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19867            "mod",
19868            |m: &KeyboardEvent| { &m.mod_ },
19869            |m: &mut KeyboardEvent| { &mut m.mod_ },
19870        ));
19871        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19872            "unicode",
19873            |m: &KeyboardEvent| { &m.unicode },
19874            |m: &mut KeyboardEvent| { &mut m.unicode },
19875        ));
19876        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<KeyboardEvent>(
19877            "KeyboardEvent",
19878            fields,
19879            oneofs,
19880        )
19881    }
19882}
19883
19884impl ::protobuf::Message for KeyboardEvent {
19885    const NAME: &'static str = "KeyboardEvent";
19886
19887    fn is_initialized(&self) -> bool {
19888        true
19889    }
19890
19891    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
19892        while let Some(tag) = is.read_raw_tag_or_eof()? {
19893            match tag {
19894                8 => {
19895                    self.type_ = ::std::option::Option::Some(is.read_uint32()?);
19896                },
19897                16 => {
19898                    self.which = ::std::option::Option::Some(is.read_uint32()?);
19899                },
19900                24 => {
19901                    self.state = ::std::option::Option::Some(is.read_uint32()?);
19902                },
19903                32 => {
19904                    self.scancode = ::std::option::Option::Some(is.read_uint32()?);
19905                },
19906                40 => {
19907                    self.sym = ::std::option::Option::Some(is.read_uint32()?);
19908                },
19909                48 => {
19910                    self.mod_ = ::std::option::Option::Some(is.read_uint32()?);
19911                },
19912                56 => {
19913                    self.unicode = ::std::option::Option::Some(is.read_uint32()?);
19914                },
19915                tag => {
19916                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
19917                },
19918            };
19919        }
19920        ::std::result::Result::Ok(())
19921    }
19922
19923    // Compute sizes of nested messages
19924    #[allow(unused_variables)]
19925    fn compute_size(&self) -> u64 {
19926        let mut my_size = 0;
19927        if let Some(v) = self.type_ {
19928            my_size += ::protobuf::rt::uint32_size(1, v);
19929        }
19930        if let Some(v) = self.which {
19931            my_size += ::protobuf::rt::uint32_size(2, v);
19932        }
19933        if let Some(v) = self.state {
19934            my_size += ::protobuf::rt::uint32_size(3, v);
19935        }
19936        if let Some(v) = self.scancode {
19937            my_size += ::protobuf::rt::uint32_size(4, v);
19938        }
19939        if let Some(v) = self.sym {
19940            my_size += ::protobuf::rt::uint32_size(5, v);
19941        }
19942        if let Some(v) = self.mod_ {
19943            my_size += ::protobuf::rt::uint32_size(6, v);
19944        }
19945        if let Some(v) = self.unicode {
19946            my_size += ::protobuf::rt::uint32_size(7, v);
19947        }
19948        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
19949        self.special_fields.cached_size().set(my_size as u32);
19950        my_size
19951    }
19952
19953    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
19954        if let Some(v) = self.type_ {
19955            os.write_uint32(1, v)?;
19956        }
19957        if let Some(v) = self.which {
19958            os.write_uint32(2, v)?;
19959        }
19960        if let Some(v) = self.state {
19961            os.write_uint32(3, v)?;
19962        }
19963        if let Some(v) = self.scancode {
19964            os.write_uint32(4, v)?;
19965        }
19966        if let Some(v) = self.sym {
19967            os.write_uint32(5, v)?;
19968        }
19969        if let Some(v) = self.mod_ {
19970            os.write_uint32(6, v)?;
19971        }
19972        if let Some(v) = self.unicode {
19973            os.write_uint32(7, v)?;
19974        }
19975        os.write_unknown_fields(self.special_fields.unknown_fields())?;
19976        ::std::result::Result::Ok(())
19977    }
19978
19979    fn special_fields(&self) -> &::protobuf::SpecialFields {
19980        &self.special_fields
19981    }
19982
19983    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
19984        &mut self.special_fields
19985    }
19986
19987    fn new() -> KeyboardEvent {
19988        KeyboardEvent::new()
19989    }
19990
19991    fn clear(&mut self) {
19992        self.type_ = ::std::option::Option::None;
19993        self.which = ::std::option::Option::None;
19994        self.state = ::std::option::Option::None;
19995        self.scancode = ::std::option::Option::None;
19996        self.sym = ::std::option::Option::None;
19997        self.mod_ = ::std::option::Option::None;
19998        self.unicode = ::std::option::Option::None;
19999        self.special_fields.clear();
20000    }
20001
20002    fn default_instance() -> &'static KeyboardEvent {
20003        static instance: KeyboardEvent = KeyboardEvent {
20004            type_: ::std::option::Option::None,
20005            which: ::std::option::Option::None,
20006            state: ::std::option::Option::None,
20007            scancode: ::std::option::Option::None,
20008            sym: ::std::option::Option::None,
20009            mod_: ::std::option::Option::None,
20010            unicode: ::std::option::Option::None,
20011            special_fields: ::protobuf::SpecialFields::new(),
20012        };
20013        &instance
20014    }
20015}
20016
20017impl ::protobuf::MessageFull for KeyboardEvent {
20018    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
20019        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
20020        descriptor.get(|| file_descriptor().message_by_package_relative_name("KeyboardEvent").unwrap()).clone()
20021    }
20022}
20023
20024impl ::std::fmt::Display for KeyboardEvent {
20025    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20026        ::protobuf::text_format::fmt(self, f)
20027    }
20028}
20029
20030impl ::protobuf::reflect::ProtobufValue for KeyboardEvent {
20031    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
20032}
20033
20034// @@protoc_insertion_point(message:RemoteFortressReader.DigCommand)
20035#[derive(PartialEq,Clone,Default,Debug)]
20036pub struct DigCommand {
20037    // message fields
20038    // @@protoc_insertion_point(field:RemoteFortressReader.DigCommand.designation)
20039    pub designation: ::std::option::Option<::protobuf::EnumOrUnknown<TileDigDesignation>>,
20040    // @@protoc_insertion_point(field:RemoteFortressReader.DigCommand.locations)
20041    pub locations: ::std::vec::Vec<Coord>,
20042    // special fields
20043    // @@protoc_insertion_point(special_field:RemoteFortressReader.DigCommand.special_fields)
20044    pub special_fields: ::protobuf::SpecialFields,
20045}
20046
20047impl<'a> ::std::default::Default for &'a DigCommand {
20048    fn default() -> &'a DigCommand {
20049        <DigCommand as ::protobuf::Message>::default_instance()
20050    }
20051}
20052
20053impl DigCommand {
20054    pub fn new() -> DigCommand {
20055        ::std::default::Default::default()
20056    }
20057
20058    // optional .RemoteFortressReader.TileDigDesignation designation = 1;
20059
20060    pub fn designation(&self) -> TileDigDesignation {
20061        match self.designation {
20062            Some(e) => e.enum_value_or(TileDigDesignation::NO_DIG),
20063            None => TileDigDesignation::NO_DIG,
20064        }
20065    }
20066
20067    pub fn clear_designation(&mut self) {
20068        self.designation = ::std::option::Option::None;
20069    }
20070
20071    pub fn has_designation(&self) -> bool {
20072        self.designation.is_some()
20073    }
20074
20075    // Param is passed by value, moved
20076    pub fn set_designation(&mut self, v: TileDigDesignation) {
20077        self.designation = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
20078    }
20079
20080    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
20081        let mut fields = ::std::vec::Vec::with_capacity(2);
20082        let mut oneofs = ::std::vec::Vec::with_capacity(0);
20083        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20084            "designation",
20085            |m: &DigCommand| { &m.designation },
20086            |m: &mut DigCommand| { &mut m.designation },
20087        ));
20088        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
20089            "locations",
20090            |m: &DigCommand| { &m.locations },
20091            |m: &mut DigCommand| { &mut m.locations },
20092        ));
20093        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<DigCommand>(
20094            "DigCommand",
20095            fields,
20096            oneofs,
20097        )
20098    }
20099}
20100
20101impl ::protobuf::Message for DigCommand {
20102    const NAME: &'static str = "DigCommand";
20103
20104    fn is_initialized(&self) -> bool {
20105        true
20106    }
20107
20108    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
20109        while let Some(tag) = is.read_raw_tag_or_eof()? {
20110            match tag {
20111                8 => {
20112                    self.designation = ::std::option::Option::Some(is.read_enum_or_unknown()?);
20113                },
20114                18 => {
20115                    self.locations.push(is.read_message()?);
20116                },
20117                tag => {
20118                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
20119                },
20120            };
20121        }
20122        ::std::result::Result::Ok(())
20123    }
20124
20125    // Compute sizes of nested messages
20126    #[allow(unused_variables)]
20127    fn compute_size(&self) -> u64 {
20128        let mut my_size = 0;
20129        if let Some(v) = self.designation {
20130            my_size += ::protobuf::rt::int32_size(1, v.value());
20131        }
20132        for value in &self.locations {
20133            let len = value.compute_size();
20134            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
20135        };
20136        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
20137        self.special_fields.cached_size().set(my_size as u32);
20138        my_size
20139    }
20140
20141    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
20142        if let Some(v) = self.designation {
20143            os.write_enum(1, ::protobuf::EnumOrUnknown::value(&v))?;
20144        }
20145        for v in &self.locations {
20146            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
20147        };
20148        os.write_unknown_fields(self.special_fields.unknown_fields())?;
20149        ::std::result::Result::Ok(())
20150    }
20151
20152    fn special_fields(&self) -> &::protobuf::SpecialFields {
20153        &self.special_fields
20154    }
20155
20156    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
20157        &mut self.special_fields
20158    }
20159
20160    fn new() -> DigCommand {
20161        DigCommand::new()
20162    }
20163
20164    fn clear(&mut self) {
20165        self.designation = ::std::option::Option::None;
20166        self.locations.clear();
20167        self.special_fields.clear();
20168    }
20169
20170    fn default_instance() -> &'static DigCommand {
20171        static instance: DigCommand = DigCommand {
20172            designation: ::std::option::Option::None,
20173            locations: ::std::vec::Vec::new(),
20174            special_fields: ::protobuf::SpecialFields::new(),
20175        };
20176        &instance
20177    }
20178}
20179
20180impl ::protobuf::MessageFull for DigCommand {
20181    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
20182        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
20183        descriptor.get(|| file_descriptor().message_by_package_relative_name("DigCommand").unwrap()).clone()
20184    }
20185}
20186
20187impl ::std::fmt::Display for DigCommand {
20188    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20189        ::protobuf::text_format::fmt(self, f)
20190    }
20191}
20192
20193impl ::protobuf::reflect::ProtobufValue for DigCommand {
20194    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
20195}
20196
20197// @@protoc_insertion_point(message:RemoteFortressReader.SingleBool)
20198#[derive(PartialEq,Clone,Default,Debug)]
20199pub struct SingleBool {
20200    // message fields
20201    // @@protoc_insertion_point(field:RemoteFortressReader.SingleBool.Value)
20202    pub Value: ::std::option::Option<bool>,
20203    // special fields
20204    // @@protoc_insertion_point(special_field:RemoteFortressReader.SingleBool.special_fields)
20205    pub special_fields: ::protobuf::SpecialFields,
20206}
20207
20208impl<'a> ::std::default::Default for &'a SingleBool {
20209    fn default() -> &'a SingleBool {
20210        <SingleBool as ::protobuf::Message>::default_instance()
20211    }
20212}
20213
20214impl SingleBool {
20215    pub fn new() -> SingleBool {
20216        ::std::default::Default::default()
20217    }
20218
20219    // optional bool Value = 1;
20220
20221    pub fn Value(&self) -> bool {
20222        self.Value.unwrap_or(false)
20223    }
20224
20225    pub fn clear_Value(&mut self) {
20226        self.Value = ::std::option::Option::None;
20227    }
20228
20229    pub fn has_Value(&self) -> bool {
20230        self.Value.is_some()
20231    }
20232
20233    // Param is passed by value, moved
20234    pub fn set_Value(&mut self, v: bool) {
20235        self.Value = ::std::option::Option::Some(v);
20236    }
20237
20238    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
20239        let mut fields = ::std::vec::Vec::with_capacity(1);
20240        let mut oneofs = ::std::vec::Vec::with_capacity(0);
20241        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20242            "Value",
20243            |m: &SingleBool| { &m.Value },
20244            |m: &mut SingleBool| { &mut m.Value },
20245        ));
20246        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SingleBool>(
20247            "SingleBool",
20248            fields,
20249            oneofs,
20250        )
20251    }
20252}
20253
20254impl ::protobuf::Message for SingleBool {
20255    const NAME: &'static str = "SingleBool";
20256
20257    fn is_initialized(&self) -> bool {
20258        true
20259    }
20260
20261    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
20262        while let Some(tag) = is.read_raw_tag_or_eof()? {
20263            match tag {
20264                8 => {
20265                    self.Value = ::std::option::Option::Some(is.read_bool()?);
20266                },
20267                tag => {
20268                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
20269                },
20270            };
20271        }
20272        ::std::result::Result::Ok(())
20273    }
20274
20275    // Compute sizes of nested messages
20276    #[allow(unused_variables)]
20277    fn compute_size(&self) -> u64 {
20278        let mut my_size = 0;
20279        if let Some(v) = self.Value {
20280            my_size += 1 + 1;
20281        }
20282        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
20283        self.special_fields.cached_size().set(my_size as u32);
20284        my_size
20285    }
20286
20287    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
20288        if let Some(v) = self.Value {
20289            os.write_bool(1, v)?;
20290        }
20291        os.write_unknown_fields(self.special_fields.unknown_fields())?;
20292        ::std::result::Result::Ok(())
20293    }
20294
20295    fn special_fields(&self) -> &::protobuf::SpecialFields {
20296        &self.special_fields
20297    }
20298
20299    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
20300        &mut self.special_fields
20301    }
20302
20303    fn new() -> SingleBool {
20304        SingleBool::new()
20305    }
20306
20307    fn clear(&mut self) {
20308        self.Value = ::std::option::Option::None;
20309        self.special_fields.clear();
20310    }
20311
20312    fn default_instance() -> &'static SingleBool {
20313        static instance: SingleBool = SingleBool {
20314            Value: ::std::option::Option::None,
20315            special_fields: ::protobuf::SpecialFields::new(),
20316        };
20317        &instance
20318    }
20319}
20320
20321impl ::protobuf::MessageFull for SingleBool {
20322    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
20323        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
20324        descriptor.get(|| file_descriptor().message_by_package_relative_name("SingleBool").unwrap()).clone()
20325    }
20326}
20327
20328impl ::std::fmt::Display for SingleBool {
20329    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20330        ::protobuf::text_format::fmt(self, f)
20331    }
20332}
20333
20334impl ::protobuf::reflect::ProtobufValue for SingleBool {
20335    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
20336}
20337
20338// @@protoc_insertion_point(message:RemoteFortressReader.VersionInfo)
20339#[derive(PartialEq,Clone,Default,Debug)]
20340pub struct VersionInfo {
20341    // message fields
20342    // @@protoc_insertion_point(field:RemoteFortressReader.VersionInfo.dwarf_fortress_version)
20343    pub dwarf_fortress_version: ::std::option::Option<::std::string::String>,
20344    // @@protoc_insertion_point(field:RemoteFortressReader.VersionInfo.dfhack_version)
20345    pub dfhack_version: ::std::option::Option<::std::string::String>,
20346    // @@protoc_insertion_point(field:RemoteFortressReader.VersionInfo.remote_fortress_reader_version)
20347    pub remote_fortress_reader_version: ::std::option::Option<::std::string::String>,
20348    // special fields
20349    // @@protoc_insertion_point(special_field:RemoteFortressReader.VersionInfo.special_fields)
20350    pub special_fields: ::protobuf::SpecialFields,
20351}
20352
20353impl<'a> ::std::default::Default for &'a VersionInfo {
20354    fn default() -> &'a VersionInfo {
20355        <VersionInfo as ::protobuf::Message>::default_instance()
20356    }
20357}
20358
20359impl VersionInfo {
20360    pub fn new() -> VersionInfo {
20361        ::std::default::Default::default()
20362    }
20363
20364    // optional string dwarf_fortress_version = 1;
20365
20366    pub fn dwarf_fortress_version(&self) -> &str {
20367        match self.dwarf_fortress_version.as_ref() {
20368            Some(v) => v,
20369            None => "",
20370        }
20371    }
20372
20373    pub fn clear_dwarf_fortress_version(&mut self) {
20374        self.dwarf_fortress_version = ::std::option::Option::None;
20375    }
20376
20377    pub fn has_dwarf_fortress_version(&self) -> bool {
20378        self.dwarf_fortress_version.is_some()
20379    }
20380
20381    // Param is passed by value, moved
20382    pub fn set_dwarf_fortress_version(&mut self, v: ::std::string::String) {
20383        self.dwarf_fortress_version = ::std::option::Option::Some(v);
20384    }
20385
20386    // Mutable pointer to the field.
20387    // If field is not initialized, it is initialized with default value first.
20388    pub fn mut_dwarf_fortress_version(&mut self) -> &mut ::std::string::String {
20389        if self.dwarf_fortress_version.is_none() {
20390            self.dwarf_fortress_version = ::std::option::Option::Some(::std::string::String::new());
20391        }
20392        self.dwarf_fortress_version.as_mut().unwrap()
20393    }
20394
20395    // Take field
20396    pub fn take_dwarf_fortress_version(&mut self) -> ::std::string::String {
20397        self.dwarf_fortress_version.take().unwrap_or_else(|| ::std::string::String::new())
20398    }
20399
20400    // optional string dfhack_version = 2;
20401
20402    pub fn dfhack_version(&self) -> &str {
20403        match self.dfhack_version.as_ref() {
20404            Some(v) => v,
20405            None => "",
20406        }
20407    }
20408
20409    pub fn clear_dfhack_version(&mut self) {
20410        self.dfhack_version = ::std::option::Option::None;
20411    }
20412
20413    pub fn has_dfhack_version(&self) -> bool {
20414        self.dfhack_version.is_some()
20415    }
20416
20417    // Param is passed by value, moved
20418    pub fn set_dfhack_version(&mut self, v: ::std::string::String) {
20419        self.dfhack_version = ::std::option::Option::Some(v);
20420    }
20421
20422    // Mutable pointer to the field.
20423    // If field is not initialized, it is initialized with default value first.
20424    pub fn mut_dfhack_version(&mut self) -> &mut ::std::string::String {
20425        if self.dfhack_version.is_none() {
20426            self.dfhack_version = ::std::option::Option::Some(::std::string::String::new());
20427        }
20428        self.dfhack_version.as_mut().unwrap()
20429    }
20430
20431    // Take field
20432    pub fn take_dfhack_version(&mut self) -> ::std::string::String {
20433        self.dfhack_version.take().unwrap_or_else(|| ::std::string::String::new())
20434    }
20435
20436    // optional string remote_fortress_reader_version = 3;
20437
20438    pub fn remote_fortress_reader_version(&self) -> &str {
20439        match self.remote_fortress_reader_version.as_ref() {
20440            Some(v) => v,
20441            None => "",
20442        }
20443    }
20444
20445    pub fn clear_remote_fortress_reader_version(&mut self) {
20446        self.remote_fortress_reader_version = ::std::option::Option::None;
20447    }
20448
20449    pub fn has_remote_fortress_reader_version(&self) -> bool {
20450        self.remote_fortress_reader_version.is_some()
20451    }
20452
20453    // Param is passed by value, moved
20454    pub fn set_remote_fortress_reader_version(&mut self, v: ::std::string::String) {
20455        self.remote_fortress_reader_version = ::std::option::Option::Some(v);
20456    }
20457
20458    // Mutable pointer to the field.
20459    // If field is not initialized, it is initialized with default value first.
20460    pub fn mut_remote_fortress_reader_version(&mut self) -> &mut ::std::string::String {
20461        if self.remote_fortress_reader_version.is_none() {
20462            self.remote_fortress_reader_version = ::std::option::Option::Some(::std::string::String::new());
20463        }
20464        self.remote_fortress_reader_version.as_mut().unwrap()
20465    }
20466
20467    // Take field
20468    pub fn take_remote_fortress_reader_version(&mut self) -> ::std::string::String {
20469        self.remote_fortress_reader_version.take().unwrap_or_else(|| ::std::string::String::new())
20470    }
20471
20472    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
20473        let mut fields = ::std::vec::Vec::with_capacity(3);
20474        let mut oneofs = ::std::vec::Vec::with_capacity(0);
20475        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20476            "dwarf_fortress_version",
20477            |m: &VersionInfo| { &m.dwarf_fortress_version },
20478            |m: &mut VersionInfo| { &mut m.dwarf_fortress_version },
20479        ));
20480        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20481            "dfhack_version",
20482            |m: &VersionInfo| { &m.dfhack_version },
20483            |m: &mut VersionInfo| { &mut m.dfhack_version },
20484        ));
20485        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20486            "remote_fortress_reader_version",
20487            |m: &VersionInfo| { &m.remote_fortress_reader_version },
20488            |m: &mut VersionInfo| { &mut m.remote_fortress_reader_version },
20489        ));
20490        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<VersionInfo>(
20491            "VersionInfo",
20492            fields,
20493            oneofs,
20494        )
20495    }
20496}
20497
20498impl ::protobuf::Message for VersionInfo {
20499    const NAME: &'static str = "VersionInfo";
20500
20501    fn is_initialized(&self) -> bool {
20502        true
20503    }
20504
20505    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
20506        while let Some(tag) = is.read_raw_tag_or_eof()? {
20507            match tag {
20508                10 => {
20509                    self.dwarf_fortress_version = ::std::option::Option::Some(is.read_string()?);
20510                },
20511                18 => {
20512                    self.dfhack_version = ::std::option::Option::Some(is.read_string()?);
20513                },
20514                26 => {
20515                    self.remote_fortress_reader_version = ::std::option::Option::Some(is.read_string()?);
20516                },
20517                tag => {
20518                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
20519                },
20520            };
20521        }
20522        ::std::result::Result::Ok(())
20523    }
20524
20525    // Compute sizes of nested messages
20526    #[allow(unused_variables)]
20527    fn compute_size(&self) -> u64 {
20528        let mut my_size = 0;
20529        if let Some(v) = self.dwarf_fortress_version.as_ref() {
20530            my_size += ::protobuf::rt::string_size(1, &v);
20531        }
20532        if let Some(v) = self.dfhack_version.as_ref() {
20533            my_size += ::protobuf::rt::string_size(2, &v);
20534        }
20535        if let Some(v) = self.remote_fortress_reader_version.as_ref() {
20536            my_size += ::protobuf::rt::string_size(3, &v);
20537        }
20538        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
20539        self.special_fields.cached_size().set(my_size as u32);
20540        my_size
20541    }
20542
20543    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
20544        if let Some(v) = self.dwarf_fortress_version.as_ref() {
20545            os.write_string(1, v)?;
20546        }
20547        if let Some(v) = self.dfhack_version.as_ref() {
20548            os.write_string(2, v)?;
20549        }
20550        if let Some(v) = self.remote_fortress_reader_version.as_ref() {
20551            os.write_string(3, v)?;
20552        }
20553        os.write_unknown_fields(self.special_fields.unknown_fields())?;
20554        ::std::result::Result::Ok(())
20555    }
20556
20557    fn special_fields(&self) -> &::protobuf::SpecialFields {
20558        &self.special_fields
20559    }
20560
20561    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
20562        &mut self.special_fields
20563    }
20564
20565    fn new() -> VersionInfo {
20566        VersionInfo::new()
20567    }
20568
20569    fn clear(&mut self) {
20570        self.dwarf_fortress_version = ::std::option::Option::None;
20571        self.dfhack_version = ::std::option::Option::None;
20572        self.remote_fortress_reader_version = ::std::option::Option::None;
20573        self.special_fields.clear();
20574    }
20575
20576    fn default_instance() -> &'static VersionInfo {
20577        static instance: VersionInfo = VersionInfo {
20578            dwarf_fortress_version: ::std::option::Option::None,
20579            dfhack_version: ::std::option::Option::None,
20580            remote_fortress_reader_version: ::std::option::Option::None,
20581            special_fields: ::protobuf::SpecialFields::new(),
20582        };
20583        &instance
20584    }
20585}
20586
20587impl ::protobuf::MessageFull for VersionInfo {
20588    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
20589        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
20590        descriptor.get(|| file_descriptor().message_by_package_relative_name("VersionInfo").unwrap()).clone()
20591    }
20592}
20593
20594impl ::std::fmt::Display for VersionInfo {
20595    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20596        ::protobuf::text_format::fmt(self, f)
20597    }
20598}
20599
20600impl ::protobuf::reflect::ProtobufValue for VersionInfo {
20601    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
20602}
20603
20604// @@protoc_insertion_point(message:RemoteFortressReader.ListRequest)
20605#[derive(PartialEq,Clone,Default,Debug)]
20606pub struct ListRequest {
20607    // message fields
20608    // @@protoc_insertion_point(field:RemoteFortressReader.ListRequest.list_start)
20609    pub list_start: ::std::option::Option<i32>,
20610    // @@protoc_insertion_point(field:RemoteFortressReader.ListRequest.list_end)
20611    pub list_end: ::std::option::Option<i32>,
20612    // special fields
20613    // @@protoc_insertion_point(special_field:RemoteFortressReader.ListRequest.special_fields)
20614    pub special_fields: ::protobuf::SpecialFields,
20615}
20616
20617impl<'a> ::std::default::Default for &'a ListRequest {
20618    fn default() -> &'a ListRequest {
20619        <ListRequest as ::protobuf::Message>::default_instance()
20620    }
20621}
20622
20623impl ListRequest {
20624    pub fn new() -> ListRequest {
20625        ::std::default::Default::default()
20626    }
20627
20628    // optional int32 list_start = 1;
20629
20630    pub fn list_start(&self) -> i32 {
20631        self.list_start.unwrap_or(0)
20632    }
20633
20634    pub fn clear_list_start(&mut self) {
20635        self.list_start = ::std::option::Option::None;
20636    }
20637
20638    pub fn has_list_start(&self) -> bool {
20639        self.list_start.is_some()
20640    }
20641
20642    // Param is passed by value, moved
20643    pub fn set_list_start(&mut self, v: i32) {
20644        self.list_start = ::std::option::Option::Some(v);
20645    }
20646
20647    // optional int32 list_end = 2;
20648
20649    pub fn list_end(&self) -> i32 {
20650        self.list_end.unwrap_or(0)
20651    }
20652
20653    pub fn clear_list_end(&mut self) {
20654        self.list_end = ::std::option::Option::None;
20655    }
20656
20657    pub fn has_list_end(&self) -> bool {
20658        self.list_end.is_some()
20659    }
20660
20661    // Param is passed by value, moved
20662    pub fn set_list_end(&mut self, v: i32) {
20663        self.list_end = ::std::option::Option::Some(v);
20664    }
20665
20666    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
20667        let mut fields = ::std::vec::Vec::with_capacity(2);
20668        let mut oneofs = ::std::vec::Vec::with_capacity(0);
20669        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20670            "list_start",
20671            |m: &ListRequest| { &m.list_start },
20672            |m: &mut ListRequest| { &mut m.list_start },
20673        ));
20674        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20675            "list_end",
20676            |m: &ListRequest| { &m.list_end },
20677            |m: &mut ListRequest| { &mut m.list_end },
20678        ));
20679        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ListRequest>(
20680            "ListRequest",
20681            fields,
20682            oneofs,
20683        )
20684    }
20685}
20686
20687impl ::protobuf::Message for ListRequest {
20688    const NAME: &'static str = "ListRequest";
20689
20690    fn is_initialized(&self) -> bool {
20691        true
20692    }
20693
20694    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
20695        while let Some(tag) = is.read_raw_tag_or_eof()? {
20696            match tag {
20697                8 => {
20698                    self.list_start = ::std::option::Option::Some(is.read_int32()?);
20699                },
20700                16 => {
20701                    self.list_end = ::std::option::Option::Some(is.read_int32()?);
20702                },
20703                tag => {
20704                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
20705                },
20706            };
20707        }
20708        ::std::result::Result::Ok(())
20709    }
20710
20711    // Compute sizes of nested messages
20712    #[allow(unused_variables)]
20713    fn compute_size(&self) -> u64 {
20714        let mut my_size = 0;
20715        if let Some(v) = self.list_start {
20716            my_size += ::protobuf::rt::int32_size(1, v);
20717        }
20718        if let Some(v) = self.list_end {
20719            my_size += ::protobuf::rt::int32_size(2, v);
20720        }
20721        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
20722        self.special_fields.cached_size().set(my_size as u32);
20723        my_size
20724    }
20725
20726    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
20727        if let Some(v) = self.list_start {
20728            os.write_int32(1, v)?;
20729        }
20730        if let Some(v) = self.list_end {
20731            os.write_int32(2, v)?;
20732        }
20733        os.write_unknown_fields(self.special_fields.unknown_fields())?;
20734        ::std::result::Result::Ok(())
20735    }
20736
20737    fn special_fields(&self) -> &::protobuf::SpecialFields {
20738        &self.special_fields
20739    }
20740
20741    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
20742        &mut self.special_fields
20743    }
20744
20745    fn new() -> ListRequest {
20746        ListRequest::new()
20747    }
20748
20749    fn clear(&mut self) {
20750        self.list_start = ::std::option::Option::None;
20751        self.list_end = ::std::option::Option::None;
20752        self.special_fields.clear();
20753    }
20754
20755    fn default_instance() -> &'static ListRequest {
20756        static instance: ListRequest = ListRequest {
20757            list_start: ::std::option::Option::None,
20758            list_end: ::std::option::Option::None,
20759            special_fields: ::protobuf::SpecialFields::new(),
20760        };
20761        &instance
20762    }
20763}
20764
20765impl ::protobuf::MessageFull for ListRequest {
20766    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
20767        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
20768        descriptor.get(|| file_descriptor().message_by_package_relative_name("ListRequest").unwrap()).clone()
20769    }
20770}
20771
20772impl ::std::fmt::Display for ListRequest {
20773    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20774        ::protobuf::text_format::fmt(self, f)
20775    }
20776}
20777
20778impl ::protobuf::reflect::ProtobufValue for ListRequest {
20779    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
20780}
20781
20782// @@protoc_insertion_point(message:RemoteFortressReader.Report)
20783#[derive(PartialEq,Clone,Default,Debug)]
20784pub struct Report {
20785    // message fields
20786    // @@protoc_insertion_point(field:RemoteFortressReader.Report.type)
20787    pub type_: ::std::option::Option<i32>,
20788    // @@protoc_insertion_point(field:RemoteFortressReader.Report.text)
20789    pub text: ::std::option::Option<::std::string::String>,
20790    // @@protoc_insertion_point(field:RemoteFortressReader.Report.color)
20791    pub color: ::protobuf::MessageField<ColorDefinition>,
20792    // @@protoc_insertion_point(field:RemoteFortressReader.Report.duration)
20793    pub duration: ::std::option::Option<i32>,
20794    // @@protoc_insertion_point(field:RemoteFortressReader.Report.continuation)
20795    pub continuation: ::std::option::Option<bool>,
20796    // @@protoc_insertion_point(field:RemoteFortressReader.Report.unconscious)
20797    pub unconscious: ::std::option::Option<bool>,
20798    // @@protoc_insertion_point(field:RemoteFortressReader.Report.announcement)
20799    pub announcement: ::std::option::Option<bool>,
20800    // @@protoc_insertion_point(field:RemoteFortressReader.Report.repeat_count)
20801    pub repeat_count: ::std::option::Option<i32>,
20802    // @@protoc_insertion_point(field:RemoteFortressReader.Report.pos)
20803    pub pos: ::protobuf::MessageField<Coord>,
20804    // @@protoc_insertion_point(field:RemoteFortressReader.Report.id)
20805    pub id: ::std::option::Option<i32>,
20806    // @@protoc_insertion_point(field:RemoteFortressReader.Report.year)
20807    pub year: ::std::option::Option<i32>,
20808    // @@protoc_insertion_point(field:RemoteFortressReader.Report.time)
20809    pub time: ::std::option::Option<i32>,
20810    // special fields
20811    // @@protoc_insertion_point(special_field:RemoteFortressReader.Report.special_fields)
20812    pub special_fields: ::protobuf::SpecialFields,
20813}
20814
20815impl<'a> ::std::default::Default for &'a Report {
20816    fn default() -> &'a Report {
20817        <Report as ::protobuf::Message>::default_instance()
20818    }
20819}
20820
20821impl Report {
20822    pub fn new() -> Report {
20823        ::std::default::Default::default()
20824    }
20825
20826    // optional int32 type = 1;
20827
20828    pub fn type_(&self) -> i32 {
20829        self.type_.unwrap_or(0)
20830    }
20831
20832    pub fn clear_type_(&mut self) {
20833        self.type_ = ::std::option::Option::None;
20834    }
20835
20836    pub fn has_type(&self) -> bool {
20837        self.type_.is_some()
20838    }
20839
20840    // Param is passed by value, moved
20841    pub fn set_type(&mut self, v: i32) {
20842        self.type_ = ::std::option::Option::Some(v);
20843    }
20844
20845    // optional string text = 2;
20846
20847    pub fn text(&self) -> &str {
20848        match self.text.as_ref() {
20849            Some(v) => v,
20850            None => "",
20851        }
20852    }
20853
20854    pub fn clear_text(&mut self) {
20855        self.text = ::std::option::Option::None;
20856    }
20857
20858    pub fn has_text(&self) -> bool {
20859        self.text.is_some()
20860    }
20861
20862    // Param is passed by value, moved
20863    pub fn set_text(&mut self, v: ::std::string::String) {
20864        self.text = ::std::option::Option::Some(v);
20865    }
20866
20867    // Mutable pointer to the field.
20868    // If field is not initialized, it is initialized with default value first.
20869    pub fn mut_text(&mut self) -> &mut ::std::string::String {
20870        if self.text.is_none() {
20871            self.text = ::std::option::Option::Some(::std::string::String::new());
20872        }
20873        self.text.as_mut().unwrap()
20874    }
20875
20876    // Take field
20877    pub fn take_text(&mut self) -> ::std::string::String {
20878        self.text.take().unwrap_or_else(|| ::std::string::String::new())
20879    }
20880
20881    // optional int32 duration = 4;
20882
20883    pub fn duration(&self) -> i32 {
20884        self.duration.unwrap_or(0)
20885    }
20886
20887    pub fn clear_duration(&mut self) {
20888        self.duration = ::std::option::Option::None;
20889    }
20890
20891    pub fn has_duration(&self) -> bool {
20892        self.duration.is_some()
20893    }
20894
20895    // Param is passed by value, moved
20896    pub fn set_duration(&mut self, v: i32) {
20897        self.duration = ::std::option::Option::Some(v);
20898    }
20899
20900    // optional bool continuation = 5;
20901
20902    pub fn continuation(&self) -> bool {
20903        self.continuation.unwrap_or(false)
20904    }
20905
20906    pub fn clear_continuation(&mut self) {
20907        self.continuation = ::std::option::Option::None;
20908    }
20909
20910    pub fn has_continuation(&self) -> bool {
20911        self.continuation.is_some()
20912    }
20913
20914    // Param is passed by value, moved
20915    pub fn set_continuation(&mut self, v: bool) {
20916        self.continuation = ::std::option::Option::Some(v);
20917    }
20918
20919    // optional bool unconscious = 6;
20920
20921    pub fn unconscious(&self) -> bool {
20922        self.unconscious.unwrap_or(false)
20923    }
20924
20925    pub fn clear_unconscious(&mut self) {
20926        self.unconscious = ::std::option::Option::None;
20927    }
20928
20929    pub fn has_unconscious(&self) -> bool {
20930        self.unconscious.is_some()
20931    }
20932
20933    // Param is passed by value, moved
20934    pub fn set_unconscious(&mut self, v: bool) {
20935        self.unconscious = ::std::option::Option::Some(v);
20936    }
20937
20938    // optional bool announcement = 7;
20939
20940    pub fn announcement(&self) -> bool {
20941        self.announcement.unwrap_or(false)
20942    }
20943
20944    pub fn clear_announcement(&mut self) {
20945        self.announcement = ::std::option::Option::None;
20946    }
20947
20948    pub fn has_announcement(&self) -> bool {
20949        self.announcement.is_some()
20950    }
20951
20952    // Param is passed by value, moved
20953    pub fn set_announcement(&mut self, v: bool) {
20954        self.announcement = ::std::option::Option::Some(v);
20955    }
20956
20957    // optional int32 repeat_count = 8;
20958
20959    pub fn repeat_count(&self) -> i32 {
20960        self.repeat_count.unwrap_or(0)
20961    }
20962
20963    pub fn clear_repeat_count(&mut self) {
20964        self.repeat_count = ::std::option::Option::None;
20965    }
20966
20967    pub fn has_repeat_count(&self) -> bool {
20968        self.repeat_count.is_some()
20969    }
20970
20971    // Param is passed by value, moved
20972    pub fn set_repeat_count(&mut self, v: i32) {
20973        self.repeat_count = ::std::option::Option::Some(v);
20974    }
20975
20976    // optional int32 id = 10;
20977
20978    pub fn id(&self) -> i32 {
20979        self.id.unwrap_or(0)
20980    }
20981
20982    pub fn clear_id(&mut self) {
20983        self.id = ::std::option::Option::None;
20984    }
20985
20986    pub fn has_id(&self) -> bool {
20987        self.id.is_some()
20988    }
20989
20990    // Param is passed by value, moved
20991    pub fn set_id(&mut self, v: i32) {
20992        self.id = ::std::option::Option::Some(v);
20993    }
20994
20995    // optional int32 year = 11;
20996
20997    pub fn year(&self) -> i32 {
20998        self.year.unwrap_or(0)
20999    }
21000
21001    pub fn clear_year(&mut self) {
21002        self.year = ::std::option::Option::None;
21003    }
21004
21005    pub fn has_year(&self) -> bool {
21006        self.year.is_some()
21007    }
21008
21009    // Param is passed by value, moved
21010    pub fn set_year(&mut self, v: i32) {
21011        self.year = ::std::option::Option::Some(v);
21012    }
21013
21014    // optional int32 time = 12;
21015
21016    pub fn time(&self) -> i32 {
21017        self.time.unwrap_or(0)
21018    }
21019
21020    pub fn clear_time(&mut self) {
21021        self.time = ::std::option::Option::None;
21022    }
21023
21024    pub fn has_time(&self) -> bool {
21025        self.time.is_some()
21026    }
21027
21028    // Param is passed by value, moved
21029    pub fn set_time(&mut self, v: i32) {
21030        self.time = ::std::option::Option::Some(v);
21031    }
21032
21033    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
21034        let mut fields = ::std::vec::Vec::with_capacity(12);
21035        let mut oneofs = ::std::vec::Vec::with_capacity(0);
21036        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21037            "type",
21038            |m: &Report| { &m.type_ },
21039            |m: &mut Report| { &mut m.type_ },
21040        ));
21041        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21042            "text",
21043            |m: &Report| { &m.text },
21044            |m: &mut Report| { &mut m.text },
21045        ));
21046        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ColorDefinition>(
21047            "color",
21048            |m: &Report| { &m.color },
21049            |m: &mut Report| { &mut m.color },
21050        ));
21051        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21052            "duration",
21053            |m: &Report| { &m.duration },
21054            |m: &mut Report| { &mut m.duration },
21055        ));
21056        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21057            "continuation",
21058            |m: &Report| { &m.continuation },
21059            |m: &mut Report| { &mut m.continuation },
21060        ));
21061        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21062            "unconscious",
21063            |m: &Report| { &m.unconscious },
21064            |m: &mut Report| { &mut m.unconscious },
21065        ));
21066        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21067            "announcement",
21068            |m: &Report| { &m.announcement },
21069            |m: &mut Report| { &mut m.announcement },
21070        ));
21071        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21072            "repeat_count",
21073            |m: &Report| { &m.repeat_count },
21074            |m: &mut Report| { &mut m.repeat_count },
21075        ));
21076        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
21077            "pos",
21078            |m: &Report| { &m.pos },
21079            |m: &mut Report| { &mut m.pos },
21080        ));
21081        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21082            "id",
21083            |m: &Report| { &m.id },
21084            |m: &mut Report| { &mut m.id },
21085        ));
21086        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21087            "year",
21088            |m: &Report| { &m.year },
21089            |m: &mut Report| { &mut m.year },
21090        ));
21091        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21092            "time",
21093            |m: &Report| { &m.time },
21094            |m: &mut Report| { &mut m.time },
21095        ));
21096        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Report>(
21097            "Report",
21098            fields,
21099            oneofs,
21100        )
21101    }
21102}
21103
21104impl ::protobuf::Message for Report {
21105    const NAME: &'static str = "Report";
21106
21107    fn is_initialized(&self) -> bool {
21108        for v in &self.color {
21109            if !v.is_initialized() {
21110                return false;
21111            }
21112        };
21113        for v in &self.pos {
21114            if !v.is_initialized() {
21115                return false;
21116            }
21117        };
21118        true
21119    }
21120
21121    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
21122        while let Some(tag) = is.read_raw_tag_or_eof()? {
21123            match tag {
21124                8 => {
21125                    self.type_ = ::std::option::Option::Some(is.read_int32()?);
21126                },
21127                18 => {
21128                    self.text = ::std::option::Option::Some(is.read_string()?);
21129                },
21130                26 => {
21131                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.color)?;
21132                },
21133                32 => {
21134                    self.duration = ::std::option::Option::Some(is.read_int32()?);
21135                },
21136                40 => {
21137                    self.continuation = ::std::option::Option::Some(is.read_bool()?);
21138                },
21139                48 => {
21140                    self.unconscious = ::std::option::Option::Some(is.read_bool()?);
21141                },
21142                56 => {
21143                    self.announcement = ::std::option::Option::Some(is.read_bool()?);
21144                },
21145                64 => {
21146                    self.repeat_count = ::std::option::Option::Some(is.read_int32()?);
21147                },
21148                74 => {
21149                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.pos)?;
21150                },
21151                80 => {
21152                    self.id = ::std::option::Option::Some(is.read_int32()?);
21153                },
21154                88 => {
21155                    self.year = ::std::option::Option::Some(is.read_int32()?);
21156                },
21157                96 => {
21158                    self.time = ::std::option::Option::Some(is.read_int32()?);
21159                },
21160                tag => {
21161                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
21162                },
21163            };
21164        }
21165        ::std::result::Result::Ok(())
21166    }
21167
21168    // Compute sizes of nested messages
21169    #[allow(unused_variables)]
21170    fn compute_size(&self) -> u64 {
21171        let mut my_size = 0;
21172        if let Some(v) = self.type_ {
21173            my_size += ::protobuf::rt::int32_size(1, v);
21174        }
21175        if let Some(v) = self.text.as_ref() {
21176            my_size += ::protobuf::rt::string_size(2, &v);
21177        }
21178        if let Some(v) = self.color.as_ref() {
21179            let len = v.compute_size();
21180            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
21181        }
21182        if let Some(v) = self.duration {
21183            my_size += ::protobuf::rt::int32_size(4, v);
21184        }
21185        if let Some(v) = self.continuation {
21186            my_size += 1 + 1;
21187        }
21188        if let Some(v) = self.unconscious {
21189            my_size += 1 + 1;
21190        }
21191        if let Some(v) = self.announcement {
21192            my_size += 1 + 1;
21193        }
21194        if let Some(v) = self.repeat_count {
21195            my_size += ::protobuf::rt::int32_size(8, v);
21196        }
21197        if let Some(v) = self.pos.as_ref() {
21198            let len = v.compute_size();
21199            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
21200        }
21201        if let Some(v) = self.id {
21202            my_size += ::protobuf::rt::int32_size(10, v);
21203        }
21204        if let Some(v) = self.year {
21205            my_size += ::protobuf::rt::int32_size(11, v);
21206        }
21207        if let Some(v) = self.time {
21208            my_size += ::protobuf::rt::int32_size(12, v);
21209        }
21210        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
21211        self.special_fields.cached_size().set(my_size as u32);
21212        my_size
21213    }
21214
21215    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
21216        if let Some(v) = self.type_ {
21217            os.write_int32(1, v)?;
21218        }
21219        if let Some(v) = self.text.as_ref() {
21220            os.write_string(2, v)?;
21221        }
21222        if let Some(v) = self.color.as_ref() {
21223            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
21224        }
21225        if let Some(v) = self.duration {
21226            os.write_int32(4, v)?;
21227        }
21228        if let Some(v) = self.continuation {
21229            os.write_bool(5, v)?;
21230        }
21231        if let Some(v) = self.unconscious {
21232            os.write_bool(6, v)?;
21233        }
21234        if let Some(v) = self.announcement {
21235            os.write_bool(7, v)?;
21236        }
21237        if let Some(v) = self.repeat_count {
21238            os.write_int32(8, v)?;
21239        }
21240        if let Some(v) = self.pos.as_ref() {
21241            ::protobuf::rt::write_message_field_with_cached_size(9, v, os)?;
21242        }
21243        if let Some(v) = self.id {
21244            os.write_int32(10, v)?;
21245        }
21246        if let Some(v) = self.year {
21247            os.write_int32(11, v)?;
21248        }
21249        if let Some(v) = self.time {
21250            os.write_int32(12, v)?;
21251        }
21252        os.write_unknown_fields(self.special_fields.unknown_fields())?;
21253        ::std::result::Result::Ok(())
21254    }
21255
21256    fn special_fields(&self) -> &::protobuf::SpecialFields {
21257        &self.special_fields
21258    }
21259
21260    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
21261        &mut self.special_fields
21262    }
21263
21264    fn new() -> Report {
21265        Report::new()
21266    }
21267
21268    fn clear(&mut self) {
21269        self.type_ = ::std::option::Option::None;
21270        self.text = ::std::option::Option::None;
21271        self.color.clear();
21272        self.duration = ::std::option::Option::None;
21273        self.continuation = ::std::option::Option::None;
21274        self.unconscious = ::std::option::Option::None;
21275        self.announcement = ::std::option::Option::None;
21276        self.repeat_count = ::std::option::Option::None;
21277        self.pos.clear();
21278        self.id = ::std::option::Option::None;
21279        self.year = ::std::option::Option::None;
21280        self.time = ::std::option::Option::None;
21281        self.special_fields.clear();
21282    }
21283
21284    fn default_instance() -> &'static Report {
21285        static instance: Report = Report {
21286            type_: ::std::option::Option::None,
21287            text: ::std::option::Option::None,
21288            color: ::protobuf::MessageField::none(),
21289            duration: ::std::option::Option::None,
21290            continuation: ::std::option::Option::None,
21291            unconscious: ::std::option::Option::None,
21292            announcement: ::std::option::Option::None,
21293            repeat_count: ::std::option::Option::None,
21294            pos: ::protobuf::MessageField::none(),
21295            id: ::std::option::Option::None,
21296            year: ::std::option::Option::None,
21297            time: ::std::option::Option::None,
21298            special_fields: ::protobuf::SpecialFields::new(),
21299        };
21300        &instance
21301    }
21302}
21303
21304impl ::protobuf::MessageFull for Report {
21305    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
21306        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
21307        descriptor.get(|| file_descriptor().message_by_package_relative_name("Report").unwrap()).clone()
21308    }
21309}
21310
21311impl ::std::fmt::Display for Report {
21312    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21313        ::protobuf::text_format::fmt(self, f)
21314    }
21315}
21316
21317impl ::protobuf::reflect::ProtobufValue for Report {
21318    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
21319}
21320
21321// @@protoc_insertion_point(message:RemoteFortressReader.Status)
21322#[derive(PartialEq,Clone,Default,Debug)]
21323pub struct Status {
21324    // message fields
21325    // @@protoc_insertion_point(field:RemoteFortressReader.Status.reports)
21326    pub reports: ::std::vec::Vec<Report>,
21327    // special fields
21328    // @@protoc_insertion_point(special_field:RemoteFortressReader.Status.special_fields)
21329    pub special_fields: ::protobuf::SpecialFields,
21330}
21331
21332impl<'a> ::std::default::Default for &'a Status {
21333    fn default() -> &'a Status {
21334        <Status as ::protobuf::Message>::default_instance()
21335    }
21336}
21337
21338impl Status {
21339    pub fn new() -> Status {
21340        ::std::default::Default::default()
21341    }
21342
21343    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
21344        let mut fields = ::std::vec::Vec::with_capacity(1);
21345        let mut oneofs = ::std::vec::Vec::with_capacity(0);
21346        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
21347            "reports",
21348            |m: &Status| { &m.reports },
21349            |m: &mut Status| { &mut m.reports },
21350        ));
21351        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Status>(
21352            "Status",
21353            fields,
21354            oneofs,
21355        )
21356    }
21357}
21358
21359impl ::protobuf::Message for Status {
21360    const NAME: &'static str = "Status";
21361
21362    fn is_initialized(&self) -> bool {
21363        for v in &self.reports {
21364            if !v.is_initialized() {
21365                return false;
21366            }
21367        };
21368        true
21369    }
21370
21371    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
21372        while let Some(tag) = is.read_raw_tag_or_eof()? {
21373            match tag {
21374                10 => {
21375                    self.reports.push(is.read_message()?);
21376                },
21377                tag => {
21378                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
21379                },
21380            };
21381        }
21382        ::std::result::Result::Ok(())
21383    }
21384
21385    // Compute sizes of nested messages
21386    #[allow(unused_variables)]
21387    fn compute_size(&self) -> u64 {
21388        let mut my_size = 0;
21389        for value in &self.reports {
21390            let len = value.compute_size();
21391            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
21392        };
21393        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
21394        self.special_fields.cached_size().set(my_size as u32);
21395        my_size
21396    }
21397
21398    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
21399        for v in &self.reports {
21400            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
21401        };
21402        os.write_unknown_fields(self.special_fields.unknown_fields())?;
21403        ::std::result::Result::Ok(())
21404    }
21405
21406    fn special_fields(&self) -> &::protobuf::SpecialFields {
21407        &self.special_fields
21408    }
21409
21410    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
21411        &mut self.special_fields
21412    }
21413
21414    fn new() -> Status {
21415        Status::new()
21416    }
21417
21418    fn clear(&mut self) {
21419        self.reports.clear();
21420        self.special_fields.clear();
21421    }
21422
21423    fn default_instance() -> &'static Status {
21424        static instance: Status = Status {
21425            reports: ::std::vec::Vec::new(),
21426            special_fields: ::protobuf::SpecialFields::new(),
21427        };
21428        &instance
21429    }
21430}
21431
21432impl ::protobuf::MessageFull for Status {
21433    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
21434        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
21435        descriptor.get(|| file_descriptor().message_by_package_relative_name("Status").unwrap()).clone()
21436    }
21437}
21438
21439impl ::std::fmt::Display for Status {
21440    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21441        ::protobuf::text_format::fmt(self, f)
21442    }
21443}
21444
21445impl ::protobuf::reflect::ProtobufValue for Status {
21446    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
21447}
21448
21449// @@protoc_insertion_point(message:RemoteFortressReader.ShapeDescriptior)
21450#[derive(PartialEq,Clone,Default,Debug)]
21451pub struct ShapeDescriptior {
21452    // message fields
21453    // @@protoc_insertion_point(field:RemoteFortressReader.ShapeDescriptior.id)
21454    pub id: ::std::option::Option<::std::string::String>,
21455    // @@protoc_insertion_point(field:RemoteFortressReader.ShapeDescriptior.tile)
21456    pub tile: ::std::option::Option<i32>,
21457    // special fields
21458    // @@protoc_insertion_point(special_field:RemoteFortressReader.ShapeDescriptior.special_fields)
21459    pub special_fields: ::protobuf::SpecialFields,
21460}
21461
21462impl<'a> ::std::default::Default for &'a ShapeDescriptior {
21463    fn default() -> &'a ShapeDescriptior {
21464        <ShapeDescriptior as ::protobuf::Message>::default_instance()
21465    }
21466}
21467
21468impl ShapeDescriptior {
21469    pub fn new() -> ShapeDescriptior {
21470        ::std::default::Default::default()
21471    }
21472
21473    // optional string id = 1;
21474
21475    pub fn id(&self) -> &str {
21476        match self.id.as_ref() {
21477            Some(v) => v,
21478            None => "",
21479        }
21480    }
21481
21482    pub fn clear_id(&mut self) {
21483        self.id = ::std::option::Option::None;
21484    }
21485
21486    pub fn has_id(&self) -> bool {
21487        self.id.is_some()
21488    }
21489
21490    // Param is passed by value, moved
21491    pub fn set_id(&mut self, v: ::std::string::String) {
21492        self.id = ::std::option::Option::Some(v);
21493    }
21494
21495    // Mutable pointer to the field.
21496    // If field is not initialized, it is initialized with default value first.
21497    pub fn mut_id(&mut self) -> &mut ::std::string::String {
21498        if self.id.is_none() {
21499            self.id = ::std::option::Option::Some(::std::string::String::new());
21500        }
21501        self.id.as_mut().unwrap()
21502    }
21503
21504    // Take field
21505    pub fn take_id(&mut self) -> ::std::string::String {
21506        self.id.take().unwrap_or_else(|| ::std::string::String::new())
21507    }
21508
21509    // optional int32 tile = 2;
21510
21511    pub fn tile(&self) -> i32 {
21512        self.tile.unwrap_or(0)
21513    }
21514
21515    pub fn clear_tile(&mut self) {
21516        self.tile = ::std::option::Option::None;
21517    }
21518
21519    pub fn has_tile(&self) -> bool {
21520        self.tile.is_some()
21521    }
21522
21523    // Param is passed by value, moved
21524    pub fn set_tile(&mut self, v: i32) {
21525        self.tile = ::std::option::Option::Some(v);
21526    }
21527
21528    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
21529        let mut fields = ::std::vec::Vec::with_capacity(2);
21530        let mut oneofs = ::std::vec::Vec::with_capacity(0);
21531        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21532            "id",
21533            |m: &ShapeDescriptior| { &m.id },
21534            |m: &mut ShapeDescriptior| { &mut m.id },
21535        ));
21536        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21537            "tile",
21538            |m: &ShapeDescriptior| { &m.tile },
21539            |m: &mut ShapeDescriptior| { &mut m.tile },
21540        ));
21541        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ShapeDescriptior>(
21542            "ShapeDescriptior",
21543            fields,
21544            oneofs,
21545        )
21546    }
21547}
21548
21549impl ::protobuf::Message for ShapeDescriptior {
21550    const NAME: &'static str = "ShapeDescriptior";
21551
21552    fn is_initialized(&self) -> bool {
21553        true
21554    }
21555
21556    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
21557        while let Some(tag) = is.read_raw_tag_or_eof()? {
21558            match tag {
21559                10 => {
21560                    self.id = ::std::option::Option::Some(is.read_string()?);
21561                },
21562                16 => {
21563                    self.tile = ::std::option::Option::Some(is.read_int32()?);
21564                },
21565                tag => {
21566                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
21567                },
21568            };
21569        }
21570        ::std::result::Result::Ok(())
21571    }
21572
21573    // Compute sizes of nested messages
21574    #[allow(unused_variables)]
21575    fn compute_size(&self) -> u64 {
21576        let mut my_size = 0;
21577        if let Some(v) = self.id.as_ref() {
21578            my_size += ::protobuf::rt::string_size(1, &v);
21579        }
21580        if let Some(v) = self.tile {
21581            my_size += ::protobuf::rt::int32_size(2, v);
21582        }
21583        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
21584        self.special_fields.cached_size().set(my_size as u32);
21585        my_size
21586    }
21587
21588    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
21589        if let Some(v) = self.id.as_ref() {
21590            os.write_string(1, v)?;
21591        }
21592        if let Some(v) = self.tile {
21593            os.write_int32(2, v)?;
21594        }
21595        os.write_unknown_fields(self.special_fields.unknown_fields())?;
21596        ::std::result::Result::Ok(())
21597    }
21598
21599    fn special_fields(&self) -> &::protobuf::SpecialFields {
21600        &self.special_fields
21601    }
21602
21603    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
21604        &mut self.special_fields
21605    }
21606
21607    fn new() -> ShapeDescriptior {
21608        ShapeDescriptior::new()
21609    }
21610
21611    fn clear(&mut self) {
21612        self.id = ::std::option::Option::None;
21613        self.tile = ::std::option::Option::None;
21614        self.special_fields.clear();
21615    }
21616
21617    fn default_instance() -> &'static ShapeDescriptior {
21618        static instance: ShapeDescriptior = ShapeDescriptior {
21619            id: ::std::option::Option::None,
21620            tile: ::std::option::Option::None,
21621            special_fields: ::protobuf::SpecialFields::new(),
21622        };
21623        &instance
21624    }
21625}
21626
21627impl ::protobuf::MessageFull for ShapeDescriptior {
21628    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
21629        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
21630        descriptor.get(|| file_descriptor().message_by_package_relative_name("ShapeDescriptior").unwrap()).clone()
21631    }
21632}
21633
21634impl ::std::fmt::Display for ShapeDescriptior {
21635    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21636        ::protobuf::text_format::fmt(self, f)
21637    }
21638}
21639
21640impl ::protobuf::reflect::ProtobufValue for ShapeDescriptior {
21641    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
21642}
21643
21644// @@protoc_insertion_point(message:RemoteFortressReader.Language)
21645#[derive(PartialEq,Clone,Default,Debug)]
21646pub struct Language {
21647    // message fields
21648    // @@protoc_insertion_point(field:RemoteFortressReader.Language.shapes)
21649    pub shapes: ::std::vec::Vec<ShapeDescriptior>,
21650    // special fields
21651    // @@protoc_insertion_point(special_field:RemoteFortressReader.Language.special_fields)
21652    pub special_fields: ::protobuf::SpecialFields,
21653}
21654
21655impl<'a> ::std::default::Default for &'a Language {
21656    fn default() -> &'a Language {
21657        <Language as ::protobuf::Message>::default_instance()
21658    }
21659}
21660
21661impl Language {
21662    pub fn new() -> Language {
21663        ::std::default::Default::default()
21664    }
21665
21666    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
21667        let mut fields = ::std::vec::Vec::with_capacity(1);
21668        let mut oneofs = ::std::vec::Vec::with_capacity(0);
21669        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
21670            "shapes",
21671            |m: &Language| { &m.shapes },
21672            |m: &mut Language| { &mut m.shapes },
21673        ));
21674        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Language>(
21675            "Language",
21676            fields,
21677            oneofs,
21678        )
21679    }
21680}
21681
21682impl ::protobuf::Message for Language {
21683    const NAME: &'static str = "Language";
21684
21685    fn is_initialized(&self) -> bool {
21686        true
21687    }
21688
21689    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
21690        while let Some(tag) = is.read_raw_tag_or_eof()? {
21691            match tag {
21692                10 => {
21693                    self.shapes.push(is.read_message()?);
21694                },
21695                tag => {
21696                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
21697                },
21698            };
21699        }
21700        ::std::result::Result::Ok(())
21701    }
21702
21703    // Compute sizes of nested messages
21704    #[allow(unused_variables)]
21705    fn compute_size(&self) -> u64 {
21706        let mut my_size = 0;
21707        for value in &self.shapes {
21708            let len = value.compute_size();
21709            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
21710        };
21711        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
21712        self.special_fields.cached_size().set(my_size as u32);
21713        my_size
21714    }
21715
21716    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
21717        for v in &self.shapes {
21718            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
21719        };
21720        os.write_unknown_fields(self.special_fields.unknown_fields())?;
21721        ::std::result::Result::Ok(())
21722    }
21723
21724    fn special_fields(&self) -> &::protobuf::SpecialFields {
21725        &self.special_fields
21726    }
21727
21728    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
21729        &mut self.special_fields
21730    }
21731
21732    fn new() -> Language {
21733        Language::new()
21734    }
21735
21736    fn clear(&mut self) {
21737        self.shapes.clear();
21738        self.special_fields.clear();
21739    }
21740
21741    fn default_instance() -> &'static Language {
21742        static instance: Language = Language {
21743            shapes: ::std::vec::Vec::new(),
21744            special_fields: ::protobuf::SpecialFields::new(),
21745        };
21746        &instance
21747    }
21748}
21749
21750impl ::protobuf::MessageFull for Language {
21751    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
21752        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
21753        descriptor.get(|| file_descriptor().message_by_package_relative_name("Language").unwrap()).clone()
21754    }
21755}
21756
21757impl ::std::fmt::Display for Language {
21758    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21759        ::protobuf::text_format::fmt(self, f)
21760    }
21761}
21762
21763impl ::protobuf::reflect::ProtobufValue for Language {
21764    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
21765}
21766
21767// @@protoc_insertion_point(message:RemoteFortressReader.ItemImprovement)
21768#[derive(PartialEq,Clone,Default,Debug)]
21769pub struct ItemImprovement {
21770    // message fields
21771    // @@protoc_insertion_point(field:RemoteFortressReader.ItemImprovement.material)
21772    pub material: ::protobuf::MessageField<MatPair>,
21773    // @@protoc_insertion_point(field:RemoteFortressReader.ItemImprovement.shape)
21774    pub shape: ::std::option::Option<i32>,
21775    // @@protoc_insertion_point(field:RemoteFortressReader.ItemImprovement.specific_type)
21776    pub specific_type: ::std::option::Option<i32>,
21777    // @@protoc_insertion_point(field:RemoteFortressReader.ItemImprovement.image)
21778    pub image: ::protobuf::MessageField<ArtImage>,
21779    // @@protoc_insertion_point(field:RemoteFortressReader.ItemImprovement.type)
21780    pub type_: ::std::option::Option<i32>,
21781    // special fields
21782    // @@protoc_insertion_point(special_field:RemoteFortressReader.ItemImprovement.special_fields)
21783    pub special_fields: ::protobuf::SpecialFields,
21784}
21785
21786impl<'a> ::std::default::Default for &'a ItemImprovement {
21787    fn default() -> &'a ItemImprovement {
21788        <ItemImprovement as ::protobuf::Message>::default_instance()
21789    }
21790}
21791
21792impl ItemImprovement {
21793    pub fn new() -> ItemImprovement {
21794        ::std::default::Default::default()
21795    }
21796
21797    // optional int32 shape = 3;
21798
21799    pub fn shape(&self) -> i32 {
21800        self.shape.unwrap_or(0)
21801    }
21802
21803    pub fn clear_shape(&mut self) {
21804        self.shape = ::std::option::Option::None;
21805    }
21806
21807    pub fn has_shape(&self) -> bool {
21808        self.shape.is_some()
21809    }
21810
21811    // Param is passed by value, moved
21812    pub fn set_shape(&mut self, v: i32) {
21813        self.shape = ::std::option::Option::Some(v);
21814    }
21815
21816    // optional int32 specific_type = 4;
21817
21818    pub fn specific_type(&self) -> i32 {
21819        self.specific_type.unwrap_or(0)
21820    }
21821
21822    pub fn clear_specific_type(&mut self) {
21823        self.specific_type = ::std::option::Option::None;
21824    }
21825
21826    pub fn has_specific_type(&self) -> bool {
21827        self.specific_type.is_some()
21828    }
21829
21830    // Param is passed by value, moved
21831    pub fn set_specific_type(&mut self, v: i32) {
21832        self.specific_type = ::std::option::Option::Some(v);
21833    }
21834
21835    // optional int32 type = 6;
21836
21837    pub fn type_(&self) -> i32 {
21838        self.type_.unwrap_or(0)
21839    }
21840
21841    pub fn clear_type_(&mut self) {
21842        self.type_ = ::std::option::Option::None;
21843    }
21844
21845    pub fn has_type(&self) -> bool {
21846        self.type_.is_some()
21847    }
21848
21849    // Param is passed by value, moved
21850    pub fn set_type(&mut self, v: i32) {
21851        self.type_ = ::std::option::Option::Some(v);
21852    }
21853
21854    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
21855        let mut fields = ::std::vec::Vec::with_capacity(5);
21856        let mut oneofs = ::std::vec::Vec::with_capacity(0);
21857        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
21858            "material",
21859            |m: &ItemImprovement| { &m.material },
21860            |m: &mut ItemImprovement| { &mut m.material },
21861        ));
21862        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21863            "shape",
21864            |m: &ItemImprovement| { &m.shape },
21865            |m: &mut ItemImprovement| { &mut m.shape },
21866        ));
21867        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21868            "specific_type",
21869            |m: &ItemImprovement| { &m.specific_type },
21870            |m: &mut ItemImprovement| { &mut m.specific_type },
21871        ));
21872        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ArtImage>(
21873            "image",
21874            |m: &ItemImprovement| { &m.image },
21875            |m: &mut ItemImprovement| { &mut m.image },
21876        ));
21877        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21878            "type",
21879            |m: &ItemImprovement| { &m.type_ },
21880            |m: &mut ItemImprovement| { &mut m.type_ },
21881        ));
21882        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ItemImprovement>(
21883            "ItemImprovement",
21884            fields,
21885            oneofs,
21886        )
21887    }
21888}
21889
21890impl ::protobuf::Message for ItemImprovement {
21891    const NAME: &'static str = "ItemImprovement";
21892
21893    fn is_initialized(&self) -> bool {
21894        for v in &self.material {
21895            if !v.is_initialized() {
21896                return false;
21897            }
21898        };
21899        for v in &self.image {
21900            if !v.is_initialized() {
21901                return false;
21902            }
21903        };
21904        true
21905    }
21906
21907    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
21908        while let Some(tag) = is.read_raw_tag_or_eof()? {
21909            match tag {
21910                10 => {
21911                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
21912                },
21913                24 => {
21914                    self.shape = ::std::option::Option::Some(is.read_int32()?);
21915                },
21916                32 => {
21917                    self.specific_type = ::std::option::Option::Some(is.read_int32()?);
21918                },
21919                42 => {
21920                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.image)?;
21921                },
21922                48 => {
21923                    self.type_ = ::std::option::Option::Some(is.read_int32()?);
21924                },
21925                tag => {
21926                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
21927                },
21928            };
21929        }
21930        ::std::result::Result::Ok(())
21931    }
21932
21933    // Compute sizes of nested messages
21934    #[allow(unused_variables)]
21935    fn compute_size(&self) -> u64 {
21936        let mut my_size = 0;
21937        if let Some(v) = self.material.as_ref() {
21938            let len = v.compute_size();
21939            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
21940        }
21941        if let Some(v) = self.shape {
21942            my_size += ::protobuf::rt::int32_size(3, v);
21943        }
21944        if let Some(v) = self.specific_type {
21945            my_size += ::protobuf::rt::int32_size(4, v);
21946        }
21947        if let Some(v) = self.image.as_ref() {
21948            let len = v.compute_size();
21949            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
21950        }
21951        if let Some(v) = self.type_ {
21952            my_size += ::protobuf::rt::int32_size(6, v);
21953        }
21954        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
21955        self.special_fields.cached_size().set(my_size as u32);
21956        my_size
21957    }
21958
21959    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
21960        if let Some(v) = self.material.as_ref() {
21961            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
21962        }
21963        if let Some(v) = self.shape {
21964            os.write_int32(3, v)?;
21965        }
21966        if let Some(v) = self.specific_type {
21967            os.write_int32(4, v)?;
21968        }
21969        if let Some(v) = self.image.as_ref() {
21970            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
21971        }
21972        if let Some(v) = self.type_ {
21973            os.write_int32(6, v)?;
21974        }
21975        os.write_unknown_fields(self.special_fields.unknown_fields())?;
21976        ::std::result::Result::Ok(())
21977    }
21978
21979    fn special_fields(&self) -> &::protobuf::SpecialFields {
21980        &self.special_fields
21981    }
21982
21983    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
21984        &mut self.special_fields
21985    }
21986
21987    fn new() -> ItemImprovement {
21988        ItemImprovement::new()
21989    }
21990
21991    fn clear(&mut self) {
21992        self.material.clear();
21993        self.shape = ::std::option::Option::None;
21994        self.specific_type = ::std::option::Option::None;
21995        self.image.clear();
21996        self.type_ = ::std::option::Option::None;
21997        self.special_fields.clear();
21998    }
21999
22000    fn default_instance() -> &'static ItemImprovement {
22001        static instance: ItemImprovement = ItemImprovement {
22002            material: ::protobuf::MessageField::none(),
22003            shape: ::std::option::Option::None,
22004            specific_type: ::std::option::Option::None,
22005            image: ::protobuf::MessageField::none(),
22006            type_: ::std::option::Option::None,
22007            special_fields: ::protobuf::SpecialFields::new(),
22008        };
22009        &instance
22010    }
22011}
22012
22013impl ::protobuf::MessageFull for ItemImprovement {
22014    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
22015        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
22016        descriptor.get(|| file_descriptor().message_by_package_relative_name("ItemImprovement").unwrap()).clone()
22017    }
22018}
22019
22020impl ::std::fmt::Display for ItemImprovement {
22021    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
22022        ::protobuf::text_format::fmt(self, f)
22023    }
22024}
22025
22026impl ::protobuf::reflect::ProtobufValue for ItemImprovement {
22027    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
22028}
22029
22030// @@protoc_insertion_point(message:RemoteFortressReader.ArtImageElement)
22031#[derive(PartialEq,Clone,Default,Debug)]
22032pub struct ArtImageElement {
22033    // message fields
22034    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageElement.count)
22035    pub count: ::std::option::Option<i32>,
22036    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageElement.type)
22037    pub type_: ::std::option::Option<::protobuf::EnumOrUnknown<ArtImageElementType>>,
22038    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageElement.creature_item)
22039    pub creature_item: ::protobuf::MessageField<MatPair>,
22040    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageElement.material)
22041    pub material: ::protobuf::MessageField<MatPair>,
22042    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageElement.id)
22043    pub id: ::std::option::Option<i32>,
22044    // special fields
22045    // @@protoc_insertion_point(special_field:RemoteFortressReader.ArtImageElement.special_fields)
22046    pub special_fields: ::protobuf::SpecialFields,
22047}
22048
22049impl<'a> ::std::default::Default for &'a ArtImageElement {
22050    fn default() -> &'a ArtImageElement {
22051        <ArtImageElement as ::protobuf::Message>::default_instance()
22052    }
22053}
22054
22055impl ArtImageElement {
22056    pub fn new() -> ArtImageElement {
22057        ::std::default::Default::default()
22058    }
22059
22060    // optional int32 count = 1;
22061
22062    pub fn count(&self) -> i32 {
22063        self.count.unwrap_or(0)
22064    }
22065
22066    pub fn clear_count(&mut self) {
22067        self.count = ::std::option::Option::None;
22068    }
22069
22070    pub fn has_count(&self) -> bool {
22071        self.count.is_some()
22072    }
22073
22074    // Param is passed by value, moved
22075    pub fn set_count(&mut self, v: i32) {
22076        self.count = ::std::option::Option::Some(v);
22077    }
22078
22079    // optional .RemoteFortressReader.ArtImageElementType type = 2;
22080
22081    pub fn type_(&self) -> ArtImageElementType {
22082        match self.type_ {
22083            Some(e) => e.enum_value_or(ArtImageElementType::IMAGE_CREATURE),
22084            None => ArtImageElementType::IMAGE_CREATURE,
22085        }
22086    }
22087
22088    pub fn clear_type_(&mut self) {
22089        self.type_ = ::std::option::Option::None;
22090    }
22091
22092    pub fn has_type(&self) -> bool {
22093        self.type_.is_some()
22094    }
22095
22096    // Param is passed by value, moved
22097    pub fn set_type(&mut self, v: ArtImageElementType) {
22098        self.type_ = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
22099    }
22100
22101    // optional int32 id = 6;
22102
22103    pub fn id(&self) -> i32 {
22104        self.id.unwrap_or(0)
22105    }
22106
22107    pub fn clear_id(&mut self) {
22108        self.id = ::std::option::Option::None;
22109    }
22110
22111    pub fn has_id(&self) -> bool {
22112        self.id.is_some()
22113    }
22114
22115    // Param is passed by value, moved
22116    pub fn set_id(&mut self, v: i32) {
22117        self.id = ::std::option::Option::Some(v);
22118    }
22119
22120    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
22121        let mut fields = ::std::vec::Vec::with_capacity(5);
22122        let mut oneofs = ::std::vec::Vec::with_capacity(0);
22123        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22124            "count",
22125            |m: &ArtImageElement| { &m.count },
22126            |m: &mut ArtImageElement| { &mut m.count },
22127        ));
22128        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22129            "type",
22130            |m: &ArtImageElement| { &m.type_ },
22131            |m: &mut ArtImageElement| { &mut m.type_ },
22132        ));
22133        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
22134            "creature_item",
22135            |m: &ArtImageElement| { &m.creature_item },
22136            |m: &mut ArtImageElement| { &mut m.creature_item },
22137        ));
22138        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
22139            "material",
22140            |m: &ArtImageElement| { &m.material },
22141            |m: &mut ArtImageElement| { &mut m.material },
22142        ));
22143        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22144            "id",
22145            |m: &ArtImageElement| { &m.id },
22146            |m: &mut ArtImageElement| { &mut m.id },
22147        ));
22148        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ArtImageElement>(
22149            "ArtImageElement",
22150            fields,
22151            oneofs,
22152        )
22153    }
22154}
22155
22156impl ::protobuf::Message for ArtImageElement {
22157    const NAME: &'static str = "ArtImageElement";
22158
22159    fn is_initialized(&self) -> bool {
22160        for v in &self.creature_item {
22161            if !v.is_initialized() {
22162                return false;
22163            }
22164        };
22165        for v in &self.material {
22166            if !v.is_initialized() {
22167                return false;
22168            }
22169        };
22170        true
22171    }
22172
22173    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
22174        while let Some(tag) = is.read_raw_tag_or_eof()? {
22175            match tag {
22176                8 => {
22177                    self.count = ::std::option::Option::Some(is.read_int32()?);
22178                },
22179                16 => {
22180                    self.type_ = ::std::option::Option::Some(is.read_enum_or_unknown()?);
22181                },
22182                26 => {
22183                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.creature_item)?;
22184                },
22185                42 => {
22186                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
22187                },
22188                48 => {
22189                    self.id = ::std::option::Option::Some(is.read_int32()?);
22190                },
22191                tag => {
22192                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
22193                },
22194            };
22195        }
22196        ::std::result::Result::Ok(())
22197    }
22198
22199    // Compute sizes of nested messages
22200    #[allow(unused_variables)]
22201    fn compute_size(&self) -> u64 {
22202        let mut my_size = 0;
22203        if let Some(v) = self.count {
22204            my_size += ::protobuf::rt::int32_size(1, v);
22205        }
22206        if let Some(v) = self.type_ {
22207            my_size += ::protobuf::rt::int32_size(2, v.value());
22208        }
22209        if let Some(v) = self.creature_item.as_ref() {
22210            let len = v.compute_size();
22211            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
22212        }
22213        if let Some(v) = self.material.as_ref() {
22214            let len = v.compute_size();
22215            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
22216        }
22217        if let Some(v) = self.id {
22218            my_size += ::protobuf::rt::int32_size(6, v);
22219        }
22220        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
22221        self.special_fields.cached_size().set(my_size as u32);
22222        my_size
22223    }
22224
22225    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
22226        if let Some(v) = self.count {
22227            os.write_int32(1, v)?;
22228        }
22229        if let Some(v) = self.type_ {
22230            os.write_enum(2, ::protobuf::EnumOrUnknown::value(&v))?;
22231        }
22232        if let Some(v) = self.creature_item.as_ref() {
22233            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
22234        }
22235        if let Some(v) = self.material.as_ref() {
22236            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
22237        }
22238        if let Some(v) = self.id {
22239            os.write_int32(6, v)?;
22240        }
22241        os.write_unknown_fields(self.special_fields.unknown_fields())?;
22242        ::std::result::Result::Ok(())
22243    }
22244
22245    fn special_fields(&self) -> &::protobuf::SpecialFields {
22246        &self.special_fields
22247    }
22248
22249    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
22250        &mut self.special_fields
22251    }
22252
22253    fn new() -> ArtImageElement {
22254        ArtImageElement::new()
22255    }
22256
22257    fn clear(&mut self) {
22258        self.count = ::std::option::Option::None;
22259        self.type_ = ::std::option::Option::None;
22260        self.creature_item.clear();
22261        self.material.clear();
22262        self.id = ::std::option::Option::None;
22263        self.special_fields.clear();
22264    }
22265
22266    fn default_instance() -> &'static ArtImageElement {
22267        static instance: ArtImageElement = ArtImageElement {
22268            count: ::std::option::Option::None,
22269            type_: ::std::option::Option::None,
22270            creature_item: ::protobuf::MessageField::none(),
22271            material: ::protobuf::MessageField::none(),
22272            id: ::std::option::Option::None,
22273            special_fields: ::protobuf::SpecialFields::new(),
22274        };
22275        &instance
22276    }
22277}
22278
22279impl ::protobuf::MessageFull for ArtImageElement {
22280    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
22281        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
22282        descriptor.get(|| file_descriptor().message_by_package_relative_name("ArtImageElement").unwrap()).clone()
22283    }
22284}
22285
22286impl ::std::fmt::Display for ArtImageElement {
22287    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
22288        ::protobuf::text_format::fmt(self, f)
22289    }
22290}
22291
22292impl ::protobuf::reflect::ProtobufValue for ArtImageElement {
22293    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
22294}
22295
22296// @@protoc_insertion_point(message:RemoteFortressReader.ArtImageProperty)
22297#[derive(PartialEq,Clone,Default,Debug)]
22298pub struct ArtImageProperty {
22299    // message fields
22300    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageProperty.subject)
22301    pub subject: ::std::option::Option<i32>,
22302    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageProperty.object)
22303    pub object: ::std::option::Option<i32>,
22304    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageProperty.verb)
22305    pub verb: ::std::option::Option<::protobuf::EnumOrUnknown<ArtImageVerb>>,
22306    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageProperty.type)
22307    pub type_: ::std::option::Option<::protobuf::EnumOrUnknown<ArtImagePropertyType>>,
22308    // special fields
22309    // @@protoc_insertion_point(special_field:RemoteFortressReader.ArtImageProperty.special_fields)
22310    pub special_fields: ::protobuf::SpecialFields,
22311}
22312
22313impl<'a> ::std::default::Default for &'a ArtImageProperty {
22314    fn default() -> &'a ArtImageProperty {
22315        <ArtImageProperty as ::protobuf::Message>::default_instance()
22316    }
22317}
22318
22319impl ArtImageProperty {
22320    pub fn new() -> ArtImageProperty {
22321        ::std::default::Default::default()
22322    }
22323
22324    // optional int32 subject = 1;
22325
22326    pub fn subject(&self) -> i32 {
22327        self.subject.unwrap_or(0)
22328    }
22329
22330    pub fn clear_subject(&mut self) {
22331        self.subject = ::std::option::Option::None;
22332    }
22333
22334    pub fn has_subject(&self) -> bool {
22335        self.subject.is_some()
22336    }
22337
22338    // Param is passed by value, moved
22339    pub fn set_subject(&mut self, v: i32) {
22340        self.subject = ::std::option::Option::Some(v);
22341    }
22342
22343    // optional int32 object = 2;
22344
22345    pub fn object(&self) -> i32 {
22346        self.object.unwrap_or(0)
22347    }
22348
22349    pub fn clear_object(&mut self) {
22350        self.object = ::std::option::Option::None;
22351    }
22352
22353    pub fn has_object(&self) -> bool {
22354        self.object.is_some()
22355    }
22356
22357    // Param is passed by value, moved
22358    pub fn set_object(&mut self, v: i32) {
22359        self.object = ::std::option::Option::Some(v);
22360    }
22361
22362    // optional .RemoteFortressReader.ArtImageVerb verb = 3;
22363
22364    pub fn verb(&self) -> ArtImageVerb {
22365        match self.verb {
22366            Some(e) => e.enum_value_or(ArtImageVerb::VERB_WITHERING),
22367            None => ArtImageVerb::VERB_WITHERING,
22368        }
22369    }
22370
22371    pub fn clear_verb(&mut self) {
22372        self.verb = ::std::option::Option::None;
22373    }
22374
22375    pub fn has_verb(&self) -> bool {
22376        self.verb.is_some()
22377    }
22378
22379    // Param is passed by value, moved
22380    pub fn set_verb(&mut self, v: ArtImageVerb) {
22381        self.verb = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
22382    }
22383
22384    // optional .RemoteFortressReader.ArtImagePropertyType type = 4;
22385
22386    pub fn type_(&self) -> ArtImagePropertyType {
22387        match self.type_ {
22388            Some(e) => e.enum_value_or(ArtImagePropertyType::TRANSITIVE_VERB),
22389            None => ArtImagePropertyType::TRANSITIVE_VERB,
22390        }
22391    }
22392
22393    pub fn clear_type_(&mut self) {
22394        self.type_ = ::std::option::Option::None;
22395    }
22396
22397    pub fn has_type(&self) -> bool {
22398        self.type_.is_some()
22399    }
22400
22401    // Param is passed by value, moved
22402    pub fn set_type(&mut self, v: ArtImagePropertyType) {
22403        self.type_ = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
22404    }
22405
22406    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
22407        let mut fields = ::std::vec::Vec::with_capacity(4);
22408        let mut oneofs = ::std::vec::Vec::with_capacity(0);
22409        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22410            "subject",
22411            |m: &ArtImageProperty| { &m.subject },
22412            |m: &mut ArtImageProperty| { &mut m.subject },
22413        ));
22414        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22415            "object",
22416            |m: &ArtImageProperty| { &m.object },
22417            |m: &mut ArtImageProperty| { &mut m.object },
22418        ));
22419        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22420            "verb",
22421            |m: &ArtImageProperty| { &m.verb },
22422            |m: &mut ArtImageProperty| { &mut m.verb },
22423        ));
22424        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22425            "type",
22426            |m: &ArtImageProperty| { &m.type_ },
22427            |m: &mut ArtImageProperty| { &mut m.type_ },
22428        ));
22429        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ArtImageProperty>(
22430            "ArtImageProperty",
22431            fields,
22432            oneofs,
22433        )
22434    }
22435}
22436
22437impl ::protobuf::Message for ArtImageProperty {
22438    const NAME: &'static str = "ArtImageProperty";
22439
22440    fn is_initialized(&self) -> bool {
22441        true
22442    }
22443
22444    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
22445        while let Some(tag) = is.read_raw_tag_or_eof()? {
22446            match tag {
22447                8 => {
22448                    self.subject = ::std::option::Option::Some(is.read_int32()?);
22449                },
22450                16 => {
22451                    self.object = ::std::option::Option::Some(is.read_int32()?);
22452                },
22453                24 => {
22454                    self.verb = ::std::option::Option::Some(is.read_enum_or_unknown()?);
22455                },
22456                32 => {
22457                    self.type_ = ::std::option::Option::Some(is.read_enum_or_unknown()?);
22458                },
22459                tag => {
22460                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
22461                },
22462            };
22463        }
22464        ::std::result::Result::Ok(())
22465    }
22466
22467    // Compute sizes of nested messages
22468    #[allow(unused_variables)]
22469    fn compute_size(&self) -> u64 {
22470        let mut my_size = 0;
22471        if let Some(v) = self.subject {
22472            my_size += ::protobuf::rt::int32_size(1, v);
22473        }
22474        if let Some(v) = self.object {
22475            my_size += ::protobuf::rt::int32_size(2, v);
22476        }
22477        if let Some(v) = self.verb {
22478            my_size += ::protobuf::rt::int32_size(3, v.value());
22479        }
22480        if let Some(v) = self.type_ {
22481            my_size += ::protobuf::rt::int32_size(4, v.value());
22482        }
22483        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
22484        self.special_fields.cached_size().set(my_size as u32);
22485        my_size
22486    }
22487
22488    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
22489        if let Some(v) = self.subject {
22490            os.write_int32(1, v)?;
22491        }
22492        if let Some(v) = self.object {
22493            os.write_int32(2, v)?;
22494        }
22495        if let Some(v) = self.verb {
22496            os.write_enum(3, ::protobuf::EnumOrUnknown::value(&v))?;
22497        }
22498        if let Some(v) = self.type_ {
22499            os.write_enum(4, ::protobuf::EnumOrUnknown::value(&v))?;
22500        }
22501        os.write_unknown_fields(self.special_fields.unknown_fields())?;
22502        ::std::result::Result::Ok(())
22503    }
22504
22505    fn special_fields(&self) -> &::protobuf::SpecialFields {
22506        &self.special_fields
22507    }
22508
22509    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
22510        &mut self.special_fields
22511    }
22512
22513    fn new() -> ArtImageProperty {
22514        ArtImageProperty::new()
22515    }
22516
22517    fn clear(&mut self) {
22518        self.subject = ::std::option::Option::None;
22519        self.object = ::std::option::Option::None;
22520        self.verb = ::std::option::Option::None;
22521        self.type_ = ::std::option::Option::None;
22522        self.special_fields.clear();
22523    }
22524
22525    fn default_instance() -> &'static ArtImageProperty {
22526        static instance: ArtImageProperty = ArtImageProperty {
22527            subject: ::std::option::Option::None,
22528            object: ::std::option::Option::None,
22529            verb: ::std::option::Option::None,
22530            type_: ::std::option::Option::None,
22531            special_fields: ::protobuf::SpecialFields::new(),
22532        };
22533        &instance
22534    }
22535}
22536
22537impl ::protobuf::MessageFull for ArtImageProperty {
22538    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
22539        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
22540        descriptor.get(|| file_descriptor().message_by_package_relative_name("ArtImageProperty").unwrap()).clone()
22541    }
22542}
22543
22544impl ::std::fmt::Display for ArtImageProperty {
22545    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
22546        ::protobuf::text_format::fmt(self, f)
22547    }
22548}
22549
22550impl ::protobuf::reflect::ProtobufValue for ArtImageProperty {
22551    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
22552}
22553
22554// @@protoc_insertion_point(message:RemoteFortressReader.ArtImage)
22555#[derive(PartialEq,Clone,Default,Debug)]
22556pub struct ArtImage {
22557    // message fields
22558    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImage.elements)
22559    pub elements: ::std::vec::Vec<ArtImageElement>,
22560    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImage.id)
22561    pub id: ::protobuf::MessageField<MatPair>,
22562    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImage.properties)
22563    pub properties: ::std::vec::Vec<ArtImageProperty>,
22564    // special fields
22565    // @@protoc_insertion_point(special_field:RemoteFortressReader.ArtImage.special_fields)
22566    pub special_fields: ::protobuf::SpecialFields,
22567}
22568
22569impl<'a> ::std::default::Default for &'a ArtImage {
22570    fn default() -> &'a ArtImage {
22571        <ArtImage as ::protobuf::Message>::default_instance()
22572    }
22573}
22574
22575impl ArtImage {
22576    pub fn new() -> ArtImage {
22577        ::std::default::Default::default()
22578    }
22579
22580    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
22581        let mut fields = ::std::vec::Vec::with_capacity(3);
22582        let mut oneofs = ::std::vec::Vec::with_capacity(0);
22583        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
22584            "elements",
22585            |m: &ArtImage| { &m.elements },
22586            |m: &mut ArtImage| { &mut m.elements },
22587        ));
22588        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
22589            "id",
22590            |m: &ArtImage| { &m.id },
22591            |m: &mut ArtImage| { &mut m.id },
22592        ));
22593        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
22594            "properties",
22595            |m: &ArtImage| { &m.properties },
22596            |m: &mut ArtImage| { &mut m.properties },
22597        ));
22598        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ArtImage>(
22599            "ArtImage",
22600            fields,
22601            oneofs,
22602        )
22603    }
22604}
22605
22606impl ::protobuf::Message for ArtImage {
22607    const NAME: &'static str = "ArtImage";
22608
22609    fn is_initialized(&self) -> bool {
22610        for v in &self.elements {
22611            if !v.is_initialized() {
22612                return false;
22613            }
22614        };
22615        for v in &self.id {
22616            if !v.is_initialized() {
22617                return false;
22618            }
22619        };
22620        for v in &self.properties {
22621            if !v.is_initialized() {
22622                return false;
22623            }
22624        };
22625        true
22626    }
22627
22628    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
22629        while let Some(tag) = is.read_raw_tag_or_eof()? {
22630            match tag {
22631                10 => {
22632                    self.elements.push(is.read_message()?);
22633                },
22634                18 => {
22635                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.id)?;
22636                },
22637                26 => {
22638                    self.properties.push(is.read_message()?);
22639                },
22640                tag => {
22641                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
22642                },
22643            };
22644        }
22645        ::std::result::Result::Ok(())
22646    }
22647
22648    // Compute sizes of nested messages
22649    #[allow(unused_variables)]
22650    fn compute_size(&self) -> u64 {
22651        let mut my_size = 0;
22652        for value in &self.elements {
22653            let len = value.compute_size();
22654            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
22655        };
22656        if let Some(v) = self.id.as_ref() {
22657            let len = v.compute_size();
22658            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
22659        }
22660        for value in &self.properties {
22661            let len = value.compute_size();
22662            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
22663        };
22664        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
22665        self.special_fields.cached_size().set(my_size as u32);
22666        my_size
22667    }
22668
22669    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
22670        for v in &self.elements {
22671            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
22672        };
22673        if let Some(v) = self.id.as_ref() {
22674            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
22675        }
22676        for v in &self.properties {
22677            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
22678        };
22679        os.write_unknown_fields(self.special_fields.unknown_fields())?;
22680        ::std::result::Result::Ok(())
22681    }
22682
22683    fn special_fields(&self) -> &::protobuf::SpecialFields {
22684        &self.special_fields
22685    }
22686
22687    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
22688        &mut self.special_fields
22689    }
22690
22691    fn new() -> ArtImage {
22692        ArtImage::new()
22693    }
22694
22695    fn clear(&mut self) {
22696        self.elements.clear();
22697        self.id.clear();
22698        self.properties.clear();
22699        self.special_fields.clear();
22700    }
22701
22702    fn default_instance() -> &'static ArtImage {
22703        static instance: ArtImage = ArtImage {
22704            elements: ::std::vec::Vec::new(),
22705            id: ::protobuf::MessageField::none(),
22706            properties: ::std::vec::Vec::new(),
22707            special_fields: ::protobuf::SpecialFields::new(),
22708        };
22709        &instance
22710    }
22711}
22712
22713impl ::protobuf::MessageFull for ArtImage {
22714    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
22715        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
22716        descriptor.get(|| file_descriptor().message_by_package_relative_name("ArtImage").unwrap()).clone()
22717    }
22718}
22719
22720impl ::std::fmt::Display for ArtImage {
22721    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
22722        ::protobuf::text_format::fmt(self, f)
22723    }
22724}
22725
22726impl ::protobuf::reflect::ProtobufValue for ArtImage {
22727    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
22728}
22729
22730// @@protoc_insertion_point(message:RemoteFortressReader.Engraving)
22731#[derive(PartialEq,Clone,Default,Debug)]
22732pub struct Engraving {
22733    // message fields
22734    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.pos)
22735    pub pos: ::protobuf::MessageField<Coord>,
22736    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.quality)
22737    pub quality: ::std::option::Option<i32>,
22738    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.tile)
22739    pub tile: ::std::option::Option<i32>,
22740    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.image)
22741    pub image: ::protobuf::MessageField<ArtImage>,
22742    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.floor)
22743    pub floor: ::std::option::Option<bool>,
22744    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.west)
22745    pub west: ::std::option::Option<bool>,
22746    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.east)
22747    pub east: ::std::option::Option<bool>,
22748    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.north)
22749    pub north: ::std::option::Option<bool>,
22750    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.south)
22751    pub south: ::std::option::Option<bool>,
22752    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.hidden)
22753    pub hidden: ::std::option::Option<bool>,
22754    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.northwest)
22755    pub northwest: ::std::option::Option<bool>,
22756    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.northeast)
22757    pub northeast: ::std::option::Option<bool>,
22758    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.southwest)
22759    pub southwest: ::std::option::Option<bool>,
22760    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.southeast)
22761    pub southeast: ::std::option::Option<bool>,
22762    // special fields
22763    // @@protoc_insertion_point(special_field:RemoteFortressReader.Engraving.special_fields)
22764    pub special_fields: ::protobuf::SpecialFields,
22765}
22766
22767impl<'a> ::std::default::Default for &'a Engraving {
22768    fn default() -> &'a Engraving {
22769        <Engraving as ::protobuf::Message>::default_instance()
22770    }
22771}
22772
22773impl Engraving {
22774    pub fn new() -> Engraving {
22775        ::std::default::Default::default()
22776    }
22777
22778    // optional int32 quality = 2;
22779
22780    pub fn quality(&self) -> i32 {
22781        self.quality.unwrap_or(0)
22782    }
22783
22784    pub fn clear_quality(&mut self) {
22785        self.quality = ::std::option::Option::None;
22786    }
22787
22788    pub fn has_quality(&self) -> bool {
22789        self.quality.is_some()
22790    }
22791
22792    // Param is passed by value, moved
22793    pub fn set_quality(&mut self, v: i32) {
22794        self.quality = ::std::option::Option::Some(v);
22795    }
22796
22797    // optional int32 tile = 3;
22798
22799    pub fn tile(&self) -> i32 {
22800        self.tile.unwrap_or(0)
22801    }
22802
22803    pub fn clear_tile(&mut self) {
22804        self.tile = ::std::option::Option::None;
22805    }
22806
22807    pub fn has_tile(&self) -> bool {
22808        self.tile.is_some()
22809    }
22810
22811    // Param is passed by value, moved
22812    pub fn set_tile(&mut self, v: i32) {
22813        self.tile = ::std::option::Option::Some(v);
22814    }
22815
22816    // optional bool floor = 5;
22817
22818    pub fn floor(&self) -> bool {
22819        self.floor.unwrap_or(false)
22820    }
22821
22822    pub fn clear_floor(&mut self) {
22823        self.floor = ::std::option::Option::None;
22824    }
22825
22826    pub fn has_floor(&self) -> bool {
22827        self.floor.is_some()
22828    }
22829
22830    // Param is passed by value, moved
22831    pub fn set_floor(&mut self, v: bool) {
22832        self.floor = ::std::option::Option::Some(v);
22833    }
22834
22835    // optional bool west = 6;
22836
22837    pub fn west(&self) -> bool {
22838        self.west.unwrap_or(false)
22839    }
22840
22841    pub fn clear_west(&mut self) {
22842        self.west = ::std::option::Option::None;
22843    }
22844
22845    pub fn has_west(&self) -> bool {
22846        self.west.is_some()
22847    }
22848
22849    // Param is passed by value, moved
22850    pub fn set_west(&mut self, v: bool) {
22851        self.west = ::std::option::Option::Some(v);
22852    }
22853
22854    // optional bool east = 7;
22855
22856    pub fn east(&self) -> bool {
22857        self.east.unwrap_or(false)
22858    }
22859
22860    pub fn clear_east(&mut self) {
22861        self.east = ::std::option::Option::None;
22862    }
22863
22864    pub fn has_east(&self) -> bool {
22865        self.east.is_some()
22866    }
22867
22868    // Param is passed by value, moved
22869    pub fn set_east(&mut self, v: bool) {
22870        self.east = ::std::option::Option::Some(v);
22871    }
22872
22873    // optional bool north = 8;
22874
22875    pub fn north(&self) -> bool {
22876        self.north.unwrap_or(false)
22877    }
22878
22879    pub fn clear_north(&mut self) {
22880        self.north = ::std::option::Option::None;
22881    }
22882
22883    pub fn has_north(&self) -> bool {
22884        self.north.is_some()
22885    }
22886
22887    // Param is passed by value, moved
22888    pub fn set_north(&mut self, v: bool) {
22889        self.north = ::std::option::Option::Some(v);
22890    }
22891
22892    // optional bool south = 9;
22893
22894    pub fn south(&self) -> bool {
22895        self.south.unwrap_or(false)
22896    }
22897
22898    pub fn clear_south(&mut self) {
22899        self.south = ::std::option::Option::None;
22900    }
22901
22902    pub fn has_south(&self) -> bool {
22903        self.south.is_some()
22904    }
22905
22906    // Param is passed by value, moved
22907    pub fn set_south(&mut self, v: bool) {
22908        self.south = ::std::option::Option::Some(v);
22909    }
22910
22911    // optional bool hidden = 10;
22912
22913    pub fn hidden(&self) -> bool {
22914        self.hidden.unwrap_or(false)
22915    }
22916
22917    pub fn clear_hidden(&mut self) {
22918        self.hidden = ::std::option::Option::None;
22919    }
22920
22921    pub fn has_hidden(&self) -> bool {
22922        self.hidden.is_some()
22923    }
22924
22925    // Param is passed by value, moved
22926    pub fn set_hidden(&mut self, v: bool) {
22927        self.hidden = ::std::option::Option::Some(v);
22928    }
22929
22930    // optional bool northwest = 11;
22931
22932    pub fn northwest(&self) -> bool {
22933        self.northwest.unwrap_or(false)
22934    }
22935
22936    pub fn clear_northwest(&mut self) {
22937        self.northwest = ::std::option::Option::None;
22938    }
22939
22940    pub fn has_northwest(&self) -> bool {
22941        self.northwest.is_some()
22942    }
22943
22944    // Param is passed by value, moved
22945    pub fn set_northwest(&mut self, v: bool) {
22946        self.northwest = ::std::option::Option::Some(v);
22947    }
22948
22949    // optional bool northeast = 12;
22950
22951    pub fn northeast(&self) -> bool {
22952        self.northeast.unwrap_or(false)
22953    }
22954
22955    pub fn clear_northeast(&mut self) {
22956        self.northeast = ::std::option::Option::None;
22957    }
22958
22959    pub fn has_northeast(&self) -> bool {
22960        self.northeast.is_some()
22961    }
22962
22963    // Param is passed by value, moved
22964    pub fn set_northeast(&mut self, v: bool) {
22965        self.northeast = ::std::option::Option::Some(v);
22966    }
22967
22968    // optional bool southwest = 13;
22969
22970    pub fn southwest(&self) -> bool {
22971        self.southwest.unwrap_or(false)
22972    }
22973
22974    pub fn clear_southwest(&mut self) {
22975        self.southwest = ::std::option::Option::None;
22976    }
22977
22978    pub fn has_southwest(&self) -> bool {
22979        self.southwest.is_some()
22980    }
22981
22982    // Param is passed by value, moved
22983    pub fn set_southwest(&mut self, v: bool) {
22984        self.southwest = ::std::option::Option::Some(v);
22985    }
22986
22987    // optional bool southeast = 14;
22988
22989    pub fn southeast(&self) -> bool {
22990        self.southeast.unwrap_or(false)
22991    }
22992
22993    pub fn clear_southeast(&mut self) {
22994        self.southeast = ::std::option::Option::None;
22995    }
22996
22997    pub fn has_southeast(&self) -> bool {
22998        self.southeast.is_some()
22999    }
23000
23001    // Param is passed by value, moved
23002    pub fn set_southeast(&mut self, v: bool) {
23003        self.southeast = ::std::option::Option::Some(v);
23004    }
23005
23006    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
23007        let mut fields = ::std::vec::Vec::with_capacity(14);
23008        let mut oneofs = ::std::vec::Vec::with_capacity(0);
23009        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
23010            "pos",
23011            |m: &Engraving| { &m.pos },
23012            |m: &mut Engraving| { &mut m.pos },
23013        ));
23014        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23015            "quality",
23016            |m: &Engraving| { &m.quality },
23017            |m: &mut Engraving| { &mut m.quality },
23018        ));
23019        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23020            "tile",
23021            |m: &Engraving| { &m.tile },
23022            |m: &mut Engraving| { &mut m.tile },
23023        ));
23024        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ArtImage>(
23025            "image",
23026            |m: &Engraving| { &m.image },
23027            |m: &mut Engraving| { &mut m.image },
23028        ));
23029        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23030            "floor",
23031            |m: &Engraving| { &m.floor },
23032            |m: &mut Engraving| { &mut m.floor },
23033        ));
23034        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23035            "west",
23036            |m: &Engraving| { &m.west },
23037            |m: &mut Engraving| { &mut m.west },
23038        ));
23039        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23040            "east",
23041            |m: &Engraving| { &m.east },
23042            |m: &mut Engraving| { &mut m.east },
23043        ));
23044        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23045            "north",
23046            |m: &Engraving| { &m.north },
23047            |m: &mut Engraving| { &mut m.north },
23048        ));
23049        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23050            "south",
23051            |m: &Engraving| { &m.south },
23052            |m: &mut Engraving| { &mut m.south },
23053        ));
23054        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23055            "hidden",
23056            |m: &Engraving| { &m.hidden },
23057            |m: &mut Engraving| { &mut m.hidden },
23058        ));
23059        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23060            "northwest",
23061            |m: &Engraving| { &m.northwest },
23062            |m: &mut Engraving| { &mut m.northwest },
23063        ));
23064        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23065            "northeast",
23066            |m: &Engraving| { &m.northeast },
23067            |m: &mut Engraving| { &mut m.northeast },
23068        ));
23069        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23070            "southwest",
23071            |m: &Engraving| { &m.southwest },
23072            |m: &mut Engraving| { &mut m.southwest },
23073        ));
23074        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23075            "southeast",
23076            |m: &Engraving| { &m.southeast },
23077            |m: &mut Engraving| { &mut m.southeast },
23078        ));
23079        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Engraving>(
23080            "Engraving",
23081            fields,
23082            oneofs,
23083        )
23084    }
23085}
23086
23087impl ::protobuf::Message for Engraving {
23088    const NAME: &'static str = "Engraving";
23089
23090    fn is_initialized(&self) -> bool {
23091        for v in &self.pos {
23092            if !v.is_initialized() {
23093                return false;
23094            }
23095        };
23096        for v in &self.image {
23097            if !v.is_initialized() {
23098                return false;
23099            }
23100        };
23101        true
23102    }
23103
23104    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
23105        while let Some(tag) = is.read_raw_tag_or_eof()? {
23106            match tag {
23107                10 => {
23108                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.pos)?;
23109                },
23110                16 => {
23111                    self.quality = ::std::option::Option::Some(is.read_int32()?);
23112                },
23113                24 => {
23114                    self.tile = ::std::option::Option::Some(is.read_int32()?);
23115                },
23116                34 => {
23117                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.image)?;
23118                },
23119                40 => {
23120                    self.floor = ::std::option::Option::Some(is.read_bool()?);
23121                },
23122                48 => {
23123                    self.west = ::std::option::Option::Some(is.read_bool()?);
23124                },
23125                56 => {
23126                    self.east = ::std::option::Option::Some(is.read_bool()?);
23127                },
23128                64 => {
23129                    self.north = ::std::option::Option::Some(is.read_bool()?);
23130                },
23131                72 => {
23132                    self.south = ::std::option::Option::Some(is.read_bool()?);
23133                },
23134                80 => {
23135                    self.hidden = ::std::option::Option::Some(is.read_bool()?);
23136                },
23137                88 => {
23138                    self.northwest = ::std::option::Option::Some(is.read_bool()?);
23139                },
23140                96 => {
23141                    self.northeast = ::std::option::Option::Some(is.read_bool()?);
23142                },
23143                104 => {
23144                    self.southwest = ::std::option::Option::Some(is.read_bool()?);
23145                },
23146                112 => {
23147                    self.southeast = ::std::option::Option::Some(is.read_bool()?);
23148                },
23149                tag => {
23150                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
23151                },
23152            };
23153        }
23154        ::std::result::Result::Ok(())
23155    }
23156
23157    // Compute sizes of nested messages
23158    #[allow(unused_variables)]
23159    fn compute_size(&self) -> u64 {
23160        let mut my_size = 0;
23161        if let Some(v) = self.pos.as_ref() {
23162            let len = v.compute_size();
23163            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23164        }
23165        if let Some(v) = self.quality {
23166            my_size += ::protobuf::rt::int32_size(2, v);
23167        }
23168        if let Some(v) = self.tile {
23169            my_size += ::protobuf::rt::int32_size(3, v);
23170        }
23171        if let Some(v) = self.image.as_ref() {
23172            let len = v.compute_size();
23173            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23174        }
23175        if let Some(v) = self.floor {
23176            my_size += 1 + 1;
23177        }
23178        if let Some(v) = self.west {
23179            my_size += 1 + 1;
23180        }
23181        if let Some(v) = self.east {
23182            my_size += 1 + 1;
23183        }
23184        if let Some(v) = self.north {
23185            my_size += 1 + 1;
23186        }
23187        if let Some(v) = self.south {
23188            my_size += 1 + 1;
23189        }
23190        if let Some(v) = self.hidden {
23191            my_size += 1 + 1;
23192        }
23193        if let Some(v) = self.northwest {
23194            my_size += 1 + 1;
23195        }
23196        if let Some(v) = self.northeast {
23197            my_size += 1 + 1;
23198        }
23199        if let Some(v) = self.southwest {
23200            my_size += 1 + 1;
23201        }
23202        if let Some(v) = self.southeast {
23203            my_size += 1 + 1;
23204        }
23205        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
23206        self.special_fields.cached_size().set(my_size as u32);
23207        my_size
23208    }
23209
23210    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
23211        if let Some(v) = self.pos.as_ref() {
23212            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
23213        }
23214        if let Some(v) = self.quality {
23215            os.write_int32(2, v)?;
23216        }
23217        if let Some(v) = self.tile {
23218            os.write_int32(3, v)?;
23219        }
23220        if let Some(v) = self.image.as_ref() {
23221            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
23222        }
23223        if let Some(v) = self.floor {
23224            os.write_bool(5, v)?;
23225        }
23226        if let Some(v) = self.west {
23227            os.write_bool(6, v)?;
23228        }
23229        if let Some(v) = self.east {
23230            os.write_bool(7, v)?;
23231        }
23232        if let Some(v) = self.north {
23233            os.write_bool(8, v)?;
23234        }
23235        if let Some(v) = self.south {
23236            os.write_bool(9, v)?;
23237        }
23238        if let Some(v) = self.hidden {
23239            os.write_bool(10, v)?;
23240        }
23241        if let Some(v) = self.northwest {
23242            os.write_bool(11, v)?;
23243        }
23244        if let Some(v) = self.northeast {
23245            os.write_bool(12, v)?;
23246        }
23247        if let Some(v) = self.southwest {
23248            os.write_bool(13, v)?;
23249        }
23250        if let Some(v) = self.southeast {
23251            os.write_bool(14, v)?;
23252        }
23253        os.write_unknown_fields(self.special_fields.unknown_fields())?;
23254        ::std::result::Result::Ok(())
23255    }
23256
23257    fn special_fields(&self) -> &::protobuf::SpecialFields {
23258        &self.special_fields
23259    }
23260
23261    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
23262        &mut self.special_fields
23263    }
23264
23265    fn new() -> Engraving {
23266        Engraving::new()
23267    }
23268
23269    fn clear(&mut self) {
23270        self.pos.clear();
23271        self.quality = ::std::option::Option::None;
23272        self.tile = ::std::option::Option::None;
23273        self.image.clear();
23274        self.floor = ::std::option::Option::None;
23275        self.west = ::std::option::Option::None;
23276        self.east = ::std::option::Option::None;
23277        self.north = ::std::option::Option::None;
23278        self.south = ::std::option::Option::None;
23279        self.hidden = ::std::option::Option::None;
23280        self.northwest = ::std::option::Option::None;
23281        self.northeast = ::std::option::Option::None;
23282        self.southwest = ::std::option::Option::None;
23283        self.southeast = ::std::option::Option::None;
23284        self.special_fields.clear();
23285    }
23286
23287    fn default_instance() -> &'static Engraving {
23288        static instance: Engraving = Engraving {
23289            pos: ::protobuf::MessageField::none(),
23290            quality: ::std::option::Option::None,
23291            tile: ::std::option::Option::None,
23292            image: ::protobuf::MessageField::none(),
23293            floor: ::std::option::Option::None,
23294            west: ::std::option::Option::None,
23295            east: ::std::option::Option::None,
23296            north: ::std::option::Option::None,
23297            south: ::std::option::Option::None,
23298            hidden: ::std::option::Option::None,
23299            northwest: ::std::option::Option::None,
23300            northeast: ::std::option::Option::None,
23301            southwest: ::std::option::Option::None,
23302            southeast: ::std::option::Option::None,
23303            special_fields: ::protobuf::SpecialFields::new(),
23304        };
23305        &instance
23306    }
23307}
23308
23309impl ::protobuf::MessageFull for Engraving {
23310    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
23311        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
23312        descriptor.get(|| file_descriptor().message_by_package_relative_name("Engraving").unwrap()).clone()
23313    }
23314}
23315
23316impl ::std::fmt::Display for Engraving {
23317    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
23318        ::protobuf::text_format::fmt(self, f)
23319    }
23320}
23321
23322impl ::protobuf::reflect::ProtobufValue for Engraving {
23323    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
23324}
23325
23326// @@protoc_insertion_point(message:RemoteFortressReader.FlowInfo)
23327#[derive(PartialEq,Clone,Default,Debug)]
23328pub struct FlowInfo {
23329    // message fields
23330    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.index)
23331    pub index: ::std::option::Option<i32>,
23332    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.type)
23333    pub type_: ::std::option::Option<::protobuf::EnumOrUnknown<FlowType>>,
23334    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.density)
23335    pub density: ::std::option::Option<i32>,
23336    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.pos)
23337    pub pos: ::protobuf::MessageField<Coord>,
23338    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.dest)
23339    pub dest: ::protobuf::MessageField<Coord>,
23340    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.expanding)
23341    pub expanding: ::std::option::Option<bool>,
23342    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.reuse)
23343    pub reuse: ::std::option::Option<bool>,
23344    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.guide_id)
23345    pub guide_id: ::std::option::Option<i32>,
23346    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.material)
23347    pub material: ::protobuf::MessageField<MatPair>,
23348    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.item)
23349    pub item: ::protobuf::MessageField<MatPair>,
23350    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.dead)
23351    pub dead: ::std::option::Option<bool>,
23352    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.fast)
23353    pub fast: ::std::option::Option<bool>,
23354    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.creeping)
23355    pub creeping: ::std::option::Option<bool>,
23356    // special fields
23357    // @@protoc_insertion_point(special_field:RemoteFortressReader.FlowInfo.special_fields)
23358    pub special_fields: ::protobuf::SpecialFields,
23359}
23360
23361impl<'a> ::std::default::Default for &'a FlowInfo {
23362    fn default() -> &'a FlowInfo {
23363        <FlowInfo as ::protobuf::Message>::default_instance()
23364    }
23365}
23366
23367impl FlowInfo {
23368    pub fn new() -> FlowInfo {
23369        ::std::default::Default::default()
23370    }
23371
23372    // optional int32 index = 1;
23373
23374    pub fn index(&self) -> i32 {
23375        self.index.unwrap_or(0)
23376    }
23377
23378    pub fn clear_index(&mut self) {
23379        self.index = ::std::option::Option::None;
23380    }
23381
23382    pub fn has_index(&self) -> bool {
23383        self.index.is_some()
23384    }
23385
23386    // Param is passed by value, moved
23387    pub fn set_index(&mut self, v: i32) {
23388        self.index = ::std::option::Option::Some(v);
23389    }
23390
23391    // optional .RemoteFortressReader.FlowType type = 2;
23392
23393    pub fn type_(&self) -> FlowType {
23394        match self.type_ {
23395            Some(e) => e.enum_value_or(FlowType::Miasma),
23396            None => FlowType::Miasma,
23397        }
23398    }
23399
23400    pub fn clear_type_(&mut self) {
23401        self.type_ = ::std::option::Option::None;
23402    }
23403
23404    pub fn has_type(&self) -> bool {
23405        self.type_.is_some()
23406    }
23407
23408    // Param is passed by value, moved
23409    pub fn set_type(&mut self, v: FlowType) {
23410        self.type_ = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
23411    }
23412
23413    // optional int32 density = 3;
23414
23415    pub fn density(&self) -> i32 {
23416        self.density.unwrap_or(0)
23417    }
23418
23419    pub fn clear_density(&mut self) {
23420        self.density = ::std::option::Option::None;
23421    }
23422
23423    pub fn has_density(&self) -> bool {
23424        self.density.is_some()
23425    }
23426
23427    // Param is passed by value, moved
23428    pub fn set_density(&mut self, v: i32) {
23429        self.density = ::std::option::Option::Some(v);
23430    }
23431
23432    // optional bool expanding = 6;
23433
23434    pub fn expanding(&self) -> bool {
23435        self.expanding.unwrap_or(false)
23436    }
23437
23438    pub fn clear_expanding(&mut self) {
23439        self.expanding = ::std::option::Option::None;
23440    }
23441
23442    pub fn has_expanding(&self) -> bool {
23443        self.expanding.is_some()
23444    }
23445
23446    // Param is passed by value, moved
23447    pub fn set_expanding(&mut self, v: bool) {
23448        self.expanding = ::std::option::Option::Some(v);
23449    }
23450
23451    // optional bool reuse = 7;
23452
23453    pub fn reuse(&self) -> bool {
23454        self.reuse.unwrap_or(false)
23455    }
23456
23457    pub fn clear_reuse(&mut self) {
23458        self.reuse = ::std::option::Option::None;
23459    }
23460
23461    pub fn has_reuse(&self) -> bool {
23462        self.reuse.is_some()
23463    }
23464
23465    // Param is passed by value, moved
23466    pub fn set_reuse(&mut self, v: bool) {
23467        self.reuse = ::std::option::Option::Some(v);
23468    }
23469
23470    // optional int32 guide_id = 8;
23471
23472    pub fn guide_id(&self) -> i32 {
23473        self.guide_id.unwrap_or(0)
23474    }
23475
23476    pub fn clear_guide_id(&mut self) {
23477        self.guide_id = ::std::option::Option::None;
23478    }
23479
23480    pub fn has_guide_id(&self) -> bool {
23481        self.guide_id.is_some()
23482    }
23483
23484    // Param is passed by value, moved
23485    pub fn set_guide_id(&mut self, v: i32) {
23486        self.guide_id = ::std::option::Option::Some(v);
23487    }
23488
23489    // optional bool dead = 11;
23490
23491    pub fn dead(&self) -> bool {
23492        self.dead.unwrap_or(false)
23493    }
23494
23495    pub fn clear_dead(&mut self) {
23496        self.dead = ::std::option::Option::None;
23497    }
23498
23499    pub fn has_dead(&self) -> bool {
23500        self.dead.is_some()
23501    }
23502
23503    // Param is passed by value, moved
23504    pub fn set_dead(&mut self, v: bool) {
23505        self.dead = ::std::option::Option::Some(v);
23506    }
23507
23508    // optional bool fast = 12;
23509
23510    pub fn fast(&self) -> bool {
23511        self.fast.unwrap_or(false)
23512    }
23513
23514    pub fn clear_fast(&mut self) {
23515        self.fast = ::std::option::Option::None;
23516    }
23517
23518    pub fn has_fast(&self) -> bool {
23519        self.fast.is_some()
23520    }
23521
23522    // Param is passed by value, moved
23523    pub fn set_fast(&mut self, v: bool) {
23524        self.fast = ::std::option::Option::Some(v);
23525    }
23526
23527    // optional bool creeping = 13;
23528
23529    pub fn creeping(&self) -> bool {
23530        self.creeping.unwrap_or(false)
23531    }
23532
23533    pub fn clear_creeping(&mut self) {
23534        self.creeping = ::std::option::Option::None;
23535    }
23536
23537    pub fn has_creeping(&self) -> bool {
23538        self.creeping.is_some()
23539    }
23540
23541    // Param is passed by value, moved
23542    pub fn set_creeping(&mut self, v: bool) {
23543        self.creeping = ::std::option::Option::Some(v);
23544    }
23545
23546    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
23547        let mut fields = ::std::vec::Vec::with_capacity(13);
23548        let mut oneofs = ::std::vec::Vec::with_capacity(0);
23549        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23550            "index",
23551            |m: &FlowInfo| { &m.index },
23552            |m: &mut FlowInfo| { &mut m.index },
23553        ));
23554        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23555            "type",
23556            |m: &FlowInfo| { &m.type_ },
23557            |m: &mut FlowInfo| { &mut m.type_ },
23558        ));
23559        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23560            "density",
23561            |m: &FlowInfo| { &m.density },
23562            |m: &mut FlowInfo| { &mut m.density },
23563        ));
23564        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
23565            "pos",
23566            |m: &FlowInfo| { &m.pos },
23567            |m: &mut FlowInfo| { &mut m.pos },
23568        ));
23569        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
23570            "dest",
23571            |m: &FlowInfo| { &m.dest },
23572            |m: &mut FlowInfo| { &mut m.dest },
23573        ));
23574        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23575            "expanding",
23576            |m: &FlowInfo| { &m.expanding },
23577            |m: &mut FlowInfo| { &mut m.expanding },
23578        ));
23579        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23580            "reuse",
23581            |m: &FlowInfo| { &m.reuse },
23582            |m: &mut FlowInfo| { &mut m.reuse },
23583        ));
23584        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23585            "guide_id",
23586            |m: &FlowInfo| { &m.guide_id },
23587            |m: &mut FlowInfo| { &mut m.guide_id },
23588        ));
23589        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
23590            "material",
23591            |m: &FlowInfo| { &m.material },
23592            |m: &mut FlowInfo| { &mut m.material },
23593        ));
23594        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
23595            "item",
23596            |m: &FlowInfo| { &m.item },
23597            |m: &mut FlowInfo| { &mut m.item },
23598        ));
23599        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23600            "dead",
23601            |m: &FlowInfo| { &m.dead },
23602            |m: &mut FlowInfo| { &mut m.dead },
23603        ));
23604        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23605            "fast",
23606            |m: &FlowInfo| { &m.fast },
23607            |m: &mut FlowInfo| { &mut m.fast },
23608        ));
23609        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23610            "creeping",
23611            |m: &FlowInfo| { &m.creeping },
23612            |m: &mut FlowInfo| { &mut m.creeping },
23613        ));
23614        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<FlowInfo>(
23615            "FlowInfo",
23616            fields,
23617            oneofs,
23618        )
23619    }
23620}
23621
23622impl ::protobuf::Message for FlowInfo {
23623    const NAME: &'static str = "FlowInfo";
23624
23625    fn is_initialized(&self) -> bool {
23626        for v in &self.pos {
23627            if !v.is_initialized() {
23628                return false;
23629            }
23630        };
23631        for v in &self.dest {
23632            if !v.is_initialized() {
23633                return false;
23634            }
23635        };
23636        for v in &self.material {
23637            if !v.is_initialized() {
23638                return false;
23639            }
23640        };
23641        for v in &self.item {
23642            if !v.is_initialized() {
23643                return false;
23644            }
23645        };
23646        true
23647    }
23648
23649    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
23650        while let Some(tag) = is.read_raw_tag_or_eof()? {
23651            match tag {
23652                8 => {
23653                    self.index = ::std::option::Option::Some(is.read_int32()?);
23654                },
23655                16 => {
23656                    self.type_ = ::std::option::Option::Some(is.read_enum_or_unknown()?);
23657                },
23658                24 => {
23659                    self.density = ::std::option::Option::Some(is.read_int32()?);
23660                },
23661                34 => {
23662                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.pos)?;
23663                },
23664                42 => {
23665                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.dest)?;
23666                },
23667                48 => {
23668                    self.expanding = ::std::option::Option::Some(is.read_bool()?);
23669                },
23670                56 => {
23671                    self.reuse = ::std::option::Option::Some(is.read_bool()?);
23672                },
23673                64 => {
23674                    self.guide_id = ::std::option::Option::Some(is.read_int32()?);
23675                },
23676                74 => {
23677                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
23678                },
23679                82 => {
23680                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.item)?;
23681                },
23682                88 => {
23683                    self.dead = ::std::option::Option::Some(is.read_bool()?);
23684                },
23685                96 => {
23686                    self.fast = ::std::option::Option::Some(is.read_bool()?);
23687                },
23688                104 => {
23689                    self.creeping = ::std::option::Option::Some(is.read_bool()?);
23690                },
23691                tag => {
23692                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
23693                },
23694            };
23695        }
23696        ::std::result::Result::Ok(())
23697    }
23698
23699    // Compute sizes of nested messages
23700    #[allow(unused_variables)]
23701    fn compute_size(&self) -> u64 {
23702        let mut my_size = 0;
23703        if let Some(v) = self.index {
23704            my_size += ::protobuf::rt::int32_size(1, v);
23705        }
23706        if let Some(v) = self.type_ {
23707            my_size += ::protobuf::rt::int32_size(2, v.value());
23708        }
23709        if let Some(v) = self.density {
23710            my_size += ::protobuf::rt::int32_size(3, v);
23711        }
23712        if let Some(v) = self.pos.as_ref() {
23713            let len = v.compute_size();
23714            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23715        }
23716        if let Some(v) = self.dest.as_ref() {
23717            let len = v.compute_size();
23718            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23719        }
23720        if let Some(v) = self.expanding {
23721            my_size += 1 + 1;
23722        }
23723        if let Some(v) = self.reuse {
23724            my_size += 1 + 1;
23725        }
23726        if let Some(v) = self.guide_id {
23727            my_size += ::protobuf::rt::int32_size(8, v);
23728        }
23729        if let Some(v) = self.material.as_ref() {
23730            let len = v.compute_size();
23731            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23732        }
23733        if let Some(v) = self.item.as_ref() {
23734            let len = v.compute_size();
23735            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23736        }
23737        if let Some(v) = self.dead {
23738            my_size += 1 + 1;
23739        }
23740        if let Some(v) = self.fast {
23741            my_size += 1 + 1;
23742        }
23743        if let Some(v) = self.creeping {
23744            my_size += 1 + 1;
23745        }
23746        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
23747        self.special_fields.cached_size().set(my_size as u32);
23748        my_size
23749    }
23750
23751    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
23752        if let Some(v) = self.index {
23753            os.write_int32(1, v)?;
23754        }
23755        if let Some(v) = self.type_ {
23756            os.write_enum(2, ::protobuf::EnumOrUnknown::value(&v))?;
23757        }
23758        if let Some(v) = self.density {
23759            os.write_int32(3, v)?;
23760        }
23761        if let Some(v) = self.pos.as_ref() {
23762            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
23763        }
23764        if let Some(v) = self.dest.as_ref() {
23765            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
23766        }
23767        if let Some(v) = self.expanding {
23768            os.write_bool(6, v)?;
23769        }
23770        if let Some(v) = self.reuse {
23771            os.write_bool(7, v)?;
23772        }
23773        if let Some(v) = self.guide_id {
23774            os.write_int32(8, v)?;
23775        }
23776        if let Some(v) = self.material.as_ref() {
23777            ::protobuf::rt::write_message_field_with_cached_size(9, v, os)?;
23778        }
23779        if let Some(v) = self.item.as_ref() {
23780            ::protobuf::rt::write_message_field_with_cached_size(10, v, os)?;
23781        }
23782        if let Some(v) = self.dead {
23783            os.write_bool(11, v)?;
23784        }
23785        if let Some(v) = self.fast {
23786            os.write_bool(12, v)?;
23787        }
23788        if let Some(v) = self.creeping {
23789            os.write_bool(13, v)?;
23790        }
23791        os.write_unknown_fields(self.special_fields.unknown_fields())?;
23792        ::std::result::Result::Ok(())
23793    }
23794
23795    fn special_fields(&self) -> &::protobuf::SpecialFields {
23796        &self.special_fields
23797    }
23798
23799    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
23800        &mut self.special_fields
23801    }
23802
23803    fn new() -> FlowInfo {
23804        FlowInfo::new()
23805    }
23806
23807    fn clear(&mut self) {
23808        self.index = ::std::option::Option::None;
23809        self.type_ = ::std::option::Option::None;
23810        self.density = ::std::option::Option::None;
23811        self.pos.clear();
23812        self.dest.clear();
23813        self.expanding = ::std::option::Option::None;
23814        self.reuse = ::std::option::Option::None;
23815        self.guide_id = ::std::option::Option::None;
23816        self.material.clear();
23817        self.item.clear();
23818        self.dead = ::std::option::Option::None;
23819        self.fast = ::std::option::Option::None;
23820        self.creeping = ::std::option::Option::None;
23821        self.special_fields.clear();
23822    }
23823
23824    fn default_instance() -> &'static FlowInfo {
23825        static instance: FlowInfo = FlowInfo {
23826            index: ::std::option::Option::None,
23827            type_: ::std::option::Option::None,
23828            density: ::std::option::Option::None,
23829            pos: ::protobuf::MessageField::none(),
23830            dest: ::protobuf::MessageField::none(),
23831            expanding: ::std::option::Option::None,
23832            reuse: ::std::option::Option::None,
23833            guide_id: ::std::option::Option::None,
23834            material: ::protobuf::MessageField::none(),
23835            item: ::protobuf::MessageField::none(),
23836            dead: ::std::option::Option::None,
23837            fast: ::std::option::Option::None,
23838            creeping: ::std::option::Option::None,
23839            special_fields: ::protobuf::SpecialFields::new(),
23840        };
23841        &instance
23842    }
23843}
23844
23845impl ::protobuf::MessageFull for FlowInfo {
23846    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
23847        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
23848        descriptor.get(|| file_descriptor().message_by_package_relative_name("FlowInfo").unwrap()).clone()
23849    }
23850}
23851
23852impl ::std::fmt::Display for FlowInfo {
23853    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
23854        ::protobuf::text_format::fmt(self, f)
23855    }
23856}
23857
23858impl ::protobuf::reflect::ProtobufValue for FlowInfo {
23859    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
23860}
23861
23862// @@protoc_insertion_point(message:RemoteFortressReader.Wave)
23863#[derive(PartialEq,Clone,Default,Debug)]
23864pub struct Wave {
23865    // message fields
23866    // @@protoc_insertion_point(field:RemoteFortressReader.Wave.dest)
23867    pub dest: ::protobuf::MessageField<Coord>,
23868    // @@protoc_insertion_point(field:RemoteFortressReader.Wave.pos)
23869    pub pos: ::protobuf::MessageField<Coord>,
23870    // special fields
23871    // @@protoc_insertion_point(special_field:RemoteFortressReader.Wave.special_fields)
23872    pub special_fields: ::protobuf::SpecialFields,
23873}
23874
23875impl<'a> ::std::default::Default for &'a Wave {
23876    fn default() -> &'a Wave {
23877        <Wave as ::protobuf::Message>::default_instance()
23878    }
23879}
23880
23881impl Wave {
23882    pub fn new() -> Wave {
23883        ::std::default::Default::default()
23884    }
23885
23886    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
23887        let mut fields = ::std::vec::Vec::with_capacity(2);
23888        let mut oneofs = ::std::vec::Vec::with_capacity(0);
23889        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
23890            "dest",
23891            |m: &Wave| { &m.dest },
23892            |m: &mut Wave| { &mut m.dest },
23893        ));
23894        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
23895            "pos",
23896            |m: &Wave| { &m.pos },
23897            |m: &mut Wave| { &mut m.pos },
23898        ));
23899        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Wave>(
23900            "Wave",
23901            fields,
23902            oneofs,
23903        )
23904    }
23905}
23906
23907impl ::protobuf::Message for Wave {
23908    const NAME: &'static str = "Wave";
23909
23910    fn is_initialized(&self) -> bool {
23911        true
23912    }
23913
23914    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
23915        while let Some(tag) = is.read_raw_tag_or_eof()? {
23916            match tag {
23917                10 => {
23918                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.dest)?;
23919                },
23920                18 => {
23921                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.pos)?;
23922                },
23923                tag => {
23924                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
23925                },
23926            };
23927        }
23928        ::std::result::Result::Ok(())
23929    }
23930
23931    // Compute sizes of nested messages
23932    #[allow(unused_variables)]
23933    fn compute_size(&self) -> u64 {
23934        let mut my_size = 0;
23935        if let Some(v) = self.dest.as_ref() {
23936            let len = v.compute_size();
23937            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23938        }
23939        if let Some(v) = self.pos.as_ref() {
23940            let len = v.compute_size();
23941            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23942        }
23943        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
23944        self.special_fields.cached_size().set(my_size as u32);
23945        my_size
23946    }
23947
23948    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
23949        if let Some(v) = self.dest.as_ref() {
23950            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
23951        }
23952        if let Some(v) = self.pos.as_ref() {
23953            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
23954        }
23955        os.write_unknown_fields(self.special_fields.unknown_fields())?;
23956        ::std::result::Result::Ok(())
23957    }
23958
23959    fn special_fields(&self) -> &::protobuf::SpecialFields {
23960        &self.special_fields
23961    }
23962
23963    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
23964        &mut self.special_fields
23965    }
23966
23967    fn new() -> Wave {
23968        Wave::new()
23969    }
23970
23971    fn clear(&mut self) {
23972        self.dest.clear();
23973        self.pos.clear();
23974        self.special_fields.clear();
23975    }
23976
23977    fn default_instance() -> &'static Wave {
23978        static instance: Wave = Wave {
23979            dest: ::protobuf::MessageField::none(),
23980            pos: ::protobuf::MessageField::none(),
23981            special_fields: ::protobuf::SpecialFields::new(),
23982        };
23983        &instance
23984    }
23985}
23986
23987impl ::protobuf::MessageFull for Wave {
23988    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
23989        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
23990        descriptor.get(|| file_descriptor().message_by_package_relative_name("Wave").unwrap()).clone()
23991    }
23992}
23993
23994impl ::std::fmt::Display for Wave {
23995    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
23996        ::protobuf::text_format::fmt(self, f)
23997    }
23998}
23999
24000impl ::protobuf::reflect::ProtobufValue for Wave {
24001    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
24002}
24003
24004#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24005// @@protoc_insertion_point(enum:RemoteFortressReader.TiletypeShape)
24006pub enum TiletypeShape {
24007    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.NO_SHAPE)
24008    NO_SHAPE = -1,
24009    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.EMPTY)
24010    EMPTY = 0,
24011    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.FLOOR)
24012    FLOOR = 1,
24013    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.BOULDER)
24014    BOULDER = 2,
24015    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.PEBBLES)
24016    PEBBLES = 3,
24017    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.WALL)
24018    WALL = 4,
24019    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.FORTIFICATION)
24020    FORTIFICATION = 5,
24021    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.STAIR_UP)
24022    STAIR_UP = 6,
24023    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.STAIR_DOWN)
24024    STAIR_DOWN = 7,
24025    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.STAIR_UPDOWN)
24026    STAIR_UPDOWN = 8,
24027    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.RAMP)
24028    RAMP = 9,
24029    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.RAMP_TOP)
24030    RAMP_TOP = 10,
24031    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.BROOK_BED)
24032    BROOK_BED = 11,
24033    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.BROOK_TOP)
24034    BROOK_TOP = 12,
24035    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.TREE_SHAPE)
24036    TREE_SHAPE = 13,
24037    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.SAPLING)
24038    SAPLING = 14,
24039    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.SHRUB)
24040    SHRUB = 15,
24041    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.ENDLESS_PIT)
24042    ENDLESS_PIT = 16,
24043    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.BRANCH)
24044    BRANCH = 17,
24045    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.TRUNK_BRANCH)
24046    TRUNK_BRANCH = 18,
24047    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.TWIG)
24048    TWIG = 19,
24049}
24050
24051impl ::protobuf::Enum for TiletypeShape {
24052    const NAME: &'static str = "TiletypeShape";
24053
24054    fn value(&self) -> i32 {
24055        *self as i32
24056    }
24057
24058    fn from_i32(value: i32) -> ::std::option::Option<TiletypeShape> {
24059        match value {
24060            -1 => ::std::option::Option::Some(TiletypeShape::NO_SHAPE),
24061            0 => ::std::option::Option::Some(TiletypeShape::EMPTY),
24062            1 => ::std::option::Option::Some(TiletypeShape::FLOOR),
24063            2 => ::std::option::Option::Some(TiletypeShape::BOULDER),
24064            3 => ::std::option::Option::Some(TiletypeShape::PEBBLES),
24065            4 => ::std::option::Option::Some(TiletypeShape::WALL),
24066            5 => ::std::option::Option::Some(TiletypeShape::FORTIFICATION),
24067            6 => ::std::option::Option::Some(TiletypeShape::STAIR_UP),
24068            7 => ::std::option::Option::Some(TiletypeShape::STAIR_DOWN),
24069            8 => ::std::option::Option::Some(TiletypeShape::STAIR_UPDOWN),
24070            9 => ::std::option::Option::Some(TiletypeShape::RAMP),
24071            10 => ::std::option::Option::Some(TiletypeShape::RAMP_TOP),
24072            11 => ::std::option::Option::Some(TiletypeShape::BROOK_BED),
24073            12 => ::std::option::Option::Some(TiletypeShape::BROOK_TOP),
24074            13 => ::std::option::Option::Some(TiletypeShape::TREE_SHAPE),
24075            14 => ::std::option::Option::Some(TiletypeShape::SAPLING),
24076            15 => ::std::option::Option::Some(TiletypeShape::SHRUB),
24077            16 => ::std::option::Option::Some(TiletypeShape::ENDLESS_PIT),
24078            17 => ::std::option::Option::Some(TiletypeShape::BRANCH),
24079            18 => ::std::option::Option::Some(TiletypeShape::TRUNK_BRANCH),
24080            19 => ::std::option::Option::Some(TiletypeShape::TWIG),
24081            _ => ::std::option::Option::None
24082        }
24083    }
24084
24085    fn from_str(str: &str) -> ::std::option::Option<TiletypeShape> {
24086        match str {
24087            "NO_SHAPE" => ::std::option::Option::Some(TiletypeShape::NO_SHAPE),
24088            "EMPTY" => ::std::option::Option::Some(TiletypeShape::EMPTY),
24089            "FLOOR" => ::std::option::Option::Some(TiletypeShape::FLOOR),
24090            "BOULDER" => ::std::option::Option::Some(TiletypeShape::BOULDER),
24091            "PEBBLES" => ::std::option::Option::Some(TiletypeShape::PEBBLES),
24092            "WALL" => ::std::option::Option::Some(TiletypeShape::WALL),
24093            "FORTIFICATION" => ::std::option::Option::Some(TiletypeShape::FORTIFICATION),
24094            "STAIR_UP" => ::std::option::Option::Some(TiletypeShape::STAIR_UP),
24095            "STAIR_DOWN" => ::std::option::Option::Some(TiletypeShape::STAIR_DOWN),
24096            "STAIR_UPDOWN" => ::std::option::Option::Some(TiletypeShape::STAIR_UPDOWN),
24097            "RAMP" => ::std::option::Option::Some(TiletypeShape::RAMP),
24098            "RAMP_TOP" => ::std::option::Option::Some(TiletypeShape::RAMP_TOP),
24099            "BROOK_BED" => ::std::option::Option::Some(TiletypeShape::BROOK_BED),
24100            "BROOK_TOP" => ::std::option::Option::Some(TiletypeShape::BROOK_TOP),
24101            "TREE_SHAPE" => ::std::option::Option::Some(TiletypeShape::TREE_SHAPE),
24102            "SAPLING" => ::std::option::Option::Some(TiletypeShape::SAPLING),
24103            "SHRUB" => ::std::option::Option::Some(TiletypeShape::SHRUB),
24104            "ENDLESS_PIT" => ::std::option::Option::Some(TiletypeShape::ENDLESS_PIT),
24105            "BRANCH" => ::std::option::Option::Some(TiletypeShape::BRANCH),
24106            "TRUNK_BRANCH" => ::std::option::Option::Some(TiletypeShape::TRUNK_BRANCH),
24107            "TWIG" => ::std::option::Option::Some(TiletypeShape::TWIG),
24108            _ => ::std::option::Option::None
24109        }
24110    }
24111
24112    const VALUES: &'static [TiletypeShape] = &[
24113        TiletypeShape::NO_SHAPE,
24114        TiletypeShape::EMPTY,
24115        TiletypeShape::FLOOR,
24116        TiletypeShape::BOULDER,
24117        TiletypeShape::PEBBLES,
24118        TiletypeShape::WALL,
24119        TiletypeShape::FORTIFICATION,
24120        TiletypeShape::STAIR_UP,
24121        TiletypeShape::STAIR_DOWN,
24122        TiletypeShape::STAIR_UPDOWN,
24123        TiletypeShape::RAMP,
24124        TiletypeShape::RAMP_TOP,
24125        TiletypeShape::BROOK_BED,
24126        TiletypeShape::BROOK_TOP,
24127        TiletypeShape::TREE_SHAPE,
24128        TiletypeShape::SAPLING,
24129        TiletypeShape::SHRUB,
24130        TiletypeShape::ENDLESS_PIT,
24131        TiletypeShape::BRANCH,
24132        TiletypeShape::TRUNK_BRANCH,
24133        TiletypeShape::TWIG,
24134    ];
24135}
24136
24137impl ::protobuf::EnumFull for TiletypeShape {
24138    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24139        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24140        descriptor.get(|| file_descriptor().enum_by_package_relative_name("TiletypeShape").unwrap()).clone()
24141    }
24142
24143    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24144        let index = match self {
24145            TiletypeShape::NO_SHAPE => 0,
24146            TiletypeShape::EMPTY => 1,
24147            TiletypeShape::FLOOR => 2,
24148            TiletypeShape::BOULDER => 3,
24149            TiletypeShape::PEBBLES => 4,
24150            TiletypeShape::WALL => 5,
24151            TiletypeShape::FORTIFICATION => 6,
24152            TiletypeShape::STAIR_UP => 7,
24153            TiletypeShape::STAIR_DOWN => 8,
24154            TiletypeShape::STAIR_UPDOWN => 9,
24155            TiletypeShape::RAMP => 10,
24156            TiletypeShape::RAMP_TOP => 11,
24157            TiletypeShape::BROOK_BED => 12,
24158            TiletypeShape::BROOK_TOP => 13,
24159            TiletypeShape::TREE_SHAPE => 14,
24160            TiletypeShape::SAPLING => 15,
24161            TiletypeShape::SHRUB => 16,
24162            TiletypeShape::ENDLESS_PIT => 17,
24163            TiletypeShape::BRANCH => 18,
24164            TiletypeShape::TRUNK_BRANCH => 19,
24165            TiletypeShape::TWIG => 20,
24166        };
24167        Self::enum_descriptor().value_by_index(index)
24168    }
24169}
24170
24171// Note, `Default` is implemented although default value is not 0
24172impl ::std::default::Default for TiletypeShape {
24173    fn default() -> Self {
24174        TiletypeShape::NO_SHAPE
24175    }
24176}
24177
24178impl TiletypeShape {
24179    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24180        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<TiletypeShape>("TiletypeShape")
24181    }
24182}
24183
24184#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24185// @@protoc_insertion_point(enum:RemoteFortressReader.TiletypeSpecial)
24186pub enum TiletypeSpecial {
24187    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.NO_SPECIAL)
24188    NO_SPECIAL = -1,
24189    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.NORMAL)
24190    NORMAL = 0,
24191    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.RIVER_SOURCE)
24192    RIVER_SOURCE = 1,
24193    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.WATERFALL)
24194    WATERFALL = 2,
24195    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.SMOOTH)
24196    SMOOTH = 3,
24197    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.FURROWED)
24198    FURROWED = 4,
24199    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.WET)
24200    WET = 5,
24201    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.DEAD)
24202    DEAD = 6,
24203    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.WORN_1)
24204    WORN_1 = 7,
24205    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.WORN_2)
24206    WORN_2 = 8,
24207    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.WORN_3)
24208    WORN_3 = 9,
24209    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.TRACK)
24210    TRACK = 10,
24211    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.SMOOTH_DEAD)
24212    SMOOTH_DEAD = 11,
24213}
24214
24215impl ::protobuf::Enum for TiletypeSpecial {
24216    const NAME: &'static str = "TiletypeSpecial";
24217
24218    fn value(&self) -> i32 {
24219        *self as i32
24220    }
24221
24222    fn from_i32(value: i32) -> ::std::option::Option<TiletypeSpecial> {
24223        match value {
24224            -1 => ::std::option::Option::Some(TiletypeSpecial::NO_SPECIAL),
24225            0 => ::std::option::Option::Some(TiletypeSpecial::NORMAL),
24226            1 => ::std::option::Option::Some(TiletypeSpecial::RIVER_SOURCE),
24227            2 => ::std::option::Option::Some(TiletypeSpecial::WATERFALL),
24228            3 => ::std::option::Option::Some(TiletypeSpecial::SMOOTH),
24229            4 => ::std::option::Option::Some(TiletypeSpecial::FURROWED),
24230            5 => ::std::option::Option::Some(TiletypeSpecial::WET),
24231            6 => ::std::option::Option::Some(TiletypeSpecial::DEAD),
24232            7 => ::std::option::Option::Some(TiletypeSpecial::WORN_1),
24233            8 => ::std::option::Option::Some(TiletypeSpecial::WORN_2),
24234            9 => ::std::option::Option::Some(TiletypeSpecial::WORN_3),
24235            10 => ::std::option::Option::Some(TiletypeSpecial::TRACK),
24236            11 => ::std::option::Option::Some(TiletypeSpecial::SMOOTH_DEAD),
24237            _ => ::std::option::Option::None
24238        }
24239    }
24240
24241    fn from_str(str: &str) -> ::std::option::Option<TiletypeSpecial> {
24242        match str {
24243            "NO_SPECIAL" => ::std::option::Option::Some(TiletypeSpecial::NO_SPECIAL),
24244            "NORMAL" => ::std::option::Option::Some(TiletypeSpecial::NORMAL),
24245            "RIVER_SOURCE" => ::std::option::Option::Some(TiletypeSpecial::RIVER_SOURCE),
24246            "WATERFALL" => ::std::option::Option::Some(TiletypeSpecial::WATERFALL),
24247            "SMOOTH" => ::std::option::Option::Some(TiletypeSpecial::SMOOTH),
24248            "FURROWED" => ::std::option::Option::Some(TiletypeSpecial::FURROWED),
24249            "WET" => ::std::option::Option::Some(TiletypeSpecial::WET),
24250            "DEAD" => ::std::option::Option::Some(TiletypeSpecial::DEAD),
24251            "WORN_1" => ::std::option::Option::Some(TiletypeSpecial::WORN_1),
24252            "WORN_2" => ::std::option::Option::Some(TiletypeSpecial::WORN_2),
24253            "WORN_3" => ::std::option::Option::Some(TiletypeSpecial::WORN_3),
24254            "TRACK" => ::std::option::Option::Some(TiletypeSpecial::TRACK),
24255            "SMOOTH_DEAD" => ::std::option::Option::Some(TiletypeSpecial::SMOOTH_DEAD),
24256            _ => ::std::option::Option::None
24257        }
24258    }
24259
24260    const VALUES: &'static [TiletypeSpecial] = &[
24261        TiletypeSpecial::NO_SPECIAL,
24262        TiletypeSpecial::NORMAL,
24263        TiletypeSpecial::RIVER_SOURCE,
24264        TiletypeSpecial::WATERFALL,
24265        TiletypeSpecial::SMOOTH,
24266        TiletypeSpecial::FURROWED,
24267        TiletypeSpecial::WET,
24268        TiletypeSpecial::DEAD,
24269        TiletypeSpecial::WORN_1,
24270        TiletypeSpecial::WORN_2,
24271        TiletypeSpecial::WORN_3,
24272        TiletypeSpecial::TRACK,
24273        TiletypeSpecial::SMOOTH_DEAD,
24274    ];
24275}
24276
24277impl ::protobuf::EnumFull for TiletypeSpecial {
24278    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24279        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24280        descriptor.get(|| file_descriptor().enum_by_package_relative_name("TiletypeSpecial").unwrap()).clone()
24281    }
24282
24283    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24284        let index = match self {
24285            TiletypeSpecial::NO_SPECIAL => 0,
24286            TiletypeSpecial::NORMAL => 1,
24287            TiletypeSpecial::RIVER_SOURCE => 2,
24288            TiletypeSpecial::WATERFALL => 3,
24289            TiletypeSpecial::SMOOTH => 4,
24290            TiletypeSpecial::FURROWED => 5,
24291            TiletypeSpecial::WET => 6,
24292            TiletypeSpecial::DEAD => 7,
24293            TiletypeSpecial::WORN_1 => 8,
24294            TiletypeSpecial::WORN_2 => 9,
24295            TiletypeSpecial::WORN_3 => 10,
24296            TiletypeSpecial::TRACK => 11,
24297            TiletypeSpecial::SMOOTH_DEAD => 12,
24298        };
24299        Self::enum_descriptor().value_by_index(index)
24300    }
24301}
24302
24303// Note, `Default` is implemented although default value is not 0
24304impl ::std::default::Default for TiletypeSpecial {
24305    fn default() -> Self {
24306        TiletypeSpecial::NO_SPECIAL
24307    }
24308}
24309
24310impl TiletypeSpecial {
24311    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24312        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<TiletypeSpecial>("TiletypeSpecial")
24313    }
24314}
24315
24316#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24317// @@protoc_insertion_point(enum:RemoteFortressReader.TiletypeMaterial)
24318pub enum TiletypeMaterial {
24319    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.NO_MATERIAL)
24320    NO_MATERIAL = -1,
24321    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.AIR)
24322    AIR = 0,
24323    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.SOIL)
24324    SOIL = 1,
24325    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.STONE)
24326    STONE = 2,
24327    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.FEATURE)
24328    FEATURE = 3,
24329    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.LAVA_STONE)
24330    LAVA_STONE = 4,
24331    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.MINERAL)
24332    MINERAL = 5,
24333    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.FROZEN_LIQUID)
24334    FROZEN_LIQUID = 6,
24335    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.CONSTRUCTION)
24336    CONSTRUCTION = 7,
24337    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.GRASS_LIGHT)
24338    GRASS_LIGHT = 8,
24339    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.GRASS_DARK)
24340    GRASS_DARK = 9,
24341    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.GRASS_DRY)
24342    GRASS_DRY = 10,
24343    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.GRASS_DEAD)
24344    GRASS_DEAD = 11,
24345    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.PLANT)
24346    PLANT = 12,
24347    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.HFS)
24348    HFS = 13,
24349    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.CAMPFIRE)
24350    CAMPFIRE = 14,
24351    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.FIRE)
24352    FIRE = 15,
24353    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.ASHES)
24354    ASHES = 16,
24355    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.MAGMA)
24356    MAGMA = 17,
24357    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.DRIFTWOOD)
24358    DRIFTWOOD = 18,
24359    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.POOL)
24360    POOL = 19,
24361    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.BROOK)
24362    BROOK = 20,
24363    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.RIVER)
24364    RIVER = 21,
24365    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.ROOT)
24366    ROOT = 22,
24367    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.TREE_MATERIAL)
24368    TREE_MATERIAL = 23,
24369    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.MUSHROOM)
24370    MUSHROOM = 24,
24371    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.UNDERWORLD_GATE)
24372    UNDERWORLD_GATE = 25,
24373}
24374
24375impl ::protobuf::Enum for TiletypeMaterial {
24376    const NAME: &'static str = "TiletypeMaterial";
24377
24378    fn value(&self) -> i32 {
24379        *self as i32
24380    }
24381
24382    fn from_i32(value: i32) -> ::std::option::Option<TiletypeMaterial> {
24383        match value {
24384            -1 => ::std::option::Option::Some(TiletypeMaterial::NO_MATERIAL),
24385            0 => ::std::option::Option::Some(TiletypeMaterial::AIR),
24386            1 => ::std::option::Option::Some(TiletypeMaterial::SOIL),
24387            2 => ::std::option::Option::Some(TiletypeMaterial::STONE),
24388            3 => ::std::option::Option::Some(TiletypeMaterial::FEATURE),
24389            4 => ::std::option::Option::Some(TiletypeMaterial::LAVA_STONE),
24390            5 => ::std::option::Option::Some(TiletypeMaterial::MINERAL),
24391            6 => ::std::option::Option::Some(TiletypeMaterial::FROZEN_LIQUID),
24392            7 => ::std::option::Option::Some(TiletypeMaterial::CONSTRUCTION),
24393            8 => ::std::option::Option::Some(TiletypeMaterial::GRASS_LIGHT),
24394            9 => ::std::option::Option::Some(TiletypeMaterial::GRASS_DARK),
24395            10 => ::std::option::Option::Some(TiletypeMaterial::GRASS_DRY),
24396            11 => ::std::option::Option::Some(TiletypeMaterial::GRASS_DEAD),
24397            12 => ::std::option::Option::Some(TiletypeMaterial::PLANT),
24398            13 => ::std::option::Option::Some(TiletypeMaterial::HFS),
24399            14 => ::std::option::Option::Some(TiletypeMaterial::CAMPFIRE),
24400            15 => ::std::option::Option::Some(TiletypeMaterial::FIRE),
24401            16 => ::std::option::Option::Some(TiletypeMaterial::ASHES),
24402            17 => ::std::option::Option::Some(TiletypeMaterial::MAGMA),
24403            18 => ::std::option::Option::Some(TiletypeMaterial::DRIFTWOOD),
24404            19 => ::std::option::Option::Some(TiletypeMaterial::POOL),
24405            20 => ::std::option::Option::Some(TiletypeMaterial::BROOK),
24406            21 => ::std::option::Option::Some(TiletypeMaterial::RIVER),
24407            22 => ::std::option::Option::Some(TiletypeMaterial::ROOT),
24408            23 => ::std::option::Option::Some(TiletypeMaterial::TREE_MATERIAL),
24409            24 => ::std::option::Option::Some(TiletypeMaterial::MUSHROOM),
24410            25 => ::std::option::Option::Some(TiletypeMaterial::UNDERWORLD_GATE),
24411            _ => ::std::option::Option::None
24412        }
24413    }
24414
24415    fn from_str(str: &str) -> ::std::option::Option<TiletypeMaterial> {
24416        match str {
24417            "NO_MATERIAL" => ::std::option::Option::Some(TiletypeMaterial::NO_MATERIAL),
24418            "AIR" => ::std::option::Option::Some(TiletypeMaterial::AIR),
24419            "SOIL" => ::std::option::Option::Some(TiletypeMaterial::SOIL),
24420            "STONE" => ::std::option::Option::Some(TiletypeMaterial::STONE),
24421            "FEATURE" => ::std::option::Option::Some(TiletypeMaterial::FEATURE),
24422            "LAVA_STONE" => ::std::option::Option::Some(TiletypeMaterial::LAVA_STONE),
24423            "MINERAL" => ::std::option::Option::Some(TiletypeMaterial::MINERAL),
24424            "FROZEN_LIQUID" => ::std::option::Option::Some(TiletypeMaterial::FROZEN_LIQUID),
24425            "CONSTRUCTION" => ::std::option::Option::Some(TiletypeMaterial::CONSTRUCTION),
24426            "GRASS_LIGHT" => ::std::option::Option::Some(TiletypeMaterial::GRASS_LIGHT),
24427            "GRASS_DARK" => ::std::option::Option::Some(TiletypeMaterial::GRASS_DARK),
24428            "GRASS_DRY" => ::std::option::Option::Some(TiletypeMaterial::GRASS_DRY),
24429            "GRASS_DEAD" => ::std::option::Option::Some(TiletypeMaterial::GRASS_DEAD),
24430            "PLANT" => ::std::option::Option::Some(TiletypeMaterial::PLANT),
24431            "HFS" => ::std::option::Option::Some(TiletypeMaterial::HFS),
24432            "CAMPFIRE" => ::std::option::Option::Some(TiletypeMaterial::CAMPFIRE),
24433            "FIRE" => ::std::option::Option::Some(TiletypeMaterial::FIRE),
24434            "ASHES" => ::std::option::Option::Some(TiletypeMaterial::ASHES),
24435            "MAGMA" => ::std::option::Option::Some(TiletypeMaterial::MAGMA),
24436            "DRIFTWOOD" => ::std::option::Option::Some(TiletypeMaterial::DRIFTWOOD),
24437            "POOL" => ::std::option::Option::Some(TiletypeMaterial::POOL),
24438            "BROOK" => ::std::option::Option::Some(TiletypeMaterial::BROOK),
24439            "RIVER" => ::std::option::Option::Some(TiletypeMaterial::RIVER),
24440            "ROOT" => ::std::option::Option::Some(TiletypeMaterial::ROOT),
24441            "TREE_MATERIAL" => ::std::option::Option::Some(TiletypeMaterial::TREE_MATERIAL),
24442            "MUSHROOM" => ::std::option::Option::Some(TiletypeMaterial::MUSHROOM),
24443            "UNDERWORLD_GATE" => ::std::option::Option::Some(TiletypeMaterial::UNDERWORLD_GATE),
24444            _ => ::std::option::Option::None
24445        }
24446    }
24447
24448    const VALUES: &'static [TiletypeMaterial] = &[
24449        TiletypeMaterial::NO_MATERIAL,
24450        TiletypeMaterial::AIR,
24451        TiletypeMaterial::SOIL,
24452        TiletypeMaterial::STONE,
24453        TiletypeMaterial::FEATURE,
24454        TiletypeMaterial::LAVA_STONE,
24455        TiletypeMaterial::MINERAL,
24456        TiletypeMaterial::FROZEN_LIQUID,
24457        TiletypeMaterial::CONSTRUCTION,
24458        TiletypeMaterial::GRASS_LIGHT,
24459        TiletypeMaterial::GRASS_DARK,
24460        TiletypeMaterial::GRASS_DRY,
24461        TiletypeMaterial::GRASS_DEAD,
24462        TiletypeMaterial::PLANT,
24463        TiletypeMaterial::HFS,
24464        TiletypeMaterial::CAMPFIRE,
24465        TiletypeMaterial::FIRE,
24466        TiletypeMaterial::ASHES,
24467        TiletypeMaterial::MAGMA,
24468        TiletypeMaterial::DRIFTWOOD,
24469        TiletypeMaterial::POOL,
24470        TiletypeMaterial::BROOK,
24471        TiletypeMaterial::RIVER,
24472        TiletypeMaterial::ROOT,
24473        TiletypeMaterial::TREE_MATERIAL,
24474        TiletypeMaterial::MUSHROOM,
24475        TiletypeMaterial::UNDERWORLD_GATE,
24476    ];
24477}
24478
24479impl ::protobuf::EnumFull for TiletypeMaterial {
24480    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24481        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24482        descriptor.get(|| file_descriptor().enum_by_package_relative_name("TiletypeMaterial").unwrap()).clone()
24483    }
24484
24485    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24486        let index = match self {
24487            TiletypeMaterial::NO_MATERIAL => 0,
24488            TiletypeMaterial::AIR => 1,
24489            TiletypeMaterial::SOIL => 2,
24490            TiletypeMaterial::STONE => 3,
24491            TiletypeMaterial::FEATURE => 4,
24492            TiletypeMaterial::LAVA_STONE => 5,
24493            TiletypeMaterial::MINERAL => 6,
24494            TiletypeMaterial::FROZEN_LIQUID => 7,
24495            TiletypeMaterial::CONSTRUCTION => 8,
24496            TiletypeMaterial::GRASS_LIGHT => 9,
24497            TiletypeMaterial::GRASS_DARK => 10,
24498            TiletypeMaterial::GRASS_DRY => 11,
24499            TiletypeMaterial::GRASS_DEAD => 12,
24500            TiletypeMaterial::PLANT => 13,
24501            TiletypeMaterial::HFS => 14,
24502            TiletypeMaterial::CAMPFIRE => 15,
24503            TiletypeMaterial::FIRE => 16,
24504            TiletypeMaterial::ASHES => 17,
24505            TiletypeMaterial::MAGMA => 18,
24506            TiletypeMaterial::DRIFTWOOD => 19,
24507            TiletypeMaterial::POOL => 20,
24508            TiletypeMaterial::BROOK => 21,
24509            TiletypeMaterial::RIVER => 22,
24510            TiletypeMaterial::ROOT => 23,
24511            TiletypeMaterial::TREE_MATERIAL => 24,
24512            TiletypeMaterial::MUSHROOM => 25,
24513            TiletypeMaterial::UNDERWORLD_GATE => 26,
24514        };
24515        Self::enum_descriptor().value_by_index(index)
24516    }
24517}
24518
24519// Note, `Default` is implemented although default value is not 0
24520impl ::std::default::Default for TiletypeMaterial {
24521    fn default() -> Self {
24522        TiletypeMaterial::NO_MATERIAL
24523    }
24524}
24525
24526impl TiletypeMaterial {
24527    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24528        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<TiletypeMaterial>("TiletypeMaterial")
24529    }
24530}
24531
24532#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24533// @@protoc_insertion_point(enum:RemoteFortressReader.TiletypeVariant)
24534pub enum TiletypeVariant {
24535    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeVariant.NO_VARIANT)
24536    NO_VARIANT = -1,
24537    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeVariant.VAR_1)
24538    VAR_1 = 0,
24539    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeVariant.VAR_2)
24540    VAR_2 = 1,
24541    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeVariant.VAR_3)
24542    VAR_3 = 2,
24543    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeVariant.VAR_4)
24544    VAR_4 = 3,
24545}
24546
24547impl ::protobuf::Enum for TiletypeVariant {
24548    const NAME: &'static str = "TiletypeVariant";
24549
24550    fn value(&self) -> i32 {
24551        *self as i32
24552    }
24553
24554    fn from_i32(value: i32) -> ::std::option::Option<TiletypeVariant> {
24555        match value {
24556            -1 => ::std::option::Option::Some(TiletypeVariant::NO_VARIANT),
24557            0 => ::std::option::Option::Some(TiletypeVariant::VAR_1),
24558            1 => ::std::option::Option::Some(TiletypeVariant::VAR_2),
24559            2 => ::std::option::Option::Some(TiletypeVariant::VAR_3),
24560            3 => ::std::option::Option::Some(TiletypeVariant::VAR_4),
24561            _ => ::std::option::Option::None
24562        }
24563    }
24564
24565    fn from_str(str: &str) -> ::std::option::Option<TiletypeVariant> {
24566        match str {
24567            "NO_VARIANT" => ::std::option::Option::Some(TiletypeVariant::NO_VARIANT),
24568            "VAR_1" => ::std::option::Option::Some(TiletypeVariant::VAR_1),
24569            "VAR_2" => ::std::option::Option::Some(TiletypeVariant::VAR_2),
24570            "VAR_3" => ::std::option::Option::Some(TiletypeVariant::VAR_3),
24571            "VAR_4" => ::std::option::Option::Some(TiletypeVariant::VAR_4),
24572            _ => ::std::option::Option::None
24573        }
24574    }
24575
24576    const VALUES: &'static [TiletypeVariant] = &[
24577        TiletypeVariant::NO_VARIANT,
24578        TiletypeVariant::VAR_1,
24579        TiletypeVariant::VAR_2,
24580        TiletypeVariant::VAR_3,
24581        TiletypeVariant::VAR_4,
24582    ];
24583}
24584
24585impl ::protobuf::EnumFull for TiletypeVariant {
24586    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24587        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24588        descriptor.get(|| file_descriptor().enum_by_package_relative_name("TiletypeVariant").unwrap()).clone()
24589    }
24590
24591    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24592        let index = match self {
24593            TiletypeVariant::NO_VARIANT => 0,
24594            TiletypeVariant::VAR_1 => 1,
24595            TiletypeVariant::VAR_2 => 2,
24596            TiletypeVariant::VAR_3 => 3,
24597            TiletypeVariant::VAR_4 => 4,
24598        };
24599        Self::enum_descriptor().value_by_index(index)
24600    }
24601}
24602
24603// Note, `Default` is implemented although default value is not 0
24604impl ::std::default::Default for TiletypeVariant {
24605    fn default() -> Self {
24606        TiletypeVariant::NO_VARIANT
24607    }
24608}
24609
24610impl TiletypeVariant {
24611    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24612        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<TiletypeVariant>("TiletypeVariant")
24613    }
24614}
24615
24616#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24617// @@protoc_insertion_point(enum:RemoteFortressReader.WorldPoles)
24618pub enum WorldPoles {
24619    // @@protoc_insertion_point(enum_value:RemoteFortressReader.WorldPoles.NO_POLES)
24620    NO_POLES = 0,
24621    // @@protoc_insertion_point(enum_value:RemoteFortressReader.WorldPoles.NORTH_POLE)
24622    NORTH_POLE = 1,
24623    // @@protoc_insertion_point(enum_value:RemoteFortressReader.WorldPoles.SOUTH_POLE)
24624    SOUTH_POLE = 2,
24625    // @@protoc_insertion_point(enum_value:RemoteFortressReader.WorldPoles.BOTH_POLES)
24626    BOTH_POLES = 3,
24627}
24628
24629impl ::protobuf::Enum for WorldPoles {
24630    const NAME: &'static str = "WorldPoles";
24631
24632    fn value(&self) -> i32 {
24633        *self as i32
24634    }
24635
24636    fn from_i32(value: i32) -> ::std::option::Option<WorldPoles> {
24637        match value {
24638            0 => ::std::option::Option::Some(WorldPoles::NO_POLES),
24639            1 => ::std::option::Option::Some(WorldPoles::NORTH_POLE),
24640            2 => ::std::option::Option::Some(WorldPoles::SOUTH_POLE),
24641            3 => ::std::option::Option::Some(WorldPoles::BOTH_POLES),
24642            _ => ::std::option::Option::None
24643        }
24644    }
24645
24646    fn from_str(str: &str) -> ::std::option::Option<WorldPoles> {
24647        match str {
24648            "NO_POLES" => ::std::option::Option::Some(WorldPoles::NO_POLES),
24649            "NORTH_POLE" => ::std::option::Option::Some(WorldPoles::NORTH_POLE),
24650            "SOUTH_POLE" => ::std::option::Option::Some(WorldPoles::SOUTH_POLE),
24651            "BOTH_POLES" => ::std::option::Option::Some(WorldPoles::BOTH_POLES),
24652            _ => ::std::option::Option::None
24653        }
24654    }
24655
24656    const VALUES: &'static [WorldPoles] = &[
24657        WorldPoles::NO_POLES,
24658        WorldPoles::NORTH_POLE,
24659        WorldPoles::SOUTH_POLE,
24660        WorldPoles::BOTH_POLES,
24661    ];
24662}
24663
24664impl ::protobuf::EnumFull for WorldPoles {
24665    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24666        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24667        descriptor.get(|| file_descriptor().enum_by_package_relative_name("WorldPoles").unwrap()).clone()
24668    }
24669
24670    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24671        let index = *self as usize;
24672        Self::enum_descriptor().value_by_index(index)
24673    }
24674}
24675
24676impl ::std::default::Default for WorldPoles {
24677    fn default() -> Self {
24678        WorldPoles::NO_POLES
24679    }
24680}
24681
24682impl WorldPoles {
24683    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24684        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<WorldPoles>("WorldPoles")
24685    }
24686}
24687
24688#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24689// @@protoc_insertion_point(enum:RemoteFortressReader.BuildingDirection)
24690pub enum BuildingDirection {
24691    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.NORTH)
24692    NORTH = 0,
24693    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.EAST)
24694    EAST = 1,
24695    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.SOUTH)
24696    SOUTH = 2,
24697    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.WEST)
24698    WEST = 3,
24699    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.NORTHEAST)
24700    NORTHEAST = 4,
24701    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.SOUTHEAST)
24702    SOUTHEAST = 5,
24703    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.SOUTHWEST)
24704    SOUTHWEST = 6,
24705    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.NORTHWEST)
24706    NORTHWEST = 7,
24707    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.NONE)
24708    NONE = 8,
24709}
24710
24711impl ::protobuf::Enum for BuildingDirection {
24712    const NAME: &'static str = "BuildingDirection";
24713
24714    fn value(&self) -> i32 {
24715        *self as i32
24716    }
24717
24718    fn from_i32(value: i32) -> ::std::option::Option<BuildingDirection> {
24719        match value {
24720            0 => ::std::option::Option::Some(BuildingDirection::NORTH),
24721            1 => ::std::option::Option::Some(BuildingDirection::EAST),
24722            2 => ::std::option::Option::Some(BuildingDirection::SOUTH),
24723            3 => ::std::option::Option::Some(BuildingDirection::WEST),
24724            4 => ::std::option::Option::Some(BuildingDirection::NORTHEAST),
24725            5 => ::std::option::Option::Some(BuildingDirection::SOUTHEAST),
24726            6 => ::std::option::Option::Some(BuildingDirection::SOUTHWEST),
24727            7 => ::std::option::Option::Some(BuildingDirection::NORTHWEST),
24728            8 => ::std::option::Option::Some(BuildingDirection::NONE),
24729            _ => ::std::option::Option::None
24730        }
24731    }
24732
24733    fn from_str(str: &str) -> ::std::option::Option<BuildingDirection> {
24734        match str {
24735            "NORTH" => ::std::option::Option::Some(BuildingDirection::NORTH),
24736            "EAST" => ::std::option::Option::Some(BuildingDirection::EAST),
24737            "SOUTH" => ::std::option::Option::Some(BuildingDirection::SOUTH),
24738            "WEST" => ::std::option::Option::Some(BuildingDirection::WEST),
24739            "NORTHEAST" => ::std::option::Option::Some(BuildingDirection::NORTHEAST),
24740            "SOUTHEAST" => ::std::option::Option::Some(BuildingDirection::SOUTHEAST),
24741            "SOUTHWEST" => ::std::option::Option::Some(BuildingDirection::SOUTHWEST),
24742            "NORTHWEST" => ::std::option::Option::Some(BuildingDirection::NORTHWEST),
24743            "NONE" => ::std::option::Option::Some(BuildingDirection::NONE),
24744            _ => ::std::option::Option::None
24745        }
24746    }
24747
24748    const VALUES: &'static [BuildingDirection] = &[
24749        BuildingDirection::NORTH,
24750        BuildingDirection::EAST,
24751        BuildingDirection::SOUTH,
24752        BuildingDirection::WEST,
24753        BuildingDirection::NORTHEAST,
24754        BuildingDirection::SOUTHEAST,
24755        BuildingDirection::SOUTHWEST,
24756        BuildingDirection::NORTHWEST,
24757        BuildingDirection::NONE,
24758    ];
24759}
24760
24761impl ::protobuf::EnumFull for BuildingDirection {
24762    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24763        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24764        descriptor.get(|| file_descriptor().enum_by_package_relative_name("BuildingDirection").unwrap()).clone()
24765    }
24766
24767    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24768        let index = *self as usize;
24769        Self::enum_descriptor().value_by_index(index)
24770    }
24771}
24772
24773impl ::std::default::Default for BuildingDirection {
24774    fn default() -> Self {
24775        BuildingDirection::NORTH
24776    }
24777}
24778
24779impl BuildingDirection {
24780    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24781        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<BuildingDirection>("BuildingDirection")
24782    }
24783}
24784
24785#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24786// @@protoc_insertion_point(enum:RemoteFortressReader.TileDigDesignation)
24787pub enum TileDigDesignation {
24788    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.NO_DIG)
24789    NO_DIG = 0,
24790    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.DEFAULT_DIG)
24791    DEFAULT_DIG = 1,
24792    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.UP_DOWN_STAIR_DIG)
24793    UP_DOWN_STAIR_DIG = 2,
24794    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.CHANNEL_DIG)
24795    CHANNEL_DIG = 3,
24796    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.RAMP_DIG)
24797    RAMP_DIG = 4,
24798    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.DOWN_STAIR_DIG)
24799    DOWN_STAIR_DIG = 5,
24800    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.UP_STAIR_DIG)
24801    UP_STAIR_DIG = 6,
24802}
24803
24804impl ::protobuf::Enum for TileDigDesignation {
24805    const NAME: &'static str = "TileDigDesignation";
24806
24807    fn value(&self) -> i32 {
24808        *self as i32
24809    }
24810
24811    fn from_i32(value: i32) -> ::std::option::Option<TileDigDesignation> {
24812        match value {
24813            0 => ::std::option::Option::Some(TileDigDesignation::NO_DIG),
24814            1 => ::std::option::Option::Some(TileDigDesignation::DEFAULT_DIG),
24815            2 => ::std::option::Option::Some(TileDigDesignation::UP_DOWN_STAIR_DIG),
24816            3 => ::std::option::Option::Some(TileDigDesignation::CHANNEL_DIG),
24817            4 => ::std::option::Option::Some(TileDigDesignation::RAMP_DIG),
24818            5 => ::std::option::Option::Some(TileDigDesignation::DOWN_STAIR_DIG),
24819            6 => ::std::option::Option::Some(TileDigDesignation::UP_STAIR_DIG),
24820            _ => ::std::option::Option::None
24821        }
24822    }
24823
24824    fn from_str(str: &str) -> ::std::option::Option<TileDigDesignation> {
24825        match str {
24826            "NO_DIG" => ::std::option::Option::Some(TileDigDesignation::NO_DIG),
24827            "DEFAULT_DIG" => ::std::option::Option::Some(TileDigDesignation::DEFAULT_DIG),
24828            "UP_DOWN_STAIR_DIG" => ::std::option::Option::Some(TileDigDesignation::UP_DOWN_STAIR_DIG),
24829            "CHANNEL_DIG" => ::std::option::Option::Some(TileDigDesignation::CHANNEL_DIG),
24830            "RAMP_DIG" => ::std::option::Option::Some(TileDigDesignation::RAMP_DIG),
24831            "DOWN_STAIR_DIG" => ::std::option::Option::Some(TileDigDesignation::DOWN_STAIR_DIG),
24832            "UP_STAIR_DIG" => ::std::option::Option::Some(TileDigDesignation::UP_STAIR_DIG),
24833            _ => ::std::option::Option::None
24834        }
24835    }
24836
24837    const VALUES: &'static [TileDigDesignation] = &[
24838        TileDigDesignation::NO_DIG,
24839        TileDigDesignation::DEFAULT_DIG,
24840        TileDigDesignation::UP_DOWN_STAIR_DIG,
24841        TileDigDesignation::CHANNEL_DIG,
24842        TileDigDesignation::RAMP_DIG,
24843        TileDigDesignation::DOWN_STAIR_DIG,
24844        TileDigDesignation::UP_STAIR_DIG,
24845    ];
24846}
24847
24848impl ::protobuf::EnumFull for TileDigDesignation {
24849    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24850        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24851        descriptor.get(|| file_descriptor().enum_by_package_relative_name("TileDigDesignation").unwrap()).clone()
24852    }
24853
24854    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24855        let index = *self as usize;
24856        Self::enum_descriptor().value_by_index(index)
24857    }
24858}
24859
24860impl ::std::default::Default for TileDigDesignation {
24861    fn default() -> Self {
24862        TileDigDesignation::NO_DIG
24863    }
24864}
24865
24866impl TileDigDesignation {
24867    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24868        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<TileDigDesignation>("TileDigDesignation")
24869    }
24870}
24871
24872#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24873// @@protoc_insertion_point(enum:RemoteFortressReader.HairStyle)
24874pub enum HairStyle {
24875    // @@protoc_insertion_point(enum_value:RemoteFortressReader.HairStyle.UNKEMPT)
24876    UNKEMPT = -1,
24877    // @@protoc_insertion_point(enum_value:RemoteFortressReader.HairStyle.NEATLY_COMBED)
24878    NEATLY_COMBED = 0,
24879    // @@protoc_insertion_point(enum_value:RemoteFortressReader.HairStyle.BRAIDED)
24880    BRAIDED = 1,
24881    // @@protoc_insertion_point(enum_value:RemoteFortressReader.HairStyle.DOUBLE_BRAID)
24882    DOUBLE_BRAID = 2,
24883    // @@protoc_insertion_point(enum_value:RemoteFortressReader.HairStyle.PONY_TAILS)
24884    PONY_TAILS = 3,
24885    // @@protoc_insertion_point(enum_value:RemoteFortressReader.HairStyle.CLEAN_SHAVEN)
24886    CLEAN_SHAVEN = 4,
24887}
24888
24889impl ::protobuf::Enum for HairStyle {
24890    const NAME: &'static str = "HairStyle";
24891
24892    fn value(&self) -> i32 {
24893        *self as i32
24894    }
24895
24896    fn from_i32(value: i32) -> ::std::option::Option<HairStyle> {
24897        match value {
24898            -1 => ::std::option::Option::Some(HairStyle::UNKEMPT),
24899            0 => ::std::option::Option::Some(HairStyle::NEATLY_COMBED),
24900            1 => ::std::option::Option::Some(HairStyle::BRAIDED),
24901            2 => ::std::option::Option::Some(HairStyle::DOUBLE_BRAID),
24902            3 => ::std::option::Option::Some(HairStyle::PONY_TAILS),
24903            4 => ::std::option::Option::Some(HairStyle::CLEAN_SHAVEN),
24904            _ => ::std::option::Option::None
24905        }
24906    }
24907
24908    fn from_str(str: &str) -> ::std::option::Option<HairStyle> {
24909        match str {
24910            "UNKEMPT" => ::std::option::Option::Some(HairStyle::UNKEMPT),
24911            "NEATLY_COMBED" => ::std::option::Option::Some(HairStyle::NEATLY_COMBED),
24912            "BRAIDED" => ::std::option::Option::Some(HairStyle::BRAIDED),
24913            "DOUBLE_BRAID" => ::std::option::Option::Some(HairStyle::DOUBLE_BRAID),
24914            "PONY_TAILS" => ::std::option::Option::Some(HairStyle::PONY_TAILS),
24915            "CLEAN_SHAVEN" => ::std::option::Option::Some(HairStyle::CLEAN_SHAVEN),
24916            _ => ::std::option::Option::None
24917        }
24918    }
24919
24920    const VALUES: &'static [HairStyle] = &[
24921        HairStyle::UNKEMPT,
24922        HairStyle::NEATLY_COMBED,
24923        HairStyle::BRAIDED,
24924        HairStyle::DOUBLE_BRAID,
24925        HairStyle::PONY_TAILS,
24926        HairStyle::CLEAN_SHAVEN,
24927    ];
24928}
24929
24930impl ::protobuf::EnumFull for HairStyle {
24931    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24932        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24933        descriptor.get(|| file_descriptor().enum_by_package_relative_name("HairStyle").unwrap()).clone()
24934    }
24935
24936    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24937        let index = match self {
24938            HairStyle::UNKEMPT => 0,
24939            HairStyle::NEATLY_COMBED => 1,
24940            HairStyle::BRAIDED => 2,
24941            HairStyle::DOUBLE_BRAID => 3,
24942            HairStyle::PONY_TAILS => 4,
24943            HairStyle::CLEAN_SHAVEN => 5,
24944        };
24945        Self::enum_descriptor().value_by_index(index)
24946    }
24947}
24948
24949// Note, `Default` is implemented although default value is not 0
24950impl ::std::default::Default for HairStyle {
24951    fn default() -> Self {
24952        HairStyle::UNKEMPT
24953    }
24954}
24955
24956impl HairStyle {
24957    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24958        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<HairStyle>("HairStyle")
24959    }
24960}
24961
24962#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24963// @@protoc_insertion_point(enum:RemoteFortressReader.InventoryMode)
24964pub enum InventoryMode {
24965    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Hauled)
24966    Hauled = 0,
24967    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Weapon)
24968    Weapon = 1,
24969    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Worn)
24970    Worn = 2,
24971    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Piercing)
24972    Piercing = 3,
24973    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Flask)
24974    Flask = 4,
24975    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.WrappedAround)
24976    WrappedAround = 5,
24977    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.StuckIn)
24978    StuckIn = 6,
24979    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.InMouth)
24980    InMouth = 7,
24981    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Pet)
24982    Pet = 8,
24983    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.SewnInto)
24984    SewnInto = 9,
24985    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Strapped)
24986    Strapped = 10,
24987}
24988
24989impl ::protobuf::Enum for InventoryMode {
24990    const NAME: &'static str = "InventoryMode";
24991
24992    fn value(&self) -> i32 {
24993        *self as i32
24994    }
24995
24996    fn from_i32(value: i32) -> ::std::option::Option<InventoryMode> {
24997        match value {
24998            0 => ::std::option::Option::Some(InventoryMode::Hauled),
24999            1 => ::std::option::Option::Some(InventoryMode::Weapon),
25000            2 => ::std::option::Option::Some(InventoryMode::Worn),
25001            3 => ::std::option::Option::Some(InventoryMode::Piercing),
25002            4 => ::std::option::Option::Some(InventoryMode::Flask),
25003            5 => ::std::option::Option::Some(InventoryMode::WrappedAround),
25004            6 => ::std::option::Option::Some(InventoryMode::StuckIn),
25005            7 => ::std::option::Option::Some(InventoryMode::InMouth),
25006            8 => ::std::option::Option::Some(InventoryMode::Pet),
25007            9 => ::std::option::Option::Some(InventoryMode::SewnInto),
25008            10 => ::std::option::Option::Some(InventoryMode::Strapped),
25009            _ => ::std::option::Option::None
25010        }
25011    }
25012
25013    fn from_str(str: &str) -> ::std::option::Option<InventoryMode> {
25014        match str {
25015            "Hauled" => ::std::option::Option::Some(InventoryMode::Hauled),
25016            "Weapon" => ::std::option::Option::Some(InventoryMode::Weapon),
25017            "Worn" => ::std::option::Option::Some(InventoryMode::Worn),
25018            "Piercing" => ::std::option::Option::Some(InventoryMode::Piercing),
25019            "Flask" => ::std::option::Option::Some(InventoryMode::Flask),
25020            "WrappedAround" => ::std::option::Option::Some(InventoryMode::WrappedAround),
25021            "StuckIn" => ::std::option::Option::Some(InventoryMode::StuckIn),
25022            "InMouth" => ::std::option::Option::Some(InventoryMode::InMouth),
25023            "Pet" => ::std::option::Option::Some(InventoryMode::Pet),
25024            "SewnInto" => ::std::option::Option::Some(InventoryMode::SewnInto),
25025            "Strapped" => ::std::option::Option::Some(InventoryMode::Strapped),
25026            _ => ::std::option::Option::None
25027        }
25028    }
25029
25030    const VALUES: &'static [InventoryMode] = &[
25031        InventoryMode::Hauled,
25032        InventoryMode::Weapon,
25033        InventoryMode::Worn,
25034        InventoryMode::Piercing,
25035        InventoryMode::Flask,
25036        InventoryMode::WrappedAround,
25037        InventoryMode::StuckIn,
25038        InventoryMode::InMouth,
25039        InventoryMode::Pet,
25040        InventoryMode::SewnInto,
25041        InventoryMode::Strapped,
25042    ];
25043}
25044
25045impl ::protobuf::EnumFull for InventoryMode {
25046    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25047        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25048        descriptor.get(|| file_descriptor().enum_by_package_relative_name("InventoryMode").unwrap()).clone()
25049    }
25050
25051    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25052        let index = *self as usize;
25053        Self::enum_descriptor().value_by_index(index)
25054    }
25055}
25056
25057impl ::std::default::Default for InventoryMode {
25058    fn default() -> Self {
25059        InventoryMode::Hauled
25060    }
25061}
25062
25063impl InventoryMode {
25064    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25065        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<InventoryMode>("InventoryMode")
25066    }
25067}
25068
25069#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25070// @@protoc_insertion_point(enum:RemoteFortressReader.ArmorLayer)
25071pub enum ArmorLayer {
25072    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArmorLayer.LAYER_UNDER)
25073    LAYER_UNDER = 0,
25074    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArmorLayer.LAYER_OVER)
25075    LAYER_OVER = 1,
25076    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArmorLayer.LAYER_ARMOR)
25077    LAYER_ARMOR = 2,
25078    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArmorLayer.LAYER_COVER)
25079    LAYER_COVER = 3,
25080}
25081
25082impl ::protobuf::Enum for ArmorLayer {
25083    const NAME: &'static str = "ArmorLayer";
25084
25085    fn value(&self) -> i32 {
25086        *self as i32
25087    }
25088
25089    fn from_i32(value: i32) -> ::std::option::Option<ArmorLayer> {
25090        match value {
25091            0 => ::std::option::Option::Some(ArmorLayer::LAYER_UNDER),
25092            1 => ::std::option::Option::Some(ArmorLayer::LAYER_OVER),
25093            2 => ::std::option::Option::Some(ArmorLayer::LAYER_ARMOR),
25094            3 => ::std::option::Option::Some(ArmorLayer::LAYER_COVER),
25095            _ => ::std::option::Option::None
25096        }
25097    }
25098
25099    fn from_str(str: &str) -> ::std::option::Option<ArmorLayer> {
25100        match str {
25101            "LAYER_UNDER" => ::std::option::Option::Some(ArmorLayer::LAYER_UNDER),
25102            "LAYER_OVER" => ::std::option::Option::Some(ArmorLayer::LAYER_OVER),
25103            "LAYER_ARMOR" => ::std::option::Option::Some(ArmorLayer::LAYER_ARMOR),
25104            "LAYER_COVER" => ::std::option::Option::Some(ArmorLayer::LAYER_COVER),
25105            _ => ::std::option::Option::None
25106        }
25107    }
25108
25109    const VALUES: &'static [ArmorLayer] = &[
25110        ArmorLayer::LAYER_UNDER,
25111        ArmorLayer::LAYER_OVER,
25112        ArmorLayer::LAYER_ARMOR,
25113        ArmorLayer::LAYER_COVER,
25114    ];
25115}
25116
25117impl ::protobuf::EnumFull for ArmorLayer {
25118    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25119        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25120        descriptor.get(|| file_descriptor().enum_by_package_relative_name("ArmorLayer").unwrap()).clone()
25121    }
25122
25123    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25124        let index = *self as usize;
25125        Self::enum_descriptor().value_by_index(index)
25126    }
25127}
25128
25129impl ::std::default::Default for ArmorLayer {
25130    fn default() -> Self {
25131        ArmorLayer::LAYER_UNDER
25132    }
25133}
25134
25135impl ArmorLayer {
25136    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25137        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<ArmorLayer>("ArmorLayer")
25138    }
25139}
25140
25141#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25142// @@protoc_insertion_point(enum:RemoteFortressReader.MatterState)
25143pub enum MatterState {
25144    // @@protoc_insertion_point(enum_value:RemoteFortressReader.MatterState.Solid)
25145    Solid = 0,
25146    // @@protoc_insertion_point(enum_value:RemoteFortressReader.MatterState.Liquid)
25147    Liquid = 1,
25148    // @@protoc_insertion_point(enum_value:RemoteFortressReader.MatterState.Gas)
25149    Gas = 2,
25150    // @@protoc_insertion_point(enum_value:RemoteFortressReader.MatterState.Powder)
25151    Powder = 3,
25152    // @@protoc_insertion_point(enum_value:RemoteFortressReader.MatterState.Paste)
25153    Paste = 4,
25154    // @@protoc_insertion_point(enum_value:RemoteFortressReader.MatterState.Pressed)
25155    Pressed = 5,
25156}
25157
25158impl ::protobuf::Enum for MatterState {
25159    const NAME: &'static str = "MatterState";
25160
25161    fn value(&self) -> i32 {
25162        *self as i32
25163    }
25164
25165    fn from_i32(value: i32) -> ::std::option::Option<MatterState> {
25166        match value {
25167            0 => ::std::option::Option::Some(MatterState::Solid),
25168            1 => ::std::option::Option::Some(MatterState::Liquid),
25169            2 => ::std::option::Option::Some(MatterState::Gas),
25170            3 => ::std::option::Option::Some(MatterState::Powder),
25171            4 => ::std::option::Option::Some(MatterState::Paste),
25172            5 => ::std::option::Option::Some(MatterState::Pressed),
25173            _ => ::std::option::Option::None
25174        }
25175    }
25176
25177    fn from_str(str: &str) -> ::std::option::Option<MatterState> {
25178        match str {
25179            "Solid" => ::std::option::Option::Some(MatterState::Solid),
25180            "Liquid" => ::std::option::Option::Some(MatterState::Liquid),
25181            "Gas" => ::std::option::Option::Some(MatterState::Gas),
25182            "Powder" => ::std::option::Option::Some(MatterState::Powder),
25183            "Paste" => ::std::option::Option::Some(MatterState::Paste),
25184            "Pressed" => ::std::option::Option::Some(MatterState::Pressed),
25185            _ => ::std::option::Option::None
25186        }
25187    }
25188
25189    const VALUES: &'static [MatterState] = &[
25190        MatterState::Solid,
25191        MatterState::Liquid,
25192        MatterState::Gas,
25193        MatterState::Powder,
25194        MatterState::Paste,
25195        MatterState::Pressed,
25196    ];
25197}
25198
25199impl ::protobuf::EnumFull for MatterState {
25200    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25201        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25202        descriptor.get(|| file_descriptor().enum_by_package_relative_name("MatterState").unwrap()).clone()
25203    }
25204
25205    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25206        let index = *self as usize;
25207        Self::enum_descriptor().value_by_index(index)
25208    }
25209}
25210
25211impl ::std::default::Default for MatterState {
25212    fn default() -> Self {
25213        MatterState::Solid
25214    }
25215}
25216
25217impl MatterState {
25218    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25219        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<MatterState>("MatterState")
25220    }
25221}
25222
25223#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25224// @@protoc_insertion_point(enum:RemoteFortressReader.FrontType)
25225pub enum FrontType {
25226    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FrontType.FRONT_NONE)
25227    FRONT_NONE = 0,
25228    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FrontType.FRONT_WARM)
25229    FRONT_WARM = 1,
25230    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FrontType.FRONT_COLD)
25231    FRONT_COLD = 2,
25232    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FrontType.FRONT_OCCLUDED)
25233    FRONT_OCCLUDED = 3,
25234}
25235
25236impl ::protobuf::Enum for FrontType {
25237    const NAME: &'static str = "FrontType";
25238
25239    fn value(&self) -> i32 {
25240        *self as i32
25241    }
25242
25243    fn from_i32(value: i32) -> ::std::option::Option<FrontType> {
25244        match value {
25245            0 => ::std::option::Option::Some(FrontType::FRONT_NONE),
25246            1 => ::std::option::Option::Some(FrontType::FRONT_WARM),
25247            2 => ::std::option::Option::Some(FrontType::FRONT_COLD),
25248            3 => ::std::option::Option::Some(FrontType::FRONT_OCCLUDED),
25249            _ => ::std::option::Option::None
25250        }
25251    }
25252
25253    fn from_str(str: &str) -> ::std::option::Option<FrontType> {
25254        match str {
25255            "FRONT_NONE" => ::std::option::Option::Some(FrontType::FRONT_NONE),
25256            "FRONT_WARM" => ::std::option::Option::Some(FrontType::FRONT_WARM),
25257            "FRONT_COLD" => ::std::option::Option::Some(FrontType::FRONT_COLD),
25258            "FRONT_OCCLUDED" => ::std::option::Option::Some(FrontType::FRONT_OCCLUDED),
25259            _ => ::std::option::Option::None
25260        }
25261    }
25262
25263    const VALUES: &'static [FrontType] = &[
25264        FrontType::FRONT_NONE,
25265        FrontType::FRONT_WARM,
25266        FrontType::FRONT_COLD,
25267        FrontType::FRONT_OCCLUDED,
25268    ];
25269}
25270
25271impl ::protobuf::EnumFull for FrontType {
25272    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25273        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25274        descriptor.get(|| file_descriptor().enum_by_package_relative_name("FrontType").unwrap()).clone()
25275    }
25276
25277    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25278        let index = *self as usize;
25279        Self::enum_descriptor().value_by_index(index)
25280    }
25281}
25282
25283impl ::std::default::Default for FrontType {
25284    fn default() -> Self {
25285        FrontType::FRONT_NONE
25286    }
25287}
25288
25289impl FrontType {
25290    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25291        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<FrontType>("FrontType")
25292    }
25293}
25294
25295#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25296// @@protoc_insertion_point(enum:RemoteFortressReader.CumulusType)
25297pub enum CumulusType {
25298    // @@protoc_insertion_point(enum_value:RemoteFortressReader.CumulusType.CUMULUS_NONE)
25299    CUMULUS_NONE = 0,
25300    // @@protoc_insertion_point(enum_value:RemoteFortressReader.CumulusType.CUMULUS_MEDIUM)
25301    CUMULUS_MEDIUM = 1,
25302    // @@protoc_insertion_point(enum_value:RemoteFortressReader.CumulusType.CUMULUS_MULTI)
25303    CUMULUS_MULTI = 2,
25304    // @@protoc_insertion_point(enum_value:RemoteFortressReader.CumulusType.CUMULUS_NIMBUS)
25305    CUMULUS_NIMBUS = 3,
25306}
25307
25308impl ::protobuf::Enum for CumulusType {
25309    const NAME: &'static str = "CumulusType";
25310
25311    fn value(&self) -> i32 {
25312        *self as i32
25313    }
25314
25315    fn from_i32(value: i32) -> ::std::option::Option<CumulusType> {
25316        match value {
25317            0 => ::std::option::Option::Some(CumulusType::CUMULUS_NONE),
25318            1 => ::std::option::Option::Some(CumulusType::CUMULUS_MEDIUM),
25319            2 => ::std::option::Option::Some(CumulusType::CUMULUS_MULTI),
25320            3 => ::std::option::Option::Some(CumulusType::CUMULUS_NIMBUS),
25321            _ => ::std::option::Option::None
25322        }
25323    }
25324
25325    fn from_str(str: &str) -> ::std::option::Option<CumulusType> {
25326        match str {
25327            "CUMULUS_NONE" => ::std::option::Option::Some(CumulusType::CUMULUS_NONE),
25328            "CUMULUS_MEDIUM" => ::std::option::Option::Some(CumulusType::CUMULUS_MEDIUM),
25329            "CUMULUS_MULTI" => ::std::option::Option::Some(CumulusType::CUMULUS_MULTI),
25330            "CUMULUS_NIMBUS" => ::std::option::Option::Some(CumulusType::CUMULUS_NIMBUS),
25331            _ => ::std::option::Option::None
25332        }
25333    }
25334
25335    const VALUES: &'static [CumulusType] = &[
25336        CumulusType::CUMULUS_NONE,
25337        CumulusType::CUMULUS_MEDIUM,
25338        CumulusType::CUMULUS_MULTI,
25339        CumulusType::CUMULUS_NIMBUS,
25340    ];
25341}
25342
25343impl ::protobuf::EnumFull for CumulusType {
25344    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25345        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25346        descriptor.get(|| file_descriptor().enum_by_package_relative_name("CumulusType").unwrap()).clone()
25347    }
25348
25349    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25350        let index = *self as usize;
25351        Self::enum_descriptor().value_by_index(index)
25352    }
25353}
25354
25355impl ::std::default::Default for CumulusType {
25356    fn default() -> Self {
25357        CumulusType::CUMULUS_NONE
25358    }
25359}
25360
25361impl CumulusType {
25362    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25363        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<CumulusType>("CumulusType")
25364    }
25365}
25366
25367#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25368// @@protoc_insertion_point(enum:RemoteFortressReader.StratusType)
25369pub enum StratusType {
25370    // @@protoc_insertion_point(enum_value:RemoteFortressReader.StratusType.STRATUS_NONE)
25371    STRATUS_NONE = 0,
25372    // @@protoc_insertion_point(enum_value:RemoteFortressReader.StratusType.STRATUS_ALTO)
25373    STRATUS_ALTO = 1,
25374    // @@protoc_insertion_point(enum_value:RemoteFortressReader.StratusType.STRATUS_PROPER)
25375    STRATUS_PROPER = 2,
25376    // @@protoc_insertion_point(enum_value:RemoteFortressReader.StratusType.STRATUS_NIMBUS)
25377    STRATUS_NIMBUS = 3,
25378}
25379
25380impl ::protobuf::Enum for StratusType {
25381    const NAME: &'static str = "StratusType";
25382
25383    fn value(&self) -> i32 {
25384        *self as i32
25385    }
25386
25387    fn from_i32(value: i32) -> ::std::option::Option<StratusType> {
25388        match value {
25389            0 => ::std::option::Option::Some(StratusType::STRATUS_NONE),
25390            1 => ::std::option::Option::Some(StratusType::STRATUS_ALTO),
25391            2 => ::std::option::Option::Some(StratusType::STRATUS_PROPER),
25392            3 => ::std::option::Option::Some(StratusType::STRATUS_NIMBUS),
25393            _ => ::std::option::Option::None
25394        }
25395    }
25396
25397    fn from_str(str: &str) -> ::std::option::Option<StratusType> {
25398        match str {
25399            "STRATUS_NONE" => ::std::option::Option::Some(StratusType::STRATUS_NONE),
25400            "STRATUS_ALTO" => ::std::option::Option::Some(StratusType::STRATUS_ALTO),
25401            "STRATUS_PROPER" => ::std::option::Option::Some(StratusType::STRATUS_PROPER),
25402            "STRATUS_NIMBUS" => ::std::option::Option::Some(StratusType::STRATUS_NIMBUS),
25403            _ => ::std::option::Option::None
25404        }
25405    }
25406
25407    const VALUES: &'static [StratusType] = &[
25408        StratusType::STRATUS_NONE,
25409        StratusType::STRATUS_ALTO,
25410        StratusType::STRATUS_PROPER,
25411        StratusType::STRATUS_NIMBUS,
25412    ];
25413}
25414
25415impl ::protobuf::EnumFull for StratusType {
25416    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25417        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25418        descriptor.get(|| file_descriptor().enum_by_package_relative_name("StratusType").unwrap()).clone()
25419    }
25420
25421    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25422        let index = *self as usize;
25423        Self::enum_descriptor().value_by_index(index)
25424    }
25425}
25426
25427impl ::std::default::Default for StratusType {
25428    fn default() -> Self {
25429        StratusType::STRATUS_NONE
25430    }
25431}
25432
25433impl StratusType {
25434    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25435        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<StratusType>("StratusType")
25436    }
25437}
25438
25439#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25440// @@protoc_insertion_point(enum:RemoteFortressReader.FogType)
25441pub enum FogType {
25442    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FogType.FOG_NONE)
25443    FOG_NONE = 0,
25444    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FogType.FOG_MIST)
25445    FOG_MIST = 1,
25446    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FogType.FOG_NORMAL)
25447    FOG_NORMAL = 2,
25448    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FogType.F0G_THICK)
25449    F0G_THICK = 3,
25450}
25451
25452impl ::protobuf::Enum for FogType {
25453    const NAME: &'static str = "FogType";
25454
25455    fn value(&self) -> i32 {
25456        *self as i32
25457    }
25458
25459    fn from_i32(value: i32) -> ::std::option::Option<FogType> {
25460        match value {
25461            0 => ::std::option::Option::Some(FogType::FOG_NONE),
25462            1 => ::std::option::Option::Some(FogType::FOG_MIST),
25463            2 => ::std::option::Option::Some(FogType::FOG_NORMAL),
25464            3 => ::std::option::Option::Some(FogType::F0G_THICK),
25465            _ => ::std::option::Option::None
25466        }
25467    }
25468
25469    fn from_str(str: &str) -> ::std::option::Option<FogType> {
25470        match str {
25471            "FOG_NONE" => ::std::option::Option::Some(FogType::FOG_NONE),
25472            "FOG_MIST" => ::std::option::Option::Some(FogType::FOG_MIST),
25473            "FOG_NORMAL" => ::std::option::Option::Some(FogType::FOG_NORMAL),
25474            "F0G_THICK" => ::std::option::Option::Some(FogType::F0G_THICK),
25475            _ => ::std::option::Option::None
25476        }
25477    }
25478
25479    const VALUES: &'static [FogType] = &[
25480        FogType::FOG_NONE,
25481        FogType::FOG_MIST,
25482        FogType::FOG_NORMAL,
25483        FogType::F0G_THICK,
25484    ];
25485}
25486
25487impl ::protobuf::EnumFull for FogType {
25488    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25489        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25490        descriptor.get(|| file_descriptor().enum_by_package_relative_name("FogType").unwrap()).clone()
25491    }
25492
25493    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25494        let index = *self as usize;
25495        Self::enum_descriptor().value_by_index(index)
25496    }
25497}
25498
25499impl ::std::default::Default for FogType {
25500    fn default() -> Self {
25501        FogType::FOG_NONE
25502    }
25503}
25504
25505impl FogType {
25506    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25507        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<FogType>("FogType")
25508    }
25509}
25510
25511#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25512// @@protoc_insertion_point(enum:RemoteFortressReader.PatternType)
25513pub enum PatternType {
25514    // @@protoc_insertion_point(enum_value:RemoteFortressReader.PatternType.MONOTONE)
25515    MONOTONE = 0,
25516    // @@protoc_insertion_point(enum_value:RemoteFortressReader.PatternType.STRIPES)
25517    STRIPES = 1,
25518    // @@protoc_insertion_point(enum_value:RemoteFortressReader.PatternType.IRIS_EYE)
25519    IRIS_EYE = 2,
25520    // @@protoc_insertion_point(enum_value:RemoteFortressReader.PatternType.SPOTS)
25521    SPOTS = 3,
25522    // @@protoc_insertion_point(enum_value:RemoteFortressReader.PatternType.PUPIL_EYE)
25523    PUPIL_EYE = 4,
25524    // @@protoc_insertion_point(enum_value:RemoteFortressReader.PatternType.MOTTLED)
25525    MOTTLED = 5,
25526}
25527
25528impl ::protobuf::Enum for PatternType {
25529    const NAME: &'static str = "PatternType";
25530
25531    fn value(&self) -> i32 {
25532        *self as i32
25533    }
25534
25535    fn from_i32(value: i32) -> ::std::option::Option<PatternType> {
25536        match value {
25537            0 => ::std::option::Option::Some(PatternType::MONOTONE),
25538            1 => ::std::option::Option::Some(PatternType::STRIPES),
25539            2 => ::std::option::Option::Some(PatternType::IRIS_EYE),
25540            3 => ::std::option::Option::Some(PatternType::SPOTS),
25541            4 => ::std::option::Option::Some(PatternType::PUPIL_EYE),
25542            5 => ::std::option::Option::Some(PatternType::MOTTLED),
25543            _ => ::std::option::Option::None
25544        }
25545    }
25546
25547    fn from_str(str: &str) -> ::std::option::Option<PatternType> {
25548        match str {
25549            "MONOTONE" => ::std::option::Option::Some(PatternType::MONOTONE),
25550            "STRIPES" => ::std::option::Option::Some(PatternType::STRIPES),
25551            "IRIS_EYE" => ::std::option::Option::Some(PatternType::IRIS_EYE),
25552            "SPOTS" => ::std::option::Option::Some(PatternType::SPOTS),
25553            "PUPIL_EYE" => ::std::option::Option::Some(PatternType::PUPIL_EYE),
25554            "MOTTLED" => ::std::option::Option::Some(PatternType::MOTTLED),
25555            _ => ::std::option::Option::None
25556        }
25557    }
25558
25559    const VALUES: &'static [PatternType] = &[
25560        PatternType::MONOTONE,
25561        PatternType::STRIPES,
25562        PatternType::IRIS_EYE,
25563        PatternType::SPOTS,
25564        PatternType::PUPIL_EYE,
25565        PatternType::MOTTLED,
25566    ];
25567}
25568
25569impl ::protobuf::EnumFull for PatternType {
25570    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25571        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25572        descriptor.get(|| file_descriptor().enum_by_package_relative_name("PatternType").unwrap()).clone()
25573    }
25574
25575    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25576        let index = *self as usize;
25577        Self::enum_descriptor().value_by_index(index)
25578    }
25579}
25580
25581impl ::std::default::Default for PatternType {
25582    fn default() -> Self {
25583        PatternType::MONOTONE
25584    }
25585}
25586
25587impl PatternType {
25588    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25589        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<PatternType>("PatternType")
25590    }
25591}
25592
25593#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25594// @@protoc_insertion_point(enum:RemoteFortressReader.ArtImageElementType)
25595pub enum ArtImageElementType {
25596    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageElementType.IMAGE_CREATURE)
25597    IMAGE_CREATURE = 0,
25598    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageElementType.IMAGE_PLANT)
25599    IMAGE_PLANT = 1,
25600    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageElementType.IMAGE_TREE)
25601    IMAGE_TREE = 2,
25602    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageElementType.IMAGE_SHAPE)
25603    IMAGE_SHAPE = 3,
25604    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageElementType.IMAGE_ITEM)
25605    IMAGE_ITEM = 4,
25606}
25607
25608impl ::protobuf::Enum for ArtImageElementType {
25609    const NAME: &'static str = "ArtImageElementType";
25610
25611    fn value(&self) -> i32 {
25612        *self as i32
25613    }
25614
25615    fn from_i32(value: i32) -> ::std::option::Option<ArtImageElementType> {
25616        match value {
25617            0 => ::std::option::Option::Some(ArtImageElementType::IMAGE_CREATURE),
25618            1 => ::std::option::Option::Some(ArtImageElementType::IMAGE_PLANT),
25619            2 => ::std::option::Option::Some(ArtImageElementType::IMAGE_TREE),
25620            3 => ::std::option::Option::Some(ArtImageElementType::IMAGE_SHAPE),
25621            4 => ::std::option::Option::Some(ArtImageElementType::IMAGE_ITEM),
25622            _ => ::std::option::Option::None
25623        }
25624    }
25625
25626    fn from_str(str: &str) -> ::std::option::Option<ArtImageElementType> {
25627        match str {
25628            "IMAGE_CREATURE" => ::std::option::Option::Some(ArtImageElementType::IMAGE_CREATURE),
25629            "IMAGE_PLANT" => ::std::option::Option::Some(ArtImageElementType::IMAGE_PLANT),
25630            "IMAGE_TREE" => ::std::option::Option::Some(ArtImageElementType::IMAGE_TREE),
25631            "IMAGE_SHAPE" => ::std::option::Option::Some(ArtImageElementType::IMAGE_SHAPE),
25632            "IMAGE_ITEM" => ::std::option::Option::Some(ArtImageElementType::IMAGE_ITEM),
25633            _ => ::std::option::Option::None
25634        }
25635    }
25636
25637    const VALUES: &'static [ArtImageElementType] = &[
25638        ArtImageElementType::IMAGE_CREATURE,
25639        ArtImageElementType::IMAGE_PLANT,
25640        ArtImageElementType::IMAGE_TREE,
25641        ArtImageElementType::IMAGE_SHAPE,
25642        ArtImageElementType::IMAGE_ITEM,
25643    ];
25644}
25645
25646impl ::protobuf::EnumFull for ArtImageElementType {
25647    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25648        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25649        descriptor.get(|| file_descriptor().enum_by_package_relative_name("ArtImageElementType").unwrap()).clone()
25650    }
25651
25652    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25653        let index = *self as usize;
25654        Self::enum_descriptor().value_by_index(index)
25655    }
25656}
25657
25658impl ::std::default::Default for ArtImageElementType {
25659    fn default() -> Self {
25660        ArtImageElementType::IMAGE_CREATURE
25661    }
25662}
25663
25664impl ArtImageElementType {
25665    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25666        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<ArtImageElementType>("ArtImageElementType")
25667    }
25668}
25669
25670#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25671// @@protoc_insertion_point(enum:RemoteFortressReader.ArtImagePropertyType)
25672pub enum ArtImagePropertyType {
25673    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImagePropertyType.TRANSITIVE_VERB)
25674    TRANSITIVE_VERB = 0,
25675    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImagePropertyType.INTRANSITIVE_VERB)
25676    INTRANSITIVE_VERB = 1,
25677}
25678
25679impl ::protobuf::Enum for ArtImagePropertyType {
25680    const NAME: &'static str = "ArtImagePropertyType";
25681
25682    fn value(&self) -> i32 {
25683        *self as i32
25684    }
25685
25686    fn from_i32(value: i32) -> ::std::option::Option<ArtImagePropertyType> {
25687        match value {
25688            0 => ::std::option::Option::Some(ArtImagePropertyType::TRANSITIVE_VERB),
25689            1 => ::std::option::Option::Some(ArtImagePropertyType::INTRANSITIVE_VERB),
25690            _ => ::std::option::Option::None
25691        }
25692    }
25693
25694    fn from_str(str: &str) -> ::std::option::Option<ArtImagePropertyType> {
25695        match str {
25696            "TRANSITIVE_VERB" => ::std::option::Option::Some(ArtImagePropertyType::TRANSITIVE_VERB),
25697            "INTRANSITIVE_VERB" => ::std::option::Option::Some(ArtImagePropertyType::INTRANSITIVE_VERB),
25698            _ => ::std::option::Option::None
25699        }
25700    }
25701
25702    const VALUES: &'static [ArtImagePropertyType] = &[
25703        ArtImagePropertyType::TRANSITIVE_VERB,
25704        ArtImagePropertyType::INTRANSITIVE_VERB,
25705    ];
25706}
25707
25708impl ::protobuf::EnumFull for ArtImagePropertyType {
25709    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25710        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25711        descriptor.get(|| file_descriptor().enum_by_package_relative_name("ArtImagePropertyType").unwrap()).clone()
25712    }
25713
25714    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25715        let index = *self as usize;
25716        Self::enum_descriptor().value_by_index(index)
25717    }
25718}
25719
25720impl ::std::default::Default for ArtImagePropertyType {
25721    fn default() -> Self {
25722        ArtImagePropertyType::TRANSITIVE_VERB
25723    }
25724}
25725
25726impl ArtImagePropertyType {
25727    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25728        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<ArtImagePropertyType>("ArtImagePropertyType")
25729    }
25730}
25731
25732#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25733// @@protoc_insertion_point(enum:RemoteFortressReader.ArtImageVerb)
25734pub enum ArtImageVerb {
25735    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_WITHERING)
25736    VERB_WITHERING = 0,
25737    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SURROUNDEDBY)
25738    VERB_SURROUNDEDBY = 1,
25739    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_MASSACRING)
25740    VERB_MASSACRING = 2,
25741    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_FIGHTING)
25742    VERB_FIGHTING = 3,
25743    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_LABORING)
25744    VERB_LABORING = 4,
25745    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_GREETING)
25746    VERB_GREETING = 5,
25747    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_REFUSING)
25748    VERB_REFUSING = 6,
25749    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SPEAKING)
25750    VERB_SPEAKING = 7,
25751    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_EMBRACING)
25752    VERB_EMBRACING = 8,
25753    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_STRIKINGDOWN)
25754    VERB_STRIKINGDOWN = 9,
25755    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_MENACINGPOSE)
25756    VERB_MENACINGPOSE = 10,
25757    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_TRAVELING)
25758    VERB_TRAVELING = 11,
25759    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_RAISING)
25760    VERB_RAISING = 12,
25761    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_HIDING)
25762    VERB_HIDING = 13,
25763    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_LOOKINGCONFUSED)
25764    VERB_LOOKINGCONFUSED = 14,
25765    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_LOOKINGTERRIFIED)
25766    VERB_LOOKINGTERRIFIED = 15,
25767    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_DEVOURING)
25768    VERB_DEVOURING = 16,
25769    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_ADMIRING)
25770    VERB_ADMIRING = 17,
25771    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_BURNING)
25772    VERB_BURNING = 18,
25773    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_WEEPING)
25774    VERB_WEEPING = 19,
25775    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_LOOKINGDEJECTED)
25776    VERB_LOOKINGDEJECTED = 20,
25777    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_CRINGING)
25778    VERB_CRINGING = 21,
25779    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SCREAMING)
25780    VERB_SCREAMING = 22,
25781    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SUBMISSIVEGESTURE)
25782    VERB_SUBMISSIVEGESTURE = 23,
25783    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_FETALPOSITION)
25784    VERB_FETALPOSITION = 24,
25785    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SMEAREDINTOSPIRAL)
25786    VERB_SMEAREDINTOSPIRAL = 25,
25787    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_FALLING)
25788    VERB_FALLING = 26,
25789    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_DEAD)
25790    VERB_DEAD = 27,
25791    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_LAUGHING)
25792    VERB_LAUGHING = 28,
25793    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_LOOKINGOFFENDED)
25794    VERB_LOOKINGOFFENDED = 29,
25795    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_BEINGSHOT)
25796    VERB_BEINGSHOT = 30,
25797    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_PLAINTIVEGESTURE)
25798    VERB_PLAINTIVEGESTURE = 31,
25799    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_MELTING)
25800    VERB_MELTING = 32,
25801    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SHOOTING)
25802    VERB_SHOOTING = 33,
25803    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_TORTURING)
25804    VERB_TORTURING = 34,
25805    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_COMMITTINGDEPRAVEDACT)
25806    VERB_COMMITTINGDEPRAVEDACT = 35,
25807    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_PRAYING)
25808    VERB_PRAYING = 36,
25809    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_CONTEMPLATING)
25810    VERB_CONTEMPLATING = 37,
25811    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_COOKING)
25812    VERB_COOKING = 38,
25813    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_ENGRAVING)
25814    VERB_ENGRAVING = 39,
25815    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_PROSTRATING)
25816    VERB_PROSTRATING = 40,
25817    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SUFFERING)
25818    VERB_SUFFERING = 41,
25819    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_BEINGIMPALED)
25820    VERB_BEINGIMPALED = 42,
25821    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_BEINGCONTORTED)
25822    VERB_BEINGCONTORTED = 43,
25823    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_BEINGFLAYED)
25824    VERB_BEINGFLAYED = 44,
25825    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_HANGINGFROM)
25826    VERB_HANGINGFROM = 45,
25827    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_BEINGMUTILATED)
25828    VERB_BEINGMUTILATED = 46,
25829    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_TRIUMPHANTPOSE)
25830    VERB_TRIUMPHANTPOSE = 47,
25831}
25832
25833impl ::protobuf::Enum for ArtImageVerb {
25834    const NAME: &'static str = "ArtImageVerb";
25835
25836    fn value(&self) -> i32 {
25837        *self as i32
25838    }
25839
25840    fn from_i32(value: i32) -> ::std::option::Option<ArtImageVerb> {
25841        match value {
25842            0 => ::std::option::Option::Some(ArtImageVerb::VERB_WITHERING),
25843            1 => ::std::option::Option::Some(ArtImageVerb::VERB_SURROUNDEDBY),
25844            2 => ::std::option::Option::Some(ArtImageVerb::VERB_MASSACRING),
25845            3 => ::std::option::Option::Some(ArtImageVerb::VERB_FIGHTING),
25846            4 => ::std::option::Option::Some(ArtImageVerb::VERB_LABORING),
25847            5 => ::std::option::Option::Some(ArtImageVerb::VERB_GREETING),
25848            6 => ::std::option::Option::Some(ArtImageVerb::VERB_REFUSING),
25849            7 => ::std::option::Option::Some(ArtImageVerb::VERB_SPEAKING),
25850            8 => ::std::option::Option::Some(ArtImageVerb::VERB_EMBRACING),
25851            9 => ::std::option::Option::Some(ArtImageVerb::VERB_STRIKINGDOWN),
25852            10 => ::std::option::Option::Some(ArtImageVerb::VERB_MENACINGPOSE),
25853            11 => ::std::option::Option::Some(ArtImageVerb::VERB_TRAVELING),
25854            12 => ::std::option::Option::Some(ArtImageVerb::VERB_RAISING),
25855            13 => ::std::option::Option::Some(ArtImageVerb::VERB_HIDING),
25856            14 => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGCONFUSED),
25857            15 => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGTERRIFIED),
25858            16 => ::std::option::Option::Some(ArtImageVerb::VERB_DEVOURING),
25859            17 => ::std::option::Option::Some(ArtImageVerb::VERB_ADMIRING),
25860            18 => ::std::option::Option::Some(ArtImageVerb::VERB_BURNING),
25861            19 => ::std::option::Option::Some(ArtImageVerb::VERB_WEEPING),
25862            20 => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGDEJECTED),
25863            21 => ::std::option::Option::Some(ArtImageVerb::VERB_CRINGING),
25864            22 => ::std::option::Option::Some(ArtImageVerb::VERB_SCREAMING),
25865            23 => ::std::option::Option::Some(ArtImageVerb::VERB_SUBMISSIVEGESTURE),
25866            24 => ::std::option::Option::Some(ArtImageVerb::VERB_FETALPOSITION),
25867            25 => ::std::option::Option::Some(ArtImageVerb::VERB_SMEAREDINTOSPIRAL),
25868            26 => ::std::option::Option::Some(ArtImageVerb::VERB_FALLING),
25869            27 => ::std::option::Option::Some(ArtImageVerb::VERB_DEAD),
25870            28 => ::std::option::Option::Some(ArtImageVerb::VERB_LAUGHING),
25871            29 => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGOFFENDED),
25872            30 => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGSHOT),
25873            31 => ::std::option::Option::Some(ArtImageVerb::VERB_PLAINTIVEGESTURE),
25874            32 => ::std::option::Option::Some(ArtImageVerb::VERB_MELTING),
25875            33 => ::std::option::Option::Some(ArtImageVerb::VERB_SHOOTING),
25876            34 => ::std::option::Option::Some(ArtImageVerb::VERB_TORTURING),
25877            35 => ::std::option::Option::Some(ArtImageVerb::VERB_COMMITTINGDEPRAVEDACT),
25878            36 => ::std::option::Option::Some(ArtImageVerb::VERB_PRAYING),
25879            37 => ::std::option::Option::Some(ArtImageVerb::VERB_CONTEMPLATING),
25880            38 => ::std::option::Option::Some(ArtImageVerb::VERB_COOKING),
25881            39 => ::std::option::Option::Some(ArtImageVerb::VERB_ENGRAVING),
25882            40 => ::std::option::Option::Some(ArtImageVerb::VERB_PROSTRATING),
25883            41 => ::std::option::Option::Some(ArtImageVerb::VERB_SUFFERING),
25884            42 => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGIMPALED),
25885            43 => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGCONTORTED),
25886            44 => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGFLAYED),
25887            45 => ::std::option::Option::Some(ArtImageVerb::VERB_HANGINGFROM),
25888            46 => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGMUTILATED),
25889            47 => ::std::option::Option::Some(ArtImageVerb::VERB_TRIUMPHANTPOSE),
25890            _ => ::std::option::Option::None
25891        }
25892    }
25893
25894    fn from_str(str: &str) -> ::std::option::Option<ArtImageVerb> {
25895        match str {
25896            "VERB_WITHERING" => ::std::option::Option::Some(ArtImageVerb::VERB_WITHERING),
25897            "VERB_SURROUNDEDBY" => ::std::option::Option::Some(ArtImageVerb::VERB_SURROUNDEDBY),
25898            "VERB_MASSACRING" => ::std::option::Option::Some(ArtImageVerb::VERB_MASSACRING),
25899            "VERB_FIGHTING" => ::std::option::Option::Some(ArtImageVerb::VERB_FIGHTING),
25900            "VERB_LABORING" => ::std::option::Option::Some(ArtImageVerb::VERB_LABORING),
25901            "VERB_GREETING" => ::std::option::Option::Some(ArtImageVerb::VERB_GREETING),
25902            "VERB_REFUSING" => ::std::option::Option::Some(ArtImageVerb::VERB_REFUSING),
25903            "VERB_SPEAKING" => ::std::option::Option::Some(ArtImageVerb::VERB_SPEAKING),
25904            "VERB_EMBRACING" => ::std::option::Option::Some(ArtImageVerb::VERB_EMBRACING),
25905            "VERB_STRIKINGDOWN" => ::std::option::Option::Some(ArtImageVerb::VERB_STRIKINGDOWN),
25906            "VERB_MENACINGPOSE" => ::std::option::Option::Some(ArtImageVerb::VERB_MENACINGPOSE),
25907            "VERB_TRAVELING" => ::std::option::Option::Some(ArtImageVerb::VERB_TRAVELING),
25908            "VERB_RAISING" => ::std::option::Option::Some(ArtImageVerb::VERB_RAISING),
25909            "VERB_HIDING" => ::std::option::Option::Some(ArtImageVerb::VERB_HIDING),
25910            "VERB_LOOKINGCONFUSED" => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGCONFUSED),
25911            "VERB_LOOKINGTERRIFIED" => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGTERRIFIED),
25912            "VERB_DEVOURING" => ::std::option::Option::Some(ArtImageVerb::VERB_DEVOURING),
25913            "VERB_ADMIRING" => ::std::option::Option::Some(ArtImageVerb::VERB_ADMIRING),
25914            "VERB_BURNING" => ::std::option::Option::Some(ArtImageVerb::VERB_BURNING),
25915            "VERB_WEEPING" => ::std::option::Option::Some(ArtImageVerb::VERB_WEEPING),
25916            "VERB_LOOKINGDEJECTED" => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGDEJECTED),
25917            "VERB_CRINGING" => ::std::option::Option::Some(ArtImageVerb::VERB_CRINGING),
25918            "VERB_SCREAMING" => ::std::option::Option::Some(ArtImageVerb::VERB_SCREAMING),
25919            "VERB_SUBMISSIVEGESTURE" => ::std::option::Option::Some(ArtImageVerb::VERB_SUBMISSIVEGESTURE),
25920            "VERB_FETALPOSITION" => ::std::option::Option::Some(ArtImageVerb::VERB_FETALPOSITION),
25921            "VERB_SMEAREDINTOSPIRAL" => ::std::option::Option::Some(ArtImageVerb::VERB_SMEAREDINTOSPIRAL),
25922            "VERB_FALLING" => ::std::option::Option::Some(ArtImageVerb::VERB_FALLING),
25923            "VERB_DEAD" => ::std::option::Option::Some(ArtImageVerb::VERB_DEAD),
25924            "VERB_LAUGHING" => ::std::option::Option::Some(ArtImageVerb::VERB_LAUGHING),
25925            "VERB_LOOKINGOFFENDED" => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGOFFENDED),
25926            "VERB_BEINGSHOT" => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGSHOT),
25927            "VERB_PLAINTIVEGESTURE" => ::std::option::Option::Some(ArtImageVerb::VERB_PLAINTIVEGESTURE),
25928            "VERB_MELTING" => ::std::option::Option::Some(ArtImageVerb::VERB_MELTING),
25929            "VERB_SHOOTING" => ::std::option::Option::Some(ArtImageVerb::VERB_SHOOTING),
25930            "VERB_TORTURING" => ::std::option::Option::Some(ArtImageVerb::VERB_TORTURING),
25931            "VERB_COMMITTINGDEPRAVEDACT" => ::std::option::Option::Some(ArtImageVerb::VERB_COMMITTINGDEPRAVEDACT),
25932            "VERB_PRAYING" => ::std::option::Option::Some(ArtImageVerb::VERB_PRAYING),
25933            "VERB_CONTEMPLATING" => ::std::option::Option::Some(ArtImageVerb::VERB_CONTEMPLATING),
25934            "VERB_COOKING" => ::std::option::Option::Some(ArtImageVerb::VERB_COOKING),
25935            "VERB_ENGRAVING" => ::std::option::Option::Some(ArtImageVerb::VERB_ENGRAVING),
25936            "VERB_PROSTRATING" => ::std::option::Option::Some(ArtImageVerb::VERB_PROSTRATING),
25937            "VERB_SUFFERING" => ::std::option::Option::Some(ArtImageVerb::VERB_SUFFERING),
25938            "VERB_BEINGIMPALED" => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGIMPALED),
25939            "VERB_BEINGCONTORTED" => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGCONTORTED),
25940            "VERB_BEINGFLAYED" => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGFLAYED),
25941            "VERB_HANGINGFROM" => ::std::option::Option::Some(ArtImageVerb::VERB_HANGINGFROM),
25942            "VERB_BEINGMUTILATED" => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGMUTILATED),
25943            "VERB_TRIUMPHANTPOSE" => ::std::option::Option::Some(ArtImageVerb::VERB_TRIUMPHANTPOSE),
25944            _ => ::std::option::Option::None
25945        }
25946    }
25947
25948    const VALUES: &'static [ArtImageVerb] = &[
25949        ArtImageVerb::VERB_WITHERING,
25950        ArtImageVerb::VERB_SURROUNDEDBY,
25951        ArtImageVerb::VERB_MASSACRING,
25952        ArtImageVerb::VERB_FIGHTING,
25953        ArtImageVerb::VERB_LABORING,
25954        ArtImageVerb::VERB_GREETING,
25955        ArtImageVerb::VERB_REFUSING,
25956        ArtImageVerb::VERB_SPEAKING,
25957        ArtImageVerb::VERB_EMBRACING,
25958        ArtImageVerb::VERB_STRIKINGDOWN,
25959        ArtImageVerb::VERB_MENACINGPOSE,
25960        ArtImageVerb::VERB_TRAVELING,
25961        ArtImageVerb::VERB_RAISING,
25962        ArtImageVerb::VERB_HIDING,
25963        ArtImageVerb::VERB_LOOKINGCONFUSED,
25964        ArtImageVerb::VERB_LOOKINGTERRIFIED,
25965        ArtImageVerb::VERB_DEVOURING,
25966        ArtImageVerb::VERB_ADMIRING,
25967        ArtImageVerb::VERB_BURNING,
25968        ArtImageVerb::VERB_WEEPING,
25969        ArtImageVerb::VERB_LOOKINGDEJECTED,
25970        ArtImageVerb::VERB_CRINGING,
25971        ArtImageVerb::VERB_SCREAMING,
25972        ArtImageVerb::VERB_SUBMISSIVEGESTURE,
25973        ArtImageVerb::VERB_FETALPOSITION,
25974        ArtImageVerb::VERB_SMEAREDINTOSPIRAL,
25975        ArtImageVerb::VERB_FALLING,
25976        ArtImageVerb::VERB_DEAD,
25977        ArtImageVerb::VERB_LAUGHING,
25978        ArtImageVerb::VERB_LOOKINGOFFENDED,
25979        ArtImageVerb::VERB_BEINGSHOT,
25980        ArtImageVerb::VERB_PLAINTIVEGESTURE,
25981        ArtImageVerb::VERB_MELTING,
25982        ArtImageVerb::VERB_SHOOTING,
25983        ArtImageVerb::VERB_TORTURING,
25984        ArtImageVerb::VERB_COMMITTINGDEPRAVEDACT,
25985        ArtImageVerb::VERB_PRAYING,
25986        ArtImageVerb::VERB_CONTEMPLATING,
25987        ArtImageVerb::VERB_COOKING,
25988        ArtImageVerb::VERB_ENGRAVING,
25989        ArtImageVerb::VERB_PROSTRATING,
25990        ArtImageVerb::VERB_SUFFERING,
25991        ArtImageVerb::VERB_BEINGIMPALED,
25992        ArtImageVerb::VERB_BEINGCONTORTED,
25993        ArtImageVerb::VERB_BEINGFLAYED,
25994        ArtImageVerb::VERB_HANGINGFROM,
25995        ArtImageVerb::VERB_BEINGMUTILATED,
25996        ArtImageVerb::VERB_TRIUMPHANTPOSE,
25997    ];
25998}
25999
26000impl ::protobuf::EnumFull for ArtImageVerb {
26001    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
26002        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
26003        descriptor.get(|| file_descriptor().enum_by_package_relative_name("ArtImageVerb").unwrap()).clone()
26004    }
26005
26006    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
26007        let index = *self as usize;
26008        Self::enum_descriptor().value_by_index(index)
26009    }
26010}
26011
26012impl ::std::default::Default for ArtImageVerb {
26013    fn default() -> Self {
26014        ArtImageVerb::VERB_WITHERING
26015    }
26016}
26017
26018impl ArtImageVerb {
26019    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
26020        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<ArtImageVerb>("ArtImageVerb")
26021    }
26022}
26023
26024#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
26025// @@protoc_insertion_point(enum:RemoteFortressReader.FlowType)
26026pub enum FlowType {
26027    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Miasma)
26028    Miasma = 0,
26029    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Steam)
26030    Steam = 1,
26031    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Mist)
26032    Mist = 2,
26033    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.MaterialDust)
26034    MaterialDust = 3,
26035    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.MagmaMist)
26036    MagmaMist = 4,
26037    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Smoke)
26038    Smoke = 5,
26039    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Dragonfire)
26040    Dragonfire = 6,
26041    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Fire)
26042    Fire = 7,
26043    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Web)
26044    Web = 8,
26045    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.MaterialGas)
26046    MaterialGas = 9,
26047    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.MaterialVapor)
26048    MaterialVapor = 10,
26049    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.OceanWave)
26050    OceanWave = 11,
26051    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.SeaFoam)
26052    SeaFoam = 12,
26053    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.ItemCloud)
26054    ItemCloud = 13,
26055    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.CampFire)
26056    CampFire = -1,
26057}
26058
26059impl ::protobuf::Enum for FlowType {
26060    const NAME: &'static str = "FlowType";
26061
26062    fn value(&self) -> i32 {
26063        *self as i32
26064    }
26065
26066    fn from_i32(value: i32) -> ::std::option::Option<FlowType> {
26067        match value {
26068            0 => ::std::option::Option::Some(FlowType::Miasma),
26069            1 => ::std::option::Option::Some(FlowType::Steam),
26070            2 => ::std::option::Option::Some(FlowType::Mist),
26071            3 => ::std::option::Option::Some(FlowType::MaterialDust),
26072            4 => ::std::option::Option::Some(FlowType::MagmaMist),
26073            5 => ::std::option::Option::Some(FlowType::Smoke),
26074            6 => ::std::option::Option::Some(FlowType::Dragonfire),
26075            7 => ::std::option::Option::Some(FlowType::Fire),
26076            8 => ::std::option::Option::Some(FlowType::Web),
26077            9 => ::std::option::Option::Some(FlowType::MaterialGas),
26078            10 => ::std::option::Option::Some(FlowType::MaterialVapor),
26079            11 => ::std::option::Option::Some(FlowType::OceanWave),
26080            12 => ::std::option::Option::Some(FlowType::SeaFoam),
26081            13 => ::std::option::Option::Some(FlowType::ItemCloud),
26082            -1 => ::std::option::Option::Some(FlowType::CampFire),
26083            _ => ::std::option::Option::None
26084        }
26085    }
26086
26087    fn from_str(str: &str) -> ::std::option::Option<FlowType> {
26088        match str {
26089            "Miasma" => ::std::option::Option::Some(FlowType::Miasma),
26090            "Steam" => ::std::option::Option::Some(FlowType::Steam),
26091            "Mist" => ::std::option::Option::Some(FlowType::Mist),
26092            "MaterialDust" => ::std::option::Option::Some(FlowType::MaterialDust),
26093            "MagmaMist" => ::std::option::Option::Some(FlowType::MagmaMist),
26094            "Smoke" => ::std::option::Option::Some(FlowType::Smoke),
26095            "Dragonfire" => ::std::option::Option::Some(FlowType::Dragonfire),
26096            "Fire" => ::std::option::Option::Some(FlowType::Fire),
26097            "Web" => ::std::option::Option::Some(FlowType::Web),
26098            "MaterialGas" => ::std::option::Option::Some(FlowType::MaterialGas),
26099            "MaterialVapor" => ::std::option::Option::Some(FlowType::MaterialVapor),
26100            "OceanWave" => ::std::option::Option::Some(FlowType::OceanWave),
26101            "SeaFoam" => ::std::option::Option::Some(FlowType::SeaFoam),
26102            "ItemCloud" => ::std::option::Option::Some(FlowType::ItemCloud),
26103            "CampFire" => ::std::option::Option::Some(FlowType::CampFire),
26104            _ => ::std::option::Option::None
26105        }
26106    }
26107
26108    const VALUES: &'static [FlowType] = &[
26109        FlowType::Miasma,
26110        FlowType::Steam,
26111        FlowType::Mist,
26112        FlowType::MaterialDust,
26113        FlowType::MagmaMist,
26114        FlowType::Smoke,
26115        FlowType::Dragonfire,
26116        FlowType::Fire,
26117        FlowType::Web,
26118        FlowType::MaterialGas,
26119        FlowType::MaterialVapor,
26120        FlowType::OceanWave,
26121        FlowType::SeaFoam,
26122        FlowType::ItemCloud,
26123        FlowType::CampFire,
26124    ];
26125}
26126
26127impl ::protobuf::EnumFull for FlowType {
26128    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
26129        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
26130        descriptor.get(|| file_descriptor().enum_by_package_relative_name("FlowType").unwrap()).clone()
26131    }
26132
26133    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
26134        let index = match self {
26135            FlowType::Miasma => 0,
26136            FlowType::Steam => 1,
26137            FlowType::Mist => 2,
26138            FlowType::MaterialDust => 3,
26139            FlowType::MagmaMist => 4,
26140            FlowType::Smoke => 5,
26141            FlowType::Dragonfire => 6,
26142            FlowType::Fire => 7,
26143            FlowType::Web => 8,
26144            FlowType::MaterialGas => 9,
26145            FlowType::MaterialVapor => 10,
26146            FlowType::OceanWave => 11,
26147            FlowType::SeaFoam => 12,
26148            FlowType::ItemCloud => 13,
26149            FlowType::CampFire => 14,
26150        };
26151        Self::enum_descriptor().value_by_index(index)
26152    }
26153}
26154
26155impl ::std::default::Default for FlowType {
26156    fn default() -> Self {
26157        FlowType::Miasma
26158    }
26159}
26160
26161impl FlowType {
26162    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
26163        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<FlowType>("FlowType")
26164    }
26165}
26166
26167static file_descriptor_proto_data: &'static [u8] = b"\
26168    \n\x1aRemoteFortressReader.proto\x12\x14RemoteFortressReader\x1a\x17Item\
26169    defInstrument.proto\"1\n\x05Coord\x12\x0c\n\x01x\x18\x01\x20\x01(\x05R\
26170    \x01x\x12\x0c\n\x01y\x18\x02\x20\x01(\x05R\x01y\x12\x0c\n\x01z\x18\x03\
26171    \x20\x01(\x05R\x01z\"\xe7\x02\n\x08Tiletype\x12\x0e\n\x02id\x18\x01\x20\
26172    \x02(\x05R\x02id\x12\x12\n\x04name\x18\x02\x20\x01(\tR\x04name\x12\x18\n\
26173    \x07caption\x18\x03\x20\x01(\tR\x07caption\x129\n\x05shape\x18\x04\x20\
26174    \x01(\x0e2#.RemoteFortressReader.TiletypeShapeR\x05shape\x12?\n\x07speci\
26175    al\x18\x05\x20\x01(\x0e2%.RemoteFortressReader.TiletypeSpecialR\x07speci\
26176    al\x12B\n\x08material\x18\x06\x20\x01(\x0e2&.RemoteFortressReader.Tilety\
26177    peMaterialR\x08material\x12?\n\x07variant\x18\x07\x20\x01(\x0e2%.RemoteF\
26178    ortressReader.TiletypeVariantR\x07variant\x12\x1c\n\tdirection\x18\x08\
26179    \x20\x01(\tR\tdirection\"S\n\x0cTiletypeList\x12C\n\rtiletype_list\x18\
26180    \x01\x20\x03(\x0b2\x1e.RemoteFortressReader.TiletypeR\x0ctiletypeList\"\
26181    \x83\x01\n\x0fBuildingExtents\x12\x13\n\x05pos_x\x18\x01\x20\x02(\x05R\
26182    \x04posX\x12\x13\n\x05pos_y\x18\x02\x20\x02(\x05R\x04posY\x12\x14\n\x05w\
26183    idth\x18\x03\x20\x02(\x05R\x05width\x12\x16\n\x06height\x18\x04\x20\x02(\
26184    \x05R\x06height\x12\x18\n\x07extents\x18\x05\x20\x03(\x05R\x07extents\"R\
26185    \n\x0cBuildingItem\x12.\n\x04item\x18\x01\x20\x01(\x0b2\x1a.RemoteFortre\
26186    ssReader.ItemR\x04item\x12\x12\n\x04mode\x18\x02\x20\x01(\x05R\x04mode\"\
26187    \xe8\x04\n\x10BuildingInstance\x12\x14\n\x05index\x18\x01\x20\x02(\x05R\
26188    \x05index\x12\x1a\n\tpos_x_min\x18\x02\x20\x01(\x05R\x07posXMin\x12\x1a\
26189    \n\tpos_y_min\x18\x03\x20\x01(\x05R\x07posYMin\x12\x1a\n\tpos_z_min\x18\
26190    \x04\x20\x01(\x05R\x07posZMin\x12\x1a\n\tpos_x_max\x18\x05\x20\x01(\x05R\
26191    \x07posXMax\x12\x1a\n\tpos_y_max\x18\x06\x20\x01(\x05R\x07posYMax\x12\
26192    \x1a\n\tpos_z_max\x18\x07\x20\x01(\x05R\x07posZMax\x12G\n\rbuilding_type\
26193    \x18\x08\x20\x01(\x0b2\".RemoteFortressReader.BuildingTypeR\x0cbuildingT\
26194    ype\x129\n\x08material\x18\t\x20\x01(\x0b2\x1d.RemoteFortressReader.MatP\
26195    airR\x08material\x12%\n\x0ebuilding_flags\x18\n\x20\x01(\rR\rbuildingFla\
26196    gs\x12\x17\n\x07is_room\x18\x0b\x20\x01(\x08R\x06isRoom\x129\n\x04room\
26197    \x18\x0c\x20\x01(\x0b2%.RemoteFortressReader.BuildingExtentsR\x04room\
26198    \x12E\n\tdirection\x18\r\x20\x01(\x0e2'.RemoteFortressReader.BuildingDir\
26199    ectionR\tdirection\x128\n\x05items\x18\x0e\x20\x03(\x0b2\".RemoteFortres\
26200    sReader.BuildingItemR\x05items\x12\x16\n\x06active\x18\x0f\x20\x01(\x05R\
26201    \x06active\"s\n\tRiverEdge\x12\x17\n\x07min_pos\x18\x01\x20\x01(\x05R\
26202    \x06minPos\x12\x17\n\x07max_pos\x18\x02\x20\x01(\x05R\x06maxPos\x12\x16\
26203    \n\x06active\x18\x03\x20\x01(\x05R\x06active\x12\x1c\n\televation\x18\
26204    \x04\x20\x01(\x05R\televation\"\xe3\x01\n\tRiverTile\x125\n\x05north\x18\
26205    \x01\x20\x01(\x0b2\x1f.RemoteFortressReader.RiverEdgeR\x05north\x125\n\
26206    \x05south\x18\x02\x20\x01(\x0b2\x1f.RemoteFortressReader.RiverEdgeR\x05s\
26207    outh\x123\n\x04east\x18\x03\x20\x01(\x0b2\x1f.RemoteFortressReader.River\
26208    EdgeR\x04east\x123\n\x04west\x18\x04\x20\x01(\x0b2\x1f.RemoteFortressRea\
26209    der.RiverEdgeR\x04west\"\xc8\x01\n\x07Spatter\x129\n\x08material\x18\x01\
26210    \x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x08material\x12\x16\n\
26211    \x06amount\x18\x02\x20\x01(\x05R\x06amount\x127\n\x05state\x18\x03\x20\
26212    \x01(\x0e2!.RemoteFortressReader.MatterStateR\x05state\x121\n\x04item\
26213    \x18\x04\x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x04item\"H\n\
26214    \x0bSpatterPile\x129\n\x08spatters\x18\x01\x20\x03(\x0b2\x1d.RemoteFortr\
26215    essReader.SpatterR\x08spatters\"\xa2\x05\n\x04Item\x12\x0e\n\x02id\x18\
26216    \x01\x20\x01(\x05R\x02id\x12-\n\x03pos\x18\x02\x20\x01(\x0b2\x1b.RemoteF\
26217    ortressReader.CoordR\x03pos\x12\x16\n\x06flags1\x18\x03\x20\x01(\rR\x06f\
26218    lags1\x12\x16\n\x06flags2\x18\x04\x20\x01(\rR\x06flags2\x121\n\x04type\
26219    \x18\x05\x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x04type\x129\n\
26220    \x08material\x18\x06\x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x08\
26221    material\x127\n\x03dye\x18\x07\x20\x01(\x0b2%.RemoteFortressReader.Color\
26222    DefinitionR\x03dye\x12\x1d\n\nstack_size\x18\x08\x20\x01(\x05R\tstackSiz\
26223    e\x12\x19\n\x08subpos_x\x18\t\x20\x01(\x02R\x07subposX\x12\x19\n\x08subp\
26224    os_y\x18\n\x20\x01(\x02R\x07subposY\x12\x19\n\x08subpos_z\x18\x0b\x20\
26225    \x01(\x02R\x07subposZ\x12\x1e\n\nprojectile\x18\x0c\x20\x01(\x08R\nproje\
26226    ctile\x12\x1d\n\nvelocity_x\x18\r\x20\x01(\x02R\tvelocityX\x12\x1d\n\nve\
26227    locity_y\x18\x0e\x20\x01(\x02R\tvelocityY\x12\x1d\n\nvelocity_z\x18\x0f\
26228    \x20\x01(\x02R\tvelocityZ\x12\x16\n\x06volume\x18\x10\x20\x01(\x05R\x06v\
26229    olume\x12I\n\x0cimprovements\x18\x11\x20\x03(\x0b2%.RemoteFortressReader\
26230    .ItemImprovementR\x0cimprovements\x124\n\x05image\x18\x12\x20\x01(\x0b2\
26231    \x1e.RemoteFortressReader.ArtImageR\x05image\"\xbf\x02\n\tPlantTile\x12\
26232    \x14\n\x05trunk\x18\x01\x20\x01(\x08R\x05trunk\x12'\n\x0fconnection_east\
26233    \x18\x02\x20\x01(\x08R\x0econnectionEast\x12)\n\x10connection_south\x18\
26234    \x03\x20\x01(\x08R\x0fconnectionSouth\x12'\n\x0fconnection_west\x18\x04\
26235    \x20\x01(\x08R\x0econnectionWest\x12)\n\x10connection_north\x18\x05\x20\
26236    \x01(\x08R\x0fconnectionNorth\x12\x1a\n\x08branches\x18\x06\x20\x01(\x08\
26237    R\x08branches\x12\x14\n\x05twigs\x18\x07\x20\x01(\x08R\x05twigs\x12B\n\t\
26238    tile_type\x18\x08\x20\x01(\x0e2%.RemoteFortressReader.TiletypeSpecialR\
26239    \x08tileType\"r\n\x08TreeInfo\x12/\n\x04size\x18\x01\x20\x01(\x0b2\x1b.R\
26240    emoteFortressReader.CoordR\x04size\x125\n\x05tiles\x18\x02\x20\x03(\x0b2\
26241    \x1f.RemoteFortressReader.PlantTileR\x05tiles\"\x9a\x01\n\rPlantInstance\
26242    \x12\x1d\n\nplant_type\x18\x01\x20\x01(\x05R\tplantType\x12-\n\x03pos\
26243    \x18\x02\x20\x01(\x0b2\x1b.RemoteFortressReader.CoordR\x03pos\x12;\n\ttr\
26244    ee_info\x18\x03\x20\x01(\x0b2\x1e.RemoteFortressReader.TreeInfoR\x08tree\
26245    Info\"\x8c\n\n\x08MapBlock\x12\x13\n\x05map_x\x18\x01\x20\x02(\x05R\x04m\
26246    apX\x12\x13\n\x05map_y\x18\x02\x20\x02(\x05R\x04mapY\x12\x13\n\x05map_z\
26247    \x18\x03\x20\x02(\x05R\x04mapZ\x12\x14\n\x05tiles\x18\x04\x20\x03(\x05R\
26248    \x05tiles\x12;\n\tmaterials\x18\x05\x20\x03(\x0b2\x1d.RemoteFortressRead\
26249    er.MatPairR\tmaterials\x12F\n\x0flayer_materials\x18\x06\x20\x03(\x0b2\
26250    \x1d.RemoteFortressReader.MatPairR\x0elayerMaterials\x12D\n\x0evein_mate\
26251    rials\x18\x07\x20\x03(\x0b2\x1d.RemoteFortressReader.MatPairR\rveinMater\
26252    ials\x12D\n\x0ebase_materials\x18\x08\x20\x03(\x0b2\x1d.RemoteFortressRe\
26253    ader.MatPairR\rbaseMaterials\x12\x14\n\x05magma\x18\t\x20\x03(\x05R\x05m\
26254    agma\x12\x14\n\x05water\x18\n\x20\x03(\x05R\x05water\x12\x16\n\x06hidden\
26255    \x18\x0b\x20\x03(\x08R\x06hidden\x12\x14\n\x05light\x18\x0c\x20\x03(\x08\
26256    R\x05light\x12\"\n\x0csubterranean\x18\r\x20\x03(\x08R\x0csubterranean\
26257    \x12\x18\n\x07outside\x18\x0e\x20\x03(\x08R\x07outside\x12\x18\n\x07aqui\
26258    fer\x18\x0f\x20\x03(\x08R\x07aquifer\x12%\n\x0ewater_stagnant\x18\x10\
26259    \x20\x03(\x08R\rwaterStagnant\x12\x1d\n\nwater_salt\x18\x11\x20\x03(\x08\
26260    R\twaterSalt\x12L\n\x12construction_items\x18\x12\x20\x03(\x0b2\x1d.Remo\
26261    teFortressReader.MatPairR\x11constructionItems\x12D\n\tbuildings\x18\x13\
26262    \x20\x03(\x0b2&.RemoteFortressReader.BuildingInstanceR\tbuildings\x12!\n\
26263    \x0ctree_percent\x18\x14\x20\x03(\x05R\x0btreePercent\x12\x15\n\x06tree_\
26264    x\x18\x15\x20\x03(\x05R\x05treeX\x12\x15\n\x06tree_y\x18\x16\x20\x03(\
26265    \x05R\x05treeY\x12\x15\n\x06tree_z\x18\x17\x20\x03(\x05R\x05treeZ\x12Z\n\
26266    \x14tile_dig_designation\x18\x18\x20\x03(\x0e2(.RemoteFortressReader.Til\
26267    eDigDesignationR\x12tileDigDesignation\x12C\n\x0bspatterPile\x18\x19\x20\
26268    \x03(\x0b2!.RemoteFortressReader.SpatterPileR\x0bspatterPile\x120\n\x05i\
26269    tems\x18\x1a\x20\x03(\x0b2\x1a.RemoteFortressReader.ItemR\x05items\x12=\
26270    \n\x1btile_dig_designation_marker\x18\x1b\x20\x03(\x08R\x18tileDigDesign\
26271    ationMarker\x129\n\x19tile_dig_designation_auto\x18\x1c\x20\x03(\x08R\
26272    \x16tileDigDesignationAuto\x12#\n\rgrass_percent\x18\x1d\x20\x03(\x05R\
26273    \x0cgrassPercent\x124\n\x05flows\x18\x1e\x20\x03(\x0b2\x1e.RemoteFortres\
26274    sReader.FlowInfoR\x05flows\"A\n\x07MatPair\x12\x19\n\x08mat_type\x18\x01\
26275    \x20\x02(\x05R\x07matType\x12\x1b\n\tmat_index\x18\x02\x20\x02(\x05R\x08\
26276    matIndex\"M\n\x0fColorDefinition\x12\x10\n\x03red\x18\x01\x20\x02(\x05R\
26277    \x03red\x12\x14\n\x05green\x18\x02\x20\x02(\x05R\x05green\x12\x12\n\x04b\
26278    lue\x18\x03\x20\x02(\x05R\x04blue\"\xea\x02\n\x12MaterialDefinition\x128\
26279    \n\x08mat_pair\x18\x01\x20\x02(\x0b2\x1d.RemoteFortressReader.MatPairR\
26280    \x07matPair\x12\x0e\n\x02id\x18\x02\x20\x01(\tR\x02id\x12\x12\n\x04name\
26281    \x18\x03\x20\x01(\x0cR\x04name\x12F\n\x0bstate_color\x18\x04\x20\x01(\
26282    \x0b2%.RemoteFortressReader.ColorDefinitionR\nstateColor\x12@\n\ninstrum\
26283    ent\x18\x05\x20\x01(\x0b2\x20.ItemdefInstrument.InstrumentDefR\ninstrume\
26284    nt\x12\x17\n\x07up_step\x18\x06\x20\x01(\x05R\x06upStep\x12\x1b\n\tdown_\
26285    step\x18\x07\x20\x01(\x05R\x08downStep\x126\n\x05layer\x18\x08\x20\x01(\
26286    \x0e2\x20.RemoteFortressReader.ArmorLayerR\x05layer\"\x87\x01\n\x0cBuild\
26287    ingType\x12#\n\rbuilding_type\x18\x01\x20\x02(\x05R\x0cbuildingType\x12)\
26288    \n\x10building_subtype\x18\x02\x20\x02(\x05R\x0fbuildingSubtype\x12'\n\
26289    \x0fbuilding_custom\x18\x03\x20\x02(\x05R\x0ebuildingCustom\"\x81\x01\n\
26290    \x12BuildingDefinition\x12G\n\rbuilding_type\x18\x01\x20\x02(\x0b2\".Rem\
26291    oteFortressReader.BuildingTypeR\x0cbuildingType\x12\x0e\n\x02id\x18\x02\
26292    \x20\x01(\tR\x02id\x12\x12\n\x04name\x18\x03\x20\x01(\tR\x04name\"]\n\
26293    \x0cBuildingList\x12M\n\rbuilding_list\x18\x01\x20\x03(\x0b2(.RemoteFort\
26294    ressReader.BuildingDefinitionR\x0cbuildingList\"]\n\x0cMaterialList\x12M\
26295    \n\rmaterial_list\x18\x01\x20\x03(\x0b2(.RemoteFortressReader.MaterialDe\
26296    finitionR\x0cmaterialList\"U\n\x04Hair\x12\x16\n\x06length\x18\x01\x20\
26297    \x01(\x05R\x06length\x125\n\x05style\x18\x02\x20\x01(\x0e2\x1f.RemoteFor\
26298    tressReader.HairStyleR\x05style\"\xbe\x01\n\x0cBodySizeInfo\x12\x19\n\
26299    \x08size_cur\x18\x01\x20\x01(\x05R\x07sizeCur\x12\x1b\n\tsize_base\x18\
26300    \x02\x20\x01(\x05R\x08sizeBase\x12\x19\n\x08area_cur\x18\x03\x20\x01(\
26301    \x05R\x07areaCur\x12\x1b\n\tarea_base\x18\x04\x20\x01(\x05R\x08areaBase\
26302    \x12\x1d\n\nlength_cur\x18\x05\x20\x01(\x05R\tlengthCur\x12\x1f\n\x0blen\
26303    gth_base\x18\x06\x20\x01(\x05R\nlengthBase\"\xa0\x03\n\x0eUnitAppearance\
26304    \x12%\n\x0ebody_modifiers\x18\x01\x20\x03(\x05R\rbodyModifiers\x12!\n\
26305    \x0cbp_modifiers\x18\x02\x20\x03(\x05R\x0bbpModifiers\x12#\n\rsize_modif\
26306    ier\x18\x03\x20\x01(\x05R\x0csizeModifier\x12\x16\n\x06colors\x18\x04\
26307    \x20\x03(\x05R\x06colors\x12.\n\x04hair\x18\x05\x20\x01(\x0b2\x1a.Remote\
26308    FortressReader.HairR\x04hair\x120\n\x05beard\x18\x06\x20\x01(\x0b2\x1a.R\
26309    emoteFortressReader.HairR\x05beard\x128\n\tmoustache\x18\x07\x20\x01(\
26310    \x0b2\x1a.RemoteFortressReader.HairR\tmoustache\x128\n\tsideburns\x18\
26311    \x08\x20\x01(\x0b2\x1a.RemoteFortressReader.HairR\tsideburns\x121\n\x14p\
26312    hysical_description\x18\t\x20\x01(\tR\x13physicalDescription\"\x9a\x01\n\
26313    \rInventoryItem\x127\n\x04mode\x18\x01\x20\x01(\x0e2#.RemoteFortressRead\
26314    er.InventoryModeR\x04mode\x12.\n\x04item\x18\x02\x20\x01(\x0b2\x1a.Remot\
26315    eFortressReader.ItemR\x04item\x12\x20\n\x0cbody_part_id\x18\x03\x20\x01(\
26316    \x05R\nbodyPartId\"t\n\tWoundPart\x12(\n\x10global_layer_idx\x18\x01\x20\
26317    \x01(\x05R\x0eglobalLayerIdx\x12\x20\n\x0cbody_part_id\x18\x02\x20\x01(\
26318    \x05R\nbodyPartId\x12\x1b\n\tlayer_idx\x18\x03\x20\x01(\x05R\x08layerIdx\
26319    \"e\n\tUnitWound\x125\n\x05parts\x18\x01\x20\x03(\x0b2\x1f.RemoteFortres\
26320    sReader.WoundPartR\x05parts\x12!\n\x0csevered_part\x18\x02\x20\x01(\x08R\
26321    \x0bseveredPart\"\xbb\x07\n\x0eUnitDefinition\x12\x0e\n\x02id\x18\x01\
26322    \x20\x02(\x05R\x02id\x12\x18\n\x07isValid\x18\x02\x20\x01(\x08R\x07isVal\
26323    id\x12\x13\n\x05pos_x\x18\x03\x20\x01(\x05R\x04posX\x12\x13\n\x05pos_y\
26324    \x18\x04\x20\x01(\x05R\x04posY\x12\x13\n\x05pos_z\x18\x05\x20\x01(\x05R\
26325    \x04posZ\x121\n\x04race\x18\x06\x20\x01(\x0b2\x1d.RemoteFortressReader.M\
26326    atPairR\x04race\x12P\n\x10profession_color\x18\x07\x20\x01(\x0b2%.Remote\
26327    FortressReader.ColorDefinitionR\x0fprofessionColor\x12\x16\n\x06flags1\
26328    \x18\x08\x20\x01(\rR\x06flags1\x12\x16\n\x06flags2\x18\t\x20\x01(\rR\x06\
26329    flags2\x12\x16\n\x06flags3\x18\n\x20\x01(\rR\x06flags3\x12\x1d\n\nis_sol\
26330    dier\x18\x0b\x20\x01(\x08R\tisSoldier\x12?\n\tsize_info\x18\x0c\x20\x01(\
26331    \x0b2\".RemoteFortressReader.BodySizeInfoR\x08sizeInfo\x12\x12\n\x04name\
26332    \x18\r\x20\x01(\tR\x04name\x12\x1b\n\tblood_max\x18\x0e\x20\x01(\x05R\
26333    \x08bloodMax\x12\x1f\n\x0bblood_count\x18\x0f\x20\x01(\x05R\nbloodCount\
26334    \x12D\n\nappearance\x18\x10\x20\x01(\x0b2$.RemoteFortressReader.UnitAppe\
26335    aranceR\nappearance\x12#\n\rprofession_id\x18\x11\x20\x01(\x05R\x0cprofe\
26336    ssionId\x12'\n\x0fnoble_positions\x18\x12\x20\x03(\tR\x0enoblePositions\
26337    \x12\x19\n\x08rider_id\x18\x13\x20\x01(\x05R\x07riderId\x12A\n\tinventor\
26338    y\x18\x14\x20\x03(\x0b2#.RemoteFortressReader.InventoryItemR\tinventory\
26339    \x12\x19\n\x08subpos_x\x18\x15\x20\x01(\x02R\x07subposX\x12\x19\n\x08sub\
26340    pos_y\x18\x16\x20\x01(\x02R\x07subposY\x12\x19\n\x08subpos_z\x18\x17\x20\
26341    \x01(\x02R\x07subposZ\x123\n\x06facing\x18\x18\x20\x01(\x0b2\x1b.RemoteF\
26342    ortressReader.CoordR\x06facing\x12\x10\n\x03age\x18\x19\x20\x01(\x05R\
26343    \x03age\x127\n\x06wounds\x18\x1a\x20\x03(\x0b2\x1f.RemoteFortressReader.\
26344    UnitWoundR\x06wounds\"U\n\x08UnitList\x12I\n\rcreature_list\x18\x01\x20\
26345    \x03(\x0b2$.RemoteFortressReader.UnitDefinitionR\x0ccreatureList\"\xd4\
26346    \x01\n\x0cBlockRequest\x12#\n\rblocks_needed\x18\x01\x20\x01(\x05R\x0cbl\
26347    ocksNeeded\x12\x13\n\x05min_x\x18\x02\x20\x01(\x05R\x04minX\x12\x13\n\
26348    \x05max_x\x18\x03\x20\x01(\x05R\x04maxX\x12\x13\n\x05min_y\x18\x04\x20\
26349    \x01(\x05R\x04minY\x12\x13\n\x05max_y\x18\x05\x20\x01(\x05R\x04maxY\x12\
26350    \x13\n\x05min_z\x18\x06\x20\x01(\x05R\x04minZ\x12\x13\n\x05max_z\x18\x07\
26351    \x20\x01(\x05R\x04maxZ\x12!\n\x0cforce_reload\x18\x08\x20\x01(\x08R\x0bf\
26352    orceReload\"\xf2\x01\n\tBlockList\x12=\n\nmap_blocks\x18\x01\x20\x03(\
26353    \x0b2\x1e.RemoteFortressReader.MapBlockR\tmapBlocks\x12\x13\n\x05map_x\
26354    \x18\x02\x20\x01(\x05R\x04mapX\x12\x13\n\x05map_y\x18\x03\x20\x01(\x05R\
26355    \x04mapY\x12?\n\nengravings\x18\x04\x20\x03(\x0b2\x1f.RemoteFortressRead\
26356    er.EngravingR\nengravings\x12;\n\x0bocean_waves\x18\x05\x20\x03(\x0b2\
26357    \x1a.RemoteFortressReader.WaveR\noceanWaves\"_\n\x08PlantDef\x12\x13\n\
26358    \x05pos_x\x18\x01\x20\x02(\x05R\x04posX\x12\x13\n\x05pos_y\x18\x02\x20\
26359    \x02(\x05R\x04posY\x12\x13\n\x05pos_z\x18\x03\x20\x02(\x05R\x04posZ\x12\
26360    \x14\n\x05index\x18\x04\x20\x02(\x05R\x05index\"J\n\tPlantList\x12=\n\np\
26361    lant_list\x18\x01\x20\x03(\x0b2\x1e.RemoteFortressReader.PlantDefR\tplan\
26362    tList\"\xe2\x02\n\x08ViewInfo\x12\x1c\n\nview_pos_x\x18\x01\x20\x01(\x05\
26363    R\x08viewPosX\x12\x1c\n\nview_pos_y\x18\x02\x20\x01(\x05R\x08viewPosY\
26364    \x12\x1c\n\nview_pos_z\x18\x03\x20\x01(\x05R\x08viewPosZ\x12\x1e\n\x0bvi\
26365    ew_size_x\x18\x04\x20\x01(\x05R\tviewSizeX\x12\x1e\n\x0bview_size_y\x18\
26366    \x05\x20\x01(\x05R\tviewSizeY\x12\x20\n\x0ccursor_pos_x\x18\x06\x20\x01(\
26367    \x05R\ncursorPosX\x12\x20\n\x0ccursor_pos_y\x18\x07\x20\x01(\x05R\ncurso\
26368    rPosY\x12\x20\n\x0ccursor_pos_z\x18\x08\x20\x01(\x05R\ncursorPosZ\x12*\n\
26369    \x0efollow_unit_id\x18\t\x20\x01(\x05:\x02-1R\x0cfollowUnitIdB\0\x12*\n\
26370    \x0efollow_item_id\x18\n\x20\x01(\x05:\x02-1R\x0cfollowItemIdB\0\"\xb9\
26371    \x02\n\x07MapInfo\x12\x20\n\x0cblock_size_x\x18\x01\x20\x01(\x05R\nblock\
26372    SizeX\x12\x20\n\x0cblock_size_y\x18\x02\x20\x01(\x05R\nblockSizeY\x12\
26373    \x20\n\x0cblock_size_z\x18\x03\x20\x01(\x05R\nblockSizeZ\x12\x1e\n\x0bbl\
26374    ock_pos_x\x18\x04\x20\x01(\x05R\tblockPosX\x12\x1e\n\x0bblock_pos_y\x18\
26375    \x05\x20\x01(\x05R\tblockPosY\x12\x1e\n\x0bblock_pos_z\x18\x06\x20\x01(\
26376    \x05R\tblockPosZ\x12\x1d\n\nworld_name\x18\x07\x20\x01(\tR\tworldName\
26377    \x12,\n\x12world_name_english\x18\x08\x20\x01(\tR\x10worldNameEnglish\
26378    \x12\x1b\n\tsave_name\x18\t\x20\x01(\tR\x08saveName\"\x81\x02\n\x05Cloud\
26379    \x125\n\x05front\x18\x01\x20\x01(\x0e2\x1f.RemoteFortressReader.FrontTyp\
26380    eR\x05front\x12;\n\x07cumulus\x18\x02\x20\x01(\x0e2!.RemoteFortressReade\
26381    r.CumulusTypeR\x07cumulus\x12\x16\n\x06cirrus\x18\x03\x20\x01(\x08R\x06c\
26382    irrus\x12;\n\x07stratus\x18\x04\x20\x01(\x0e2!.RemoteFortressReader.Stra\
26383    tusTypeR\x07stratus\x12/\n\x03fog\x18\x05\x20\x01(\x0e2\x1d.RemoteFortre\
26384    ssReader.FogTypeR\x03fog\"\xf1\x06\n\x08WorldMap\x12\x1f\n\x0bworld_widt\
26385    h\x18\x01\x20\x02(\x05R\nworldWidth\x12!\n\x0cworld_height\x18\x02\x20\
26386    \x02(\x05R\x0bworldHeight\x12\x12\n\x04name\x18\x03\x20\x01(\x0cR\x04nam\
26387    e\x12!\n\x0cname_english\x18\x04\x20\x01(\tR\x0bnameEnglish\x12\x1c\n\te\
26388    levation\x18\x05\x20\x03(\x05R\televation\x12\x1a\n\x08rainfall\x18\x06\
26389    \x20\x03(\x05R\x08rainfall\x12\x1e\n\nvegetation\x18\x07\x20\x03(\x05R\n\
26390    vegetation\x12\x20\n\x0btemperature\x18\x08\x20\x03(\x05R\x0btemperature\
26391    \x12\x1a\n\x08evilness\x18\t\x20\x03(\x05R\x08evilness\x12\x1a\n\x08drai\
26392    nage\x18\n\x20\x03(\x05R\x08drainage\x12\x1c\n\tvolcanism\x18\x0b\x20\
26393    \x03(\x05R\tvolcanism\x12\x1a\n\x08savagery\x18\x0c\x20\x03(\x05R\x08sav\
26394    agery\x123\n\x06clouds\x18\r\x20\x03(\x0b2\x1b.RemoteFortressReader.Clou\
26395    dR\x06clouds\x12\x1a\n\x08salinity\x18\x0e\x20\x03(\x05R\x08salinity\x12\
26396    \x13\n\x05map_x\x18\x0f\x20\x01(\x05R\x04mapX\x12\x13\n\x05map_y\x18\x10\
26397    \x20\x01(\x05R\x04mapY\x12\x19\n\x08center_x\x18\x11\x20\x01(\x05R\x07ce\
26398    nterX\x12\x19\n\x08center_y\x18\x12\x20\x01(\x05R\x07centerY\x12\x19\n\
26399    \x08center_z\x18\x13\x20\x01(\x05R\x07centerZ\x12\x19\n\x08cur_year\x18\
26400    \x14\x20\x01(\x05R\x07curYear\x12\"\n\rcur_year_tick\x18\x15\x20\x01(\
26401    \x05R\x0bcurYearTick\x12A\n\x0bworld_poles\x18\x16\x20\x01(\x0e2\x20.Rem\
26402    oteFortressReader.WorldPolesR\nworldPoles\x12@\n\x0briver_tiles\x18\x17\
26403    \x20\x03(\x0b2\x1f.RemoteFortressReader.RiverTileR\nriverTiles\x12'\n\
26404    \x0fwater_elevation\x18\x18\x20\x03(\x05R\x0ewaterElevation\x12C\n\x0cre\
26405    gion_tiles\x18\x19\x20\x03(\x0b2\x20.RemoteFortressReader.RegionTileR\
26406    \x0bregionTiles\"\xa7\x01\n\x1bSiteRealizationBuildingWall\x12\x17\n\x07\
26407    start_x\x18\x01\x20\x01(\x05R\x06startX\x12\x17\n\x07start_y\x18\x02\x20\
26408    \x01(\x05R\x06startY\x12\x17\n\x07start_z\x18\x03\x20\x01(\x05R\x06start\
26409    Z\x12\x13\n\x05end_x\x18\x04\x20\x01(\x05R\x04endX\x12\x13\n\x05end_y\
26410    \x18\x05\x20\x01(\x05R\x04endY\x12\x13\n\x05end_z\x18\x06\x20\x01(\x05R\
26411    \x04endZ\"c\n\x1cSiteRealizationBuildingTower\x12\x15\n\x06roof_z\x18\
26412    \x01\x20\x01(\x05R\x05roofZ\x12\x14\n\x05round\x18\x02\x20\x01(\x08R\x05\
26413    round\x12\x16\n\x06goblin\x18\x03\x20\x01(\x08R\x06goblin\"\x8d\x01\n\
26414    \x0bTrenchSpoke\x12\x1f\n\x0bmound_start\x18\x01\x20\x01(\x05R\nmoundSta\
26415    rt\x12!\n\x0ctrench_start\x18\x02\x20\x01(\x05R\x0btrenchStart\x12\x1d\n\
26416    \ntrench_end\x18\x03\x20\x01(\x05R\ttrenchEnd\x12\x1b\n\tmound_end\x18\
26417    \x04\x20\x01(\x05R\x08moundEnd\"\\\n\x1fSiteRealizationBuildingTrenches\
26418    \x129\n\x06spokes\x18\x01\x20\x03(\x0b2!.RemoteFortressReader.TrenchSpok\
26419    eR\x06spokes\"\xc7\x03\n\x17SiteRealizationBuilding\x12\x0e\n\x02id\x18\
26420    \x01\x20\x01(\x05R\x02id\x12\x13\n\x05min_x\x18\x03\x20\x01(\x05R\x04min\
26421    X\x12\x13\n\x05min_y\x18\x04\x20\x01(\x05R\x04minY\x12\x13\n\x05max_x\
26422    \x18\x05\x20\x01(\x05R\x04maxX\x12\x13\n\x05max_y\x18\x06\x20\x01(\x05R\
26423    \x04maxY\x129\n\x08material\x18\x07\x20\x01(\x0b2\x1d.RemoteFortressRead\
26424    er.MatPairR\x08material\x12N\n\twall_info\x18\x08\x20\x01(\x0b21.RemoteF\
26425    ortressReader.SiteRealizationBuildingWallR\x08wallInfo\x12Q\n\ntower_inf\
26426    o\x18\t\x20\x01(\x0b22.RemoteFortressReader.SiteRealizationBuildingTower\
26427    R\ttowerInfo\x12V\n\x0btrench_info\x18\n\x20\x01(\x0b25.RemoteFortressRe\
26428    ader.SiteRealizationBuildingTrenchesR\ntrenchInfo\x12\x12\n\x04type\x18\
26429    \x0b\x20\x01(\x05R\x04type\"\x82\x06\n\nRegionTile\x12\x1c\n\televation\
26430    \x18\x01\x20\x01(\x05R\televation\x12\x1a\n\x08rainfall\x18\x02\x20\x01(\
26431    \x05R\x08rainfall\x12\x1e\n\nvegetation\x18\x03\x20\x01(\x05R\nvegetatio\
26432    n\x12\x20\n\x0btemperature\x18\x04\x20\x01(\x05R\x0btemperature\x12\x1a\
26433    \n\x08evilness\x18\x05\x20\x01(\x05R\x08evilness\x12\x1a\n\x08drainage\
26434    \x18\x06\x20\x01(\x05R\x08drainage\x12\x1c\n\tvolcanism\x18\x07\x20\x01(\
26435    \x05R\tvolcanism\x12\x1a\n\x08savagery\x18\x08\x20\x01(\x05R\x08savagery\
26436    \x12\x1a\n\x08salinity\x18\t\x20\x01(\x05R\x08salinity\x12@\n\x0briver_t\
26437    iles\x18\n\x20\x01(\x0b2\x1f.RemoteFortressReader.RiverTileR\nriverTiles\
26438    \x12'\n\x0fwater_elevation\x18\x0b\x20\x01(\x05R\x0ewaterElevation\x12H\
26439    \n\x10surface_material\x18\x0c\x20\x01(\x0b2\x1d.RemoteFortressReader.Ma\
26440    tPairR\x0fsurfaceMaterial\x12F\n\x0fplant_materials\x18\r\x20\x03(\x0b2\
26441    \x1d.RemoteFortressReader.MatPairR\x0eplantMaterials\x12K\n\tbuildings\
26442    \x18\x0e\x20\x03(\x0b2-.RemoteFortressReader.SiteRealizationBuildingR\tb\
26443    uildings\x12F\n\x0fstone_materials\x18\x0f\x20\x03(\x0b2\x1d.RemoteFortr\
26444    essReader.MatPairR\x0estoneMaterials\x12D\n\x0etree_materials\x18\x10\
26445    \x20\x03(\x0b2\x1d.RemoteFortressReader.MatPairR\rtreeMaterials\x12\x12\
26446    \n\x04snow\x18\x11\x20\x01(\x05R\x04snow\"\xa4\x01\n\tRegionMap\x12\x13\
26447    \n\x05map_x\x18\x01\x20\x01(\x05R\x04mapX\x12\x13\n\x05map_y\x18\x02\x20\
26448    \x01(\x05R\x04mapY\x12\x12\n\x04name\x18\x03\x20\x01(\tR\x04name\x12!\n\
26449    \x0cname_english\x18\x04\x20\x01(\tR\x0bnameEnglish\x126\n\x05tiles\x18\
26450    \x05\x20\x03(\x0b2\x20.RemoteFortressReader.RegionTileR\x05tiles\"\x8d\
26451    \x01\n\nRegionMaps\x12=\n\nworld_maps\x18\x01\x20\x03(\x0b2\x1e.RemoteFo\
26452    rtressReader.WorldMapR\tworldMaps\x12@\n\x0bregion_maps\x18\x02\x20\x03(\
26453    \x0b2\x1f.RemoteFortressReader.RegionMapR\nregionMaps\"\x9f\x01\n\x11Pat\
26454    ternDescriptor\x12\x0e\n\x02id\x18\x01\x20\x01(\tR\x02id\x12=\n\x06color\
26455    s\x18\x02\x20\x03(\x0b2%.RemoteFortressReader.ColorDefinitionR\x06colors\
26456    \x12;\n\x07pattern\x18\x03\x20\x01(\x0e2!.RemoteFortressReader.PatternTy\
26457    peR\x07pattern\"\xef\x01\n\x10ColorModifierRaw\x12C\n\x08patterns\x18\
26458    \x01\x20\x03(\x0b2'.RemoteFortressReader.PatternDescriptorR\x08patterns\
26459    \x12\x20\n\x0cbody_part_id\x18\x02\x20\x03(\x05R\nbodyPartId\x12&\n\x0ft\
26460    issue_layer_id\x18\x03\x20\x03(\x05R\rtissueLayerId\x12\x1d\n\nstart_dat\
26461    e\x18\x04\x20\x01(\x05R\tstartDate\x12\x19\n\x08end_date\x18\x05\x20\x01\
26462    (\x05R\x07endDate\x12\x12\n\x04part\x18\x06\x20\x01(\tR\x04part\"\x92\
26463    \x01\n\x10BodyPartLayerRaw\x12\x1d\n\nlayer_name\x18\x01\x20\x01(\tR\tla\
26464    yerName\x12\x1b\n\ttissue_id\x18\x02\x20\x01(\x05R\x08tissueId\x12\x1f\n\
26465    \x0blayer_depth\x18\x03\x20\x01(\x05R\nlayerDepth\x12!\n\x0cbp_modifiers\
26466    \x18\x04\x20\x03(\x05R\x0bbpModifiers\"\xc7\x01\n\x0bBodyPartRaw\x12\x14\
26467    \n\x05token\x18\x01\x20\x01(\tR\x05token\x12\x1a\n\x08category\x18\x02\
26468    \x20\x01(\tR\x08category\x12\x16\n\x06parent\x18\x03\x20\x01(\x05R\x06pa\
26469    rent\x12\x14\n\x05flags\x18\x04\x20\x03(\x08R\x05flags\x12>\n\x06layers\
26470    \x18\x05\x20\x03(\x0b2&.RemoteFortressReader.BodyPartLayerRawR\x06layers\
26471    \x12\x18\n\x07relsize\x18\x06\x20\x01(\x05R\x07relsize\"\\\n\x14BpAppear\
26472    anceModifier\x12\x12\n\x04type\x18\x01\x20\x01(\tR\x04type\x12\x17\n\x07\
26473    mod_min\x18\x02\x20\x01(\x05R\x06modMin\x12\x17\n\x07mod_max\x18\x03\x20\
26474    \x01(\x05R\x06modMax\"\x9e\x01\n\tTissueRaw\x12\x0e\n\x02id\x18\x01\x20\
26475    \x01(\tR\x02id\x12\x12\n\x04name\x18\x02\x20\x01(\tR\x04name\x129\n\x08m\
26476    aterial\x18\x03\x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x08mater\
26477    ial\x122\n\x15subordinate_to_tissue\x18\x04\x20\x01(\tR\x13subordinateTo\
26478    Tissue\"\xb4\x05\n\x08CasteRaw\x12\x14\n\x05index\x18\x01\x20\x01(\x05R\
26479    \x05index\x12\x19\n\x08caste_id\x18\x02\x20\x01(\tR\x07casteId\x12\x1d\n\
26480    \ncaste_name\x18\x03\x20\x03(\tR\tcasteName\x12\x1b\n\tbaby_name\x18\x04\
26481    \x20\x03(\tR\x08babyName\x12\x1d\n\nchild_name\x18\x05\x20\x03(\tR\tchil\
26482    dName\x12\x16\n\x06gender\x18\x06\x20\x01(\x05R\x06gender\x12@\n\nbody_p\
26483    arts\x18\x07\x20\x03(\x0b2!.RemoteFortressReader.BodyPartRawR\tbodyParts\
26484    \x12#\n\rtotal_relsize\x18\x08\x20\x01(\x05R\x0ctotalRelsize\x12H\n\tmod\
26485    ifiers\x18\t\x20\x03(\x0b2*.RemoteFortressReader.BpAppearanceModifierR\t\
26486    modifiers\x12!\n\x0cmodifier_idx\x18\n\x20\x03(\x05R\x0bmodifierIdx\x12\
26487    \x19\n\x08part_idx\x18\x0b\x20\x03(\x05R\x07partIdx\x12\x1b\n\tlayer_idx\
26488    \x18\x0c\x20\x03(\x05R\x08layerIdx\x12f\n\x19body_appearance_modifiers\
26489    \x18\r\x20\x03(\x0b2*.RemoteFortressReader.BpAppearanceModifierR\x17body\
26490    AppearanceModifiers\x12O\n\x0fcolor_modifiers\x18\x0e\x20\x03(\x0b2&.Rem\
26491    oteFortressReader.ColorModifierRawR\x0ecolorModifiers\x12\x20\n\x0bdescr\
26492    iption\x18\x0f\x20\x01(\tR\x0bdescription\x12\x1d\n\nadult_size\x18\x10\
26493    \x20\x01(\x05R\tadultSize\"\xed\x03\n\x0bCreatureRaw\x12\x14\n\x05index\
26494    \x18\x01\x20\x01(\x05R\x05index\x12\x1f\n\x0bcreature_id\x18\x02\x20\x01\
26495    (\tR\ncreatureId\x12\x12\n\x04name\x18\x03\x20\x03(\tR\x04name\x12*\n\
26496    \x11general_baby_name\x18\x04\x20\x03(\tR\x0fgeneralBabyName\x12,\n\x12g\
26497    eneral_child_name\x18\x05\x20\x03(\tR\x10generalChildName\x12#\n\rcreatu\
26498    re_tile\x18\x06\x20\x01(\x05R\x0ccreatureTile\x122\n\x15creature_soldier\
26499    _tile\x18\x07\x20\x01(\x05R\x13creatureSoldierTile\x12;\n\x05color\x18\
26500    \x08\x20\x01(\x0b2%.RemoteFortressReader.ColorDefinitionR\x05color\x12\
26501    \x1c\n\tadultsize\x18\t\x20\x01(\x05R\tadultsize\x124\n\x05caste\x18\n\
26502    \x20\x03(\x0b2\x1e.RemoteFortressReader.CasteRawR\x05caste\x129\n\x07tis\
26503    sues\x18\x0b\x20\x03(\x0b2\x1f.RemoteFortressReader.TissueRawR\x07tissue\
26504    s\x12\x14\n\x05flags\x18\x0c\x20\x03(\x08R\x05flags\"Y\n\x0fCreatureRawL\
26505    ist\x12F\n\rcreature_raws\x18\x01\x20\x03(\x0b2!.RemoteFortressReader.Cr\
26506    eatureRawR\x0ccreatureRaws\"\xe9\x01\n\x04Army\x12\x0e\n\x02id\x18\x01\
26507    \x20\x01(\x05R\x02id\x12\x13\n\x05pos_x\x18\x02\x20\x01(\x05R\x04posX\
26508    \x12\x13\n\x05pos_y\x18\x03\x20\x01(\x05R\x04posY\x12\x13\n\x05pos_z\x18\
26509    \x04\x20\x01(\x05R\x04posZ\x12<\n\x06leader\x18\x05\x20\x01(\x0b2$.Remot\
26510    eFortressReader.UnitDefinitionR\x06leader\x12>\n\x07members\x18\x06\x20\
26511    \x03(\x0b2$.RemoteFortressReader.UnitDefinitionR\x07members\x12\x14\n\
26512    \x05flags\x18\x07\x20\x01(\rR\x05flags\">\n\x08ArmyList\x122\n\x06armies\
26513    \x18\x01\x20\x03(\x0b2\x1a.RemoteFortressReader.ArmyR\x06armies\"\x95\
26514    \x01\n\x0bGrowthPrint\x12\x1a\n\x08priority\x18\x01\x20\x01(\x05R\x08pri\
26515    ority\x12\x14\n\x05color\x18\x02\x20\x01(\x05R\x05color\x12!\n\x0ctiming\
26516    _start\x18\x03\x20\x01(\x05R\x0btimingStart\x12\x1d\n\ntiming_end\x18\
26517    \x04\x20\x01(\x05R\ttimingEnd\x12\x12\n\x04tile\x18\x05\x20\x01(\x05R\
26518    \x04tile\"\x88\x04\n\nTreeGrowth\x12\x14\n\x05index\x18\x01\x20\x01(\x05\
26519    R\x05index\x12\x0e\n\x02id\x18\x02\x20\x01(\tR\x02id\x12\x12\n\x04name\
26520    \x18\x03\x20\x01(\tR\x04name\x12/\n\x03mat\x18\x04\x20\x01(\x0b2\x1d.Rem\
26521    oteFortressReader.MatPairR\x03mat\x129\n\x06prints\x18\x05\x20\x03(\x0b2\
26522    !.RemoteFortressReader.GrowthPrintR\x06prints\x12!\n\x0ctiming_start\x18\
26523    \x06\x20\x01(\x05R\x0btimingStart\x12\x1d\n\ntiming_end\x18\x07\x20\x01(\
26524    \x05R\ttimingEnd\x12\x14\n\x05twigs\x18\x08\x20\x01(\x08R\x05twigs\x12%\
26525    \n\x0elight_branches\x18\t\x20\x01(\x08R\rlightBranches\x12%\n\x0eheavy_\
26526    branches\x18\n\x20\x01(\x08R\rheavyBranches\x12\x14\n\x05trunk\x18\x0b\
26527    \x20\x01(\x08R\x05trunk\x12\x14\n\x05roots\x18\x0c\x20\x01(\x08R\x05root\
26528    s\x12\x10\n\x03cap\x18\r\x20\x01(\x08R\x03cap\x12\x18\n\x07sapling\x18\
26529    \x0e\x20\x01(\x08R\x07sapling\x12,\n\x12trunk_height_start\x18\x0f\x20\
26530    \x01(\x05R\x10trunkHeightStart\x12(\n\x10trunk_height_end\x18\x10\x20\
26531    \x01(\x05R\x0etrunkHeightEnd\"\x94\x01\n\x08PlantRaw\x12\x14\n\x05index\
26532    \x18\x01\x20\x01(\x05R\x05index\x12\x0e\n\x02id\x18\x02\x20\x01(\tR\x02i\
26533    d\x12\x12\n\x04name\x18\x03\x20\x01(\tR\x04name\x12:\n\x07growths\x18\
26534    \x04\x20\x03(\x0b2\x20.RemoteFortressReader.TreeGrowthR\x07growths\x12\
26535    \x12\n\x04tile\x18\x05\x20\x01(\x05R\x04tile\"M\n\x0cPlantRawList\x12=\n\
26536    \nplant_raws\x18\x01\x20\x03(\x0b2\x1e.RemoteFortressReader.PlantRawR\tp\
26537    lantRaws\"j\n\nScreenTile\x12\x1c\n\tcharacter\x18\x01\x20\x01(\rR\tchar\
26538    acter\x12\x1e\n\nforeground\x18\x02\x20\x01(\rR\nforeground\x12\x1e\n\nb\
26539    ackground\x18\x03\x20\x01(\rR\nbackground\"u\n\rScreenCapture\x12\x14\n\
26540    \x05width\x18\x01\x20\x01(\rR\x05width\x12\x16\n\x06height\x18\x02\x20\
26541    \x01(\rR\x06height\x126\n\x05tiles\x18\x03\x20\x03(\x0b2\x20.RemoteFortr\
26542    essReader.ScreenTileR\x05tiles\"\xa9\x01\n\rKeyboardEvent\x12\x12\n\x04t\
26543    ype\x18\x01\x20\x01(\rR\x04type\x12\x14\n\x05which\x18\x02\x20\x01(\rR\
26544    \x05which\x12\x14\n\x05state\x18\x03\x20\x01(\rR\x05state\x12\x1a\n\x08s\
26545    cancode\x18\x04\x20\x01(\rR\x08scancode\x12\x10\n\x03sym\x18\x05\x20\x01\
26546    (\rR\x03sym\x12\x10\n\x03mod\x18\x06\x20\x01(\rR\x03mod\x12\x18\n\x07uni\
26547    code\x18\x07\x20\x01(\rR\x07unicode\"\x93\x01\n\nDigCommand\x12J\n\x0bde\
26548    signation\x18\x01\x20\x01(\x0e2(.RemoteFortressReader.TileDigDesignation\
26549    R\x0bdesignation\x129\n\tlocations\x18\x02\x20\x03(\x0b2\x1b.RemoteFortr\
26550    essReader.CoordR\tlocations\"\"\n\nSingleBool\x12\x14\n\x05Value\x18\x01\
26551    \x20\x01(\x08R\x05Value\"\xaf\x01\n\x0bVersionInfo\x124\n\x16dwarf_fortr\
26552    ess_version\x18\x01\x20\x01(\tR\x14dwarfFortressVersion\x12%\n\x0edfhack\
26553    _version\x18\x02\x20\x01(\tR\rdfhackVersion\x12C\n\x1eremote_fortress_re\
26554    ader_version\x18\x03\x20\x01(\tR\x1bremoteFortressReaderVersion\"G\n\x0b\
26555    ListRequest\x12\x1d\n\nlist_start\x18\x01\x20\x01(\x05R\tlistStart\x12\
26556    \x19\n\x08list_end\x18\x02\x20\x01(\x05R\x07listEnd\"\xfd\x02\n\x06Repor\
26557    t\x12\x12\n\x04type\x18\x01\x20\x01(\x05R\x04type\x12\x12\n\x04text\x18\
26558    \x02\x20\x01(\tR\x04text\x12;\n\x05color\x18\x03\x20\x01(\x0b2%.RemoteFo\
26559    rtressReader.ColorDefinitionR\x05color\x12\x1a\n\x08duration\x18\x04\x20\
26560    \x01(\x05R\x08duration\x12\"\n\x0ccontinuation\x18\x05\x20\x01(\x08R\x0c\
26561    continuation\x12\x20\n\x0bunconscious\x18\x06\x20\x01(\x08R\x0bunconscio\
26562    us\x12\"\n\x0cannouncement\x18\x07\x20\x01(\x08R\x0cannouncement\x12!\n\
26563    \x0crepeat_count\x18\x08\x20\x01(\x05R\x0brepeatCount\x12-\n\x03pos\x18\
26564    \t\x20\x01(\x0b2\x1b.RemoteFortressReader.CoordR\x03pos\x12\x0e\n\x02id\
26565    \x18\n\x20\x01(\x05R\x02id\x12\x12\n\x04year\x18\x0b\x20\x01(\x05R\x04ye\
26566    ar\x12\x12\n\x04time\x18\x0c\x20\x01(\x05R\x04time\"@\n\x06Status\x126\n\
26567    \x07reports\x18\x01\x20\x03(\x0b2\x1c.RemoteFortressReader.ReportR\x07re\
26568    ports\"6\n\x10ShapeDescriptior\x12\x0e\n\x02id\x18\x01\x20\x01(\tR\x02id\
26569    \x12\x12\n\x04tile\x18\x02\x20\x01(\x05R\x04tile\"J\n\x08Language\x12>\n\
26570    \x06shapes\x18\x01\x20\x03(\x0b2&.RemoteFortressReader.ShapeDescriptiorR\
26571    \x06shapes\"\xd1\x01\n\x0fItemImprovement\x129\n\x08material\x18\x01\x20\
26572    \x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x08material\x12\x14\n\x05sh\
26573    ape\x18\x03\x20\x01(\x05R\x05shape\x12#\n\rspecific_type\x18\x04\x20\x01\
26574    (\x05R\x0cspecificType\x124\n\x05image\x18\x05\x20\x01(\x0b2\x1e.RemoteF\
26575    ortressReader.ArtImageR\x05image\x12\x12\n\x04type\x18\x06\x20\x01(\x05R\
26576    \x04type\"\xf5\x01\n\x0fArtImageElement\x12\x14\n\x05count\x18\x01\x20\
26577    \x01(\x05R\x05count\x12=\n\x04type\x18\x02\x20\x01(\x0e2).RemoteFortress\
26578    Reader.ArtImageElementTypeR\x04type\x12B\n\rcreature_item\x18\x03\x20\
26579    \x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x0ccreatureItem\x129\n\x08m\
26580    aterial\x18\x05\x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x08mater\
26581    ial\x12\x0e\n\x02id\x18\x06\x20\x01(\x05R\x02id\"\xbc\x01\n\x10ArtImageP\
26582    roperty\x12\x18\n\x07subject\x18\x01\x20\x01(\x05R\x07subject\x12\x16\n\
26583    \x06object\x18\x02\x20\x01(\x05R\x06object\x126\n\x04verb\x18\x03\x20\
26584    \x01(\x0e2\".RemoteFortressReader.ArtImageVerbR\x04verb\x12>\n\x04type\
26585    \x18\x04\x20\x01(\x0e2*.RemoteFortressReader.ArtImagePropertyTypeR\x04ty\
26586    pe\"\xc4\x01\n\x08ArtImage\x12A\n\x08elements\x18\x01\x20\x03(\x0b2%.Rem\
26587    oteFortressReader.ArtImageElementR\x08elements\x12-\n\x02id\x18\x02\x20\
26588    \x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x02id\x12F\n\nproperties\
26589    \x18\x03\x20\x03(\x0b2&.RemoteFortressReader.ArtImagePropertyR\nproperti\
26590    es\"\x98\x03\n\tEngraving\x12-\n\x03pos\x18\x01\x20\x01(\x0b2\x1b.Remote\
26591    FortressReader.CoordR\x03pos\x12\x18\n\x07quality\x18\x02\x20\x01(\x05R\
26592    \x07quality\x12\x12\n\x04tile\x18\x03\x20\x01(\x05R\x04tile\x124\n\x05im\
26593    age\x18\x04\x20\x01(\x0b2\x1e.RemoteFortressReader.ArtImageR\x05image\
26594    \x12\x14\n\x05floor\x18\x05\x20\x01(\x08R\x05floor\x12\x12\n\x04west\x18\
26595    \x06\x20\x01(\x08R\x04west\x12\x12\n\x04east\x18\x07\x20\x01(\x08R\x04ea\
26596    st\x12\x14\n\x05north\x18\x08\x20\x01(\x08R\x05north\x12\x14\n\x05south\
26597    \x18\t\x20\x01(\x08R\x05south\x12\x16\n\x06hidden\x18\n\x20\x01(\x08R\
26598    \x06hidden\x12\x1c\n\tnorthwest\x18\x0b\x20\x01(\x08R\tnorthwest\x12\x1c\
26599    \n\tnortheast\x18\x0c\x20\x01(\x08R\tnortheast\x12\x1c\n\tsouthwest\x18\
26600    \r\x20\x01(\x08R\tsouthwest\x12\x1c\n\tsoutheast\x18\x0e\x20\x01(\x08R\t\
26601    southeast\"\xd3\x03\n\x08FlowInfo\x12\x14\n\x05index\x18\x01\x20\x01(\
26602    \x05R\x05index\x122\n\x04type\x18\x02\x20\x01(\x0e2\x1e.RemoteFortressRe\
26603    ader.FlowTypeR\x04type\x12\x18\n\x07density\x18\x03\x20\x01(\x05R\x07den\
26604    sity\x12-\n\x03pos\x18\x04\x20\x01(\x0b2\x1b.RemoteFortressReader.CoordR\
26605    \x03pos\x12/\n\x04dest\x18\x05\x20\x01(\x0b2\x1b.RemoteFortressReader.Co\
26606    ordR\x04dest\x12\x1c\n\texpanding\x18\x06\x20\x01(\x08R\texpanding\x12\
26607    \x18\n\x05reuse\x18\x07\x20\x01(\x08R\x05reuseB\x02\x18\x01\x12\x19\n\
26608    \x08guide_id\x18\x08\x20\x01(\x05R\x07guideId\x129\n\x08material\x18\t\
26609    \x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x08material\x121\n\x04i\
26610    tem\x18\n\x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x04item\x12\
26611    \x12\n\x04dead\x18\x0b\x20\x01(\x08R\x04dead\x12\x12\n\x04fast\x18\x0c\
26612    \x20\x01(\x08R\x04fast\x12\x1a\n\x08creeping\x18\r\x20\x01(\x08R\x08cree\
26613    ping\"f\n\x04Wave\x12/\n\x04dest\x18\x01\x20\x01(\x0b2\x1b.RemoteFortres\
26614    sReader.CoordR\x04dest\x12-\n\x03pos\x18\x02\x20\x01(\x0b2\x1b.RemoteFor\
26615    tressReader.CoordR\x03pos*\xba\x02\n\rTiletypeShape\x12\x15\n\x08NO_SHAP\
26616    E\x10\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\t\n\x05EMPTY\x10\0\x12\
26617    \t\n\x05FLOOR\x10\x01\x12\x0b\n\x07BOULDER\x10\x02\x12\x0b\n\x07PEBBLES\
26618    \x10\x03\x12\x08\n\x04WALL\x10\x04\x12\x11\n\rFORTIFICATION\x10\x05\x12\
26619    \x0c\n\x08STAIR_UP\x10\x06\x12\x0e\n\nSTAIR_DOWN\x10\x07\x12\x10\n\x0cST\
26620    AIR_UPDOWN\x10\x08\x12\x08\n\x04RAMP\x10\t\x12\x0c\n\x08RAMP_TOP\x10\n\
26621    \x12\r\n\tBROOK_BED\x10\x0b\x12\r\n\tBROOK_TOP\x10\x0c\x12\x0e\n\nTREE_S\
26622    HAPE\x10\r\x12\x0b\n\x07SAPLING\x10\x0e\x12\t\n\x05SHRUB\x10\x0f\x12\x0f\
26623    \n\x0bENDLESS_PIT\x10\x10\x12\n\n\x06BRANCH\x10\x11\x12\x10\n\x0cTRUNK_B\
26624    RANCH\x10\x12\x12\x08\n\x04TWIG\x10\x13*\xc4\x01\n\x0fTiletypeSpecial\
26625    \x12\x17\n\nNO_SPECIAL\x10\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\n\
26626    \n\x06NORMAL\x10\0\x12\x10\n\x0cRIVER_SOURCE\x10\x01\x12\r\n\tWATERFALL\
26627    \x10\x02\x12\n\n\x06SMOOTH\x10\x03\x12\x0c\n\x08FURROWED\x10\x04\x12\x07\
26628    \n\x03WET\x10\x05\x12\x08\n\x04DEAD\x10\x06\x12\n\n\x06WORN_1\x10\x07\
26629    \x12\n\n\x06WORN_2\x10\x08\x12\n\n\x06WORN_3\x10\t\x12\t\n\x05TRACK\x10\
26630    \n\x12\x0f\n\x0bSMOOTH_DEAD\x10\x0b*\x8a\x03\n\x10TiletypeMaterial\x12\
26631    \x18\n\x0bNO_MATERIAL\x10\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\
26632    \x07\n\x03AIR\x10\0\x12\x08\n\x04SOIL\x10\x01\x12\t\n\x05STONE\x10\x02\
26633    \x12\x0b\n\x07FEATURE\x10\x03\x12\x0e\n\nLAVA_STONE\x10\x04\x12\x0b\n\
26634    \x07MINERAL\x10\x05\x12\x11\n\rFROZEN_LIQUID\x10\x06\x12\x10\n\x0cCONSTR\
26635    UCTION\x10\x07\x12\x0f\n\x0bGRASS_LIGHT\x10\x08\x12\x0e\n\nGRASS_DARK\
26636    \x10\t\x12\r\n\tGRASS_DRY\x10\n\x12\x0e\n\nGRASS_DEAD\x10\x0b\x12\t\n\
26637    \x05PLANT\x10\x0c\x12\x07\n\x03HFS\x10\r\x12\x0c\n\x08CAMPFIRE\x10\x0e\
26638    \x12\x08\n\x04FIRE\x10\x0f\x12\t\n\x05ASHES\x10\x10\x12\t\n\x05MAGMA\x10\
26639    \x11\x12\r\n\tDRIFTWOOD\x10\x12\x12\x08\n\x04POOL\x10\x13\x12\t\n\x05BRO\
26640    OK\x10\x14\x12\t\n\x05RIVER\x10\x15\x12\x08\n\x04ROOT\x10\x16\x12\x11\n\
26641    \rTREE_MATERIAL\x10\x17\x12\x0c\n\x08MUSHROOM\x10\x18\x12\x13\n\x0fUNDER\
26642    WORLD_GATE\x10\x19*V\n\x0fTiletypeVariant\x12\x17\n\nNO_VARIANT\x10\xff\
26643    \xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\t\n\x05VAR_1\x10\0\x12\t\n\x05V\
26644    AR_2\x10\x01\x12\t\n\x05VAR_3\x10\x02\x12\t\n\x05VAR_4\x10\x03*J\n\nWorl\
26645    dPoles\x12\x0c\n\x08NO_POLES\x10\0\x12\x0e\n\nNORTH_POLE\x10\x01\x12\x0e\
26646    \n\nSOUTH_POLE\x10\x02\x12\x0e\n\nBOTH_POLES\x10\x03*\x83\x01\n\x11Build\
26647    ingDirection\x12\t\n\x05NORTH\x10\0\x12\x08\n\x04EAST\x10\x01\x12\t\n\
26648    \x05SOUTH\x10\x02\x12\x08\n\x04WEST\x10\x03\x12\r\n\tNORTHEAST\x10\x04\
26649    \x12\r\n\tSOUTHEAST\x10\x05\x12\r\n\tSOUTHWEST\x10\x06\x12\r\n\tNORTHWES\
26650    T\x10\x07\x12\x08\n\x04NONE\x10\x08*\x8d\x01\n\x12TileDigDesignation\x12\
26651    \n\n\x06NO_DIG\x10\0\x12\x0f\n\x0bDEFAULT_DIG\x10\x01\x12\x15\n\x11UP_DO\
26652    WN_STAIR_DIG\x10\x02\x12\x0f\n\x0bCHANNEL_DIG\x10\x03\x12\x0c\n\x08RAMP_\
26653    DIG\x10\x04\x12\x12\n\x0eDOWN_STAIR_DIG\x10\x05\x12\x10\n\x0cUP_STAIR_DI\
26654    G\x10\x06*u\n\tHairStyle\x12\x14\n\x07UNKEMPT\x10\xff\xff\xff\xff\xff\
26655    \xff\xff\xff\xff\x01\x12\x11\n\rNEATLY_COMBED\x10\0\x12\x0b\n\x07BRAIDED\
26656    \x10\x01\x12\x10\n\x0cDOUBLE_BRAID\x10\x02\x12\x0e\n\nPONY_TAILS\x10\x03\
26657    \x12\x10\n\x0cCLEAN_SHAVEN\x10\x04*\x9c\x01\n\rInventoryMode\x12\n\n\x06\
26658    Hauled\x10\0\x12\n\n\x06Weapon\x10\x01\x12\x08\n\x04Worn\x10\x02\x12\x0c\
26659    \n\x08Piercing\x10\x03\x12\t\n\x05Flask\x10\x04\x12\x11\n\rWrappedAround\
26660    \x10\x05\x12\x0b\n\x07StuckIn\x10\x06\x12\x0b\n\x07InMouth\x10\x07\x12\
26661    \x07\n\x03Pet\x10\x08\x12\x0c\n\x08SewnInto\x10\t\x12\x0c\n\x08Strapped\
26662    \x10\n*O\n\nArmorLayer\x12\x0f\n\x0bLAYER_UNDER\x10\0\x12\x0e\n\nLAYER_O\
26663    VER\x10\x01\x12\x0f\n\x0bLAYER_ARMOR\x10\x02\x12\x0f\n\x0bLAYER_COVER\
26664    \x10\x03*Q\n\x0bMatterState\x12\t\n\x05Solid\x10\0\x12\n\n\x06Liquid\x10\
26665    \x01\x12\x07\n\x03Gas\x10\x02\x12\n\n\x06Powder\x10\x03\x12\t\n\x05Paste\
26666    \x10\x04\x12\x0b\n\x07Pressed\x10\x05*O\n\tFrontType\x12\x0e\n\nFRONT_NO\
26667    NE\x10\0\x12\x0e\n\nFRONT_WARM\x10\x01\x12\x0e\n\nFRONT_COLD\x10\x02\x12\
26668    \x12\n\x0eFRONT_OCCLUDED\x10\x03*Z\n\x0bCumulusType\x12\x10\n\x0cCUMULUS\
26669    _NONE\x10\0\x12\x12\n\x0eCUMULUS_MEDIUM\x10\x01\x12\x11\n\rCUMULUS_MULTI\
26670    \x10\x02\x12\x12\n\x0eCUMULUS_NIMBUS\x10\x03*Y\n\x0bStratusType\x12\x10\
26671    \n\x0cSTRATUS_NONE\x10\0\x12\x10\n\x0cSTRATUS_ALTO\x10\x01\x12\x12\n\x0e\
26672    STRATUS_PROPER\x10\x02\x12\x12\n\x0eSTRATUS_NIMBUS\x10\x03*D\n\x07FogTyp\
26673    e\x12\x0c\n\x08FOG_NONE\x10\0\x12\x0c\n\x08FOG_MIST\x10\x01\x12\x0e\n\nF\
26674    OG_NORMAL\x10\x02\x12\r\n\tF0G_THICK\x10\x03*]\n\x0bPatternType\x12\x0c\
26675    \n\x08MONOTONE\x10\0\x12\x0b\n\x07STRIPES\x10\x01\x12\x0c\n\x08IRIS_EYE\
26676    \x10\x02\x12\t\n\x05SPOTS\x10\x03\x12\r\n\tPUPIL_EYE\x10\x04\x12\x0b\n\
26677    \x07MOTTLED\x10\x05*k\n\x13ArtImageElementType\x12\x12\n\x0eIMAGE_CREATU\
26678    RE\x10\0\x12\x0f\n\x0bIMAGE_PLANT\x10\x01\x12\x0e\n\nIMAGE_TREE\x10\x02\
26679    \x12\x0f\n\x0bIMAGE_SHAPE\x10\x03\x12\x0e\n\nIMAGE_ITEM\x10\x04*B\n\x14A\
26680    rtImagePropertyType\x12\x13\n\x0fTRANSITIVE_VERB\x10\0\x12\x15\n\x11INTR\
26681    ANSITIVE_VERB\x10\x01*\x95\x08\n\x0cArtImageVerb\x12\x12\n\x0eVERB_WITHE\
26682    RING\x10\0\x12\x15\n\x11VERB_SURROUNDEDBY\x10\x01\x12\x13\n\x0fVERB_MASS\
26683    ACRING\x10\x02\x12\x11\n\rVERB_FIGHTING\x10\x03\x12\x11\n\rVERB_LABORING\
26684    \x10\x04\x12\x11\n\rVERB_GREETING\x10\x05\x12\x11\n\rVERB_REFUSING\x10\
26685    \x06\x12\x11\n\rVERB_SPEAKING\x10\x07\x12\x12\n\x0eVERB_EMBRACING\x10\
26686    \x08\x12\x15\n\x11VERB_STRIKINGDOWN\x10\t\x12\x15\n\x11VERB_MENACINGPOSE\
26687    \x10\n\x12\x12\n\x0eVERB_TRAVELING\x10\x0b\x12\x10\n\x0cVERB_RAISING\x10\
26688    \x0c\x12\x0f\n\x0bVERB_HIDING\x10\r\x12\x18\n\x14VERB_LOOKINGCONFUSED\
26689    \x10\x0e\x12\x19\n\x15VERB_LOOKINGTERRIFIED\x10\x0f\x12\x12\n\x0eVERB_DE\
26690    VOURING\x10\x10\x12\x11\n\rVERB_ADMIRING\x10\x11\x12\x10\n\x0cVERB_BURNI\
26691    NG\x10\x12\x12\x10\n\x0cVERB_WEEPING\x10\x13\x12\x18\n\x14VERB_LOOKINGDE\
26692    JECTED\x10\x14\x12\x11\n\rVERB_CRINGING\x10\x15\x12\x12\n\x0eVERB_SCREAM\
26693    ING\x10\x16\x12\x1a\n\x16VERB_SUBMISSIVEGESTURE\x10\x17\x12\x16\n\x12VER\
26694    B_FETALPOSITION\x10\x18\x12\x1a\n\x16VERB_SMEAREDINTOSPIRAL\x10\x19\x12\
26695    \x10\n\x0cVERB_FALLING\x10\x1a\x12\r\n\tVERB_DEAD\x10\x1b\x12\x11\n\rVER\
26696    B_LAUGHING\x10\x1c\x12\x18\n\x14VERB_LOOKINGOFFENDED\x10\x1d\x12\x12\n\
26697    \x0eVERB_BEINGSHOT\x10\x1e\x12\x19\n\x15VERB_PLAINTIVEGESTURE\x10\x1f\
26698    \x12\x10\n\x0cVERB_MELTING\x10\x20\x12\x11\n\rVERB_SHOOTING\x10!\x12\x12\
26699    \n\x0eVERB_TORTURING\x10\"\x12\x1e\n\x1aVERB_COMMITTINGDEPRAVEDACT\x10#\
26700    \x12\x10\n\x0cVERB_PRAYING\x10$\x12\x16\n\x12VERB_CONTEMPLATING\x10%\x12\
26701    \x10\n\x0cVERB_COOKING\x10&\x12\x12\n\x0eVERB_ENGRAVING\x10'\x12\x14\n\
26702    \x10VERB_PROSTRATING\x10(\x12\x12\n\x0eVERB_SUFFERING\x10)\x12\x15\n\x11\
26703    VERB_BEINGIMPALED\x10*\x12\x17\n\x13VERB_BEINGCONTORTED\x10+\x12\x14\n\
26704    \x10VERB_BEINGFLAYED\x10,\x12\x14\n\x10VERB_HANGINGFROM\x10-\x12\x17\n\
26705    \x13VERB_BEINGMUTILATED\x10.\x12\x17\n\x13VERB_TRIUMPHANTPOSE\x10/*\xe0\
26706    \x01\n\x08FlowType\x12\n\n\x06Miasma\x10\0\x12\t\n\x05Steam\x10\x01\x12\
26707    \x08\n\x04Mist\x10\x02\x12\x10\n\x0cMaterialDust\x10\x03\x12\r\n\tMagmaM\
26708    ist\x10\x04\x12\t\n\x05Smoke\x10\x05\x12\x0e\n\nDragonfire\x10\x06\x12\
26709    \x08\n\x04Fire\x10\x07\x12\x07\n\x03Web\x10\x08\x12\x0f\n\x0bMaterialGas\
26710    \x10\t\x12\x11\n\rMaterialVapor\x10\n\x12\r\n\tOceanWave\x10\x0b\x12\x0b\
26711    \n\x07SeaFoam\x10\x0c\x12\r\n\tItemCloud\x10\r\x12\x15\n\x08CampFire\x10\
26712    \xff\xff\xff\xff\xff\xff\xff\xff\xff\x01B\x02H\x03b\x06proto2\
26713";
26714
26715/// `FileDescriptorProto` object which was a source for this generated file
26716fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
26717    static file_descriptor_proto_lazy: ::protobuf::rt::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::Lazy::new();
26718    file_descriptor_proto_lazy.get(|| {
26719        ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
26720    })
26721}
26722
26723/// `FileDescriptor` object which allows dynamic access to files
26724pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
26725    static generated_file_descriptor_lazy: ::protobuf::rt::Lazy<::protobuf::reflect::GeneratedFileDescriptor> = ::protobuf::rt::Lazy::new();
26726    static file_descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::FileDescriptor> = ::protobuf::rt::Lazy::new();
26727    file_descriptor.get(|| {
26728        let generated_file_descriptor = generated_file_descriptor_lazy.get(|| {
26729            let mut deps = ::std::vec::Vec::with_capacity(1);
26730            deps.push(super::ItemdefInstrument::file_descriptor().clone());
26731            let mut messages = ::std::vec::Vec::with_capacity(79);
26732            messages.push(Coord::generated_message_descriptor_data());
26733            messages.push(Tiletype::generated_message_descriptor_data());
26734            messages.push(TiletypeList::generated_message_descriptor_data());
26735            messages.push(BuildingExtents::generated_message_descriptor_data());
26736            messages.push(BuildingItem::generated_message_descriptor_data());
26737            messages.push(BuildingInstance::generated_message_descriptor_data());
26738            messages.push(RiverEdge::generated_message_descriptor_data());
26739            messages.push(RiverTile::generated_message_descriptor_data());
26740            messages.push(Spatter::generated_message_descriptor_data());
26741            messages.push(SpatterPile::generated_message_descriptor_data());
26742            messages.push(Item::generated_message_descriptor_data());
26743            messages.push(PlantTile::generated_message_descriptor_data());
26744            messages.push(TreeInfo::generated_message_descriptor_data());
26745            messages.push(PlantInstance::generated_message_descriptor_data());
26746            messages.push(MapBlock::generated_message_descriptor_data());
26747            messages.push(MatPair::generated_message_descriptor_data());
26748            messages.push(ColorDefinition::generated_message_descriptor_data());
26749            messages.push(MaterialDefinition::generated_message_descriptor_data());
26750            messages.push(BuildingType::generated_message_descriptor_data());
26751            messages.push(BuildingDefinition::generated_message_descriptor_data());
26752            messages.push(BuildingList::generated_message_descriptor_data());
26753            messages.push(MaterialList::generated_message_descriptor_data());
26754            messages.push(Hair::generated_message_descriptor_data());
26755            messages.push(BodySizeInfo::generated_message_descriptor_data());
26756            messages.push(UnitAppearance::generated_message_descriptor_data());
26757            messages.push(InventoryItem::generated_message_descriptor_data());
26758            messages.push(WoundPart::generated_message_descriptor_data());
26759            messages.push(UnitWound::generated_message_descriptor_data());
26760            messages.push(UnitDefinition::generated_message_descriptor_data());
26761            messages.push(UnitList::generated_message_descriptor_data());
26762            messages.push(BlockRequest::generated_message_descriptor_data());
26763            messages.push(BlockList::generated_message_descriptor_data());
26764            messages.push(PlantDef::generated_message_descriptor_data());
26765            messages.push(PlantList::generated_message_descriptor_data());
26766            messages.push(ViewInfo::generated_message_descriptor_data());
26767            messages.push(MapInfo::generated_message_descriptor_data());
26768            messages.push(Cloud::generated_message_descriptor_data());
26769            messages.push(WorldMap::generated_message_descriptor_data());
26770            messages.push(SiteRealizationBuildingWall::generated_message_descriptor_data());
26771            messages.push(SiteRealizationBuildingTower::generated_message_descriptor_data());
26772            messages.push(TrenchSpoke::generated_message_descriptor_data());
26773            messages.push(SiteRealizationBuildingTrenches::generated_message_descriptor_data());
26774            messages.push(SiteRealizationBuilding::generated_message_descriptor_data());
26775            messages.push(RegionTile::generated_message_descriptor_data());
26776            messages.push(RegionMap::generated_message_descriptor_data());
26777            messages.push(RegionMaps::generated_message_descriptor_data());
26778            messages.push(PatternDescriptor::generated_message_descriptor_data());
26779            messages.push(ColorModifierRaw::generated_message_descriptor_data());
26780            messages.push(BodyPartLayerRaw::generated_message_descriptor_data());
26781            messages.push(BodyPartRaw::generated_message_descriptor_data());
26782            messages.push(BpAppearanceModifier::generated_message_descriptor_data());
26783            messages.push(TissueRaw::generated_message_descriptor_data());
26784            messages.push(CasteRaw::generated_message_descriptor_data());
26785            messages.push(CreatureRaw::generated_message_descriptor_data());
26786            messages.push(CreatureRawList::generated_message_descriptor_data());
26787            messages.push(Army::generated_message_descriptor_data());
26788            messages.push(ArmyList::generated_message_descriptor_data());
26789            messages.push(GrowthPrint::generated_message_descriptor_data());
26790            messages.push(TreeGrowth::generated_message_descriptor_data());
26791            messages.push(PlantRaw::generated_message_descriptor_data());
26792            messages.push(PlantRawList::generated_message_descriptor_data());
26793            messages.push(ScreenTile::generated_message_descriptor_data());
26794            messages.push(ScreenCapture::generated_message_descriptor_data());
26795            messages.push(KeyboardEvent::generated_message_descriptor_data());
26796            messages.push(DigCommand::generated_message_descriptor_data());
26797            messages.push(SingleBool::generated_message_descriptor_data());
26798            messages.push(VersionInfo::generated_message_descriptor_data());
26799            messages.push(ListRequest::generated_message_descriptor_data());
26800            messages.push(Report::generated_message_descriptor_data());
26801            messages.push(Status::generated_message_descriptor_data());
26802            messages.push(ShapeDescriptior::generated_message_descriptor_data());
26803            messages.push(Language::generated_message_descriptor_data());
26804            messages.push(ItemImprovement::generated_message_descriptor_data());
26805            messages.push(ArtImageElement::generated_message_descriptor_data());
26806            messages.push(ArtImageProperty::generated_message_descriptor_data());
26807            messages.push(ArtImage::generated_message_descriptor_data());
26808            messages.push(Engraving::generated_message_descriptor_data());
26809            messages.push(FlowInfo::generated_message_descriptor_data());
26810            messages.push(Wave::generated_message_descriptor_data());
26811            let mut enums = ::std::vec::Vec::with_capacity(20);
26812            enums.push(TiletypeShape::generated_enum_descriptor_data());
26813            enums.push(TiletypeSpecial::generated_enum_descriptor_data());
26814            enums.push(TiletypeMaterial::generated_enum_descriptor_data());
26815            enums.push(TiletypeVariant::generated_enum_descriptor_data());
26816            enums.push(WorldPoles::generated_enum_descriptor_data());
26817            enums.push(BuildingDirection::generated_enum_descriptor_data());
26818            enums.push(TileDigDesignation::generated_enum_descriptor_data());
26819            enums.push(HairStyle::generated_enum_descriptor_data());
26820            enums.push(InventoryMode::generated_enum_descriptor_data());
26821            enums.push(ArmorLayer::generated_enum_descriptor_data());
26822            enums.push(MatterState::generated_enum_descriptor_data());
26823            enums.push(FrontType::generated_enum_descriptor_data());
26824            enums.push(CumulusType::generated_enum_descriptor_data());
26825            enums.push(StratusType::generated_enum_descriptor_data());
26826            enums.push(FogType::generated_enum_descriptor_data());
26827            enums.push(PatternType::generated_enum_descriptor_data());
26828            enums.push(ArtImageElementType::generated_enum_descriptor_data());
26829            enums.push(ArtImagePropertyType::generated_enum_descriptor_data());
26830            enums.push(ArtImageVerb::generated_enum_descriptor_data());
26831            enums.push(FlowType::generated_enum_descriptor_data());
26832            ::protobuf::reflect::GeneratedFileDescriptor::new_generated(
26833                file_descriptor_proto(),
26834                deps,
26835                messages,
26836                enums,
26837            )
26838        });
26839        ::protobuf::reflect::FileDescriptor::new_generated_2(generated_file_descriptor)
26840    })
26841}