game: sync target_autosave with ReRelease code

Based on: https://github.com/Paril/quake2-rerelease-dll.git
This commit is contained in:
Denis Pauk 2024-12-25 11:30:36 +02:00
parent f7b9c8c518
commit ded38bbf44
6 changed files with 39 additions and 0 deletions

View file

@ -1627,6 +1627,40 @@ SP_target_music(edict_t* self)
self->use = target_music_use;
}
/*
* QUAKED target_autosave (0 1 0) (-8 -8 -8) (8 8 8)
*
* Auto save on command.
*/
void
use_target_autosave(edict_t *ent, edict_t *other, edict_t *activator)
{
float save_time = gi.cvar("g_athena_auto_save_min_time", "60", CVAR_NOSET)->value;
if (level.time - level.next_auto_save > save_time)
{
gi.AddCommandString("save quick\n");
level.next_auto_save = level.time;
}
}
void
SP_target_autosave(edict_t *self)
{
if (!self)
{
return;
}
if (deathmatch->value)
{
G_FreeEdict(self);
return;
}
self->use = use_target_autosave;
}
/*
* QUAKED target_sky (1 0 0) (-8 -8 -8) (8 8 8)
*

View file

@ -386,6 +386,7 @@ typedef struct
int disguise_violation_framenum;
char *start_items; /* level start items */
float next_auto_save; /* target_autosave */
} level_locals_t;
/* spawn_temp_t is only used to hold entity field values that

View file

@ -1439,6 +1439,7 @@ extern void turret_wall_spawn ( edict_t * turret ) ;
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_autosave ( edict_t * self , edict_t * other , edict_t * activator ) ;
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 ) ;

View file

@ -1435,6 +1435,7 @@
{"use_killbox", (byte *)use_killbox},
{"use_nuke", (byte *)use_nuke},
{"use_scanner", (byte *)use_scanner},
{"use_target_autosave", (byte *)use_target_autosave},
{"use_target_blaster", (byte *)use_target_blaster},
{"use_target_camera", (byte *)use_target_camera},
{"use_target_changelevel", (byte *)use_target_changelevel},

View file

@ -165,6 +165,7 @@ extern void SP_point_combat(edict_t * self);
extern void SP_rotating_light(edict_t * self);
extern void SP_target_actor(edict_t * self);
extern void SP_target_anger(edict_t * self);
extern void SP_target_autosave(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);

View file

@ -171,6 +171,7 @@
{"rotating_light", SP_rotating_light},
{"target_actor", SP_target_actor},
{"target_anger", SP_target_anger},
{"target_autosave", SP_target_autosave},
{"target_blacklight", SP_target_blacklight},
{"target_blaster", SP_target_blaster},
{"target_camera", SP_target_camera},