mirror of
https://github.com/UberGames/rpgxEF.git
synced 2025-02-14 07:51:21 +00:00
Added command that generates a .precache file for a map
This commit is contained in:
parent
039985bd27
commit
f776fdf3e3
5 changed files with 87 additions and 12 deletions
|
@ -915,5 +915,8 @@ void CG_InitConsoleCommands( void ) {
|
|||
trap_AddCommand("selfdestruct");
|
||||
trap_AddCommand("shipdamage");
|
||||
trap_AddCommand("shiphealth");
|
||||
|
||||
/* precacheFile */
|
||||
trap_AddCommand("generatePrecacheFile");
|
||||
}
|
||||
|
||||
|
|
|
@ -350,7 +350,7 @@ void CG_PrecacheRemapShaders(void) {
|
|||
|
||||
len = trap_FS_FOpenFile(filepath, &f, FS_READ);
|
||||
|
||||
if(!len) {
|
||||
if(!f) {
|
||||
CG_Printf("No precache file ...\n");
|
||||
return;
|
||||
}
|
||||
|
@ -371,7 +371,8 @@ void CG_PrecacheRemapShaders(void) {
|
|||
ptr = data;
|
||||
token = COM_Parse(&ptr);
|
||||
while(token != NULL) {
|
||||
CG_Printf("\t%s\n", token);
|
||||
if(!token[0]) break;
|
||||
|
||||
trap_R_RegisterShader(token);
|
||||
|
||||
token = COM_Parse(&ptr);
|
||||
|
|
|
@ -7346,6 +7346,72 @@ void Cmd_CamtestEnd_f(gentity_t *ent) {
|
|||
}
|
||||
// END CCAM
|
||||
|
||||
extern target_alert_Shaders_s alertShaders;
|
||||
void Cmd_GeneratePrecacheFile(gentity_t *ent) {
|
||||
int i;
|
||||
char info[MAX_INFO_STRING];
|
||||
char file[MAX_QPATH];
|
||||
fileHandle_t f;
|
||||
|
||||
trap_GetServerinfo(info, MAX_INFO_STRING);
|
||||
Com_sprintf(file, MAX_QPATH, "maps/%s.precache", Info_ValueForKey(info, "mapname"));
|
||||
trap_FS_FOpenFile(file, &f, FS_APPEND);
|
||||
if(!f) {
|
||||
G_Printf(S_COLOR_RED "[Error] - Could not create/open 'maps/%s.precache'\n", file);
|
||||
return;
|
||||
}
|
||||
|
||||
G_Printf("Generating precache file '%s' ...\n", file);
|
||||
|
||||
for(i = 0; i < alertShaders.numShaders; i++) {
|
||||
G_Printf("\t%s\n", alertShaders.greenShaders[i]);
|
||||
G_Printf("\t%s\n", alertShaders.blueShaders[i]);
|
||||
G_Printf("\t%s\n", alertShaders.redShaders[i]);
|
||||
G_Printf("\t%s\n", alertShaders.yellowShaders[i]);
|
||||
|
||||
trap_FS_Write("\"", 1, f);
|
||||
trap_FS_Write(alertShaders.greenShaders[i], strlen(alertShaders.greenShaders[i]), f);
|
||||
trap_FS_Write("\"\n\"", 3, f);
|
||||
trap_FS_Write(alertShaders.blueShaders[i], strlen(alertShaders.blueShaders[i]), f);
|
||||
trap_FS_Write("\"\n\"", 3, f);
|
||||
trap_FS_Write(alertShaders.redShaders[i], strlen(alertShaders.redShaders[i]), f);
|
||||
trap_FS_Write("\"\n\"", 3, f);
|
||||
trap_FS_Write(alertShaders.yellowShaders[i], strlen(alertShaders.yellowShaders[i]), f);
|
||||
trap_FS_Write("\"\n", 2, f);
|
||||
}
|
||||
|
||||
for(i = 0; i < MAX_GENTITIES; i++) {
|
||||
if(!g_entities[i].inuse) continue;
|
||||
|
||||
if(g_entities[i].classname != NULL && !strcmp(g_entities[i].classname, "target_turbolift")) {
|
||||
if(g_entities[i].falsename != NULL && g_entities[i].falsename[0] != 0) {
|
||||
G_Printf("\t%s\n", g_entities[i].falsename);
|
||||
trap_FS_Write("\"", 1, f);
|
||||
trap_FS_Write(g_entities[i].falsename, strlen(g_entities[i].falsename), f);
|
||||
trap_FS_Write("\"\n", 2, f);
|
||||
}
|
||||
if(g_entities[i].truename != NULL && g_entities[i].truename[0] != 0) {
|
||||
G_Printf("\t%s\n", g_entities[i].truename);
|
||||
trap_FS_Write("\"", 1, f);
|
||||
trap_FS_Write(g_entities[i].truename, strlen(g_entities[i].truename), f);
|
||||
trap_FS_Write("\"\n", 2, f);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if(g_entities[i].targetShaderNewName != NULL && g_entities[i].targetShaderNewName[0] != 0) {
|
||||
G_Printf("\t%s\n", g_entities[i].targetShaderNewName);
|
||||
trap_FS_Write("\"", 1, f);
|
||||
trap_FS_Write(g_entities[i].targetShaderNewName, strlen(g_entities[i].targetShaderNewName), f);
|
||||
trap_FS_Write("\"\n", 2, f);
|
||||
}
|
||||
}
|
||||
|
||||
G_Printf("Done.\n");
|
||||
|
||||
trap_FS_FCloseFile(f);
|
||||
}
|
||||
|
||||
/*
|
||||
=================
|
||||
G_Client_Command
|
||||
|
@ -7606,6 +7672,9 @@ void G_Client_Command( int clientNum )
|
|||
else if (Q_stricmp(cmd, "camtestend") == 0)
|
||||
Cmd_CamtestEnd_f(ent);
|
||||
// END CCAM
|
||||
else if (Q_stricmp (cmd, "generatePrecacheFile") == 0) {
|
||||
Cmd_GeneratePrecacheFile(ent);
|
||||
}
|
||||
else if (Q_strncmp (cmd, "\n", 1) == 0 || Q_strncmp (cmd, " ", 1) == 0 || Q_strncmp (cmd, "\0", 1) == 0) // sorry
|
||||
(void)(0);
|
||||
else
|
||||
|
|
|
@ -2102,4 +2102,13 @@ struct timedMessage_s {
|
|||
char* message;
|
||||
} timedMessage_s;
|
||||
|
||||
/* alert shaders */
|
||||
typedef struct {
|
||||
char *greenShaders[10];
|
||||
char *redShaders[10];
|
||||
char *yellowShaders[10];
|
||||
char *blueShaders[10];
|
||||
int numShaders;
|
||||
} target_alert_Shaders_s;
|
||||
|
||||
#endif //_G_LOCAL_H_
|
||||
|
|
|
@ -1133,7 +1133,7 @@ static void target_turbolift_endMove ( gentity_t *ent )
|
|||
}
|
||||
|
||||
// check for shader remaps
|
||||
if(rpg_calcLiftTravelDuration.integer) {
|
||||
if(rpg_calcLiftTravelDuration.integer || level.overrideCalcLiftTravelDuration) {
|
||||
if((ent->truename && otherLift->truename) || (ent->falsename && otherLift->falsename)) {
|
||||
f = level.time * 0.001;
|
||||
AddRemap(ent->targetShaderName, ent->targetShaderName, f);
|
||||
|
@ -1403,7 +1403,7 @@ static void target_turbolift_startMove ( gentity_t *ent )
|
|||
}
|
||||
|
||||
// check for shader remaps
|
||||
if(rpg_calcLiftTravelDuration.integer) {
|
||||
if(rpg_calcLiftTravelDuration.integer || level.overrideCalcLiftTravelDuration) {
|
||||
if(time2 < 0 && ent->truename && otherLift->truename) {
|
||||
f = level.time * 0.001;
|
||||
AddRemap(ent->targetShaderName, ent->truename, f);
|
||||
|
@ -1858,15 +1858,8 @@ shader remapping:
|
|||
You can remap multiple shaders by separating them with \n.
|
||||
Example: "greenshader" "textures/alert/green1\ntextures/alert/green2"
|
||||
*/
|
||||
typedef struct {
|
||||
char *greenShaders[10];
|
||||
char *redShaders[10];
|
||||
char *yellowShaders[10];
|
||||
char *blueShaders[10];
|
||||
int numShaders;
|
||||
} target_alert_Shaders_s;
|
||||
|
||||
static target_alert_Shaders_s alertShaders;
|
||||
target_alert_Shaders_s alertShaders;
|
||||
|
||||
void target_alert_remapShaders(int target_condition) {
|
||||
float f = 0;
|
||||
|
|
Loading…
Reference in a new issue