|
1 | 1 | #include "pokemon_app.h"
|
| 2 | +#include "views/trade.hpp" |
| 3 | +#include "views/select_pokemon.hpp" |
2 | 4 |
|
3 |
| -struct pokemon_lut pokemon_table[] = { |
| 5 | +const PokemonTable pokemon_table[] = { |
4 | 6 | {"Bulbasaur", &I_bulbasaur, 0x99},
|
5 | 7 | {"Ivysaur", &I_ivysaur, 0x09},
|
6 | 8 | {"Venusaur", &I_venusaur, 0x9A},
|
@@ -159,66 +161,77 @@ uint32_t pokemon_exit_confirm_view(void* context) {
|
159 | 161 | UNUSED(context);
|
160 | 162 | return AppViewExitConfirm;
|
161 | 163 | }
|
162 |
| -App* pokemon_alloc() { |
163 |
| - App* app = (App*)malloc(sizeof(App)); |
| 164 | + |
| 165 | +PokemonFap* pokemon_alloc() { |
| 166 | + PokemonFap* pokemon_fap = (PokemonFap*)malloc(sizeof(PokemonFap)); |
164 | 167 |
|
165 | 168 | // Gui
|
166 |
| - app->gui = (Gui*)furi_record_open(RECORD_GUI); |
| 169 | + /* XXX: what is furi_record open for? It doesn't return a Gui handle. */ |
| 170 | + pokemon_fap->gui = (Gui*)furi_record_open(RECORD_GUI); |
| 171 | + |
167 | 172 | // View dispatcher
|
168 |
| - app->view_dispatcher = view_dispatcher_alloc(); |
| 173 | + pokemon_fap->view_dispatcher = view_dispatcher_alloc(); |
169 | 174 |
|
170 |
| - view_dispatcher_enable_queue(app->view_dispatcher); |
171 |
| - view_dispatcher_set_event_callback_context(app->view_dispatcher, app); |
172 |
| - view_dispatcher_attach_to_gui(app->view_dispatcher, app->gui, ViewDispatcherTypeFullscreen); |
| 175 | + view_dispatcher_enable_queue(pokemon_fap->view_dispatcher); |
| 176 | + view_dispatcher_set_event_callback_context(pokemon_fap->view_dispatcher, pokemon_fap); |
| 177 | + view_dispatcher_attach_to_gui( |
| 178 | + pokemon_fap->view_dispatcher, pokemon_fap->gui, ViewDispatcherTypeFullscreen); |
173 | 179 |
|
174 | 180 | // Start Index first pokemon
|
175 |
| - app->current_pokemon = 0; |
| 181 | + pokemon_fap->curr_pokemon = 0; |
| 182 | + |
| 183 | + // Set up pointer to pokemon table |
| 184 | + pokemon_fap->pokemon_table = pokemon_table; |
| 185 | + |
176 | 186 | // Select Pokemon View
|
177 |
| - app->select_pokemon = select_pokemon_alloc(app); |
178 |
| - view_set_previous_callback(select_pokemon_get_view(app), pokemon_exit_confirm_view); |
| 187 | + pokemon_fap->select_view = select_pokemon_alloc(pokemon_fap); |
| 188 | + view_set_previous_callback(select_pokemon_get_view(pokemon_fap), pokemon_exit_confirm_view); |
179 | 189 | view_dispatcher_add_view(
|
180 |
| - app->view_dispatcher, AppViewSelectPokemon, select_pokemon_get_view(app)); |
| 190 | + pokemon_fap->view_dispatcher, AppViewSelectPokemon, select_pokemon_get_view(pokemon_fap)); |
181 | 191 |
|
182 | 192 | // Trade View
|
183 |
| - app->trade = trade_alloc(app); |
184 |
| - view_set_previous_callback(trade_get_view(app), pokemon_exit_confirm_view); |
185 |
| - view_dispatcher_add_view(app->view_dispatcher, AppViewTrade, trade_get_view(app)); |
| 193 | + pokemon_fap->trade_view = trade_alloc(pokemon_fap); |
| 194 | + view_set_previous_callback(pokemon_fap->trade_view, pokemon_exit_confirm_view); |
| 195 | + view_dispatcher_add_view(pokemon_fap->view_dispatcher, AppViewTrade, pokemon_fap->trade_view); |
186 | 196 |
|
187 |
| - view_dispatcher_switch_to_view(app->view_dispatcher, AppViewSelectPokemon); |
| 197 | + view_dispatcher_switch_to_view(pokemon_fap->view_dispatcher, AppViewSelectPokemon); |
188 | 198 |
|
189 |
| - return app; |
| 199 | + return pokemon_fap; |
190 | 200 | }
|
191 | 201 |
|
192 |
| -void free_app(App* app) { |
193 |
| - furi_assert(app); |
| 202 | +void free_app(PokemonFap* pokemon_fap) { |
| 203 | + furi_assert(pokemon_fap); |
194 | 204 |
|
195 | 205 | // Free views
|
196 |
| - view_dispatcher_remove_view(app->view_dispatcher, AppViewSelectPokemon); |
197 |
| - select_pokemon_free(app); |
198 |
| - view_dispatcher_remove_view(app->view_dispatcher, AppViewTrade); |
199 |
| - trade_free(app); |
| 206 | + view_dispatcher_remove_view(pokemon_fap->view_dispatcher, AppViewSelectPokemon); |
| 207 | + /* XXX: Still need to deal with select_pokemon code */ |
| 208 | + select_pokemon_free(pokemon_fap); |
| 209 | + view_dispatcher_remove_view(pokemon_fap->view_dispatcher, AppViewTrade); |
| 210 | + trade_free(pokemon_fap); |
200 | 211 | // Close records
|
201 | 212 | furi_record_close(RECORD_GUI);
|
202 |
| - app->gui = NULL; |
| 213 | + /* XXX: Since furi_record doesn't appear to be a Gui function, it wouldn't clear the pointer */ |
| 214 | + pokemon_fap->gui = NULL; |
203 | 215 |
|
204 | 216 | // Free rest
|
205 |
| - free(app); |
| 217 | + free(pokemon_fap); |
| 218 | + pokemon_fap = NULL; |
206 | 219 | }
|
207 | 220 |
|
208 | 221 | extern "C" int32_t pokemon_app(void* p) {
|
209 | 222 | UNUSED(p);
|
210 | 223 | //FURI_LOG_D(TAG, "init scene");
|
211 |
| - App* app = (App*)pokemon_alloc(); |
| 224 | + //App* app = (App*)pokemon_alloc(); |
| 225 | + PokemonFap* pokemon_fap = pokemon_alloc(); |
212 | 226 |
|
213 | 227 | furi_hal_light_set(LightRed, 0x00);
|
214 | 228 | furi_hal_light_set(LightGreen, 0x00);
|
215 | 229 | furi_hal_light_set(LightBlue, 0x00);
|
216 | 230 | //switch view and run dispatcher
|
217 |
| - view_dispatcher_run(app->view_dispatcher); |
| 231 | + view_dispatcher_run(pokemon_fap->view_dispatcher); |
218 | 232 |
|
219 | 233 | // Free resources
|
220 |
| - free_app(app); |
221 |
| - furi_record_close(RECORD_GUI); |
| 234 | + free_app(pokemon_fap); |
222 | 235 |
|
223 | 236 | return 0;
|
224 | 237 | }
|
0 commit comments