taisei/src/config.h
2012-08-10 23:08:51 +03:00

85 lines
1.5 KiB
C

/*
* This software is licensed under the terms of the MIT-License
* See COPYING for further information.
* ---
* Copyright (C) 2011, Lukas Weber <laochailan@web.de>
* Copyright (C) 2012, Alexeyew Andrew <http://akari.thebadasschoobs.org/>
*/
#ifndef CONFIG_H
#define CONFIG_H
#include <SDL/SDL_keysym.h>
typedef struct Config {
int intval[64];
char* strval[64];
} Config;
extern Config tconfig;
/*
* <Akari> IMPORTANT: When adding new controls, ALWAYS add them RIGHT AFTER the last KEY_* constant.
* Not doing so will likely break replays! And don't forget to update CONFIG_KEY_LAST below.
*/
typedef enum ConfigKey {
KEY_UP = 0,
KEY_DOWN,
KEY_LEFT,
KEY_RIGHT,
KEY_FOCUS,
KEY_SHOT,
KEY_BOMB,
KEY_FULLSCREEN,
KEY_SCREENSHOT,
KEY_SKIP,
FULLSCREEN,
NO_SHADER,
NO_AUDIO,
NO_STAGEBG,
NO_STAGEBG_FPSLIMIT,
SAVE_RPY,
VID_WIDTH,
VID_HEIGHT,
PLAYERNAME
} ConfigKey;
typedef enum ConfigKeyType {
CFGT_INT,
CFGT_STRING,
CFGT_KEYBINDING
} ConfigKeyType;
typedef struct ConfigEntry {
ConfigKeyType type;
ConfigKey key;
char *name;
} ConfigEntry;
extern ConfigEntry configdefs[];
Config tconfig;
#define CONFIG_KEY_FIRST KEY_UP
#define CONFIG_KEY_LAST KEY_SKIP
#define CONFIG_LOAD_BUFSIZE 256
int config_sym2key(int sym);
void config_preset(void);
void config_load(char *filename);
void config_save(char *filename);
ConfigEntry* config_findentry(char *name);
int config_intval(char*);
int config_intval_p(ConfigEntry*);
char* config_strval(char*);
char* config_strval_p(ConfigEntry*);
#endif