… | |
… | |
243 | static vector objects; // not used yet, use first->next->... |
243 | static vector objects; // not used yet, use first->next->... |
244 | static object *first; // will be replaced by "objects" |
244 | static object *first; // will be replaced by "objects" |
245 | |
245 | |
246 | static object *create (); |
246 | static object *create (); |
247 | void destroy (bool destroy_inventory = false); |
247 | void destroy (bool destroy_inventory = false); |
|
|
248 | void remove (); |
|
|
249 | object *insert (object *item); // insert into inventory |
248 | |
250 | |
249 | static void free_mortals (); |
251 | static void free_mortals (); |
250 | static bool can_merge (object *op1, object *op2); |
252 | static bool can_merge (object *op1, object *op2); |
251 | |
253 | |
252 | void clear (); |
254 | void clear (); |
… | |
… | |
311 | |
313 | |
312 | object (); |
314 | object (); |
313 | ~object (); |
315 | ~object (); |
314 | }; |
316 | }; |
315 | |
317 | |
|
|
318 | // compatibility functions/macros |
316 | #define get_object() object::create () |
319 | #define get_object() object::create () |
317 | #define free_object(op) (op)->destroy (0) |
320 | #define free_object(op) (op)->destroy (0) |
318 | #define free_object2(op, free_inv) (op)->destroy (free_inv) |
321 | #define free_object2(op, free_inv) (op)->destroy (free_inv) |
319 | #define clear_owner(op) (op)->owner = 0 |
322 | #define clear_owner(op) (op)->owner = 0 |
320 | #define copy_owner(op,other) (op)->owner = (other)->owner |
323 | #define copy_owner(op,other) (op)->owner = (other)->owner |
… | |
… | |
323 | |
326 | |
324 | static inline void |
327 | static inline void |
325 | set_owner (object *op, object *owner) |
328 | set_owner (object *op, object *owner) |
326 | { |
329 | { |
327 | op->set_owner (owner); |
330 | op->set_owner (owner); |
|
|
331 | } |
|
|
332 | |
|
|
333 | static inline void |
|
|
334 | remove_ob (object *op) |
|
|
335 | { |
|
|
336 | op->remove (); |
328 | } |
337 | } |
329 | |
338 | |
330 | #define CAN_MERGE(op1,op2) ((op1)->value == (op2)->value && (op1)->name == (op2)->name && object::can_merge ((op1), (op2))) |
339 | #define CAN_MERGE(op1,op2) ((op1)->value == (op2)->value && (op1)->name == (op2)->name && object::can_merge ((op1), (op2))) |
331 | |
340 | |
332 | typedef struct oblnk |
341 | typedef struct oblnk |