68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
-
+
|
// Allocates a new object of the given class; links into the event list but not into the playfield.
// All fields are initialized by the class or to zero.
// Does not send any messages or otherwise notify anyone that it has been created.
// Returns VOIDLINK if object cannot be created.
Uint32 n;
Class*cl=classes[c];
Object*o=calloc(1,sizeof(Object)+cl->uservars*sizeof(Value));
if(!c || !cl || cl->cflags&(CF_GROUP|CF_NOCLASS1|CF_NOCLASS2)) goto bad;
if(!c || !cl || cl->cflags&(CF_GROUP|CF_NOCLASS2)) goto bad;
if(!o) fatal("Allocation failed\n");
o->class=c;
o->generation=generation_number;
#define C(x) o->x=cl->x;
C(height) C(weight) C(climb) C(density) C(volume) C(strength) C(arrivals) C(departures) C(temperature)
C(shape) C(shovable) C(oflags)
C(sharp[0]) C(sharp[1]) C(sharp[2]) C(sharp[3])
|