1
+ #include "game.h"
2
+ #include "game_settings.h"
3
+ #include "levels/level_menu.h"
4
+ #include "levels/level_game.h"
5
+ #include "levels/level_settings.h"
6
+ #include "levels/level_message.h"
7
+
8
+ const NotificationSequence sequence_sound_blip = {
9
+ & message_note_c7 ,
10
+ & message_delay_50 ,
11
+ & message_sound_off ,
12
+ NULL ,
13
+ };
14
+
15
+ const NotificationSequence sequence_sound_menu = {
16
+ & message_note_c6 ,
17
+ & message_delay_10 ,
18
+ & message_sound_off ,
19
+ NULL ,
20
+ };
21
+
22
+ void game_start (GameManager * game_manager , void * ctx ) {
23
+ GameContext * context = ctx ;
24
+ context -> imu = imu_alloc ();
25
+ context -> imu_present = imu_present (context -> imu );
26
+ context -> levels .menu = game_manager_add_level (game_manager , & level_menu );
27
+ context -> levels .settings = game_manager_add_level (game_manager , & level_settings );
28
+ context -> levels .game = game_manager_add_level (game_manager , & level_game );
29
+ context -> levels .message = game_manager_add_level (game_manager , & level_message );
30
+
31
+ if (!game_settings_load (& context -> settings )) {
32
+ context -> settings .sound = true;
33
+ context -> settings .show_fps = false;
34
+ }
35
+
36
+ context -> app = furi_record_open (RECORD_NOTIFICATION );
37
+ context -> game_manager = game_manager ;
38
+
39
+ game_manager_show_fps_set (context -> game_manager , context -> settings .show_fps );
40
+ }
41
+
42
+ void game_stop (void * ctx ) {
43
+ GameContext * context = ctx ;
44
+ imu_free (context -> imu );
45
+
46
+ furi_record_close (RECORD_NOTIFICATION );
47
+ }
48
+
49
+ const Game game = {
50
+ .target_fps = 30 ,
51
+ .show_fps = false,
52
+ .always_backlight = true,
53
+ .start = game_start ,
54
+ .stop = game_stop ,
55
+ .context_size = sizeof (GameContext ),
56
+ };
57
+
58
+ void game_switch_sound (GameContext * context ) {
59
+ context -> settings .sound = !context -> settings .sound ;
60
+ game_settings_save (& context -> settings );
61
+ }
62
+
63
+ void game_switch_show_fps (GameContext * context ) {
64
+ context -> settings .show_fps = !context -> settings .show_fps ;
65
+ game_manager_show_fps_set (context -> game_manager , context -> settings .show_fps );
66
+ game_settings_save (& context -> settings );
67
+ }
68
+
69
+ void game_sound_play (GameContext * context , const NotificationSequence * sequence ) {
70
+ if (context -> settings .sound ) {
71
+ notification_message (context -> app , sequence );
72
+ }
73
+ }
0 commit comments