static qboolean BG_SS_ParseError(int handle, char *format, ...) { int line = 0; char filename[128]; va_list argptr; static char string[4096]; va_start(argptr, format); Q_vsnprintf(string, sizeof(string), format, argptr); va_end(argptr); filename[0] = '\0'; trap_PC_SourceFileAndLine(handle, filename, &line); Com_Printf(S_COLOR_RED "ERROR: %s, line %d: %s\n", filename, line, string); trap_PC_FreeSource(handle); return qfalse; }
static animation_t * BG_RAG_FindFreeAnimation(const char *mdxFileName, const char *name) #endif // CGAMEDLL { int i; for (i = 0; i < MAX_ANIMPOOL_SIZE; i++) { #ifdef CGAMEDLL if (animationPool[i].mdxFile == mdxFile && !Q_stricmp(animationPool[i].name, name)) { #else if (*animationPool[i].mdxFileName && !Q_stricmp(animationPool[i].mdxFileName, mdxFileName) && !Q_stricmp(animationPool[i].name, name)) { #endif // CGAMEDLL return(&animationPool[i]); } } for (i = 0; i < MAX_ANIMPOOL_SIZE; i++) { #ifdef CGAMEDLL if (!animationPool[i].mdxFile) { animationPool[i].mdxFile = mdxFile; #else if (!animationPool[i].mdxFileName[0]) { Q_strncpyz(animationPool[i].mdxFileName, mdxFileName, sizeof(animationPool[i].mdxFileName)); #endif // CGAMEDLL Q_strncpyz(animationPool[i].name, name, sizeof(animationPool[i].name)); return(&animationPool[i]); } } return NULL; } static qboolean BG_RAG_ParseError(int handle, char *format, ...) { int line; char filename[128]; va_list argptr; static char string[4096]; va_start(argptr, format); Q_vsnprintf(string, sizeof(string), format, argptr); va_end(argptr); filename[0] = '\0'; line = 0; trap_PC_SourceFileAndLine(handle, filename, &line); Com_Printf(S_COLOR_RED "ERROR: %s, line %d: %s\n", filename, line, string); trap_PC_FreeSource(handle); return qfalse; } static qboolean BG_RAG_ParseAnimation(int handle, animation_t *animation) { int i; animation->flags = 0; if (!PC_Int_Parse(handle, &animation->firstFrame)) { return BG_RAG_ParseError(handle, "expected first frame integer"); } if (!PC_Int_Parse(handle, &animation->numFrames)) { return BG_RAG_ParseError(handle, "expected length integer"); } if (!PC_Int_Parse(handle, &animation->loopFrames)) { return BG_RAG_ParseError(handle, "expected looping integer"); } if (!PC_Int_Parse(handle, &i)) { return BG_RAG_ParseError(handle, "expected fps integer"); } if (i == 0) { i = 1; } animation->frameLerp = 1000 / (float)i; animation->initialLerp = 1000 / (float)i; if (!PC_Int_Parse(handle, &animation->moveSpeed)) { return BG_RAG_ParseError(handle, "expected move speed integer"); } if (!PC_Int_Parse(handle, &animation->animBlend)) { return BG_RAG_ParseError(handle, "expected transition integer"); } if (!PC_Int_Parse(handle, &i)) { return BG_RAG_ParseError(handle, "expected reversed integer"); } if (i == 1) { animation->flags |= ANIMFL_REVERSED; } // calculate the duration animation->duration = animation->initialLerp + animation->frameLerp * animation->numFrames + animation->animBlend; // get the nameHash animation->nameHash = BG_StringHashValue(animation->name); // hacky-ish stuff if (!Q_strncmp(animation->name, "climb", 5)) { animation->flags |= ANIMFL_LADDERANIM; } if (strstr(animation->name, "firing")) { animation->flags |= ANIMFL_FIRINGANIM; animation->initialLerp = 40; } return qtrue; }