184 .color = ASC_RGB(1, 1, 1), |
184 .color = ASC_RGB(1, 1, 1), |
185 .font = asc_font(ASC_FONT_REGULAR, 12), |
185 .font = asc_font(ASC_FONT_REGULAR, 12), |
186 ); |
186 ); |
187 asc_behavior_add(node, .func = fps_counter_update, .interval = asc_seconds(1)); |
187 asc_behavior_add(node, .func = fps_counter_update, .interval = asc_seconds(1)); |
188 asc_behavior_add(node, fps_counter_tie_to_corner); |
188 asc_behavior_add(node, fps_counter_tie_to_corner); |
189 asc_behavior_pause_all_while_hidden(node); |
189 asc_behavior_disable_all_while_hidden(node); |
190 asc_ui_add_node(node); |
190 asc_ui_add_node(node); |
191 return node; |
191 return node; |
192 } |
192 } |
193 |
193 |
194 static void game_over_text_keep_centered(AscBehavior *behavior) { |
194 static void game_over_text_keep_centered(AscBehavior *behavior) { |
195 if (!behavior->unpaused && !asc_active_window->resized) return; |
195 if (!behavior->reactivated && !asc_active_window->resized) return; |
196 |
196 |
197 AscSceneNode *node = behavior->node; |
197 AscSceneNode *node = behavior->node; |
198 // center the "game over" text in the game field viewport |
198 // center the "game over" text in the game field viewport |
199 const asc_rect main_scene_viewport = MAIN_SCENE->camera.viewport; |
199 const asc_rect main_scene_viewport = MAIN_SCENE->camera.viewport; |
200 asc_scene_node_set_position2f(node, ASC_VEC2F( |
200 asc_scene_node_set_position2f(node, ASC_VEC2F( |
212 .alignment = ASC_TEXT_ALIGN_CENTER, |
212 .alignment = ASC_TEXT_ALIGN_CENTER, |
213 .centered = true, |
213 .centered = true, |
214 ); |
214 ); |
215 |
215 |
216 asc_scene_node_hide(node); |
216 asc_scene_node_hide(node); |
217 asc_behavior_add(node, game_over_text_keep_centered, .pause_while_hidden = true); |
217 asc_behavior_add(node, game_over_text_keep_centered, .disable_while_hidden = true); |
218 asc_ui_add_node(node); |
218 asc_ui_add_node(node); |
219 |
219 |
220 return node; |
220 return node; |
221 } |
221 } |
222 |
222 |
484 |
484 |
485 // add behaviors |
485 // add behaviors |
486 asc_behavior_add(node, player_main_behavior, .always_enabled = true); |
486 asc_behavior_add(node, player_main_behavior, .always_enabled = true); |
487 asc_behavior_add(node, player_controls); |
487 asc_behavior_add(node, player_controls); |
488 asc_behavior_add(node, player_move); |
488 asc_behavior_add(node, player_move); |
489 asc_behavior_pause_all_while_hidden(node); |
489 asc_behavior_disable_all_while_hidden(node); |
490 |
490 |
491 return player; |
491 return player; |
492 } |
492 } |
493 |
493 |
494 static asc_rect main_scene_viewport_update(asc_vec2u window_size) { |
494 static asc_rect main_scene_viewport_update(asc_vec2u window_size) { |