void PreCalculate_Flag_Spawnpoints( int flagnum, vec3_t angles, vec3_t origin ) { vec3_t fwd, point; int tries = 0, tries2 = 0; qboolean visible = qfalse; VectorCopy(origin, point); AngleVectors( angles, fwd, NULL, NULL ); while (1)//visible == qfalse) {// In case we need to try a second spawnpoint. int wp = -1; vec3_t playerMins = {-15, -15, DEFAULT_MINS_2}; vec3_t playerMaxs = {15, 15, DEFAULT_MAXS_2}; playerMins[0] = -15; playerMins[1] = -15; playerMins[2] = -1; playerMaxs[0] = 15; playerMaxs[1] = 15; playerMaxs[2] = 96;//1; while (tries < 16) { tries++; tries2 = 0; while (tries2 < 64) { int num_tries; // For secondary spawns. (Behind point). tries2++; num_tries = tries2; if (tries2 <= 16) { } else if (tries2 <= 32) { num_tries-=16; } else if (tries2 <= 48) { num_tries-=32; } else { num_tries-=48; } if (wp == -1) VectorCopy(origin, point); else VectorCopy(gWPArray[wp]->origin, point); if (tries2 <= 8) { point[0] += 1+(tries*64); point[1] += 1+(num_tries*64); } else if (tries2 <= 16) { point[0] += 1+(tries*64); point[1] += 1-(num_tries*64); } else if (tries2 <= 24) { point[0] += 1-(tries*64); point[1] += 1+(num_tries*64); } else { point[0] -= 1+(tries*64); point[1] -= 1+(num_tries*64); } //if (CheckAboveOK_Player(point)) // point[2] += 32; //else // continue; point[2] += 16; if (wp == -1) { if (OrgVisibleBox(origin, playerMins, playerMaxs, point, flag_list[flagnum].flagentity->s.number) && CheckBelowOK(point) && !CheckEntitiesInSpot(point) && VectorDistance(point, origin) > 128 && !TooCloseToOtherSpawnpoint(flagnum, point)) { //G_Printf("Adding spawn at %f %f %f.\n", point[0], point[1], point[2]); AddFlag_Spawn(flagnum, point, angles); //G_Printf("Adding spawn %f %f %f\n", point[0], point[1], point[2]); visible = qtrue; } //else // G_Printf("Not adding spawn at %f %f %f.\n", point[0], point[1], point[2]); } else { if (OrgVisibleBox(gWPArray[wp]->origin, playerMins, playerMaxs, point, -1) && CheckBelowOK(point) && !CheckEntitiesInSpot(point) && VectorDistance(point, origin) > 128 && !TooCloseToOtherSpawnpoint(flagnum, point)) { //G_Printf("Adding spawn at %f %f %f.\n", point[0], point[1], point[2]); AddFlag_Spawn(flagnum, point, angles); //G_Printf("Adding wp spawn %f %f %f\n", point[0], point[1], point[2]); visible = qtrue; } } } } if (visible != qfalse) break; else { //if (wp == -1) wp = GetNearestVisibleWP(flag_list[flagnum].flagentity->s.origin, flag_list[flagnum].flagentity->s.number);//NAV_FindClosestWaypointForPoint2( flag_list[flagnum].flagentity->s.origin ); //else // wp = GetNearestVisibleWP(flag_list[flagnum].flagentity->s.origin, flag_list[flagnum].flagentity->s.number);//NAV_FindClosestWaypointForPoint( flag_list[flagnum].flagentity, flag_list[flagnum].flagentity->s.origin ); } } G_Printf("^3*** ^3DominancE^5: Added ^7%i^5 spawnpoints at flag #^7%i^5.\n", flag_list[flagnum].num_spawnpoints, flagnum); }
void PreCalculate_Flag_Spawnpoints( int flagnum, vec3_t angles, vec3_t origin ) { #ifdef __UNUSED__ vec3_t fwd, point; int tries = 0, tries2 = 0; //qboolean visible = qfalse; qboolean alt = qfalse; origin[2]+=32; VectorCopy(origin, point); AngleVectors( angles, fwd, NULL, NULL ); while (1)//visible == qfalse) {// In case we need to try a second spawnpoint. vec3_t playerMins, playerMaxs; playerMins[0] = -15; playerMins[1] = -15; playerMins[2] = -1; playerMaxs[0] = 15; playerMaxs[1] = 15; playerMaxs[2] = 64;//96;//1; tries = 0; tries2 = 0; while (tries < 16) { tries++; tries2 = 0; while (tries2 < 128) { int num_tries; // For secondary spawns. (Behind point). tries2++; num_tries = tries2; if (tries2 <= 16) { } else if (tries2 <= 32) { num_tries-=16; } else if (tries2 <= 48) { num_tries-=32; } else { num_tries-=48; } VectorCopy(origin, point); if (alt) { if (tries2 <= 8) { point[0] -= 1+(tries*64); point[1] -= 1+(num_tries*64); } else if (tries2 <= 16) { point[0] -= 1+(tries*64); point[1] -= 1-(num_tries*64); } else if (tries2 <= 24) { point[0] -= 1-(tries*64); point[1] -= 1+(num_tries*64); } else { point[0] -= 1-(tries*64); point[1] -= 1-(num_tries*64); } } else { if (tries2 <= 8) { point[0] += 1+(tries*64); point[1] += 1+(num_tries*64); } else if (tries2 <= 16) { point[0] += 1+(tries*64); point[1] += 1-(num_tries*64); } else if (tries2 <= 24) { point[0] += 1-(tries*64); point[1] += 1+(num_tries*64); } else { point[0] += 1-(tries*64); point[1] += 1-(num_tries*64); } } //if (CheckAboveOK_Player(point)) // point[2] += 32; //else // continue; //point[2] += 16; if (OrgVisibleBox(origin, playerMins, playerMaxs, point, flag_list[flagnum].flagentity->s.number) && CheckBelowOK(point) && !AdvancedWouldTelefrag(point) && !CheckEntitiesInSpot(point) && VectorDistance(point, origin) > 128 && !TooCloseToOtherSpawnpoint(flagnum, point)) { //G_Printf("Adding spawn at %f %f %f.\n", point[0], point[1], point[2]); AddFlag_Spawn(flagnum, point, angles); //visible = qtrue; if (flag_list[flagnum].num_spawnpoints >= 64) { //G_Printf("Have 64 spawns!\n"); G_Printf("^3*** ^3Warzone^5: Added ^7%i^5 spawnpoints at flag #^7%i^5.\n", flag_list[flagnum].num_spawnpoints, flagnum); return; } } } } if (alt) break; else alt = qtrue; } G_Printf("^3*** ^3Warzone^5: Added ^7%i^5 spawnpoints at flag #^7%i^5.\n", flag_list[flagnum].num_spawnpoints, flagnum); #endif //__UNUSED__ }