00001 
#ifndef DEF_COMMON_H
00002 
#define DEF_COMMON_H 1
00003 
00008 
#include <iostream>
00009 
#include <fstream>
00010 
#include <sstream>
00011 
#include <vector>
00012 
#include <set>
00013 
#include <map>
00014 
#include <math.h>
00015 
#include <string>
00016 
#include <dlfcn.h>
00017 
#include <SDL.h>
00018 
#include <SDL_mixer.h>
00019 
#ifdef SDL_IMAGE
00020 
#include <SDL_image.h>
00021 
#endif
00022 
#include <boost/shared_ptr.hpp>
00023 
00024 
using namespace std;
00025 
00026 
class Object;
00027 
class Character;
00028 
class Player;
00029 
class Monster;
00030 
class ImageCache;
00031 
class SoundCache;
00032 
class GraphicsEngine;
00033 
class SoundsEngine;
00034 
class ObjectsPool;
00035 
class Background;
00036 
class Scenario;
00037 
class InputHandler;
00038 
class PhysicHandler;
00039 
class Font;
00040 
class Event;
00041 
class Weapon;
00042 
class EmptyAnimation;
00043 
class Animation;
00044 
class Menu;
00045 
class Box;
00046 
class Editor;
00047 
00048 
typedef std::set<Object *>::iterator object_iterator;
00049 
typedef std::set<Character *>::iterator character_iterator;
00050 
typedef std::set<Player *>::iterator player_iterator;
00051 
typedef std::set<Monster *>::iterator monster_iterator;
00052 
typedef std::set<Object *>::reverse_iterator object_riterator;
00053 
typedef std::set<Character *>::reverse_iterator character_riterator;
00054 
typedef boost::shared_ptr<EmptyAnimation> EmptyAnimationPtr;
00055 
typedef std::map<string,string> ParameterMap;
00056 
00057 
00058 
#define DATA_LVLFPS 6
00059 
#define DATA_LVLDUR 1000
00060 
#define DATA_LVLPLAYER_W 25
00061 
#define DATA_LVLPLAYER_H 30
00062 
00063 
00064 
#define NOTHING                 0x00000000
00065 
#define ALL                     0xFFFFFFFF
00066 
#define DIR_RIGHT               0x00000001
00067 
#define DIR_LEFT                0x00000002
00068 
#define DIR_UP                  0x00000004
00069 
#define DIR_DOWN                0x00000008
00070 
#define DIR_ALL                 0x0000000F
00071 
#define DIR_UPR                 0x00000005
00072 
#define DIR_UPL                 0x00000006
00073 
#define DIR_DWR                 0x00000009
00074 
#define DIR_DWL                 0x0000000A
00075 
#define DIR_LR                  0x00000003
00076 
00077 
00078 
#define GAME_PAUSED             0x00000001
00079 
#define GAME_PLAY               0x00000002
00080 
#define GAME_MENU               0x00000004
00081 
#define GAME_EDIT               0x00000008
00082 
#define GAME_EDIT_NOANIM        0x00000010
00083 
#define GAME_TEXT_INPUT         0x00000020
00084 
00085 
00086 
#define ATYPE_ONCE              0x00000001
00087 
#define ATYPE_LOOP              0x00000002
00088 
#define ATYPE_SWING             0x00000004
00089 
#define ATYPE_STEP              0x00000008
00090 
#define ATYPE_ONCE_REV          0x00000010
00091 
#define ATYPE_LOOP_REV          0x00000020
00092 
#define ATYPE_SWING_REV         0x00000040
00093 
#define ATYPE_STEP_REV          0x00000080
00094 
#define ATYPE_ALL_ONCE          0x00000011
00095 
#define ATYPE_ALL_LOOP          0x00000022
00096 
#define ATYPE_ALL_SWING         0x00000044
00097 
#define ATYPE_ALL_NORMAL        0x0000000F
00098 
#define ATYPE_ALL_REV           0x000000F0
00099 
#define ATYPE_ST_SWITCH         0x00000100
00100 
#define ATYPE_ONCE_S            0x00000101
00101 
#define ATYPE_ONCE_S_REV        0x00000110
00102 
00103 
00104 
#define DESC_NONE               0x00000000
00105 
#define DESC_LVLANIM            0x00000001
00106 
#define DESC_ANIM_LVLANIM       0x00000002     
00107 
00108 
enum ConfigKey {
00109     KEY_START,
00110     KEY_LEFT,
00111     KEY_RIGHT,
00112     KEY_UP,
00113     KEY_DOWN,
00114     KEY_SP1,
00115     KEY_SP2,
00116     KEY_ACT,
00117     KEY_USE,
00118     KEY_DROP,
00119     KEY_SWITCH,
00120     KEY_PAUSE,
00121     KEY_MENU,
00122     KEY_FPS,
00123     KEY_BAR,
00124     KEY_FULL,
00125     KEY_QUIT,
00126     KEY_NOANIM,
00127     KEY_DEBUG,
00128     KEY_ADD_SEL,
00129     KEY_RM_SEL,
00130     KEY_DEL
00131 };
00132 
00133 
enum BasePointType {
00134     BP_LU,
00135     BP_LM,
00136     BP_LD,
00137     BP_MU,
00138     BP_MM,
00139     BP_MD,
00140     BP_RU,
00141     BP_RM,
00142     BP_RD
00143 };
00144 
00145 
enum AllignType {
00146     AT_LU,
00147     AT_LM,
00148     AT_LD,
00149     AT_MU,
00150     AT_MM,
00151     AT_MD,
00152     AT_RU,
00153     AT_RM,
00154     AT_RD
00155 };
00156 
00160 struct Hit {
00161    Uint16 enter;
00162    Uint16 touch;
00163 };
00164 
00168 struct Config {
00169     Uint16 width;
00170     Uint16 height;
00171     
bool full;
00172     Uint16 audio_format;
00173     
int audio_rate;
00174     
int audio_channels;
00175     string datadir;
00176     string map;
00177     string scenario;
00178     string anim_file;
00179     SDLKey keybind[30];
00180     
double lvlscale;
00181     
bool onlymap;
00182 };
00183 
00187 struct Frame {
00188         
Frame(SDL_Surface*,SDL_Rect);
00189         
Frame();
00190         SDL_Surface* image;
00191         
00192         SDL_Rect    pos;
00193 };
00194 
00198 struct Image {
00199     SDL_Surface* surface;
00200     std::vector<SDL_Rect> description;
00201 };
00202 
00203 
00205 
00206 
void startScreen();
00209 
int quitGame(
int);
00210 
00217 
int readConfig(
const string& filename);
00219 ParameterMap getFileParameters(
const string& filelist);
00221 ParameterMap getParameters(
const string& parameterlist, 
char delim=
',', 
char delimsub=
'=');
00223 string putParameters(
const ParameterMap& parameters, 
char delim=
',', 
char delimsub=
'=');
00225 
bool hasParam(
const ParameterMap& parameters, 
const string& str);
00228 Uint16 getDirFromString(
const string& str);
00229 
00231 
void parseInput(
int argc,
char* argv[]);
00233 
void usage();
00235 string itos(
int);
00237 
int addAbsolute(
int,
int);
00239 
double calcFPS(Uint16 frames, Uint32 duration);
00240 
00242 
void setGameMode(Uint8);
00244 
void addGameMode(Uint8);
00246 
void removeGameMode(Uint8);
00248 
Menu* setMenu(
Menu* newmenu);
00250 
Menu* closeMenu();
00252 
void closeMenus();
00253 
00255 
00256 
00258 
00259 
extern Config config;
00261 
extern ImageCache* imgcache;
00263 
extern SoundCache* sndcache;
00265 
extern GraphicsEngine* gfxeng;
00267 
extern SoundsEngine* sfxeng;
00269 
extern Scenario* scenario;
00271 
extern InputHandler* input;
00273 
extern Font* font;
00275 
extern Font* font2;
00277 
extern Uint8 game_mode;
00279 
extern Menu* menu;
00281 
extern Editor* editor;
00283 
00284 
#endif