#pragma once

#include <common/gamemodes/gamemode/lms/lms.qh>
#include <common/mapinfo.qh>

#ifdef CSQC
void HUD_Mod_Survival(vector pos, vector mySize);
#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 gamemodes are always enabled and append this if any are supported)
        }
        return false;
    }
#ifdef CSQC
    ATTRIB(Survival, m_modicons, void(vector pos, vector mySize), 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