mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-12-13 14:10:57 +00:00
7713a539ca
class with the same name. This will break things. To support it, there are three new classes, one of which is incomplete (AutoreleasePool). It'll get finished soonish, but the rest of the class lib will need some updating to work.
87 lines
1.3 KiB
R
87 lines
1.3 KiB
R
#include "GameEntity.h"
|
|
#include "World.h"
|
|
|
|
id world;
|
|
integer deathmatch;
|
|
|
|
#define MAX_BODIES 8
|
|
|
|
@interface BodyQueue: Object
|
|
{
|
|
entity [MAX_BODIES] bodies;
|
|
integer head;
|
|
}
|
|
|
|
- (id) init;
|
|
- (void) addEntity: (GameEntity)ent;
|
|
|
|
@end
|
|
|
|
@implementation BodyQueue
|
|
|
|
- (id) init
|
|
{
|
|
local integer i;
|
|
self = [super init];
|
|
|
|
self.head = NIL;
|
|
|
|
for (i = 0; i < MAX_BODIES; i++) {
|
|
local GameEntity ent = NIL;
|
|
ent = [[GameEntity alloc] init];
|
|
self.bodies[i] = ent.ent;
|
|
}
|
|
#if 0
|
|
for (i = 0; i < MAX_BODIES; i++) {
|
|
self.bodies[i] = [[[GameEntity alloc] init] ent];
|
|
}
|
|
#endif
|
|
}
|
|
|
|
- (void) addEntity: (GameEntity)ent
|
|
{
|
|
local entity be = bodies[head++];
|
|
local entity e = [ent ent];
|
|
|
|
be.angles = e.angles;
|
|
be.model = e.model;
|
|
be.modelindex = e.modelindex;
|
|
be.frame = e.frame;
|
|
be.colormap = e.colormap;
|
|
be.movetype = e.movetype;
|
|
be.velocity = e.velocity;
|
|
be.flags = 0;
|
|
|
|
setorigin (be, e.origin);
|
|
setsize (be, e.mins, e.maxs);
|
|
}
|
|
@end
|
|
|
|
@interface World: GameEntity
|
|
{
|
|
id bodyque;
|
|
}
|
|
|
|
- (void) spawn: (entity)ent;
|
|
- (void) copyToBodyQueue: (GameEntity)ent;
|
|
|
|
@end
|
|
|
|
@implementation World
|
|
|
|
- (void) spawn: (entity)ent
|
|
{
|
|
[self initWithEntity: ent];
|
|
bodyque = [[BodyQueue alloc] init];
|
|
}
|
|
|
|
- (void) copyToBodyQueue: (GameEntity)ent
|
|
{
|
|
[bodyque addEntity: ent];
|
|
}
|
|
@end
|
|
|
|
void () worldspawn =
|
|
{
|
|
world = [[World alloc] initWithEntity: @self];
|
|
};
|