--- deliantra/server/common/loader.C 2007/01/19 18:06:51 1.50 +++ deliantra/server/common/loader.C 2007/02/01 17:29:16 1.51 @@ -26,12 +26,11 @@ sub/add_weight will transcend the environment updating the carrying variable. */ - #include #include #include -// future resource loader base class +// resource loader pure base class struct loader_base { const char *filename; @@ -59,26 +58,60 @@ virtual void put_animation (animation *anim); }; -// future generic resource loader -// handles generic stuff valid in most files, such as -// animations, treasures, faces and so on -struct loader_generic : loader_base -{ - const char *type () const = 0; +// pure base class for default archetype loader +struct loader_arch : virtual loader_base { + archetype *get_arch (const char *name); + void put_arch (archetype *arch); +}; + +// pure base class for default object loader +struct loader_object : virtual loader_base { + object *get_object (const char *name); + void put_object (object *op); +}; +// pure base class for default player loader +struct loader_player : virtual loader_base { + virtual player *get_player (); + virtual void put_player (player *pl); +}; + +// pure base class for default region loader +struct loader_region : virtual loader_base { region *get_region (); void put_region (region *region); +}; +// pure base class for default face loader +struct loader_face : virtual loader_base { facetile *get_face (const char *name); void put_face (facetile *face); +}; +// pure base class for default treasure loader +struct loader_treasure : virtual loader_base { treasurelist *get_treasure (const char *name, bool one = false); void put_treasure (treasurelist *treasure); +}; +// pure base class for default animation loader +struct loader_animation : virtual loader_base { animation *get_animation (const char *name); void put_animation (animation *anim); }; +// future generic resource loader +// handles generic stuff valid in most files, such as +// animations, treasures, faces and so on +struct loader_generic +: virtual loader_base, + loader_object, loader_player, + loader_region, loader_face, + loader_treasure, loader_animation +{ + const char *type () const = 0; +}; + // the base class warns about and skips everything archetype * loader_base::get_arch (const char *name)