#if defined(CSQC)
#include "../client/defs.qh"
#include "util.qh"
- #include <common/weapons/all.qh>
+ #include <common/weapons/_all.qh>
#include "mapinfo.qh"
#elif defined(MENUQC)
#elif defined(SVQC)
if(MapInfo_Get_ByName(_MapInfo_GlobItem(i), 1, NULL) == 2) // if we generated one... BAIL OUT and let the caller continue in the next frame.
if(pAbortOnGenerate)
{
- LOG_TRACE("Autogenerated a .mapinfo, doing the rest later.\n");
+ LOG_TRACE("Autogenerated a .mapinfo, doing the rest later.");
MapInfo_progress = i / _MapInfo_globcount;
return 0;
}
float i;
float inWorldspawn;
float r;
- float twoBaseModes;
float diameter, spawnpoints;
float spawnplaces;
}
else if(k == "classname")
{
- if(v == "dom_controlpoint")
- MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_DOMINATION.m_flags;
- else if(v == "item_flag_team2")
- MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_CTF.m_flags;
- else if(v == "team_CTF_blueflag")
- MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_CTF.m_flags;
- else if(v == "invasion_spawnpoint")
- MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_INVASION.m_flags;
- else if(v == "target_assault_roundend")
- MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_ASSAULT.m_flags;
- else if(v == "onslaught_generator")
- MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_ONSLAUGHT.m_flags;
- else if(substring(v, 0, 8) == "nexball_" || substring(v, 0, 4) == "ball")
- MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_NEXBALL.m_flags;
- else if(v == "info_player_team1")
+ if(v == "info_player_team1")
++spawnpoints;
else if(v == "info_player_team2")
++spawnpoints;
++spawnpoints;
else if(v == "info_player_deathmatch")
++spawnpoints;
- else if(v == "trigger_race_checkpoint")
- MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_RACE.m_flags;
- else if(v == "target_startTimer")
- MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_CTS.m_flags;
else if(v == "weapon_nex")
{ }
else if(v == "weapon_railgun")
MapInfo_Map_supportedFeatures |= MAPINFO_FEATURE_MONSTERS;
else if(v == "target_music" || v == "trigger_music")
_MapInfo_Map_worldspawn_music = string_null; // don't use regular BGM
+ else
+ FOREACH(Gametypes, true, it.m_generate_mapinfo(it, v));
}
}
}
}
diameter = vlen(mapMaxs - mapMins);
- twoBaseModes = MapInfo_Map_supportedGametypes & (MAPINFO_TYPE_CTF.m_flags | MAPINFO_TYPE_ASSAULT.m_flags | MAPINFO_TYPE_RACE.m_flags | MAPINFO_TYPE_NEXBALL.m_flags);
- if(twoBaseModes && (MapInfo_Map_supportedGametypes == twoBaseModes))
+ int twoBaseModes = 0;
+ FOREACH(Gametypes, it.m_isTwoBaseMode(), twoBaseModes |= it.m_flags);
+ if(twoBaseModes && (twoBaseModes &= MapInfo_Map_supportedGametypes))
{
- // we have a CTF-only or Assault-only map. Don't add other modes then,
- // as the map is too symmetric for them.
+ // we have a symmetrical map, don't add the modes without bases
}
else
{
- MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_DEATHMATCH.m_flags; // DM always works
- MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_LMS.m_flags; // LMS always works
- MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_KEEPAWAY.m_flags; // Keepaway always works
-
- if(spawnpoints >= 8 && diameter > 4096) {
- MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_TEAM_DEATHMATCH.m_flags;
- MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_FREEZETAG.m_flags;
- MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_CA.m_flags;
- }
- if(spawnpoints >= 12 && diameter > 5120)
- MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_KEYHUNT.m_flags;
+ FOREACH(Gametypes, it.m_isAlwaysSupported(it, spawnpoints, diameter), MapInfo_Map_supportedGametypes |= it.m_flags);
}
if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RACE.m_flags)
LOG_TRACE("-> diameter ", ftos(diameter));
LOG_TRACE("; spawnpoints ", ftos(spawnpoints));
- LOG_TRACE("; modes ", ftos(MapInfo_Map_supportedGametypes), "\n");
+ LOG_TRACE("; modes ", ftos(MapInfo_Map_supportedGametypes));
fclose(fh);
cvar_set("timelimit", sa);
s = cdr(s);
- if(pWantedType == MAPINFO_TYPE_TEAM_DEATHMATCH)
+ if(pWantedType.m_setTeams)
{
sa = car(s);
if(sa != "")
- cvar_set("g_tdm_teams", sa);
+ pWantedType.m_setTeams(sa);
s = cdr(s);
}
- if(pWantedType == MAPINFO_TYPE_KEYHUNT)
- {
- sa = car(s);
- if(sa != "")
- cvar_set("g_keyhunt_teams", sa);
- s = cdr(s);
- }
-
- if(pWantedType == MAPINFO_TYPE_CA)
- {
- sa = car(s);
- if(sa != "")
- cvar_set("g_ca_teams", sa);
- s = cdr(s);
- }
-
- if(pWantedType == MAPINFO_TYPE_FREEZETAG)
- {
- sa = car(s);
- if(sa != "")
- cvar_set("g_freezetag_teams", sa);
- s = cdr(s);
- }
-
- if(pWantedType == MAPINFO_TYPE_CTF)
- {
- sa = car(s);
- if(sa != "")
- cvar_set("fraglimit", sa);
- s = cdr(s);
- }
-
- /* keepaway wuz here
- if(pWantedType == MAPINFO_TYPE_KEEPAWAY)
- {
- sa = car(s);
- if(sa != "")
- cvar_set("fraglimit", sa);
- s = cdr(s);
- }
- */
-
// rc = timelimit timelimit_qualification laps laps_teamplay
if(pWantedType == MAPINFO_TYPE_RACE)
{
s = cdr(s);
}
- if(pWantedType == MAPINFO_TYPE_CTS)
- {
- sa = car(s);
-
- // this is the skill of the map
- // not parsed by anything yet
- // for map databases
- //if(sa != "")
- // cvar_set("fraglimit", sa);
-
- s = cdr(s);
- }
-
if(pWantedType == MAPINFO_TYPE_ASSAULT || pWantedType == MAPINFO_TYPE_ONSLAUGHT || pWantedType == MAPINFO_TYPE_CTS) // these modes don't use fraglimit
{
cvar_set("leadlimit", "0");
{
if(type == 0) // server set
{
- LOG_TRACE("Applying temporary setting ", t, " := ", s, "\n");
+ LOG_TRACE("Applying temporary setting ", t, " := ", s);
if(cvar("g_campaign"))
cvar_set(t, s); // this is a wrapper and is always temporary anyway; no need to backup old values then
else
}
else
{
- LOG_TRACE("Applying temporary client setting ", t, " := ", s, "\n");
+ LOG_TRACE("Applying temporary client setting ", t, " := ", s);
MapInfo_Map_clientstuff = strcat(
MapInfo_Map_clientstuff, "cl_cmd settemp \"", t, "\" \"", s, "\"\n"
);
{
if(cvar("g_mapinfo_allow_unsupported_modes_and_let_stuff_break"))
{
- LOG_SEVERE("can't play the selected map in the given game mode. Working with only the override settings.\n");
+ LOG_SEVERE("can't play the selected map in the given game mode. Working with only the override settings.");
_MapInfo_Map_ApplyGametypeEx("", t, t);
return; // do not call Get_ByName!
}
if(MapInfo_Map_supportedGametypes == 0)
{
- LOG_SEVERE("Mapinfo system is not functional at all. Assuming deathmatch.\n");
+ LOG_SEVERE("Mapinfo system is not functional at all. Assuming deathmatch.");
MapInfo_Map_supportedGametypes = MAPINFO_TYPE_DEATHMATCH.m_flags;
MapInfo_LoadMapSettings_SaveGameType(MAPINFO_TYPE_DEATHMATCH);
_MapInfo_Map_ApplyGametypeEx("", MAPINFO_TYPE_DEATHMATCH, MAPINFO_TYPE_DEATHMATCH);
FOREACH(Gametypes, it.m_flags == _t, { t = it; break; });
// t is now a supported mode!
- LOG_WARN("can't play the selected map in the given game mode. Falling back to a supported mode.\n");
+ LOG_WARN("can't play the selected map in the given game mode. Falling back to a supported mode.");
MapInfo_LoadMapSettings_SaveGameType(t);
}
MapInfo_Get_ByName(s, 1, t);
{
int f = MAPINFO_FLAG_FORBIDDEN;
-#ifndef MENUQC
+#ifdef GAMEQC
if (!cvar("g_maplist_allow_hidden"))
#endif
f |= MAPINFO_FLAG_HIDDEN;