ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/player.h
(Generate patch)

Comparing deliantra/server/include/player.h (file contents):
Revision 1.24 by root, Fri Dec 15 00:14:12 2006 UTC vs.
Revision 1.32 by root, Sat Dec 23 06:21:02 2006 UTC

1
2/* 1/*
3 CrossFire, A Multiplayer game for X-windows 2 CrossFire, A Multiplayer game for X-windows
4 3
5 Copyright (C) 2002 Mark Wedel & Crossfire Development Team 4 Copyright (C) 2002 Mark Wedel & Crossfire Development Team
6 Copyright (C) 1992 Frank Tore Johansen 5 Copyright (C) 1992 Frank Tore Johansen
17 16
18 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software 18 along with this program; if not, write to the Free Software
20 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 20
22 The authors can be reached via e-mail at crossfire-devel@real-time.com 21 The authors can be reached via e-mail at crossfire@schmorp.de
23*/ 22*/
24 23
25#define NUM_OUTPUT_BUFS 5 24#define NUM_OUTPUT_BUFS 5
26struct Output_Buf 25struct Output_Buf
27{ 26{
109 uint32 kills; 108 uint32 kills;
110}; 109};
111 110
112ACC_CLASS (player) 111ACC_CLASS (player)
113 112
114// memsettable part of player 113struct player : zero_initialised, refcounted, attachable<player>
115struct player_pod
116{ 114{
115 player *ACC (RW, next); /* Pointer to next player, NULL if this is last */
116 client *ACC (RO, ns); /* Socket information for this player */
117 object_ptr ACC (RW, ob); /* The object representing the player */ 117 object_ptr ACC (RW, ob); /* The object representing the player */
118 maptile *loading; /* When entering a map in progress of loading, not really used */ 118 maptile *loading; /* When entering a map in progress of loading, not really used */
119 rangetype shoottype; /* Which range-attack is being used by player */ 119 rangetype shoottype; /* Which range-attack is being used by player */
120 bowtype_t bowtype; /* which firemode? */ 120 bowtype_t bowtype; /* which firemode? */
121 petmode_t petmode; /* which petmode? */ 121 petmode_t petmode; /* which petmode? */
131 sint8 ACC (RW, gen_hp); /* Bonuses to regeneration speed of hp */ 131 sint8 ACC (RW, gen_hp); /* Bonuses to regeneration speed of hp */
132 sint8 ACC (RW, gen_sp); /* Bonuses to regeneration speed of sp */ 132 sint8 ACC (RW, gen_sp); /* Bonuses to regeneration speed of sp */
133 sint8 ACC (RW, gen_sp_armour); /* Penalty to sp regen from armour */ 133 sint8 ACC (RW, gen_sp_armour); /* Penalty to sp regen from armour */
134 sint8 ACC (RW, gen_grace); /* Bonuses to regeneration speed of grace */ 134 sint8 ACC (RW, gen_grace); /* Bonuses to regeneration speed of grace */
135 sint16 ACC (RW, item_power); /* Total item power of objects equipped */ 135 sint16 ACC (RW, item_power); /* Total item power of objects equipped */
136 uint8 ACC (RW, state); /* Input state of the player (name, password, etc */
137 uint8 ACC (RW, listening); /* Which priority will be used in info_all */ 136 uint8 ACC (RW, listening); /* Which priority will be used in info_all */
138 sint8 ACC (RW, last_level); /* Last level we sent to client */ 137 sint8 ACC (RW, last_level); /* Last level we sent to client */
139 138
140 /* Try to put all the bitfields together - saves some small amount of memory */ 139 /* Try to put all the bitfields together - saves some small amount of memory */
141 uint32 ACC (RO, braced):1; /* Will not move if braced, only attack */ 140 uint32 ACC (RO, braced):1; /* Will not move if braced, only attack */
142 uint32 ACC (RO, tmp_invis):1; /* Will invis go away when we attack ? */ 141 uint32 ACC (RO, tmp_invis):1; /* Will invis go away when we attack ? */
143 uint32 ACC (RO, do_los):1; /* If true, need to call update_los() in draw(), and clear */ 142 uint32 ACC (RO, do_los):1; /* If true, need to call update_los() in draw(), and clear */
144 uint32 ACC (RO, fire_on):1; /* Player should fire object, not move */ 143 uint32 ACC (RO, fire_on):1; /* Player should fire object, not move */
145 uint32 ACC (RO, run_on):1; /* Player should keep moving in dir until run is off */ 144 uint32 ACC (RO, run_on):1; /* Player should keep moving in dir until run is off */
146 uint32 ACC (RO, has_hit):1; /* If set, weapon_sp instead of speed will count */ 145 uint32 ACC (RO, has_hit):1; /* If set, weapon_sp instead of speed will count */
147 uint32 ACC (RO, name_changed):1; /* If true, the player has set a name. */
148 uint32 ACC (RO, peaceful):1; /* If set, won't attack friendly creatures */ 146 uint32 ACC (RO, peaceful):1; /* If set, won't attack friendly creatures */
149 uint32 ACC (RO, hidden):1; /* If True, player (DM) is hidden from view */ 147 uint32 ACC (RO, hidden):1; /* If True, player (DM) is hidden from view */
150 uint32 ACC (RO, explore):1; /* if True, player is in explore mode */ 148 uint32 ACC (RO, explore):1; /* if True, player is in explore mode */
151 uint32 ACC (RO, no_shout):1; /* if True, player is *not* able to use shout command */
152 149
153 object_ptr last_skill_ob[NUM_SKILLS]; /* the exp object */ 150 object_ptr last_skill_ob[NUM_SKILLS]; /* the exp object */
154 sint64 last_skill_exp[NUM_SKILLS]; /* shadow register. if != exp. obj update client */ 151 sint64 last_skill_exp[NUM_SKILLS]; /* shadow register. if != exp. obj update client */
155 152
156 float ACC (RW, weapon_sp); /* Penalties to speed when fighting w speed >ws/10 */ 153 float ACC (RW, weapon_sp); /* Penalties to speed when fighting w speed >ws/10 */
163 uint32 ACC (RW, last_path_denied); /* Last spell denied sent to client */ 160 uint32 ACC (RW, last_path_denied); /* Last spell denied sent to client */
164 living ACC (RO, orig_stats); /* Permanent real stats of player */ 161 living ACC (RO, orig_stats); /* Permanent real stats of player */
165 living ACC (RO, last_stats); /* Last stats as sent to client */ 162 living ACC (RO, last_stats); /* Last stats as sent to client */
166 float ACC (RW, last_speed); /* Last speed as sent to client */ 163 float ACC (RW, last_speed); /* Last speed as sent to client */
167 sint16 last_resist[NROFATTACKS]; /* last resist values sent to client */ 164 sint16 last_resist[NROFATTACKS]; /* last resist values sent to client */
168 int Swap_First; /* First stat player has selected to swap */
169 object_ptr ACC (RW, last_used); /* Pointer to object last picked or applied */ 165 object_ptr ACC (RW, last_used); /* Pointer to object last picked or applied */
170 166
171 sint16 ACC (RW, bed_x), ACC (RW, bed_y); /* x,y - coordinates of respawn (savebed) */ 167 sint16 ACC (RW, bed_x), ACC (RW, bed_y); /* x,y - coordinates of respawn (savebed) */
172 char ACC (RW, savebed_map)[MAX_BUF]; /* map where player will respawn after death */ 168 char ACC (RW, savebed_map)[MAX_BUF]; /* map where player will respawn after death */
173 char ACC (RW, maplevel)[MAX_BUF]; /* On which level is the player? */ 169 char ACC (RW, maplevel)[MAX_BUF]; /* On which level is the player? */
181 sint8 levsp[11]; /* Same for sp */ 177 sint8 levsp[11]; /* Same for sp */
182 sint8 levgrace[11]; /* And same for grace */ 178 sint8 levgrace[11]; /* And same for grace */
183 179
184 char ACC (RW, killer)[64]; /* Who killed this player. */ 180 char ACC (RW, killer)[64]; /* Who killed this player. */
185 181
186 char write_buf[MAX_BUF]; /* Holds arbitrary input from client */ 182 char write_buf[MAX_BUF]; /* Holds arbitrary input from client */ /* should go */
187 char input_buf[MAX_BUF]; /* Holds command to run */
188 char ACC (RW, password)[16]; /* 2 (seed) + 11 (crypted) + 1 (EOS) + 2 (safety) = 16 */ 183 char ACC (RW, password)[16]; /* 2 (seed) + 11 (crypted) + 1 (EOS) + 2 (safety) = 16 */
189 184
190 time_t ACC (RW, last_save_time); 185 time_t ACC (RW, last_save_time);
191 uint32 ACC (RW, last_save_tick); 186 uint32 ACC (RW, last_save_tick);
192 partylist *ACC (RW, party); /* Party this player is part of */ 187 partylist *ACC (RW, party); /* Party this player is part of */
201 object_ptr ACC (RW, mark); /* marked object */ 196 object_ptr ACC (RW, mark); /* marked object */
202 /* Special DM fields */ 197 /* Special DM fields */
203 tag_t *stack_items; /* Item stack for patch/dump/... commands */ 198 tag_t *stack_items; /* Item stack for patch/dump/... commands */
204 int ACC (RW, stack_position); /* Current stack position, 0 for no item */ 199 int ACC (RW, stack_position); /* Current stack position, 0 for no item */
205 sint8 blocked_los[MAP_CLIENT_X][MAP_CLIENT_Y]; /* array showing what spaces */ 200 sint8 blocked_los[MAP_CLIENT_X][MAP_CLIENT_Y]; /* array showing what spaces */
206 /* the player can see. For maps smaller than */ 201 /* the player can see. For maps smaller than */
207 /* MAP_CLIENT_.., the upper left is used */ 202 /* MAP_CLIENT_.., the upper left is used */
208};
209 203
210struct player : zero_initialised, attachable<player>, player_pod 204 shstr ACC (RW, invis_race); /* What race invisible to? */
211{ 205 bool ACC (RW, enable_save);
212 player *next; /* Pointer to next player, NULL if this is last */
213 client_socket *ACC (RO, socket); /* Socket information for this player */
214 Output_Buf outputs[NUM_OUTPUT_BUFS]; /* holds output strings to client */ 206 Output_Buf outputs[NUM_OUTPUT_BUFS]; /* holds output strings to client */
215 shstr invis_race; /* What race invisible to? */
216 207
217 void clear () 208 static player *create ();
218 { 209 static player *load (const char *path);
219 memset (static_cast < player_pod * >(this), 0, sizeof (player_pod)); 210 void save (bool final = false);
220 attachable_clear ();
221 invis_race = 0;
222 211
223 for (int i = 0; i < NUM_OUTPUT_BUFS; i++) 212 void connect (client *ns);
224 outputs[i].buf = 0;
225 }
226};
227 213
214 ~player ();
215
216private:
217 void set_object (object *op);
218 player ();
219};
220

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines