void CL_ParseMessageIDs (void) { const char* type, *name, *text; numMsgIDs = 0; OBJZERO(msgIDHash); if (cl_msgidPool != nullptr) { Mem_FreePool(cl_msgidPool); } else { cl_msgidPool = Mem_CreatePool("msgids"); } msgIDText = Mem_PoolAllocTypeN(char, MSGIDSIZE, cl_msgidPool); Com_Printf("\n----------- parse msgids -----------\n"); Com_Printf("%i msgid files\n", FS_BuildFileList("ufos/msgid/*.ufo")); text = nullptr; FS_NextScriptHeader(nullptr, nullptr, nullptr); while ((type = FS_NextScriptHeader("ufos/msgid/*.ufo", &name, &text)) != nullptr) { if (Q_streq(type, "msgid")) CL_ParseMessageID(name, &text); } }
void CP_ReadCampaignData (const campaign_t *campaign) { const char *type, *name, *text; /* stage two parsing */ FS_NextScriptHeader(NULL, NULL, NULL); text = NULL; Com_DPrintf(DEBUG_CLIENT, "Second stage parsing started...\n"); while ((type = FS_NextScriptHeader("ufos/*.ufo", &name, &text)) != NULL) CP_ParseScriptCampaignRelated(campaign, type, name, &text); }
/** * @brief Read the data for campaigns * @sa SAV_GameLoad * @sa CP_ResetCampaignData */ void CP_ParseCampaignData (void) { const char *type, *name, *text; int i; campaign_t *campaign; /* pre-stage parsing */ FS_BuildFileList("ufos/*.ufo"); FS_NextScriptHeader(NULL, NULL, NULL); text = NULL; while ((type = FS_NextScriptHeader("ufos/*.ufo", &name, &text)) != NULL) CP_ParseScriptFirst(type, name, &text); /* fill in IDXs for required research techs */ RS_RequiredLinksAssign(); /* stage two parsing */ FS_NextScriptHeader(NULL, NULL, NULL); text = NULL; Com_DPrintf(DEBUG_CLIENT, "Second stage parsing started...\n"); while ((type = FS_NextScriptHeader("ufos/*.ufo", &name, &text)) != NULL) CP_ParseScriptSecond(type, name, &text); INS_LinkTechnologies(); for (i = 0; i < cgi->csi->numTeamDefs; i++) { const teamDef_t *teamDef = &cgi->csi->teamDef[i]; if (!CHRSH_IsTeamDefAlien(teamDef)) continue; ccs.teamDefTechs[teamDef->idx] = RS_GetTechByID(teamDef->tech); if (ccs.teamDefTechs[teamDef->idx] == NULL) cgi->Com_Error(ERR_DROP, "Could not find a tech for teamdef %s", teamDef->id); } for (i = 0, campaign = ccs.campaigns; i < ccs.numCampaigns; i++, campaign++) { /* find the relevant markets */ campaign->marketDef = INV_GetEquipmentDefinitionByID(campaign->market); campaign->asymptoticMarketDef = INV_GetEquipmentDefinitionByID(campaign->asymptoticMarket); } Com_Printf("Campaign data loaded - size " UFO_SIZE_T " bytes\n", sizeof(ccs)); Com_Printf("...techs: %i\n", ccs.numTechnologies); Com_Printf("...buildings: %i\n", ccs.numBuildingTemplates); Com_Printf("...ranks: %i\n", ccs.numRanks); Com_Printf("...nations: %i\n", ccs.numNations); Com_Printf("...cities: %i\n", ccs.numCities); Com_Printf("\n"); }
/** * @brief Reloads the ui scripts and reinitializes the ui */ static void UI_Restart_f (void) { typedef std::vector<std::string> Names; Names names; for (int i = 0; i < ui_global.windowStackPos; i++) { names.push_back(std::string(ui_global.windowStack[i]->name)); } UI_Shutdown(); CLMN_Shutdown(); R_FontShutdown(); UI_Init(); R_FontInit(); Com_Printf("%i ui script files\n", FS_BuildFileList("ufos/ui/*.ufo")); FS_NextScriptHeader(nullptr, nullptr, nullptr); const char* type, *name, *text; text = nullptr; while ((type = FS_NextScriptHeader("ufos/*.ufo", &name, &text)) != nullptr) { if (Q_streq(type, "font")) UI_ParseFont(name, &text); else if (Q_streq(type, "menu_model")) UI_ParseUIModel(name, &text); else if (Q_streq(type, "sprite")) UI_ParseSprite(name, &text); } UI_Reinit(); FS_NextScriptHeader(nullptr, nullptr, nullptr); text = nullptr; while ((type = FS_NextScriptHeader("ufos/ui/*.ufo", &name, &text)) != nullptr) { if (Q_streq(type, "window")) UI_ParseWindow(type, name, &text); else if (Q_streq(type, "component")) UI_ParseComponent(type, name, &text); else if (Q_streq(type, "menu_model")) UI_ParseUIModel(name, &text); else if (Q_streq(type, "sprite")) UI_ParseSprite(name, &text); else if (Q_streq(type, "lua")) UI_ParseAndLoadLuaScript(name, &text); } CLMN_Init(); for (Names::iterator i = names.begin(); i != names.end(); ++i) { UI_PushWindow(i->c_str()); } }
/** @todo move it somewhere */ static void TEST_ParseScript (const char* scriptName) { const char* type, *name, *text; int nbWrongScripts = 0; /* parse ui node script */ Com_Printf("Load \"%s\": %i script file(s)\n", scriptName, FS_BuildFileList(scriptName)); FS_NextScriptHeader(nullptr, nullptr, nullptr); text = nullptr; while ((type = FS_NextScriptHeader(scriptName, &name, &text)) != nullptr) { try { CL_ParseClientData(type, name, &text); } catch (const comDrop_t& e) { CU_assertImplementation(CU_FALSE, __LINE__, va("Failed to parse needed scripts for type: %s and id %s", type, name), __FILE__, "", CU_FALSE); nbWrongScripts++; } } CU_ASSERT_FATAL(nbWrongScripts == 0); }
void CP_ReadCampaignData (const campaign_t *campaign) { const char *type, *name, *text; /* stage two parsing */ FS_NextScriptHeader(NULL, NULL, NULL); text = NULL; Com_DPrintf(DEBUG_CLIENT, "Second stage parsing started...\n"); while ((type = FS_NextScriptHeader("ufos/*.ufo", &name, &text)) != NULL) CP_ParseScriptCampaignRelated(campaign, type, name, &text); /* initialise date */ ccs.date = campaign->date; /* get day */ while (ccs.date.sec > SECONDS_PER_DAY) { ccs.date.sec -= SECONDS_PER_DAY; ccs.date.day++; } }