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

Comparing deliantra/server/include/object.h (file contents):
Revision 1.122 by root, Mon May 14 21:32:26 2007 UTC vs.
Revision 1.125 by root, Sat May 19 00:08:11 2007 UTC

297 { 297 {
298 if (!flag [FLAG_REMOVED]) 298 if (!flag [FLAG_REMOVED])
299 do_remove (); 299 do_remove ();
300 } 300 }
301 301
302 // move this object to the top of its env's inventory to speed up
303 // searches for it.
304 MTH object *inv_splay ()
305 {
306 if (env && env->inv != this)
307 {
308 if (above) above->below = below;
309 if (below) below->above = above;
310
311 above = 0;
312 below = env->inv;
313 below->above = this;
314 env->inv = this;
315 }
316
317 return this;
318 }
319
320 static bool can_merge_slow (object *op1, object *op2); 302 static bool can_merge_slow (object *op1, object *op2);
321 303
322 // this is often used in time-critical code, so optimise 304 // this is often used in time-critical code, so optimise
323 MTH static bool can_merge (object *op1, object *op2) 305 MTH static bool can_merge (object *op1, object *op2)
324 { 306 {
328 } 310 }
329 311
330 MTH void set_owner (object *owner); 312 MTH void set_owner (object *owner);
331 MTH void set_speed (float speed); 313 MTH void set_speed (float speed);
332 MTH bool change_weapon (object *ob); 314 MTH bool change_weapon (object *ob);
315 MTH bool change_skill (object *ob);
333 316
334 MTH void open_container (object *new_container); 317 MTH void open_container (object *new_container);
335 MTH void close_container () 318 MTH void close_container ()
336 { 319 {
337 open_container (0); 320 open_container (0);
321 }
322
323 // overwrite the attachable invoke function with a version that also checks ev_want_type
324 bool invoke (event_type event, ...)
325 {
326 if (ev_want_event [event] || ev_want_type [type] || cb)
327 {
328 va_list ap;
329 va_start (ap, event);
330 vinvoke (event, ap);
331 va_end (ap);
332 }
338 } 333 }
339 334
340 MTH void instantiate (); 335 MTH void instantiate ();
341 336
342 // recalculate all stats 337 // recalculate all stats
507 502
508 object (); 503 object ();
509 ~object (); 504 ~object ();
510}; 505};
511 506
507// move this object to the top of its env's inventory to speed up
508// searches for it.
509static object *
510splay (object *ob)
511{
512 if (ob->env && ob->env->inv != ob)
513 {
514 if (ob->above) ob->above->below = ob->below;
515 if (ob->below) ob->below->above = ob->above;
516
517 ob->above = 0;
518 ob->below = ob->env->inv;
519 ob->below->above = ob;
520 ob->env->inv = ob;
521 }
522
523 return ob;
524}
525
512typedef object_vector<object, &object::index > objectvec; 526typedef object_vector<object, &object::index > objectvec;
513typedef object_vector<object, &object::active> activevec; 527typedef object_vector<object, &object::active> activevec;
514 528
515extern objectvec objects; 529extern objectvec objects;
516extern activevec actives; 530extern activevec actives;
537} oblinkpt; 551} oblinkpt;
538 552
539object *find_skill_by_name (object *who, const char *name); 553object *find_skill_by_name (object *who, const char *name);
540object *find_skill_by_name (object *who, const shstr &sh); 554object *find_skill_by_name (object *who, const shstr &sh);
541object *find_skill_by_number (object *who, int skillno); 555object *find_skill_by_number (object *who, int skillno);
542int change_skill (object *who, object *new_skill, int flag);
543 556
544/* 557/*
545 * The archetype structure is a set of rules on how to generate and manipulate 558 * The archetype structure is a set of rules on how to generate and manipulate
546 * objects which point to archetypes. 559 * objects which point to archetypes.
547 * This probably belongs in arch.h, but there really doesn't appear to 560 * This probably belongs in arch.h, but there really doesn't appear to

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines