UFO: Alien Invasion
|
Nation code. More...
#include "../../cl_shared.h"
#include "../../../shared/parse.h"
#include "../../../shared/shared.h"
#include "cp_campaign.h"
#include "cp_geoscape.h"
#include "cp_ufo.h"
#include "cp_time.h"
#include "save/save_nation.h"
#include "../../ui/node/ui_node_linechart.h"
#include "cp_missions.h"
Go to the source code of this file.
Macros | |
#define | HAPPINESS_ALIEN_MISSION_LOSS -0.02 |
#define | HAPPINESS_MAX_MISSION_IMPACT 0.07 |
Functions | |
nation_t * | NAT_GetRandom (void) |
Return a pointer to a random nation. More... | |
nation_t * | NAT_GetNationByID (const char *nationID) |
Return a nation-pointer by the nations id. More... | |
void | NAT_UpdateHappinessForAllNations (const float minhappiness) |
Lower happiness of nations depending on alien activity. More... | |
int | NAT_GetFunding (const nation_t *const nation, int month) |
Get the funding of a nation at a certain month. More... | |
const nationInfo_t * | NAT_GetCurrentMonthInfo (const nation_t *const nation) |
Get the current month nation stats. More... | |
const char * | NAT_GetHappinessString (const float happiness) |
Translates the nation happiness float value to a string. More... | |
const char * | NAT_GetCurrentHappinessString (const nation_t *nation) |
Translates the current nation happiness float value to a string. More... | |
void | NAT_SetHappiness (const float minhappiness, nation_t *nation, const float happiness) |
Updates the nation happiness. More... | |
bool | NAT_SaveXML (xmlNode_t *p) |
Nation saving callback. More... | |
void | CP_HandleNationData (float minHappiness, mission_t *mis, const nation_t *affectedNation, const missionResults_t *results, bool won) |
Updates each nation's happiness. Should be called at the completion or expiration of every mission. The nation where the mission took place will be most affected, surrounding nations will be less affected. More... | |
bool | NAT_LoadXML (xmlNode_t *p) |
Nation loading xml callback. More... | |
void | CL_ParseNations (const char *name, const char **text) |
Parse the nation data from script file. More... | |
city_t * | CITY_GetById (const char *cityId) |
Finds a city by it's scripted identifier. More... | |
city_t * | CITY_GetByPos (vec2_t pos) |
Finds a city by it's geoscape coordinates. More... | |
void | CITY_Parse (const char *name, const char **text) |
Parse the city data from script file. More... | |
bool | NAT_ScriptSanityCheck (void) |
Checks the parsed nations and cities for errors. More... | |
static void | NAT_ListStats_f (void) |
Console command for UI to gather nation statistics. More... | |
static void | NAT_DrawCharts_f (void) |
Console command for UI to draw charts. More... | |
void | NAT_HandleBudget (const campaign_t *campaign) |
Update the nation data from all parsed nation each month. More... | |
void | NAT_BackupMonthlyData (void) |
Backs up each nation's relationship values. More... | |
void | NAT_InitStartup (void) |
Init actions for nation-subsystem. More... | |
void | NAT_Shutdown (void) |
Closing actions for nation-subsystem. More... | |
Variables | |
static const value_t | nation_vals [] |
static const value_t | city_vals [] |
static const cmdList_t | nationCmds [] |
#define HAPPINESS_ALIEN_MISSION_LOSS -0.02 |
Definition at line 38 of file cp_nation.cpp.
Referenced by NAT_UpdateHappinessForAllNations().
#define HAPPINESS_MAX_MISSION_IMPACT 0.07 |
Definition at line 39 of file cp_nation.cpp.
Referenced by CP_HandleNationData().
city_t* CITY_GetById | ( | const char * | cityId | ) |
Finds a city by it's scripted identifier.
[in] | cityId | Scripted ID of the city |
Definition at line 411 of file cp_nation.cpp.
References ccs, ccs_s::cities, LIST_Foreach, and Q_streq.
Referenced by CITY_Parse().
Finds a city by it's geoscape coordinates.
[in] | pos | Position of the city |
Definition at line 424 of file cp_nation.cpp.
References ccs, ccs_s::cities, LIST_Foreach, and Vector2Equal.
Referenced by MIS_LoadXML().
void CITY_Parse | ( | const char * | name, |
const char ** | text | ||
) |
Parse the city data from script file.
[in] | name | ID of the found nation |
[in] | text | The text of the nation node |
Definition at line 445 of file cp_nation.cpp.
References ccs, cgi, ccs_s::cities, CITY_GetById(), cp_campaignPool, city_s::id, city_s::idx, LIST_Add(), ccs_s::numCities, OBJZERO, and cgame_import_s::PoolStrDup().
Referenced by CP_ParseScriptFirst().
void CL_ParseNations | ( | const char * | name, |
const char ** | text | ||
) |
Parse the nation data from script file.
[in] | name | Name or ID of the found nation |
[in] | text | The text of the nation node |
Definition at line 382 of file cp_nation.cpp.
References ccs, cgi, cp_campaignPool, DEBUG_CLIENT, nation_s::id, nation_s::idx, nationInfo_s::inuse, LIST_Add(), NAT_Foreach, ccs_s::nations, ccs_s::numNations, OBJZERO, cgame_import_s::PoolStrDup(), Q_streq, and nation_s::stats.
Referenced by CP_ParseScriptFirst().
void CP_HandleNationData | ( | float | minHappiness, |
mission_t * | mis, | ||
const nation_t * | affectedNation, | ||
const missionResults_t * | results, | ||
bool | won | ||
) |
Updates each nation's happiness. Should be called at the completion or expiration of every mission. The nation where the mission took place will be most affected, surrounding nations will be less affected.
[in] | minHappiness | Minimum value of mean happiness before the game is lost |
[in] | mis | Mission to evaluate |
[in] | affectedNation | Nation that's happiness is changing |
[in] | results | Mission result structure |
[in] | won | if PHALANX won |
Definition at line 263 of file cp_nation.cpp.
References missionResults_s::aliensKilled, missionResults_s::aliensStunned, missionResults_s::aliensSurvived, missionResults_s::civiliansKilled, missionResults_s::civiliansKilledFriendlyFire, missionResults_s::civiliansSurvived, nationInfo_s::happiness, HAPPINESS_MAX_MISSION_IMPACT, mission_s::mapDef, NAT_Foreach, NAT_GetCurrentMonthInfo(), NAT_SetHappiness(), and mapDef_s::victoryBonusPerAlien.
Referenced by CP_MissionEnd().
Backs up each nation's relationship values.
Back up nation relationship . "inuse" is copied as well so we do not need to set it anywhere.
Definition at line 826 of file cp_nation.cpp.
References i, MONTHS_PER_YEAR, and NAT_Foreach.
Referenced by CP_CampaignRun().
Console command for UI to draw charts.
Definition at line 584 of file cp_nation.cpp.
References cgi, cgame_import_s::Cmd_Argv(), int(), MAX_VAR, MONTHS_PER_YEAR, NAT_Foreach, NAT_GetFunding(), Q_streq, Q_strncpyz(), type, and cgame_import_s::UI_GetNodeByPath().
const char* NAT_GetCurrentHappinessString | ( | const nation_t * | nation | ) |
Translates the current nation happiness float value to a string.
[in] | nation |
Definition at line 176 of file cp_nation.cpp.
References nationInfo_s::happiness, NAT_GetCurrentMonthInfo(), and NAT_GetHappinessString().
Referenced by NAT_HandleBudget(), and NAT_SetHappiness().
const nationInfo_t* NAT_GetCurrentMonthInfo | ( | const nation_t *const | nation | ) |
Get the current month nation stats.
[in] | nation | Pointer to the nation |
Definition at line 132 of file cp_nation.cpp.
References nation_s::stats.
Referenced by AB_BaseSearchedByNations(), CP_BuildBaseGovernmentLeave(), CP_ChangeNationHappiness_f(), CP_CheckLostCondition(), CP_CheckTriggerEvent(), CP_ChooseNation(), CP_GetAverageXVIRate(), CP_HandleNationData(), GEO_DrawMarkers(), NAT_GetCurrentHappinessString(), NAT_HandleBudget(), NAT_UpdateHappinessForAllNations(), and UR_DialogInitSell_f().
Get the funding of a nation at a certain month.
[in] | nation | Pointer to the nation |
[in] | month | idx of the month – 0 for current month |
Definition at line 120 of file cp_nation.cpp.
References nationInfo_s::happiness, nation_s::maxFunding, MONTHS_PER_YEAR, and nation_s::stats.
Referenced by NAT_DrawCharts_f(), NAT_HandleBudget(), and NAT_ListStats_f().
const char* NAT_GetHappinessString | ( | const float | happiness | ) |
Translates the nation happiness float value to a string.
[in] | happiness | value |
Definition at line 143 of file cp_nation.cpp.
References _.
Referenced by NAT_GetCurrentHappinessString(), NAT_ListStats_f(), and UR_DialogInitSell_f().
nation_t* NAT_GetNationByID | ( | const char * | nationID | ) |
Return a nation-pointer by the nations id.
[in] | nationID | nation id as defined in scripts |
Definition at line 63 of file cp_nation.cpp.
References cgi, NAT_Foreach, and Q_streq.
Referenced by E_LoadXML(), NAT_LoadXML(), TEST_F(), and UR_DialogStartSell_f().
Return a pointer to a random nation.
Definition at line 45 of file cp_nation.cpp.
References ccs, i, NAT_Foreach, and ccs_s::numNations.
Referenced by E_InitialEmployees().
void NAT_HandleBudget | ( | const campaign_t * | campaign | ) |
Update the nation data from all parsed nation each month.
Definition at line 714 of file cp_nation.cpp.
References _, AIR_CRASHED, AIR_Foreach, salary_s::aircraftDivisor, salary_s::aircraftFactor, B_GetNext(), ccs, Com_sprintf(), count, CP_GameTimeStop(), CP_GetSalaryUpKeepBase(), CP_UpdateCredits(), ccs_s::credits, ccs_s::curCampaign, salary_s::debtInterest, E_CreateEmployee(), E_Foreach, E_GetEmployeeString(), EMPL_PILOT, EMPL_SCIENTIST, EMPL_SOLDIER, EMPL_WORKER, campaign_s::employeeRate, nationInfo_s::happiness, i, int(), MAX_EMPL, MS_AddNewMessage(), base_s::name, NAT_Foreach, NAT_GetCurrentHappinessString(), NAT_GetCurrentMonthInfo(), NAT_GetFunding(), ngettext, and campaign_s::salaries.
Referenced by CP_CampaignRun(), and TEST_F().
Init actions for nation-subsystem.
Definition at line 852 of file cp_nation.cpp.
References cgi.
Referenced by CP_InitStartup().
Console command for UI to gather nation statistics.
Definition at line 543 of file cp_nation.cpp.
References _, cgi, cgame_import_s::Cmd_Argv(), MAX_VAR, MONTHS_PER_YEAR, NAT_Foreach, NAT_GetFunding(), NAT_GetHappinessString(), Q_streq, and Q_strncpyz().
bool NAT_LoadXML | ( | xmlNode_t * | p | ) |
Nation loading xml callback.
[in] | p | XML Node structure, where we get the information from |
Definition at line 323 of file cp_nation.cpp.
References cgi, nationInfo_s::happiness, nationInfo_s::inuse, MONTHS_PER_YEAR, NAT_GetNationByID(), SAVE_NATION_HAPPINESS, SAVE_NATION_ID, SAVE_NATION_MONTH, SAVE_NATION_MONTH_IDX, SAVE_NATION_NATION, SAVE_NATION_NATIONS, SAVE_NATION_XVI, nation_s::stats, cgame_import_s::XML_GetNextNode(), cgame_import_s::XML_GetNode(), cgame_import_s::XML_GetString(), xmlNode_t, and nationInfo_s::xviInfection.
Referenced by SAV_Init().
bool NAT_SaveXML | ( | xmlNode_t * | p | ) |
Nation saving callback.
[out] | p | XML Node structure, where we write the information to |
Definition at line 228 of file cp_nation.cpp.
References cgi, nationInfo_s::happiness, nationInfo_s::inuse, MONTHS_PER_YEAR, NAT_Foreach, SAVE_NATION_HAPPINESS, SAVE_NATION_ID, SAVE_NATION_MONTH, SAVE_NATION_MONTH_IDX, SAVE_NATION_NATION, SAVE_NATION_NATIONS, SAVE_NATION_XVI, cgame_import_s::XML_AddNode(), xmlNode_t, and nationInfo_s::xviInfection.
Referenced by SAV_Init().
bool NAT_ScriptSanityCheck | ( | void | ) |
Checks the parsed nations and cities for errors.
Definition at line 470 of file cp_nation.cpp.
References ccs, cgi, ccs_s::cities, cgame_import_s::Com_UFOTypeToShortName(), mapDef_s::cultures, GEO_GetColor(), GEO_PositionFitsTCPNTypes(), GEO_PrintParameterStringByPos(), i, INTERESTCATEGORY_TERROR_ATTACK, cgame_import_s::LIST_ContainsString(), LIST_Foreach, MapDef_ForeachSingleplayerCampaign, MapIsWater, MAPTYPE_TERRAIN, mapDef_s::populations, REMOVE_ELEM, mapDef_s::storyRelated, mapDef_s::terrains, UFO_GetAvailableUFOsForMission(), UFO_MAX, and mapDef_s::ufos.
Updates the nation happiness.
[in] | minhappiness | Minimum value of mean happiness before the game is lost |
[in] | nation | The nation to update the happiness for |
[in] | happiness | The new happiness value to set for the given nation |
Definition at line 188 of file cp_nation.cpp.
References _, Com_sprintf(), cp_messageBuffer, nationInfo_s::happiness, MSO_CheckAddNewMessage(), nation_s::name, NAT_GetCurrentHappinessString(), NT_HAPPINESS_CHANGED, NT_HAPPINESS_MIN, NT_HAPPINESS_PLEASED, NT_NUM_NOTIFYTYPE, and nation_s::stats.
Referenced by CP_BuildBaseGovernmentLeave(), CP_ChangeNationHappiness_f(), CP_HandleNationData(), NAT_UpdateHappinessForAllNations(), and UR_DialogStartSell_f().
Closing actions for nation-subsystem.
Definition at line 860 of file cp_nation.cpp.
References ccs, cgi, ccs_s::cities, and ccs_s::nations.
Referenced by CP_Shutdown().
void NAT_UpdateHappinessForAllNations | ( | const float | minhappiness | ) |
Lower happiness of nations depending on alien activity.
Definition at line 83 of file cp_nation.cpp.
References cgi, DEBUG_CLIENT, GEO_GetNation(), nationInfo_s::happiness, HAPPINESS_ALIEN_MISSION_LOSS, MIS_Foreach, nation_s::name, NAT_GetCurrentMonthInfo(), NAT_SetHappiness(), STAGE_HARVEST, STAGE_RECON_GROUND, STAGE_SPREAD_XVI, STAGE_SUBVERT_GOV, and STAGE_TERROR_MISSION.
Referenced by CP_CampaignRun().
|
static |
Definition at line 433 of file cp_nation.cpp.
|
static |
Definition at line 360 of file cp_nation.cpp.
|
static |
Definition at line 839 of file cp_nation.cpp.