taisei/src/progress.h

64 lines
1.5 KiB
C
Raw Normal View History

/*
2017-09-12 03:28:15 +02:00
* This software is licensed under the terms of the MIT-License
* See COPYING for further information.
* ---
2018-01-04 18:14:31 +01:00
* Copyright (c) 2011-2018, Lukas Weber <laochailan@web.de>.
* Copyright (c) 2012-2018, Andrei Alexeyev <akari@alienslab.net>.
2017-09-12 03:28:15 +02:00
*/
2017-09-27 14:14:53 +02:00
#pragma once
#include "taisei.h"
2017-02-11 12:38:50 +01:00
#include <stdbool.h>
#include <SDL.h>
#include "ending.h"
2017-04-18 21:48:18 +02:00
#define PROGRESS_FILE "storage/progress.dat"
#define PROGRESS_MAXFILESIZE 4096
#ifdef DEBUG
// #define PROGRESS_UNLOCK_ALL
#endif
typedef enum ProgfileCommand {
// do not reorder this!
PCMD_UNLOCK_STAGES = 0x00,
PCMD_UNLOCK_STAGES_WITH_DIFFICULTY = 0x01,
PCMD_HISCORE = 0x02,
PCMD_STAGE_PLAYINFO = 0x03,
PCMD_ENDINGS = 0x04,
PCMD_GAME_SETTINGS = 0x05,
2017-10-10 08:13:07 +02:00
PCMD_GAME_VERSION = 0x06,
} ProgfileCommand;
2017-02-11 12:38:50 +01:00
typedef struct StageProgress {
// keep this struct small if you can
// see stage_get_progress_from_info() in stage.c for more information
unsigned int unlocked : 1;
2017-02-11 12:38:50 +01:00
uint32_t num_played;
uint32_t num_cleared;
2017-02-11 12:38:50 +01:00
} StageProgress;
struct UnknownCmd;
2017-03-20 06:29:22 +01:00
typedef struct GlobalProgress {
uint32_t hiscore;
uint32_t achieved_endings[NUM_ENDINGS];
struct UnknownCmd *unknown;
struct {
uint8_t difficulty;
uint8_t character;
uint8_t shotmode;
} game_settings;
2017-03-20 06:29:22 +01:00
} GlobalProgress;
extern GlobalProgress progress;
void progress_load(void);
void progress_save(void);
void progress_unload(void);