From 29a39884f68d4933bc6141d4be6b3610d173fc3a Mon Sep 17 00:00:00 2001 From: Mario Date: Sun, 19 Jun 2016 09:36:13 +1000 Subject: [PATCH] Clean up some for() loops, also replace a few remaining cases of VHF_ISVEHICLE with IS_VEHICLE --- qcsrc/common/vehicles/vehicle/bumblebee.qc | 2 +- qcsrc/server/bot/havocbot/havocbot.qc | 12 ++--- qcsrc/server/cl_client.qc | 27 ++++++----- .../mutators/mutator/gamemode_assault.qc | 46 +++++++++---------- .../mutators/mutator/gamemode_domination.qc | 14 +++--- .../mutators/mutator/gamemode_invasion.qc | 10 ++-- qcsrc/server/portals.qc | 2 +- qcsrc/server/spawnpoints.qc | 16 +++---- qcsrc/server/weapons/selection.qc | 4 +- qcsrc/server/weapons/weaponsystem.qc | 9 +++- 10 files changed, 68 insertions(+), 74 deletions(-) diff --git a/qcsrc/common/vehicles/vehicle/bumblebee.qc b/qcsrc/common/vehicles/vehicle/bumblebee.qc index 401483735c..d65d061fbc 100644 --- a/qcsrc/common/vehicles/vehicle/bumblebee.qc +++ b/qcsrc/common/vehicles/vehicle/bumblebee.qc @@ -562,7 +562,7 @@ bool bumblebee_pilot_frame(entity this) if((teamplay && trace_ent.team == this.team) || !teamplay) { - if(trace_ent.vehicle_flags & VHF_ISVEHICLE) + if(IS_VEHICLE(trace_ent)) { if(autocvar_g_vehicle_bumblebee_healgun_sps && trace_ent.vehicle_health <= trace_ent.max_health) trace_ent.vehicle_shield = min(trace_ent.vehicle_shield + autocvar_g_vehicle_bumblebee_healgun_sps * frametime, trace_ent.tur_head.max_health); diff --git a/qcsrc/server/bot/havocbot/havocbot.qc b/qcsrc/server/bot/havocbot/havocbot.qc index f6c0348d28..c3603e9ff1 100644 --- a/qcsrc/server/bot/havocbot/havocbot.qc +++ b/qcsrc/server/bot/havocbot/havocbot.qc @@ -1233,15 +1233,11 @@ float havocbot_moveto(entity this, vector pos) this.aistatus |= AI_STATUS_WAYPOINT_PERSONAL_LINKING; // if pos is inside a teleport, then let's mark it as teleport waypoint - entity head; - for(head = NULL; (head = find(head, classname, "trigger_teleport")); ) + FOREACH_ENTITY_CLASS("trigger_teleport", WarpZoneLib_BoxTouchesBrush(pos, pos, it, NULL), { - if(WarpZoneLib_BoxTouchesBrush(pos, pos, head, NULL)) - { - wp.wpflags |= WAYPOINTFLAG_TELEPORT; - this.lastteleporttime = 0; - } - } + wp.wpflags |= WAYPOINTFLAG_TELEPORT; + this.lastteleporttime = 0; + }); /* if(wp.wpflags & WAYPOINTFLAG_TELEPORT) diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index 0bdd2f19e7..1298ae4fe6 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -853,7 +853,6 @@ void ClientKill_TeamChange (entity this, float targetteam) // 0 = don't change, { float killtime; float starttime; - entity e; if (gameover) return; @@ -896,20 +895,20 @@ void ClientKill_TeamChange (entity this, float targetteam) // 0 = don't change, this.killindicator.count = bound(0, ceil(killtime), 10); //sprint(this, strcat("^1You'll be dead in ", ftos(this.killindicator.cnt), " seconds\n")); - for(e = NULL; (e = find(e, classname, "body")) != NULL; ) + FOREACH_ENTITY_ENT(enemy, this, { - if(e.enemy != this) + if(it.classname != "body") continue; - e.killindicator = spawn(); - e.killindicator.owner = e; - e.killindicator.scale = 0.5; - setattachment(e.killindicator, e, ""); - setorigin(e.killindicator, '0 0 52'); - setthink(e.killindicator, KillIndicator_Think); - e.killindicator.nextthink = starttime + (e.lip) * 0.05; - clientkilltime = max(clientkilltime, e.killindicator.nextthink + 0.05); - e.killindicator.cnt = ceil(killtime); - } + it.killindicator = spawn(); + it.killindicator.owner = it; + it.killindicator.scale = 0.5; + setattachment(it.killindicator, it, ""); + setorigin(it.killindicator, '0 0 52'); + setthink(it.killindicator, KillIndicator_Think); + it.killindicator.nextthink = starttime + (it.lip) * 0.05; + clientkilltime = max(clientkilltime, it.killindicator.nextthink + 0.05); + it.killindicator.cnt = ceil(killtime); + }); this.lip = 0; } } @@ -2031,7 +2030,7 @@ void PlayerUseKey(entity this) while(head) // find the closest acceptable target to enter { - if(head.vehicle_flags & VHF_ISVEHICLE) + if(IS_VEHICLE(head)) if(!IS_DEAD(head)) if(!head.owner || ((head.vehicle_flags & VHF_MULTISLOT) && SAME_TEAM(head.owner, this))) if(head.takedamage != DAMAGE_NO) diff --git a/qcsrc/server/mutators/mutator/gamemode_assault.qc b/qcsrc/server/mutators/mutator/gamemode_assault.qc index 938cdd748b..20b3b54c04 100644 --- a/qcsrc/server/mutators/mutator/gamemode_assault.qc +++ b/qcsrc/server/mutators/mutator/gamemode_assault.qc @@ -140,18 +140,17 @@ void assault_objective_decrease_use(entity this, entity actor, entity trigger) void assault_setenemytoobjective(entity this) { - entity objective; - for(objective = NULL; (objective = find(objective, targetname, this.target)); ) + FOREACH_ENTITY_STRING(targetname, this.target, { - if(objective.classname == "target_objective") + if(it.classname == "target_objective") { if(this.enemy == NULL) - this.enemy = objective; + this.enemy = it; else objerror(this, "more than one objective as target - fix the map!"); break; } - } + }); if(this.enemy == NULL) objerror(this, "no objective as target - fix the map!"); @@ -167,32 +166,32 @@ bool assault_decreaser_sprite_visible(entity this, entity player, entity view) void target_objective_decrease_activate(entity this) { - entity ent, spr; + entity spr; this.owner = NULL; - for(ent = NULL; (ent = find(ent, target, this.targetname)); ) + FOREACH_ENTITY_STRING(target, this.targetname, { - if(ent.assault_sprite != NULL) + if(it.assault_sprite != NULL) { - WaypointSprite_Disown(ent.assault_sprite, waypointsprite_deadlifetime); - if(ent.classname == "func_assault_destructible") - ent.sprite = NULL; // TODO: just unsetting it?! + WaypointSprite_Disown(it.assault_sprite, waypointsprite_deadlifetime); + if(it.classname == "func_assault_destructible") + it.sprite = NULL; // TODO: just unsetting it?! } - spr = WaypointSprite_SpawnFixed(WP_Assault, 0.5 * (ent.absmin + ent.absmax), ent, assault_sprite, RADARICON_OBJECTIVE); + spr = WaypointSprite_SpawnFixed(WP_Assault, 0.5 * (it.absmin + it.absmax), it, assault_sprite, RADARICON_OBJECTIVE); spr.assault_decreaser = this; spr.waypointsprite_visible_for_player = assault_decreaser_sprite_visible; spr.classname = "sprite_waypoint"; WaypointSprite_UpdateRule(spr, assault_attacker_team, SPRITERULE_TEAMPLAY); - if(ent.classname == "func_assault_destructible") + if(it.classname == "func_assault_destructible") { WaypointSprite_UpdateSprites(spr, WP_AssaultDefend, WP_AssaultDestroy, WP_AssaultDestroy); - WaypointSprite_UpdateMaxHealth(spr, ent.max_health); - WaypointSprite_UpdateHealth(spr, ent.health); - ent.sprite = spr; + WaypointSprite_UpdateMaxHealth(spr, it.max_health); + WaypointSprite_UpdateHealth(spr, it.health); + it.sprite = spr; } else WaypointSprite_UpdateSprites(spr, WP_AssaultDefend, WP_AssaultPush, WP_AssaultPush); - } + }); } void target_objective_decrease_findtarget(entity this) @@ -426,8 +425,9 @@ spawnfunc(target_assault_roundstart) // legacy bot code void havocbot_goalrating_ast_targets(entity this, float ratingscale) { - entity ad, best, wp, tod; - float radius, found, bestvalue; + entity ad, best, wp; + float radius, bestvalue; + bool found; vector p; ad = findchain(classname, "func_assault_destructible"); @@ -441,18 +441,18 @@ void havocbot_goalrating_ast_targets(entity this, float ratingscale) continue; found = false; - for(tod = NULL; (tod = find(tod, targetname, ad.target)); ) + FOREACH_ENTITY_STRING(targetname, ad.target, { - if(tod.classname == "target_objective_decrease") + if(it.classname == "target_objective_decrease") { - if(tod.enemy.health > 0 && tod.enemy.health < ASSAULT_VALUE_INACTIVE) + if(it.enemy.health > 0 && it.enemy.health < ASSAULT_VALUE_INACTIVE) { // dprint(etos(ad),"\n"); found = true; break; } } - } + }); if(!found) { diff --git a/qcsrc/server/mutators/mutator/gamemode_domination.qc b/qcsrc/server/mutators/mutator/gamemode_domination.qc index 6a217133a7..89740fbc43 100644 --- a/qcsrc/server/mutators/mutator/gamemode_domination.qc +++ b/qcsrc/server/mutators/mutator/gamemode_domination.qc @@ -165,7 +165,6 @@ void dompoint_captured(entity this) WaypointSprite_UpdateSprites(this.sprite, msg, WP_Null, WP_Null); total_pps = 0, pps_red = 0, pps_blue = 0, pps_yellow = 0, pps_pink = 0; - for(head = NULL; (head = find(head, classname, "dom_controlpoint")) != NULL; ) FOREACH_ENTITY_CLASS("dom_controlpoint", true, LAMBDA( if (autocvar_g_domination_point_amt) points = autocvar_g_domination_point_amt; @@ -362,16 +361,15 @@ void dom_controlpoint_setup(entity this) float total_controlpoints; void Domination_count_controlpoints() { - entity e; total_controlpoints = redowned = blueowned = yellowowned = pinkowned = 0; - for(e = NULL; (e = find(e, classname, "dom_controlpoint")) != NULL; ) + FOREACH_ENTITY_CLASS("dom_controlpoint", true, { ++total_controlpoints; - redowned += (e.goalentity.team == NUM_TEAM_1); - blueowned += (e.goalentity.team == NUM_TEAM_2); - yellowowned += (e.goalentity.team == NUM_TEAM_3); - pinkowned += (e.goalentity.team == NUM_TEAM_4); - } + redowned += (it.goalentity.team == NUM_TEAM_1); + blueowned += (it.goalentity.team == NUM_TEAM_2); + yellowowned += (it.goalentity.team == NUM_TEAM_3); + pinkowned += (it.goalentity.team == NUM_TEAM_4); + }); } float Domination_GetWinnerTeam() diff --git a/qcsrc/server/mutators/mutator/gamemode_invasion.qc b/qcsrc/server/mutators/mutator/gamemode_invasion.qc index 7c949d8663..9d31506e6d 100644 --- a/qcsrc/server/mutators/mutator/gamemode_invasion.qc +++ b/qcsrc/server/mutators/mutator/gamemode_invasion.qc @@ -112,15 +112,13 @@ float invasion_PickMonster(float supermonster_count) entity invasion_PickSpawn() { - entity e; - RandomSelection_Init(); - for(e = NULL;(e = find(e, classname, "invasion_spawnpoint")); ) + FOREACH_ENTITY_CLASS("invasion_spawnpoint", true, { - RandomSelection_Add(e, 0, string_null, 1, ((time >= e.spawnshieldtime) ? 0.2 : 1)); // give recently used spawnpoints a very low rating - e.spawnshieldtime = time + autocvar_g_invasion_spawnpoint_spawn_delay; - } + RandomSelection_Add(it, 0, string_null, 1, ((time >= it.spawnshieldtime) ? 0.2 : 1)); // give recently used spawnpoints a very low rating + it.spawnshieldtime = time + autocvar_g_invasion_spawnpoint_spawn_delay; + }); return RandomSelection_chosen_ent; } diff --git a/qcsrc/server/portals.qc b/qcsrc/server/portals.qc index f6502dfd81..7d85eec7eb 100644 --- a/qcsrc/server/portals.qc +++ b/qcsrc/server/portals.qc @@ -269,7 +269,7 @@ void Portal_Touch(entity this) return; // handled by think if(!autocvar_g_vehicles_teleportable) - if(other.vehicle_flags & VHF_ISVEHICLE) + if(IS_VEHICLE(other)) return; // no teleporting vehicles? if(!this.enemy) diff --git a/qcsrc/server/spawnpoints.qc b/qcsrc/server/spawnpoints.qc index f55fb1122a..21112d93f3 100644 --- a/qcsrc/server/spawnpoints.qc +++ b/qcsrc/server/spawnpoints.qc @@ -249,21 +249,19 @@ vector Spawn_Score(entity this, entity spot, float mindist, float teamcheck) vector spawn_score = prio * '1 0 0' + shortest * '0 1 0'; // filter out spots for assault - if(spot.target != "") { - entity ent; - float found; - - found = 0; - for(ent = NULL; (ent = find(ent, targetname, spot.target)); ) + if(spot.target != "") + { + int found = 0; + FOREACH_ENTITY_STRING(targetname, spot.target, { ++found; - if(ent.spawn_evalfunc) + if(it.spawn_evalfunc) { - spawn_score = ent.spawn_evalfunc(ent, this, spot, spawn_score); + spawn_score = it.spawn_evalfunc(it, this, spot, spawn_score); if(spawn_score.x < 0) return spawn_score; } - } + }); if(!found) { diff --git a/qcsrc/server/weapons/selection.qc b/qcsrc/server/weapons/selection.qc index 70284a8f4b..0288347ee1 100644 --- a/qcsrc/server/weapons/selection.qc +++ b/qcsrc/server/weapons/selection.qc @@ -21,7 +21,7 @@ void Send_WeaponComplain(entity e, float wpn, float type) void Weapon_whereis(Weapon this, entity cl) { if (!autocvar_g_showweaponspawns) return; - for (entity it = NULL; (it = findfloat(it, weapon, this.m_id)); ) + FOREACH_ENTITY_FLOAT(weapon, this.m_id, { if (it.classname == "droppedweapon" && autocvar_g_showweaponspawns < 2) continue; @@ -37,7 +37,7 @@ void Weapon_whereis(Weapon this, entity cl) RADARICON_NONE ); wp.wp_extra = this.m_id; - } + }); } bool client_hasweapon(entity this, Weapon wpn, float andammo, bool complain) diff --git a/qcsrc/server/weapons/weaponsystem.qc b/qcsrc/server/weapons/weaponsystem.qc index 21057e4a0b..77904aca5d 100644 --- a/qcsrc/server/weapons/weaponsystem.qc +++ b/qcsrc/server/weapons/weaponsystem.qc @@ -214,8 +214,13 @@ bool weapon_prepareattack_checkammo(Weapon thiswep, entity actor, bool secondary if (ammo) return true; // always keep the Mine Layer if we placed mines, so that we can detonate them if (thiswep == WEP_MINE_LAYER) - for (entity mine; (mine = find(mine, classname, "mine")); ) - if (mine.owner == actor) return false; + { + FOREACH_ENTITY_ENT(owner, actor, + { + if(it.classname != "mine") continue; + if(it.owner == actor) return false; + }); + } if (thiswep == WEP_SHOTGUN) if (!secondary && WEP_CVAR(shotgun, secondary) == 1) return false; // no clicking, just allow -- 2.39.2