mirror of
https://github.com/DarkFlippers/unleashed-firmware
synced 2024-12-18 16:53:45 +00:00
28eb4d1060
Not full refactoring, only small issues is fixed and moved all plugins to furi mutex instead of valuemutex Many small issues was found and fixed due mutex upgrade OFW removed 60 lines of code and it was painful
57 lines
No EOL
1.1 KiB
C
57 lines
No EOL
1.1 KiB
C
#pragma once
|
|
#include <furi.h>
|
|
#include <input/input.h>
|
|
#include <gui/elements.h>
|
|
#include <flipper_format/flipper_format.h>
|
|
#include <flipper_format/flipper_format_i.h>
|
|
#include "common/card.h"
|
|
#include "common/queue.h"
|
|
|
|
#define APP_NAME "Solitaire"
|
|
|
|
typedef enum {
|
|
EventTypeTick,
|
|
EventTypeKey,
|
|
} EventType;
|
|
|
|
typedef struct {
|
|
EventType type;
|
|
InputEvent input;
|
|
} AppEvent;
|
|
|
|
typedef enum { GameStateGameOver, GameStateStart, GameStatePlay, GameStateAnimate } PlayState;
|
|
|
|
typedef struct {
|
|
uint8_t* buffer;
|
|
Card card;
|
|
int8_t deck;
|
|
int indexes[4];
|
|
float x;
|
|
float y;
|
|
float vx;
|
|
float vy;
|
|
bool started;
|
|
} CardAnimation;
|
|
|
|
typedef struct {
|
|
Deck deck;
|
|
Hand bottom_columns[7];
|
|
Card top_cards[4];
|
|
bool dragging_deck;
|
|
uint8_t dragging_column;
|
|
Hand dragging_hand;
|
|
|
|
InputKey input;
|
|
|
|
bool started;
|
|
bool processing;
|
|
bool longPress;
|
|
PlayState state;
|
|
unsigned int last_tick;
|
|
uint8_t selectRow;
|
|
uint8_t selectColumn;
|
|
int8_t selected_card;
|
|
CardAnimation animation;
|
|
uint8_t* buffer;
|
|
FuriMutex* mutex;
|
|
} GameState; |