/* -*- LPC -*- */ /* * $Locker: $ * $Id: extra_look.c,v 1.5 2001/09/16 14:27:45 wodan Exp $ * $Log: extra_look.c,v $ * Revision 1.5 2001/09/16 14:27:45 wodan * hope i fixed the type error, seems some code adds extra looks to strings, rather then objects. * * Revision 1.4 2001/07/15 03:25:42 ceres * Can't figure out the problem * * Revision 1.3 2001/01/28 18:40:13 drakkos * Updated the autodoc a leetle. * * Revision 1.2 2000/09/14 01:27:05 shrike * added a bit more documentation to add_extra_look. * * Revision 1.1 1998/01/06 03:59:10 ceres * Initial revision * */ /** * Handles adding bits to the long description of objects. * @author Pinkfish */ /* /std/basic/extra_looks */ private nosave object *extra_looks; void create() { extra_looks = ({ }); } /* create() */ /** * This method creates the extra long stringsbased on the current list * of objects to use an extra_look on. The function extra_look() is * called on every object with this_object() passed in as the first * (and only) parameter. If the result is non-zero it is added onto * the output. * @see add_extra_look() * @see remove_extra_look() * @see query_extra_look_list() * @return the extra look string */ string calc_extra_look() { int i; string s1, s2; s1 = ""; if (!extra_looks) { extra_looks = ({ }); } for (i = 0; i < sizeof(extra_looks); i++) { if (extra_looks[i]) { s2 = (string)((extra_looks[i])->extra_look(this_object())); if(s2) s1 += s2; } else { extra_looks = delete(extra_looks, i, 1); i--; } } return s1; } /* calc_extra_look() */ /** * This method adds an object into the list of extra look objects. * ob will need to have a string extra_look( object ) function defined on * it which will actually give the extra look string. ob->extra_look() is * called with the object to which you are adding the extra look. * @param ob the object to add * @see calc_extra_look() * @see remove_extra_look() * @see query_extra_look_list() */ void add_extra_look(object ob) { if(member_array(ob, extra_looks) != -1) { return; } if(stringp(ob)) ob = find_object((string)ob); extra_looks += ({ ob }); } /* add_extra_look() */ /** * This method removes the object from the list of extra look objects. * @param ob the object to remove * @see calc_extra_look() * @see add_extra_look() * @see query_extra_look_list() */ void remove_extra_look(object ob) { int i; i = member_array(ob, extra_looks); if (i < 0) { return; } extra_looks = delete(extra_looks, i, 1); } /* remove_extra_look() */ /** * This method returns the current list of objects to be used for * the extra look list. * @see add_extra_look() * @see remove_extra_look() * @see calc_extra_look() * @return the array of extra look objects */ object *query_extra_look_list() { return extra_looks; } /* query_extra_look_list() */