#pragma once

#include <common/gametypes/gametype/lms/lms.qh>
#include <common/mapinfo.qh>
#ifdef CSQC
	#include "cl_survival.qh"
#endif

CLASS(Survival, Gametype)
	INIT(Survival)
	{
		this.gametype_init(this, _("Survival"), "surv", "g_survival", GAMETYPE_FLAG_USEPOINTS, "", "timelimit=20 pointlimit=12", _("Identify and eliminate all the hunters before all your allies are gone"));
	}
	METHOD(Survival, m_isAlwaysSupported, bool(Gametype this, int spawnpoints, float diameter))
	{
		return true;
	}
	METHOD(Survival, m_isForcedSupported, bool(Gametype this))
	{
		if(!cvar("g_survival_not_lms_maps"))
		{
			// if this is unset, all LMS maps support Survival too
			if(!(MapInfo_Map_supportedGametypes & this.gametype_flags) && (MapInfo_Map_supportedGametypes & MAPINFO_TYPE_LMS.gametype_flags))
			return true; // TODO: references another gametype (alternatively, we could check which gametypes are always enabled and append this if any are supported)
		}
		return false;
	}
#ifdef CSQC
	ATTRIB(Survival, m_modicons, void(vector myPos, vector mySize, bool should_draw), HUD_Mod_Survival);
#endif
ENDCLASS(Survival)
REGISTER_GAMETYPE(SURVIVAL, NEW(Survival));

#ifdef GAMEQC
// shared state signalling the player's survival status
.int survival_status;
const int SURV_STATUS_PREY = 1;
const int SURV_STATUS_HUNTER = 2;

// hardcoded player colors for survival
const int SURV_COLOR_PREY = 51; // green
const int SURV_COLOR_HUNTER = 68; // red
#endif
