ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/common/loader.C
(Generate patch)

Comparing deliantra/server/common/loader.C (file contents):
Revision 1.49 by root, Fri Jan 19 17:54:15 2007 UTC vs.
Revision 1.51 by root, Thu Feb 1 17:29:16 2007 UTC

24 24
25/* Eneq(@csd.uu.se): Added weight-modifiers in environment of objects. 25/* Eneq(@csd.uu.se): Added weight-modifiers in environment of objects.
26 sub/add_weight will transcend the environment updating the carrying 26 sub/add_weight will transcend the environment updating the carrying
27 variable. */ 27 variable. */
28 28
29
30#include <global.h> 29#include <global.h>
31#include <loader.h> 30#include <loader.h>
32#include <sproto.h> 31#include <sproto.h>
33 32
34// future resource loader base class 33// resource loader pure base class
35struct loader_base 34struct loader_base
36{ 35{
36 const char *filename;
37 virtual const char *type () const = 0;
38
37 virtual archetype *get_arch (const char *name); 39 virtual archetype *get_arch (const char *name);
38 virtual void put_arch (archetype *arch); 40 virtual void put_arch (archetype *arch);
39 41
40 virtual object *get_object (const char *name); 42 virtual object *get_object (const char *name);
41 virtual void put_object (object *op); 43 virtual void put_object (object *op);
42 44
43 virtual player *get_player (); 45 virtual player *get_player ();
44 virtual void put_player (player *pl); 46 virtual void put_player (player *pl);
45 47
46 virtual region *get_region (); 48 virtual region *get_region (const char *name);
47 virtual void put_region (region *region); 49 virtual void put_region (region *region);
48 50
49 virtual facetile *get_face (const char *name); 51 virtual facetile *get_face (const char *name);
50 virtual void put_face (facetile *face); 52 virtual void put_face (facetile *face);
51 53
54 56
55 virtual animation *get_animation (const char *name); 57 virtual animation *get_animation (const char *name);
56 virtual void put_animation (animation *anim); 58 virtual void put_animation (animation *anim);
57}; 59};
58 60
61// pure base class for default archetype loader
62struct loader_arch : virtual loader_base {
63 archetype *get_arch (const char *name);
64 void put_arch (archetype *arch);
65};
66
67// pure base class for default object loader
68struct loader_object : virtual loader_base {
69 object *get_object (const char *name);
70 void put_object (object *op);
71};
72
73// pure base class for default player loader
74struct loader_player : virtual loader_base {
75 virtual player *get_player ();
76 virtual void put_player (player *pl);
77};
78
79// pure base class for default region loader
80struct loader_region : virtual loader_base {
81 region *get_region ();
82 void put_region (region *region);
83};
84
85// pure base class for default face loader
86struct loader_face : virtual loader_base {
87 facetile *get_face (const char *name);
88 void put_face (facetile *face);
89};
90
91// pure base class for default treasure loader
92struct loader_treasure : virtual loader_base {
93 treasurelist *get_treasure (const char *name, bool one = false);
94 void put_treasure (treasurelist *treasure);
95};
96
97// pure base class for default animation loader
98struct loader_animation : virtual loader_base {
99 animation *get_animation (const char *name);
100 void put_animation (animation *anim);
101};
102
59// future generic resource loader 103// future generic resource loader
60// handles generic stuff valid in most files, such as 104// handles generic stuff valid in most files, such as
61// animations, treasures, faces and so on 105// animations, treasures, faces and so on
62struct loader_generic : loader_base 106struct loader_generic
107: virtual loader_base,
108 loader_object, loader_player,
109 loader_region, loader_face,
110 loader_treasure, loader_animation
63{ 111{
64 virtual region *get_region (); 112 const char *type () const = 0;
65 virtual void put_region (region *region);
66
67 virtual facetile *get_face (const char *name);
68 virtual void put_face (facetile *face);
69
70 virtual treasurelist *get_treasure (const char *name, bool one = false);
71 virtual void put_treasure (treasurelist *treasure);
72
73 virtual animation *get_animation (const char *name);
74 virtual void put_animation (animation *anim);
75}; 113};
114
115// the base class warns about and skips everything
116archetype *
117loader_base::get_arch (const char *name)
118{
119 LOG (llevError, "%s: found archetype definition '%s', which is not allowed in files of type %s.\n",
120 filename, name, type ());
121
122 return new archetype;
123}
124
125object *
126loader_base::get_object (const char *name)
127{
128 LOG (llevError, "%s: found object definition '%s', which is not allowed in files of type %s.\n",
129 filename, name, type ());
130
131 return object::create ();
132}
133
134player *
135loader_base::get_player ()
136{
137 LOG (llevError, "%s: found player definition, which is not allowed in files of type %s.\n",
138 filename, type ());
139
140 return player::create ();
141}
142
143region *
144loader_base::get_region (const char *name)
145{
146 LOG (llevError, "%s: found region definition '%s', which is not allowed in files of type %s.\n",
147 filename, name, type ());
148
149 return new region;
150}
151
152facetile *
153loader_base::get_face (const char *name)
154{
155 LOG (llevError, "%s: found face definition '%s', which is not allowed in files of type %s.\n",
156 filename, name, type ());
157
158 return new facetile;
159}
160
161treasurelist *
162loader_base::get_treasure (const char *name, bool one)
163{
164 LOG (llevError, "%s: found treasure definition '%s', which is not allowed in files of type %s.\n",
165 filename, name, type ());
166
167 return new treasurelist;//D
168}
169
170animation *
171loader_base::get_animation (const char *name)
172{
173 LOG (llevError, "%s: found animation definition '%s', which is not allowed in files of type %s.\n",
174 filename, name, type ());
175
176 return new animation;
177}
178
179void
180loader_base::put_arch (archetype *arch)
181{
182 delete arch;
183}
184
185void
186loader_base::put_object (object *op)
187{
188 op->destroy ();
189}
190
191void
192loader_base::put_player (player *pl)
193{
194 delete pl;
195}
196
197void
198loader_base::put_region (region *region)
199{
200 delete region;
201}
202
203void
204loader_base::put_face (facetile *face)
205{
206 delete face;
207}
208
209void
210loader_base::put_treasure (treasurelist *treasure)
211{
212 delete treasure;
213}
214
215void
216loader_base::put_animation (animation *anim)
217{
218 delete anim;
219}
76 220
77/* Maps the MOVE_* values to names */ 221/* Maps the MOVE_* values to names */
78static const char *const move_name[] = { "walk", "fly_low", "fly_high", "swim", "boat", NULL }; 222static const char *const move_name[] = { "walk", "fly_low", "fly_high", "swim", "boat", NULL };
79 223
80/* This table is only necessary to convert objects that existed before the 224/* This table is only necessary to convert objects that existed before the

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines