Atrinik Client 2.5
include/main.h
Go to the documentation of this file.
00001 /************************************************************************
00002 *            Atrinik, a Multiplayer Online Role Playing Game            *
00003 *                                                                       *
00004 *    Copyright (C) 2009-2011 Alex Tokar and Atrinik Development Team    *
00005 *                                                                       *
00006 * Fork from Daimonin (Massive Multiplayer Online Role Playing Game)     *
00007 * and Crossfire (Multiplayer game for X-windows).                       *
00008 *                                                                       *
00009 * This program is free software; you can redistribute it and/or modify  *
00010 * it under the terms of the GNU General Public License as published by  *
00011 * the Free Software Foundation; either version 2 of the License, or     *
00012 * (at your option) any later version.                                   *
00013 *                                                                       *
00014 * This program is distributed in the hope that it will be useful,       *
00015 * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
00017 * GNU General Public License for more details.                          *
00018 *                                                                       *
00019 * You should have received a copy of the GNU General Public License     *
00020 * along with this program; if not, write to the Free Software           *
00021 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.             *
00022 *                                                                       *
00023 * The author can be reached at admin@atrinik.org                        *
00024 ************************************************************************/
00025 
00030 #ifndef MAIN_H
00031 #define MAIN_H
00032 
00033 #define HUGE_BUF 4096
00034 #define MAX_BUF 256
00035 
00036 #define FRAMES_PER_SECOND 30
00037 #define COLOR_BUF 7
00038 
00039 #define SDL_DEFAULT_REPEAT_INTERVAL 30
00040 
00041 /* For hash table (bmap, ...) */
00042 #define MAXSTRING 20
00043 
00045 typedef struct server_struct
00046 {
00048     struct server_struct *next;
00049 
00051     char *ip;
00052 
00054     char *name;
00055 
00057     char *version;
00058 
00060     char *desc;
00061 
00063     int player;
00064 
00066     int port;
00067 } server_struct;
00068 
00072 typedef struct msg_anim_struct
00073 {
00075     char message[MAX_BUF];
00076 
00078     uint32 tick;
00079 
00081     char color[COLOR_BUF];
00082 } msg_anim_struct;
00083 
00084 extern struct msg_anim_struct msg_anim;
00085 
00086 #define FILE_ATRINIK_P0 "data/atrinik.p0"
00087 
00088 /* Face requested from server - do it only one time */
00089 #define FACE_REQUESTED      16
00090 
00091 typedef struct _face_struct
00092 {
00093     /* Our face data. if != null, face is loaded */
00094     struct _Sprite *sprite;
00095 
00096     /* Our face name. if != null, face is requested */
00097     char *name;
00098 
00099     /* Checksum of face */
00100     uint32 checksum;
00101 
00102     int flags;
00103 }_face_struct;
00104 
00105 #define NUM_STATS 7
00106 
00107 typedef struct spell_entry_struct
00108 {
00110     char name[MAX_BUF];
00111 
00113     char icon_name[MAX_BUF];
00114 
00116     char desc[HUGE_BUF];
00117 
00119     int icon;
00120 
00122     int cost;
00123 
00129     char path;
00130 
00132     uint8 known;
00133 
00135     uint8 type;
00136 } spell_entry_struct;
00137 
00141 #define SPELL_PATH_NUM 21
00142 
00143 typedef struct skill_entry_struct
00144 {
00146     char name[MAX_BUF];
00147 
00149     char icon_name[MAX_BUF];
00150 
00152     char desc[HUGE_BUF];
00153 
00155     int icon;
00156 
00158     uint8 known;
00159 
00160     int level;
00161 
00162     sint64 exp;
00163 } skill_entry_struct;
00164 
00165 #define SKILL_LIST_TYPES 7
00166 
00168 typedef struct _fire_mode
00169 {
00171     int item;
00172 
00174     int amun;
00175 
00176     spell_entry_struct *spell;
00177 
00179     skill_entry_struct *skill;
00180 
00182     char name[128];
00183 }_fire_mode;
00184 
00186 typedef struct help_files_struct
00187 {
00189     char helpname[MAX_BUF];
00190 
00192     char title[MAX_BUF];
00193 
00195     char message[HUGE_BUF * 12];
00196 
00198     int dm_only;
00199 
00201     int autocomplete;
00202 
00204     struct help_files_struct *next;
00205 } help_files_struct;
00206 
00207 extern help_files_struct *help_files;
00208 
00209 typedef enum _fire_mode_id
00210 {
00211     FIRE_MODE_BOW,
00212     FIRE_MODE_SPELL,
00213     FIRE_MODE_WAND,
00214     FIRE_MODE_SKILL,
00215     FIRE_MODE_THROW,
00216     FIRE_MODE_INIT
00217 }_fire_mode_id;
00218 
00220 #define FIRE_ITEM_NO -1
00221 
00223 typedef enum _game_status
00224 {
00226     GAME_STATUS_INIT,
00227 
00229     GAME_STATUS_META,
00230 
00232     GAME_STATUS_START,
00233 
00235     GAME_STATUS_WAITLOOP,
00236 
00238     GAME_STATUS_STARTCONNECT,
00239 
00241     GAME_STATUS_CONNECT,
00242 
00244     GAME_STATUS_VERSION,
00245 
00247     GAME_STATUS_SETUP,
00248 
00250     GAME_STATUS_WAITSETUP,
00251 
00253     GAME_STATUS_REQUEST_FILES,
00254 
00256     GAME_STATUS_ADDME,
00257 
00259     GAME_STATUS_LOGIN,
00260 
00262     GAME_STATUS_NAME,
00263 
00265     GAME_STATUS_PSWD,
00266 
00268     GAME_STATUS_VERIFYPSWD,
00269 
00271     GAME_STATUS_NEW_CHAR,
00272 
00275     GAME_STATUS_WAITFORPLAY,
00276 
00278     GAME_STATUS_QUIT,
00279 
00281     GAME_STATUS_PLAY
00282 } _game_status;
00283 
00284 extern int f_custom_cursor;
00285 extern int x_custom_cursor;
00286 extern int y_custom_cursor;
00287 
00288 extern _game_status GameStatus;
00289 extern uint32 LastTick;
00290 extern server_struct *selected_server;
00291 extern int map_udate_flag, map_redraw_flag;
00292 
00293 enum
00294 {
00295     ESC_MENU_KEYS,
00296     ESC_MENU_SETTINGS,
00297     ESC_MENU_LOGOUT,
00298     ESC_MENU_BACK,
00299 
00300     /* Last index */
00301     ESC_MENU_INDEX
00302 };
00303 
00304 /* With this, we overrule bitmap loading params.
00305  * For example, we need for fonts an attached palette, and not the native vid mode */
00306 
00308 #define SURFACE_FLAG_PALETTE    1
00309 
00310 #define SURFACE_FLAG_COLKEY_16M 2
00311 #define SURFACE_FLAG_DISPLAYFORMAT 4
00312 #define SURFACE_FLAG_DISPLAYFORMATALPHA 8
00313 
00315 typedef enum _pic_type
00316 {
00317     PIC_TYPE_DEFAULT, PIC_TYPE_PALETTE, PIC_TYPE_TRANS, PIC_TYPE_ALPHA
00318 } _pic_type;
00319 
00321 typedef struct _bitmap_name
00322 {
00324     char *name;
00325 
00327     _pic_type type;
00328 } _bitmap_name;
00329 
00330 typedef enum _bitmap_index
00331 {
00332     BITMAP_INTRO,
00333 
00334     BITMAP_DOLL,
00335 
00336     BITMAP_LOGIN_INP,
00337     BITMAP_INVSLOT,
00338 
00339     /* Status bars */
00340     BITMAP_HP,
00341     BITMAP_SP,
00342     BITMAP_GRACE,
00343     BITMAP_FOOD,
00344     BITMAP_HP_BACK,
00345     BITMAP_SP_BACK,
00346     BITMAP_GRACE_BACK,
00347     BITMAP_FOOD_BACK,
00348 
00349     BITMAP_APPLY,
00350     BITMAP_UNPAID,
00351     BITMAP_CURSED,
00352     BITMAP_DAMNED,
00353     BITMAP_LOCK,
00354     BITMAP_MAGIC,
00355     BITMAP_FIRE_READY,
00356 
00357     BITMAP_RANGE,
00358     BITMAP_RANGE_MARKER,
00359     BITMAP_RANGE_SKILL,
00360     BITMAP_RANGE_SKILL_NO,
00361     BITMAP_RANGE_THROW,
00362     BITMAP_RANGE_THROW_NO,
00363     BITMAP_RANGE_TOOL,
00364     BITMAP_RANGE_TOOL_NO,
00365     BITMAP_RANGE_WIZARD,
00366     BITMAP_RANGE_WIZARD_NO,
00367 
00368     BITMAP_CMARK_START,
00369     BITMAP_CMARK_END,
00370     BITMAP_CMARK_MIDDLE,
00371 
00372     BITMAP_TWIN_SCROLL,
00373     BITMAP_INV_SCROLL,
00374     BITMAP_BELOW_SCROLL,
00375 
00376     BITMAP_NUMBER,
00377     BITMAP_INVSLOT_U,
00378 
00379     BITMAP_DEATH,
00380     BITMAP_SLEEP,
00381     BITMAP_CONFUSE,
00382     BITMAP_PARALYZE,
00383     BITMAP_SCARED,
00384     BITMAP_BLIND,
00385 
00386     BITMAP_QUICKSLOTS,
00387     BITMAP_QUICKSLOTSV,
00388     BITMAP_INVENTORY,
00389     BITMAP_INV_BG,
00390 
00391     BITMAP_EXP_BORDER,
00392     BITMAP_EXP_SLIDER,
00393     BITMAP_EXP_BUBBLE1,
00394     BITMAP_EXP_BUBBLE2,
00395 
00396     BITMAP_STATS_BG,
00397     BITMAP_BELOW,
00398 
00399     BITMAP_TARGET_ATTACK,
00400     BITMAP_TARGET_TALK,
00401     BITMAP_TARGET_NORMAL,
00402 
00403     BITMAP_WARN_HP,
00404     BITMAP_WARN_FOOD,
00405 
00406     BITMAP_RANGE_BUTTONS_OFF,
00407     BITMAP_RANGE_BUTTONS_LEFT,
00408     BITMAP_RANGE_BUTTONS_RIGHT,
00409 
00410     BITMAP_TARGET_HP,
00411     BITMAP_TARGET_HP_B,
00412 
00413     BITMAP_TEXTWIN_MASK,
00414     BITMAP_SLIDER_UP,
00415     BITMAP_SLIDER_DOWN,
00416     BITMAP_SLIDER,
00417 
00418     BITMAP_EXP_SKILL_BORDER,
00419     BITMAP_EXP_SKILL_LINE,
00420     BITMAP_EXP_SKILL_BUBBLE,
00421 
00422     BITMAP_TRAPPED,
00423     BITMAP_PRAY,
00424     BITMAP_BOOK,
00425     BITMAP_REGION_MAP,
00426     BITMAP_SLIDER_LONG,
00427     BITMAP_INVSLOT_MARKED,
00428     BITMAP_MSCURSOR_MOVE,
00429     BITMAP_RESIST_BG,
00430     BITMAP_MAIN_LVL_BG,
00431     BITMAP_SKILL_EXP_BG,
00432     BITMAP_REGEN_BG,
00433     BITMAP_SKILL_LVL_BG,
00434     BITMAP_MENU_BUTTONS,
00435     BITMAP_PLAYER_INFO,
00436     BITMAP_TARGET_BG,
00437     BITMAP_TEXTINPUT,
00438 
00439     BITMAP_SQUARE_HIGHLIGHT,
00440     BITMAP_SERVERS_BG,
00441     BITMAP_SERVERS_BG_OVER,
00442     BITMAP_NEWS_BG,
00443     BITMAP_EYES,
00444     BITMAP_POPUP,
00445     BITMAP_ARROW_UP,
00446     BITMAP_ARROW_UP2,
00447     BITMAP_ARROW_DOWN,
00448     BITMAP_ARROW_DOWN2,
00449     BITMAP_BUTTON_ROUND,
00450     BITMAP_BUTTON_ROUND_DOWN,
00451     BITMAP_BUTTON_RECT,
00452     BITMAP_BUTTON_RECT_HOVER,
00453     BITMAP_BUTTON_RECT_DOWN,
00454     BITMAP_MAP_MARKER,
00455     BITMAP_LOADING_OFF,
00456     BITMAP_LOADING_ON,
00457     BITMAP_BUTTON,
00458     BITMAP_BUTTON_DOWN,
00459     BITMAP_CHECKBOX,
00460     BITMAP_CHECKBOX_ON,
00461     BITMAP_CONTENT,
00462     BITMAP_ICON_MUSIC,
00463     BITMAP_ICON_MAGIC,
00464     BITMAP_ICON_SKILL,
00465     BITMAP_ICON_PARTY,
00466     BITMAP_ICON_MAP,
00467     BITMAP_ICON_COGS,
00468     BITMAP_ICON_QUEST,
00469     BITMAP_FPS,
00470 
00471     BITMAP_INIT
00472 }_bitmap_index;
00473 
00474 /* For custom cursors */
00475 enum
00476 {
00477     MSCURSOR_MOVE = 1
00478 };
00479 
00480 extern char text_input_string[MAX_INPUT_STRING];
00481 extern int text_input_count;
00482 extern int text_input_string_flag;
00483 extern int text_input_string_end_flag;
00484 extern int text_input_string_esc_flag;
00485 uint32 text_input_opened;
00486 
00487 /* Range table */
00488 extern struct _fire_mode fire_mode_tab[FIRE_MODE_INIT];
00489 extern int RangeFireMode;
00490 
00491 extern struct _Sprite *Bitmaps[];
00492 
00493 /* Face data */
00494 extern _face_struct FaceList[MAX_FACE_TILES];
00495 
00496 extern SDL_Surface *ScreenSurface;
00497 
00498 /* Server's attributes */
00499 extern struct sockaddr_in insock;
00500 
00501 #endif