MCPcopy Create free account
hub / github.com/Panzerschrek/Chasm-Reverse / Save

Method Save

PanzerChasm/server/map_save_load.cpp:9–178  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7{
8
9void Map::Save( SaveStream& save_stream ) const
10{
11 // Random generator.
12 save_stream.WriteUInt32( random_generator_->GetInnerState() );
13
14 // Dynamic walls
15 save_stream.WriteUInt32( static_cast<uint32_t>( dynamic_walls_.size() ) );
16 for( const DynamicWall& wall : dynamic_walls_ )
17 {
18 save_stream.WriteVec2( wall.vert_pos[0] );
19 save_stream.WriteVec2( wall.vert_pos[1] );
20 save_stream.WriteVec2( wall.vert_move_speed[0] );
21 save_stream.WriteVec2( wall.vert_move_speed[1] );
22 save_stream.WriteFloat( wall.z );
23 save_stream.WriteUInt8( wall.texture_id );
24 save_stream.WriteBool( wall.mortal );
25 }
26
27 // Procedures
28 save_stream.WriteUInt32( static_cast<uint32_t>( procedures_.size() ) );
29 for( const ProcedureState& procedure_state : procedures_ )
30 {
31 save_stream.WriteBool( procedure_state.locked );
32 save_stream.WriteBool( procedure_state.first_message_printed );
33 save_stream.WriteUInt32( static_cast<uint32_t>( procedure_state.movement_state ) );
34 save_stream.WriteFloat( procedure_state.movement_stage );
35 save_stream.WriteTime( procedure_state.last_state_change_time );
36 }
37
38 // Map end flag
39 save_stream.WriteBool( map_end_triggered_ );
40
41 // Static models
42 save_stream.WriteUInt32( static_cast<uint32_t>( static_models_.size() ) );
43 for( const StaticModel& model : static_models_ )
44 {
45 // TODO - add save-load methods for vectors
46 save_stream.WriteVec3( model.pos );
47 save_stream.WriteVec2( model.move_speed );
48 save_stream.WriteFloat( model.baze_z );
49 save_stream.WriteFloat( model.angle );
50 save_stream.WriteUInt8( model.model_id );
51 save_stream.WriteInt32( model.health );
52 save_stream.WriteUInt32( static_cast<uint32_t>(model.animation_state) );
53 save_stream.WriteTime( model.animation_start_time );
54 save_stream.WriteUInt32( model.animation_start_frame );
55 save_stream.WriteUInt32( model.current_animation_frame );
56 save_stream.WriteBool( model.picked );
57 save_stream.WriteBool( model.mortal );
58 save_stream.WriteBool( model.switch_activated );
59
60 // Save optional rotating light
61 save_stream.WriteBool( model.linked_rotating_light != nullptr );
62 if( model.linked_rotating_light != nullptr )
63 {
64 save_stream.WriteTime( model.linked_rotating_light->start_time );
65 save_stream.WriteTime( model.linked_rotating_light->end_time );
66 save_stream.WriteFloat( model.linked_rotating_light->radius );

Callers

nothing calls this directly

Calls 12

WriteUInt32Method · 0.80
GetInnerStateMethod · 0.80
WriteVec2Method · 0.80
WriteFloatMethod · 0.80
WriteUInt8Method · 0.80
WriteBoolMethod · 0.80
WriteTimeMethod · 0.80
WriteVec3Method · 0.80
WriteInt32Method · 0.80
WriteUInt16Method · 0.80
MonsterIdMethod · 0.80
WriteInt8Method · 0.80

Tested by

no test coverage detected