/* * Copyright 2025 Ivan Barsukov * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "level_game_over.h" #include #include #include "../../game.h" #include "../../game_settings.h" #include "game_over_entity.h" typedef struct { Entity* entitiy; } GameOverLevelContext; static void level_game_over_alloc(Level* level, GameManager* manager, void* context) { GameOverLevelContext* game_over_context = context; game_over_context->entitiy = level_add_entity(level, &game_over_description); GameOverEntityContext* entity_context = entity_context_get(game_over_context->entitiy); entity_context->logo_sprite = game_manager_sprite_load(manager, "game_over.fxbm"); entity_context->score = 0; entity_context->max_score = 0; } static void level_game_over_start(Level* level, GameManager* manager, void* _level_context) { UNUSED(level); GameOverLevelContext* level_context = _level_context; GameOverEntityContext* entity_context = entity_context_get(level_context->entitiy); GameContext* game_context = game_manager_game_context_get(manager); if (game_context->score > game_context->best_score) { game_context->best_score = game_context->score; game_save_settings(game_context); } entity_context->score = game_context->score; entity_context->max_score = game_context->best_score; FURI_LOG_D(GAME_NAME, "Game over level started"); } const LevelBehaviour level_game_over = { .alloc = level_game_over_alloc, .free = NULL, .start = level_game_over_start, .stop = NULL, .context_size = sizeof(GameOverLevelContext), };