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

Method Loop

PanzerChasm/host.cpp:147–259  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

145}
146
147bool Host::Loop()
148{
149 // Events processing
150 InputState input_state;
151 if( system_window_ != nullptr )
152 {
153 events_.clear();
154 system_window_->GetInput( events_ );
155 system_window_->GetInputState( input_state );
156 }
157
158 // Special host key events.
159 for( const SystemEvent& event : events_ )
160 {
161 if( event.type == SystemEvent::Type::Quit )
162 quit_requested_= true;
163
164 if( event.type == SystemEvent::Type::Key && event.event.key.pressed )
165 {
166 if( event.event.key.key_code == SystemEvent::KeyEvent::KeyCode::BackQuote &&
167 console_ != nullptr )
168 console_->Toggle();
169 if( event.event.key.key_code == SystemEvent::KeyEvent::KeyCode::Pause &&
170 is_single_player_ )
171 paused_= !paused_;
172 }
173 }
174
175 const bool input_goes_to_console= console_ != nullptr && console_->IsActive();
176 const bool input_goes_to_menu= !input_goes_to_console && menu_ != nullptr && menu_->IsActive();
177
178 const bool really_paused= paused_ || ( is_single_player_ && menu_ != nullptr && menu_->IsActive() );
179 const bool needs_pause_server= client_ != nullptr && client_->PlayingCutscene();
180
181 system_window_->CaptureMouse( !input_goes_to_console && !input_goes_to_menu );
182
183 if( input_goes_to_console )
184 console_->ProcessEvents( events_ );
185
186 if(
187 menu_ != nullptr && !input_goes_to_console &&
188 !( client_ != nullptr && client_->PlayingCutscene() ) /* We must no disable menu, when cutscene played. */ )
189 menu_->ProcessEvents( events_ );
190
191 if( menu_ != nullptr && !input_goes_to_menu && !input_goes_to_console )
192 menu_->ProcessEventsWhileNonactive( events_ );
193
194 if( client_ != nullptr && !input_goes_to_console && !input_goes_to_menu && !really_paused )
195 client_->ProcessEvents( events_ );
196
197 if( sound_engine_ != nullptr )
198 sound_engine_->Tick();
199
200 // Loop operations
201 if( local_server_ != nullptr )
202 local_server_->Loop( really_paused || needs_pause_server );
203
204 if( client_ != nullptr )

Callers 1

mainFunction · 0.45

Calls 15

GetInputMethod · 0.80
GetInputStateMethod · 0.80
ToggleMethod · 0.80
PlayingCutsceneMethod · 0.80
CaptureMouseMethod · 0.80
BeginFrameMethod · 0.80
GetOrSetBoolMethod · 0.80
WidthMethod · 0.80
GetTicksFrequencyMethod · 0.80
EndFrameMethod · 0.80
IsActiveMethod · 0.45

Tested by

no test coverage detected