mirror of
https://github.com/UberGames/RPG-X2.git
synced 2025-03-10 02:01:41 +00:00
func_stasis_door
Had to split up opening phase and closing phase so events get send to client correctly.
This commit is contained in:
parent
964c631d8b
commit
3c3dcc5795
2 changed files with 26 additions and 18 deletions
|
@ -2156,12 +2156,8 @@ Yellow bolts that spark when the endpoints get close together
|
||||||
|
|
||||||
void CG_StasisDoor(centity_t *cent, qboolean close) {
|
void CG_StasisDoor(centity_t *cent, qboolean close) {
|
||||||
localEntity_t *le;
|
localEntity_t *le;
|
||||||
|
|
||||||
memset(&le->refEntity, 0, sizeof(le->refEntity));
|
return;
|
||||||
|
|
||||||
CG_Printf("%f %f %f\n", cent->currentState.origin[0],
|
|
||||||
cent->currentState.origin[1],
|
|
||||||
cent->currentState.origin[2]);
|
|
||||||
|
|
||||||
FX_AddQuad(cent->currentState.origin, NULL, 10, 100, 1, 1, 0, 1000, cgs.media.photonGlow);
|
FX_AddQuad(cent->currentState.origin, NULL, 10, 100, 1, 1, 0, 1000, cgs.media.photonGlow);
|
||||||
|
|
||||||
|
|
|
@ -3348,10 +3348,12 @@ ent->n00bCount locked indicator
|
||||||
1 = locked
|
1 = locked
|
||||||
2 = unlocked
|
2 = unlocked
|
||||||
*/
|
*/
|
||||||
#define STASIS_DOOR_CLOSING 1
|
#define STASIS_DOOR_CLOSING_PHASE1 1
|
||||||
#define STASIS_DOOR_CLOSED 2
|
#define STASIS_DOOR_CLOSING_PHASE2 2
|
||||||
#define STASIS_DOOR_OPENING 3
|
#define STASIS_DOOR_CLOSED 3
|
||||||
#define STASIS_DOOR_OPENED 4
|
#define STASIS_DOOR_OPENING_PHASE1 4
|
||||||
|
#define STASIS_DOOR_OPENING_PHASE2 5
|
||||||
|
#define STASIS_DOOR_OPENED 6
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -3371,32 +3373,42 @@ void toggle_stasis_door( gentity_t *ent )
|
||||||
switch(parent->count) {
|
switch(parent->count) {
|
||||||
case STASIS_DOOR_CLOSED: // then go to opening state
|
case STASIS_DOOR_CLOSED: // then go to opening state
|
||||||
G_AddEvent(parent, EV_STASIS_DOOR_OPENING, 0); // send event to client
|
G_AddEvent(parent, EV_STASIS_DOOR_OPENING, 0); // send event to client
|
||||||
//parent->r.svFlags |= SVF_NOCLIENT;
|
parent->count = STASIS_DOOR_OPENING_PHASE1;
|
||||||
|
ent->nextthink = level.time + FRAMETIME;
|
||||||
|
break;
|
||||||
|
case STASIS_DOOR_OPENING_PHASE1:
|
||||||
|
parent->r.svFlags |= SVF_NOCLIENT;
|
||||||
parent->s.eFlags |= EF_NODRAW;
|
parent->s.eFlags |= EF_NODRAW;
|
||||||
parent->count = STASIS_DOOR_OPENING;
|
parent->count = STASIS_DOOR_OPENING_PHASE2;
|
||||||
ent->nextthink = level.time + 1000;
|
ent->nextthink = level.time + 1000;
|
||||||
trap_LinkEntity(parent);
|
trap_LinkEntity(parent);
|
||||||
break;
|
break;
|
||||||
case STASIS_DOOR_CLOSING: // then go to closed state
|
case STASIS_DOOR_CLOSING_PHASE2: // then go to closed state
|
||||||
trap_SetBrushModel(parent, parent->model);
|
trap_SetBrushModel(parent, parent->model);
|
||||||
InitMover( parent );
|
InitMover( parent );
|
||||||
VectorCopy( parent->s.origin, parent->s.pos.trBase );
|
VectorCopy( parent->s.origin, parent->s.pos.trBase );
|
||||||
VectorCopy( parent->s.origin, parent->r.currentOrigin );
|
VectorCopy( parent->s.origin, parent->r.currentOrigin );
|
||||||
//parent->r.contents &= ~SVF_NOCLIENT;
|
parent->r.contents &= ~SVF_NOCLIENT;
|
||||||
parent->s.eFlags &= ~EF_NODRAW;
|
parent->s.eFlags &= ~EF_NODRAW;
|
||||||
trap_AdjustAreaPortalState(parent, qfalse); // close AP
|
trap_AdjustAreaPortalState(parent, qfalse); // close AP
|
||||||
trap_LinkEntity(parent);
|
trap_LinkEntity(parent);
|
||||||
parent->count = STASIS_DOOR_CLOSED;
|
parent->count = STASIS_DOOR_CLOSED;
|
||||||
ent->touch = touch_stasis_door;
|
ent->touch = touch_stasis_door;
|
||||||
break;
|
break;
|
||||||
case STASIS_DOOR_OPENED: // then go to closing state
|
case STASIS_DOOR_OPENED: // then go to closing
|
||||||
G_AddEvent(parent, EV_STASIS_DOOR_CLOSING, 0); // send event to client
|
parent->r.contents &= ~SVF_NOCLIENT;
|
||||||
|
trap_LinkEntity(parent);
|
||||||
|
parent->count = STASIS_DOOR_CLOSING_PHASE1;
|
||||||
|
ent->nextthink = level.time + FRAMETIME;
|
||||||
|
break;
|
||||||
|
case STASIS_DOOR_CLOSING_PHASE1:
|
||||||
|
G_AddEvent(ent, EV_STASIS_DOOR_CLOSING, parent-g_entities); // send event to client
|
||||||
parent->r.contents = CONTENTS_SOLID;
|
parent->r.contents = CONTENTS_SOLID;
|
||||||
parent->count = STASIS_DOOR_CLOSING;
|
parent->count = STASIS_DOOR_CLOSING_PHASE2;
|
||||||
ent->nextthink = level.time + 1000;
|
ent->nextthink = level.time + 1000;
|
||||||
trap_LinkEntity(parent);
|
trap_LinkEntity(parent);
|
||||||
break;
|
break;
|
||||||
case STASIS_DOOR_OPENING: // then go to opened state
|
case STASIS_DOOR_OPENING_PHASE2: // then go to opened state
|
||||||
parent->r.contents = CONTENTS_NONE;
|
parent->r.contents = CONTENTS_NONE;
|
||||||
trap_AdjustAreaPortalState(parent, qtrue); // open AP
|
trap_AdjustAreaPortalState(parent, qtrue); // open AP
|
||||||
trap_LinkEntity(parent);
|
trap_LinkEntity(parent);
|
||||||
|
|
Loading…
Reference in a new issue