mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2025-04-11 12:40:45 +00:00
game: minimal implementation of SP_target_camera
Based on: * https://github.com/id-Software/quake2-rerelease-dll/blob/main/rerelease/g_target.cpp
This commit is contained in:
parent
f116fb44eb
commit
d226454821
7 changed files with 58 additions and 0 deletions
|
@ -150,6 +150,10 @@ Goals:
|
|||
* [x] RGB particles support instead palette based one,
|
||||
* [x] Get rid of VID_PaletteColor client internal api use,
|
||||
* [x] Broken maps groups from base2 to next,
|
||||
* [ ] Group `it_pic` images in vulkan render,
|
||||
* [ ] Rearange surfaces in vulkan render before render,
|
||||
* [ ] Fully implement `target_camera`,
|
||||
* [ ] Fully implement `misc_flare`,
|
||||
* [ ] Single player ReRelease support,
|
||||
* [ ] Support effects and additional flags for ReRelease when possible.
|
||||
* [ ] Use shared model cache in client code insted reimplemnet in each render,
|
||||
|
|
|
@ -864,6 +864,7 @@ CL_ParseTEnt(void)
|
|||
break;
|
||||
|
||||
case TE_RAILTRAIL: /* railgun effect */
|
||||
case TE_RAILTRAIL2:
|
||||
MSG_ReadPos(&net_message, pos);
|
||||
MSG_ReadPos(&net_message, pos2);
|
||||
CL_RailTrail(pos, pos2);
|
||||
|
|
|
@ -1474,6 +1474,55 @@ SP_target_earthquake(edict_t *self)
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* QUAKED target_camera (1 0 0) (-8 -8 -8) (8 8 8)
|
||||
* [Sam-KEX] Creates a camera path as seen in the N64 version.
|
||||
*/
|
||||
void
|
||||
use_target_camera(edict_t *self, edict_t *other, edict_t *activator)
|
||||
{
|
||||
edict_t *target;
|
||||
|
||||
if (!self)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (self->sounds)
|
||||
{
|
||||
gi.configstring(CS_CDTRACK, va("%i", self->sounds));
|
||||
}
|
||||
|
||||
if (!self->killtarget)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
target = G_PickTarget(self->killtarget);
|
||||
|
||||
if (!target || !target->use)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* TODO: Fully implement target camera logic */
|
||||
target->use(target, self, activator);
|
||||
}
|
||||
|
||||
void
|
||||
SP_target_camera(edict_t* self)
|
||||
{
|
||||
if (deathmatch->value)
|
||||
{
|
||||
/* auto-remove for deathmatch */
|
||||
G_FreeEdict(self);
|
||||
return;
|
||||
}
|
||||
|
||||
self->use = use_target_camera;
|
||||
self->svflags = SVF_NOCLIENT;
|
||||
}
|
||||
|
||||
/*
|
||||
* QUAKED target_gravity (1 0 0) (-8 -8 -8) (8 8 8) NOTRAIL NOEFFECTS
|
||||
* [Sam-KEX] Changes gravity, as seen in the N64 version
|
||||
|
|
|
@ -1434,6 +1434,7 @@ extern void use_killbox ( edict_t * self , edict_t * other , edict_t * activator
|
|||
extern void use_nuke ( edict_t * self , edict_t * other , edict_t * activator ) ;
|
||||
extern void use_scanner ( edict_t * self ) ;
|
||||
extern void use_target_blaster ( edict_t * self , edict_t * other , edict_t * activator ) ;
|
||||
extern void use_target_camera ( edict_t * self , edict_t * other , edict_t * activator);
|
||||
extern void use_target_changelevel ( edict_t * self , edict_t * other , edict_t * activator ) ;
|
||||
extern void use_target_explosion ( edict_t * self , edict_t * other , edict_t * activator ) ;
|
||||
extern void use_target_goal ( edict_t * ent , edict_t * other , edict_t * activator ) ;
|
||||
|
|
|
@ -1430,6 +1430,7 @@
|
|||
{"use_nuke", (byte *)use_nuke},
|
||||
{"use_scanner", (byte *)use_scanner},
|
||||
{"use_target_blaster", (byte *)use_target_blaster},
|
||||
{"use_target_camera", (byte *)use_target_camera},
|
||||
{"use_target_changelevel", (byte *)use_target_changelevel},
|
||||
{"use_target_explosion", (byte *)use_target_explosion},
|
||||
{"use_target_goal", (byte *)use_target_goal},
|
||||
|
|
|
@ -162,6 +162,7 @@ extern void SP_target_actor(edict_t * self);
|
|||
extern void SP_target_anger(edict_t * self);
|
||||
extern void SP_target_blacklight ( edict_t * ent ) ;
|
||||
extern void SP_target_blaster(edict_t * self);
|
||||
extern void SP_target_camera(edict_t* self);
|
||||
extern void SP_target_changelevel ( edict_t * ent ) ;
|
||||
extern void SP_target_character(edict_t * self);
|
||||
extern void SP_target_crosslevel_target(edict_t * self);
|
||||
|
|
|
@ -168,6 +168,7 @@
|
|||
{"target_anger", SP_target_anger},
|
||||
{"target_blacklight", SP_target_blacklight},
|
||||
{"target_blaster", SP_target_blaster},
|
||||
{"target_camera", SP_target_camera},
|
||||
{"target_changelevel", SP_target_changelevel},
|
||||
{"target_character", SP_target_character},
|
||||
{"target_crosslevel_target", SP_target_crosslevel_target},
|
||||
|
|
Loading…
Reference in a new issue