mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-11 07:42:18 +00:00
83 lines
1.2 KiB
R
83 lines
1.2 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;
|
||
|
id (self) = [super init];
|
||
|
|
||
|
self.head = NIL;
|
||
|
|
||
|
for (i = 0; i < MAX_BODIES; i++) {
|
||
|
local GameEntity ent = NIL;
|
||
|
id(ent) = [[GameEntity alloc] init];
|
||
|
self.bodies[i] = ent.ent;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
- (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
|
||
|
|
||
|
- 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];
|
||
|
};
|