game.h
上传用户:tany51
上传日期:2013-06-12
资源大小:1397k
文件大小:6k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*
  2.  * Copyright (C) 2000,2001 Onlyer (onlyer@263.net)
  3.  *
  4.  * This program is free software; you can redistribute it and/or
  5.  * modify it under the terms of the GNU General Public License
  6.  * as published by the Free Software Foundation; either version 2
  7.  * of the License, or (at your option) any later version.
  8.  *
  9.  * This program is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  * GNU General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU General Public License
  15.  * along with this program; if not, write to the Free Software
  16.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  17.  */
  18. #ifndef INCLUDED_GAME_H
  19. #define INCLUDED_GAME_H
  20. #include "d2gs.h"
  21. #include "connection.h"
  22. #include "bit.h"
  23. typedef struct
  24. {
  25. unsigned char class;
  26. unsigned char level;
  27. char const * charname;
  28. } t_game_charinfo;
  29. typedef struct
  30. {
  31. unsigned int id;
  32. char const  * name;
  33. char const  * pass;
  34. char const  * desc;
  35. int create_time;
  36. int lastaccess_time;
  37. unsigned int created;
  38. unsigned int gameflag;
  39. unsigned int charlevel;
  40. unsigned int leveldiff;
  41. unsigned int d2gs_gameid;
  42. unsigned int maxchar;
  43. unsigned int currchar;
  44. t_list * charlist;
  45. t_d2gs * d2gs;
  46. } t_game;
  47. #define D2_GAMEFLAG_BETA 0x00000001
  48. #define D2_GAMEFLAG_RELEASE 0x00000002
  49. #define D2_GAMEFLAG_TEMPLATE 0x00000008
  50. #define D2_GAMEFLAG_SINGLE 0x00000010
  51. #define D2_GAMEFLAG_HARDCORE 0x00000800
  52. #define D2_GAMEFLAG_EXPANSION 0x00100000
  53. #define D2_GAMEFLAG_LADDER 0x00200000
  54. #define gameflag_get_difficulty(gameflag) ( (gameflag >> 0x0C) & 0x07 )
  55. #define gameflag_get_expansion(gameflag) BIT_TST_FLAG(gameflag, D2_GAMEFLAG_EXPANSION)
  56. #define gameflag_get_ladder(gameflag) BIT_TST_FLAG(gameflag, D2_GAMEFLAG_LADDER)
  57. #define gameflag_get_hardcore(gameflag) BIT_TST_FLAG(gameflag, D2_GAMEFLAG_HARDCORE)
  58. #define gameflag_get_beta(gameflag) BIT_TST_FLAG(gameflag, D2_GAMEFLAG_BETA) /* true if the game is a beta version with limitations */
  59. #define gameflag_get_release(gameflag) BIT_TST_FLAG(gameflag, D2_GAMEFLAG_RELEASE) /* this bit must always not be zero */
  60. #define gameflag_get_single(gameflag) BIT_TST_FLAG(gameflag, D2_GAMEFLAG_SINGLE) /* true if the game is single mode without party */
  61. #define gameflag_get_template(gameflag) BIT_TST_FLAG(gameflag, D2_GAMEFLAG_TEMPLATE) /* true if use template settings */
  62. #define gameflag_set_difficulty(gameflag,n) ( gameflag |= ((n & 0x07) << 0x0C) )
  63. #define gameflag_set_expansion(gameflag,n)  BIT_SET_CLR_FLAG(gameflag, D2_GAMEFLAG_EXPANSION, n) 
  64. #define gameflag_set_ladder(gameflag,n)     BIT_SET_CLR_FLAG(gameflag, D2_GAMEFLAG_LADDER, n)
  65. #define gameflag_set_hardcore(gameflag,n)   BIT_SET_CLR_FLAG(gameflag, D2_GAMEFLAG_HARDCORE, n) 
  66. #define gameflag_create(l,e,h,d) (0x04|(e?D2_GAMEFLAG_EXPANSION:0) | (h?D2_GAMEFLAG_HARDCORE:0) | ((d & 0x07) << 0x0c) | (l?D2_GAMEFLAG_LADDER:0))
  67. extern t_list * d2cs_gamelist(void);
  68. extern int d2cs_gamelist_destroy(void);
  69. extern int d2cs_gamelist_create(void);
  70. extern t_game * d2cs_gamelist_find_game(char const * gamename);
  71. extern t_game * gamelist_find_game_by_id(unsigned int id);
  72. extern t_game * gamelist_find_game_by_d2gs_and_id(unsigned int d2gs_id, unsigned int d2gs_gameid);
  73. extern void d2cs_gamelist_check_voidgame(void);
  74. extern t_game * d2cs_game_create(char const * gamename, char const * gamepass, char const * gamedesc,
  75. unsigned int gameflag);
  76. extern int game_destroy(t_game * game);
  77. extern int game_add_character(t_game * game, char const * charname, 
  78. unsigned char class, unsigned char level);
  79. extern int game_del_character(t_game * game, char const * charname);
  80. extern t_d2gs * game_get_d2gs(t_game const * game);
  81. extern int game_set_d2gs(t_game * game, t_d2gs * gs);
  82. extern int game_set_d2gs_gameid(t_game * game, unsigned int gameid);
  83. extern unsigned int game_get_d2gs_gameid(t_game const * game);
  84. extern int game_set_id(t_game * game, unsigned int id);
  85. extern unsigned int d2cs_game_get_id(t_game const * game);
  86. extern int game_set_created(t_game * game, unsigned int created);
  87. extern unsigned int game_get_created(t_game const * game);
  88. extern int game_set_leveldiff(t_game * game, unsigned int leveldiff);
  89. extern int game_set_charlevel(t_game * game, unsigned int charlevel);
  90. extern unsigned int game_get_charlevel(t_game const * game);
  91. extern unsigned int game_get_leveldiff(t_game const * game);
  92. extern unsigned int game_get_maxlevel(t_game const * game);
  93. extern unsigned int game_get_minlevel(t_game const * game);
  94. extern int game_set_gameflag_ladder(t_game * game, unsigned int ladder);
  95. extern int game_set_gameflag_expansion(t_game * game, unsigned int expansion);
  96. extern int game_set_gameflag_hardcore(t_game * game, unsigned int hardcore);
  97. extern int game_set_gameflag_difficulty(t_game * game, unsigned int difficulty);
  98. extern unsigned int game_get_gameflag_ladder(t_game const * game);
  99. extern unsigned int game_get_gameflag_expansion(t_game const * game);
  100. extern unsigned int game_get_gameflag_hardcore(t_game const * game);
  101. extern unsigned int game_get_gameflag_difficulty(t_game const * game);
  102. extern int game_set_maxchar(t_game * game, unsigned int maxchar);
  103. extern unsigned int game_get_maxchar(t_game const * game);
  104. extern unsigned int game_get_currchar(t_game const * game);
  105. extern char const * d2cs_game_get_name(t_game const * game);
  106. extern char const * d2cs_game_get_pass(t_game const * game);
  107. extern char const * game_get_desc(t_game const * game);
  108. extern unsigned int game_get_gameflag(t_game const * game);
  109. extern int d2cs_game_get_create_time(t_game const * game);
  110. extern int game_set_create_time(t_game * game,int create_time);
  111. extern t_list * game_get_charlist(t_game const * game);
  112. extern t_game * gamelist_find_character(char const * charname);
  113. extern unsigned int gamelist_get_totalgame(void);
  114. extern t_elem const * gamelist_get_curr_elem(void);
  115. extern void gamelist_set_curr_elem(t_elem const * elem);
  116. #endif