unleashed-firmware/applications/external/solitaire/defines.h
2023-03-15 01:25:18 +03:00

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;