24 #include "C4Version.h"
81 #include <unordered_map>
95 static C4Value GameGlobalSoundModifier;
98 ScenarioParameterDefs(GameScenarioParameterDefs),
99 Parameters(GameParameters),
100 StartupScenarioParameters(GameStartupScenarioParameters),
101 Clients(Parameters.Clients),
102 Teams(Parameters.Teams),
103 PlayerInfos(Parameters.PlayerInfos),
104 RestorePlayerInfos(Parameters.RestorePlayerInfos),
105 RoundResults(GameRoundResults),
109 GlobalSoundModifier(GameGlobalSoundModifier)
122 int32_t def_count = 0;
124 int def_res_count = 0;
134 int min_progress = 25 + (25 * i) / def_res_count;
135 int max_progress = 25 + (25 * (i + 1)) / def_res_count;
186 LogFatal(
"[!] Could not process record stream data!");
728 #ifdef WITH_QT_EDITOR
834 bool all_players_eliminated =
false;
837 all_players_eliminated =
true;
841 if (all_players_eliminated)
849 C4ST_NEW(ControlRcvStat,
"C4Game::Execute ReceiveControl")
862 #define EXEC_S(Expressions, Stat) \
863 { C4ST_START(Stat) Expressions C4ST_STOP(Stat) }
865 #define EXEC_S_DR(Expressions, Stat, DebugRecName) { if (Config.General.DebugRec) AddDbgRec(RCT_Block, DebugRecName, 6); EXEC_S(Expressions, Stat) }
866 #define EXEC_DR(Expressions, DebugRecName) { if (Config.General.DebugRec) AddDbgRec(RCT_Block, DebugRecName, 6); Expressions }
877 bool control_prepared;
879 if (!control_prepared)
919 , GEStats ,
"GEEx\0");
999 bool overload_materials =
true;
1000 bool overload_textures =
true;
1003 while (overload_materials || overload_textures)
1008 if (has_local_materials)
1015 has_local_materials =
false;
1021 if (!material_resource)
1036 bool continue_overload_materials =
false;
1037 bool continue_overload_textures =
false;
1050 overload_materials = overload_textures =
false;
1055 if (overload_textures)
1059 if (!local_text_count)
1061 continue_overload_textures =
true;
1063 tex_count += local_text_count;
1067 if (overload_materials)
1071 if (!local_mat_count)
1073 continue_overload_materials =
true;
1075 mat_count += local_mat_count;
1079 overload_textures = continue_overload_textures;
1080 overload_materials = continue_overload_materials;
1116 obj->ClearPointers(to_obj);
1248 int32_t x, int32_t y, int32_t r,
1250 int32_t con, int32_t controller,
bool grow_from_center)
1260 memset(&rect,
'\0',
sizeof(rect));
1277 obj->
Init( def, creator, owner, info, x, y, r, xdir, ydir, rdir, controller );
1297 obj->
DoCon(con, grow_from_center);
1316 int32_t x, int32_t y, int32_t r,
bool grow_from_center,
1331 FullCon, controller, grow_from_center);
1335 int32_t x, int32_t y, int32_t r,
bool grow_from_center,
1339 if (!proplist || !proplist->
GetDef())
1348 FullCon, controller, grow_from_center);
1352 int32_t x, int32_t y)
1376 int32_t center_x, int32_t bottom_y,
1378 bool adjust_terrain)
1386 if (!(def = proplist->
GetDef()))
1393 int32_t x = center_x - wdt/2;
1394 int32_t y = bottom_y - hgt;
1400 if (wdt * hgt < 12000)
1410 if (!(obj =
NewObject(proplist, creator,
1412 center_x, bottom_y, 0,
1428 search_area.
Wdt = wdt;
1429 search_area.
Hgt = hgt;
1438 if (obj->Status && !obj->Contained)
1442 C4Rect blocking_area = obj->Shape;
1443 blocking_area.
x += obj->GetX();
1444 blocking_area.
y += obj->GetY();
1445 if (search_area.
Overlap(blocking_area))
1457 int32_t x, int32_t y, int32_t wdt, int32_t hgt,
1463 int32_t closest_distance = 0;
1464 int32_t min_distance = -1;
1465 C4Object *find_next_copy = find_next;
1468 if (def && !def->
Count)
1474 if (find_next && (wdt == -1) && (hgt == -1))
1476 int32_t dx = find_next->
GetX() - x;
1477 int32_t dy = find_next->
GetY() - y;
1478 min_distance = dx * dx + dy * dy;
1479 find_next =
nullptr;
1490 if (!def || (obj->Def == def))
1496 if ((wdt == 0) && (hgt == 0))
1498 if (Inside<int32_t>(x-(obj->GetX()+obj->Shape.x), 0, obj->Shape.Wdt-1))
1499 if (Inside<int32_t>(y-(obj->GetY()+obj->Shape.y), 0, obj->Shape.Hgt-1))
1504 if ((wdt == -1) && (hgt == -1))
1506 int32_t dx = obj->
GetX() - x;
1507 int32_t dy = obj->GetY() - y;
1508 int32_t distance = dx * dy + dy * dy;
1510 if ((distance == min_distance) && !find_next_copy)
1513 if (!closest_obj || (distance < closest_distance))
1514 if (distance > min_distance)
1517 closest_distance = distance;
1521 else if (Inside<int32_t>(obj->GetX()-x, 0, wdt-1) && Inside<int32_t>(obj->GetY()-y, 0, hgt-1))
1526 if (obj == find_next_copy)
1528 find_next = find_next_copy =
nullptr;
1537 float game_x,
float game_y,
DWORD category,
float gui_x,
float gui_y)
1546 layer_object =
player->Cursor->Layer;
1562 if (obj->Category & category)
1564 if (!obj->Contained)
1566 if (obj->IsVisible(player_nr,
false))
1570 if (obj->Layer != layer_object)
1575 float obj_x, obj_y, check_x, check_y;
1579 check_x = gui_x; check_y = gui_y;
1580 obj->GetViewPos(obj_x, obj_y, -viewport_gui.
X, -viewport_gui.
Y, viewport_gui);
1585 check_x = game_x; check_y = game_y;
1586 obj->GetViewPos(obj_x, obj_y, x, y, viewport_game);
1589 if (Inside<float>(check_x-(obj_x+obj->Shape.x),0,
float(obj->Shape.Wdt)-1))
1590 if (Inside<float>(check_y-(obj_y+obj->Shape.y-obj->addtop()),0,
float(obj->Shape.Hgt+obj->addtop()-1)))
1640 if (!obj->Status && (obj->RemovalDelay == 0))
1666 else if (obj->RemovalDelay > 0)
1668 obj->RemovalDelay--;
1708 if (!group.
Open(filename))
1765 int32_t out_obj_size = 0;
1768 out_obj_size = out_objects->
GetSize();
1769 out_objects->
SetSize(out_obj_size + amount);
1771 for (int32_t count = 0; count < amount; count++)
1775 int32_t angle =
Random(360);
1785 if (obj && obj->
Status && out_objects)
1787 (*out_objects)[out_obj_size + count] =
C4VObj(obj);
1902 const float zoom = r.
Zoom;
1907 const float fixedOffsetX = -cgo.
X * cgo.
Zoom + cgo.
X;
1908 const float fixedOffsetY = (-cgo.
Y - 10.0f) * cgo.
Zoom + cgo.
Y;
1915 const bool drawCursorInfo = (
player->Number == player_nr || player_nr ==
NO_OWNER)
1919 const bool drawPlayerAndCursorNames = (
player->Number != player_nr)
1923 if (!drawPlayerAndCursorNames && !drawCursorInfo)
1929 float drawX, drawY, drawZoom;
1930 auto calculateObjectTextPosition = [&](
C4Object *obj)
1932 obj->GetDrawPosition(cgo,
fixtof(obj->fix_x),
fixtof(obj->fix_y), 1.0, drawX, drawY, drawZoom);
1933 drawX = drawX * cgo.
Zoom + fixedOffsetX;
1934 drawY = drawY * cgo.
Zoom -
static_cast<float>(obj->Def->Shape.Hgt) / 2.0 + fixedOffsetY;
1938 if (drawPlayerAndCursorNames)
1943 if (!crew->
Status || !crew->
Def)
continue;
1946 if (!crew->
IsVisible(player_nr,
false))
continue;
1948 calculateObjectTextPosition(crew);
1968 int32_t char_width, dummy;
1970 int32_t iMaxLine = std::max<int32_t>(cgo.
Wdt / std::max<int32_t>(1, char_width), 20);
1974 int textWidth, textHeight;
1981 else if (drawCursorInfo)
1984 calculateObjectTextPosition(cursor);
1987 drawY += -fctCursor.Hgt;
1988 fctCursor.Draw(cgo.
Surface, drawX -
static_cast<float>(fctCursor.Wdt) / 2.0, drawY, 4);
2006 drawY -
static_cast<float>(texthgt) / 2.0,
2057 if (settings.init_mode ==
IM_Normal && settings.fExact)
2059 compiler->
Name(
"Game");
2095 if (settings.fExact)
2104 compiler->
Name(
"GUI");
2128 if (settings.fPlayers)
2157 CompileSettings Settings(init_mode,
false, exact, sync);
2163 if (!CompileFromBuf_LogWarn<StdCompilerINIRead>(
2186 DecompileToBuf_Log<StdCompilerINIWrite>(
mkParAdapt(*
this, CompileSettings(save_section ?
IM_Section :
IM_Normal, !save_section && save_exact, save_exact, save_sync), numbers), &Buf,
"Game");
2206 bool result = !!result_c4v;
2250 group.
Add(real_filename.
getData(), bytes, size,
false,
true);
2258 int32_t iSfcWdt = 200;
2259 int32_t iSfcHgt = 150;
2260 if (!(sfcPic =
new C4Surface(iSfcWdt, iSfcHgt, 0)))
2268 sfcPic, 0,0, iSfcWdt, iSfcHgt);
2292 return DoKeyboardInput(Key, event_type, for_dialog, fPlrCtrlOnly, strength);
2460 static void FileMonitorCallback(
const char * file,
const char * extrafile)
2519 bool reload_succeeded;
2531 obj->UpdateFace(
true);
2534 reload_succeeded =
true;
2543 obj->AssignRemoval();
2551 Log(
"Reloading failure. All objects of this type removed.");
2552 reload_succeeded =
false;
2562 return reload_succeeded;
2591 LogF(
"Reloading failure. All particles removed.");
2607 Log(
"Debugger disabled. Not allowed in league.");
2621 pFileMonitor = std::make_unique<C4FileMonitor>(FileMonitorCallback);
2757 bool landscape_loaded =
false;
2771 if (init_mode !=
IM_Normal && landscape_loaded)
2888 if (landscape_loaded)
2957 if (
player->LocalControl)
3041 LogF(
"C4AulScriptEngine linked - %d line%s, %d warning%s, %d error%s",
3075 int32_t player_count = 0;
3147 if (player_count == 0)
3251 C4ID *idlist, int32_t maxidlist)
3253 int32_t cnt, cnt2, ccount, cpos;
3254 for (cpos = 0, cnt = 0; rlist.
GetID(cnt); cnt++)
3258 for (cnt2 = 0; cnt2 < ccount; cnt2++)
3260 if (cpos < maxidlist)
3262 idlist[cpos] = rlist.
GetID(cnt);
3273 int32_t cnt, tx, ty;
3274 for (cnt = 0; cnt < 35; cnt++)
3289 static bool PlaceVegetation_GetRandomPoint(int32_t iX, int32_t iY, int32_t iWdt, int32_t iHgt,
C4PropList * shape_proplist,
C4PropList * out_pos_proplist, int32_t *piTx, int32_t *piTy)
3292 if (shape_proplist && out_pos_proplist)
3301 *piTx = iX +
Random(iWdt);
3302 *piTy = iY +
Random(iHgt);
3307 static bool PlaceVegetation_IsPosInBounds(int32_t iTx, int32_t iTy, int32_t iX, int32_t iY, int32_t iWdt, int32_t iHgt,
C4PropList * shape_proplist)
3318 if (iTy < iY)
return false;
3325 int32_t cnt, iTx, iTy, iMaterial;
3329 if (!PropList || !(pDef = PropList->
GetDef()))
return nullptr;
3343 for (cnt = 0; cnt < 20; cnt++)
3346 if (!PlaceVegetation_GetRandomPoint(x, y, wdt, hgt, shape_proplist, out_pos_proplist, &iTx, &iTy))
break;
3353 if (!PlaceVegetation_IsPosInBounds(iTx, iTy, x, y, wdt, hgt, shape_proplist))
continue;
3374 if (!PlaceVegetation_GetRandomPoint(x, y, wdt, hgt, shape_proplist, out_pos_proplist, &iTx, &iTy))
return nullptr;
3383 if (!PlaceVegetation_IsPosInBounds(iTx, iTy, x, y, wdt, hgt, shape_proplist))
return nullptr;
3390 for (cnt = 0; cnt < 5; cnt++)
3393 if (!PlaceVegetation_GetRandomPoint(x, y, wdt, hgt, shape_proplist, out_pos_proplist, &iTx, &iTy))
break;
3400 if (!PlaceVegetation_IsPosInBounds(iTx, iTy, x, y, wdt, hgt, shape_proplist))
continue;
3414 for (cnt = 0; cnt < 20; cnt++)
3417 if (!PlaceVegetation_GetRandomPoint(x, y, wdt, hgt, shape_proplist, out_pos_proplist, &iTx, &iTy))
break;
3425 if (!PlaceVegetation_IsPosInBounds(iTx, iTy, x, y, wdt, hgt, shape_proplist))
3449 if (!PropList || !(pDef = PropList->
GetDef()))
return nullptr;
3471 if (iY <= 0)
return nullptr;
3483 const int32_t maxvid = 100;
3484 int32_t cnt, vidnum;
3485 C4ID vidlist[maxvid];
3492 for (cnt = 0; cnt < amt; cnt++)
3499 const int32_t maxvid = 100;
3500 int32_t cnt, vidnum;
3501 C4ID vidlist[maxvid];
3509 for (cnt = 0; cnt < amt; cnt++)
3519 C4ID idAnimal; int32_t iCount;
3523 for (cnt2 = 0; cnt2 < iCount; cnt2++)
3531 for (cnt2 = 0; cnt2 < iCount; cnt2++)
3559 if (std::strlen(section_name)>
C4MaxName || !*section_name)
3655 Keys.clear(); Keys.emplace_back(K_LEFT);
3658 Keys.clear(); Keys.emplace_back(K_RIGHT);
3661 Keys.clear(); Keys.emplace_back(K_UP);
3664 Keys.clear(); Keys.emplace_back(K_DOWN);
3667 Keys.clear(); Keys.emplace_back(K_SPACE); Keys.emplace_back(K_RETURN);
3670 Keys.clear(); Keys.emplace_back(K_ESCAPE);
3673 Keys.clear(); Keys.emplace_back(K_SPACE);
3680 Keys.emplace_back(K_RETURN);
3681 Keys.emplace_back(K_F2);
3731 LogFatal(
"[!]Error loading player controls");
3763 if (!(
player =
Players.
Join(filename,
true, at_client, at_client_name, info,
nullptr) ))
3770 if (
player->LocalControl)
3820 if (!pPlayer->Eliminated)
3822 pPlayer->EvaluateLeague(
false,
true);
3894 if (!RefClient.
Init() ||
3913 if (!dialog || !dialog->
Show(::
pGUI,
true))
3919 while (RefClient.
isBusy())
3941 if (!RefClient.
GetReferences(refs, ref_count) || ref_count <= 0)
3949 for (
int i = 0; i < ref_count; i++)
3962 bool success =
false;
3967 CompileFromBuf<StdCompilerINIRead>(
mkNamingAdapt(ref,
"Reference"), join_data);
4080 int32_t maxNumber{0};
4092 if (obj->
Number > maxNumber)
4101 if (obj->
Number == other->Number)
4110 if (inactive != obj)
4126 if (!check.that(obj))
4134 if (!check.that(obj))
4167 for (int32_t placed = 0; placed < amount; placed++)
4181 for (int32_t placed = 0; placed < std::max<int32_t>(amount, 1); placed++)
4195 for (int32_t placed = 0; placed < amount; placed++)
4217 #ifdef WITH_QT_EDITOR
4249 while (existing_section)
4257 existing_section = (prev = existing_section)->pNext;
4260 bool deleted_current_section =
false;
4261 if (existing_section)
4264 if (deleted_current_section)
4281 existing_section->
pNext =
nullptr;
4282 delete existing_section;
4289 new_section->
pNext =
nullptr;
4294 if (deleted_current_section)
4301 return !!new_section;
4325 while (section_to_load)
4333 section_to_load = section_to_load->
pNext;
4336 if (!section_to_load)
4338 DebugLogF(
"LoadScenarioSection: scenario section %s not found!", section_name);
4353 DebugLog(
"LoadScenarioSection: error opening current group file");
4364 if (!scenario.
Save(*section_group,
true))
4366 DebugLog(
"LoadScenarioSection: Error saving C4S");
4374 DebugLog(
"LoadScenarioSection: Error saving Landscape");
4379 if (!
PXS.
Save(*section_group))
4381 DebugLog(
"LoadScenarioSection: Error saving PXS");
4387 if (!MassMoverSet.
Save(*section_group))
4389 DebugLog(
"LoadScenarioSection: Error saving MassMover");
4398 if (!
SaveData(*section_group,
true,
false,
false, &numbers))
4400 DebugLog(
"LoadScenarioSection: Error saving objects");
4413 if (!(section_group = section_to_load->
GetGroupfile(group)))
4415 DebugLog(
"LoadScenarioSection: error opening group file");
4422 obj->AssignRemoval();
4428 DebugLogF(
"LoadScenarioSection: WARNING: Object %d created in destruction process!", (
int) obj->Number);
4451 std::string old_sky;
4457 C4S.
Load(*section_group,
true, is_main_section);
4474 DebugLog(
"LoadScenarioSection: Error reiniting game");
4571 static const std::unordered_map<std::string, C4GUI::Icons> str_to_icon =
4601 assert(spec && *spec);
4610 auto it = str_to_icon.find(spec);
4611 if (it != str_to_icon.end())
4624 assert(spec && *spec);
4644 def->
Draw(target,
false, color,
nullptr, 0, 0, transform);
4652 assert(spec && *spec);
4661 return static_cast<float>(source.
Wdt) /
static_cast<float>(source.
Hgt);
4678 const StdMesh& mesh = *gfx->Mesh;
4680 return (box.
x2 - box.
x1) / (box.
y2 - box.
y1);
4698 if (!source_def_proplist)
4702 C4Def *source_def = source_def_proplist->
GetDef();
4715 source_def->
Draw(target,
false, color);
4721 if (!source_graphics)
4725 source_graphics->
Draw(target, color,
nullptr, 0, 0,
nullptr);
4758 std::string func{
function };
4761 func.insert(0, 1,
'~');
4767 if (reject_test && !!result)
4818 return input_string.
_getStr();
4834 char lang_code[3] =
"";
4841 if (proplist->
GetPropertyByS(lang_string, &localized_string_val))
4844 if (localized_string)
4847 if (selected_language)
4849 selected_language->
SetString(lang_string);
4851 return localized_string;
4860 if (proplist->
GetPropertyByS(lang_string, &localized_string_val))
4863 if (localized_string)
4866 if (selected_language)
4868 selected_language->
SetString(lang_string);
4870 return localized_string;
4882 return value_proplist;
void InitCoreFunctionMap(C4AulScriptEngine *pEngine)
const int32_t C4ClientIDHost
#define C4CFN_ScenarioObjectsScript
#define C4CFN_PlayerControls
#define C4CFN_ScenarioTitle
#define C4CFN_ScriptStringTbl
#define C4CFN_ScriptFiles
#define C4CFN_ScenarioSections
#define C4CFN_RoundResults
#define C4CFN_SavePlayerInfos
#define C4CFN_MaterialFiles
const int C4MaxGammaUserRamps
const uint32_t OCF_Exclusive
const int C4UpperBoardHeight
const uint32_t OCF_CrewMember
const int32_t C4D_Foreground
const int32_t C4D_Place_Liquid
const int32_t C4D_Place_Surface
const int32_t C4D_Place_Air
const int32_t C4D_MouseIgnore
const int32_t C4D_Place_Subsurface
const int32_t C4D_Place_BothSurface
C4Def * C4Id2Def(C4ID id)
#define C4FxCall_RemoveClear
bool GetTextSpecFacet(const char *spec, C4Facet &facet)
C4ID DefFileGetID(const char *filename)
bool LandscapeFree(int32_t x, int32_t y)
#define EXEC_S(Expressions, Stat)
#define EXEC_S_DR(Expressions, Stat, DebugRecName)
#define EXEC_DR(Expressions, DebugRecName)
int32_t ListExpandValids(C4IDList &rlist, C4ID *idlist, int32_t maxidlist)
const int32_t C4SyncCheckRate
C4GameMessageList Messages
const int32_t C4GM_MaxText
void InitGameFunctionMap(C4AulScriptEngine *pEngine)
#define PSF_InitializePlayers
#define PSF_InitializeAmbience
#define PSF_InitializeObjects
#define PSF_SaveScenarioObjects
void InitObjectFunctionMap(C4AulScriptEngine *pEngine)
int CompareVersion(int iVer1, int iVer2, int iRVer1=C4XVER1, int iRVer2=C4XVER2)
C4AulScriptEngine ScriptEngine
C4Application Application
C4MouseControl MouseControl
C4GraphicsSystem GraphicsSystem
C4GraphicsResource GraphicsResource
#define C4GSPrio_Scenario
bool FindLiquid(int32_t &rx, int32_t &ry, int32_t width, int32_t height)
bool FindSurfaceLiquid(int32_t &rx, int32_t &ry, int32_t width, int32_t height)
bool FindTunnel(int32_t &rx, int32_t &ry, int32_t width, int32_t height)
bool FindSolidGround(int32_t &rx, int32_t &ry, int32_t width)
bool AboveSemiSolid(int32_t &rx, int32_t &ry)
bool SemiAboveSolid(int32_t &rx, int32_t &ry)
bool DensitySolid(int32_t dens)
bool GBackSemiSolid(int32_t x, int32_t y)
int32_t GBackMat(int32_t x, int32_t y)
int32_t GBackDensity(int32_t x, int32_t y)
const char * LoadResStr(const char *id)
bool Log(const char *szMessage)
bool DebugLog(const char *strMessage)
bool LogSilentF(const char *strMessage,...)
bool LogF(const char *strMessage,...)
bool LogFatal(const char *szMessage)
bool DebugLogF(const char *strMessage ...)
C4MapScriptHost MapScript
C4MaterialMap MaterialMap
C4ParticleSystem Particles
int32_t Hostile(int32_t plr1, int32_t plr2)
void FixedRandom(uint64_t seed)
C4RankSystem DefaultRanks
float fixtof(const C4Fixed &x)
C4Fixed itofix(int32_t x)
void AddDbgRec(C4RecordChunkType eType, const void *pData, int iSize)
#define C4S_REINIT_SCENARIO
#define C4S_SAVE_LANDSCAPE
const char * C4ScenSect_Main
C4GameScriptHost GameScript
C4SoundInstance * StartSoundEffect(const char *szSndName, bool fLoop, int32_t iVolume, C4Object *pObj, int32_t iCustomFalloffDistance, int32_t iPitch, C4SoundModifier *modifier)
#define C4ST_SHOWPARTSTAT(FrameCounter)
#define C4ST_NEW(StatName, strName)
C4Value C4VObj(C4Object *pObj)
C4Value C4VInt(int32_t i)
C4Value C4VPropList(C4PropList *p)
C4Value C4VString(C4String *pStr)
#define SHA_DIGEST_LENGTH
unsigned int SCharCount(char cTarget, const char *szInStr, const char *cpUntil)
int SCharPos(char cTarget, const char *szInStr, int iIndex)
bool SEqual2(const char *szStr1, const char *szStr2)
bool SIsModule(const char *szList, const char *szString, int *ipIndex, bool fCaseSensitive)
bool SCopySegment(const char *szString, int iSegment, char *sTarget, char cSeparator, int iMaxL, bool fSkipWhitespace)
void SCopy(const char *szSource, char *sTarget, size_t iMaxL)
void SWordWrap(char *szText, char cSpace, char cSepa, int iMaxLine)
bool SEqualNoCase(const char *szStr1, const char *szStr2, int iLen)
void SCopyUntil(const char *szSource, char *sTarget, char cUntil, int iMaxL, int iIndex)
size_t SLen(const char *sptr)
StdParameterAdapt< T, P > mkParAdapt(T &&rObj, P &&rPar)
StdStringAdapt mkStringAdaptMA(char(&szString)[size])
StdNamingAdapt< T > mkNamingAdapt(T &&rValue, const char *szName)
StdStrBuf FormatString(const char *szFmt,...)
bool EraseItem(const char *szItemName)
char * GetExtension(char *szFilename)
bool ItemIdentical(const char *szFilename1, const char *szFilename2)
char * GetFilename(char *szPath)
void AppendBackslash(char *szFilename)
void RemoveExtension(char *szFilename)
bool EraseFile(const char *szFileName)
StdMeshMatManager MeshMaterialManager
C4MusicSystem MusicSystem
C4SoundSystem SoundSystem
static bool InitDebug(const char *szPassword, const char *szHost)
static C4AulDebug * GetDebugger()
void ClearPointers(C4Object *)
void Denumerate(C4ValueNumbers *) override
bool ReloadScript(const char *szScript, const char *szLanguage)
C4PropListStatic * GetPropList()
C4Effect * pGlobalEffects
C4AulUserFile * GetUserFile(int32_t handle)
void RegisterGlobalConstant(const char *szName, const C4Value &rValue)
void CloseUserFile(int32_t handle)
void Link(C4DefList *rDefs)
void ReLink(C4DefList *rDefs)
StdStrBuf GrabFileContents()
const char * getName() const
C4Client * getLocal() const
C4Client * getClientByID(int32_t iID) const
bool Init(int32_t iLocalClientID=C4ClientIDHost)
bool Load(C4Group &hGroup, const char *szFilename, const char *szLanguage=nullptr)
const StdStrBuf & GetDataBuf() const
const char * GetData() const
bool GetLanguageString(const char *szLanguage, StdStrBuf &rTarget)
C4PlayerControlAssignmentSets UserSets
int32_t GamepadGuiControl
char Participants[CFG_MaxString+1]
char LanguageEx[CFG_MaxString+1]
char MissionAccess[CFG_MaxString+1]
bool CreateSaveFolder(const char *directory, const char *language_title)
const char * AtRelativePath(const char *filename)
const char * AtTempPath(const char *filename)
const char * AtUserDataPath(const char *filename)
const char * GetSubkeyPath(const char *subkey)
C4ConfigControls Controls
C4ConfigDeveloper Developer
C4ConfigGraphics Graphics
bool UpdateHaltCtrls(bool fHalt)
void Out(const char *message)
bool Message(const char *szMessage, bool fQuery=false)
void ClearPointers(C4Object *pObj)
static C4ControlEMMoveObject * CreateObject(const C4ID &id, C4Real x, C4Real y, C4Object *container)
std::vector< C4KeyCodeEx > CodeList
C4DefGraphics * Get(const char *szGrpName)
void Draw(C4Facet &cgo, DWORD iColor, C4Object *pObj, int32_t iPhaseX, int32_t iPhaseY, C4DrawTransform *trans)
char Filename[_MAX_FNAME_LEN]
bool LoadDefCore(C4Group &hGroup)
void Draw(C4Facet &cgo, bool fSelected=false, DWORD iColor=0, C4Object *pObj=nullptr, int32_t iPhaseX=0, int32_t iPhaseY=0, C4DrawTransform *trans=nullptr, const char *graphicsName=nullptr)
int32_t Load(C4Group &hGroup, DWORD dwLoadWhat, const char *szLanguage, C4SoundSystem *pSoundSystem=nullptr, bool fOverload=false, bool fSearchMessage=false, int32_t iMinProgress=0, int32_t iMaxProgress=0, bool fLoadSysGroups=true)
C4Def * GetByPath(const char *szPath)
int32_t CheckRequireDef()
int32_t CheckEngineVersion(int32_t ver1, int32_t ver2)
bool Reload(C4Def *pDef, DWORD dwLoadWhat, const char *szLanguage, C4SoundSystem *pSoundSystem=nullptr)
void AppendAndIncludeSkeletons()
bool Blit(C4Surface *sfcSource, float fx, float fy, float fwdt, float fhgt, C4Surface *sfcTarget, float tx, float ty, float twdt, float thgt, bool fSrcColKey=false, const C4BltTransform *pTransform=nullptr)
void GetZoom(ZoomData *r)
void SetGamma(float r, float g, float b, int32_t iRampIndex)
void SetZoom(float X, float Y, float Zoom)
bool TextOut(const char *szText, CStdFont &rFont, float fZoom, C4Surface *sfcDest, float iTx, float iTy, DWORD dwFCol=0xffffffff, BYTE byForm=ALeft, bool fDoMarkup=true)
void ClearPointers(C4PropList *pObj)
static void Execute(C4Effect **ppEffectList)
void ClearAll(int32_t iClearFlag)
void Set(C4Surface &rSfc)
void DrawXT(C4Surface *sfcTarget, float iX, float iY, int32_t iWdt, int32_t iHgt, int32_t iPhaseX, int32_t iPhaseY, C4DrawTransform *pTransform)
bool MenuKeyControl(BYTE command)
void SetDelOnClose(bool fToVal=true)
bool Show(Screen *pOnScreen, bool fCB)
void SetBounds(const C4Rect &rcNewBound)
static C4Facet GetIconFacet(Icons icoIconIndex)
void Init(int32_t tx, int32_t ty, int32_t twdt, int32_t thgt)
void ActivateDialog(Dialog *pDlg)
void SetExclusive(bool fToState)
bool InitLocal(C4Client *pLocal)
bool StartRecord(bool fInitial, bool fStreaming)
void OnGameSynchronizing()
bool InitNetwork(C4Client *pLocal)
bool KeyAdjustControlRate(int32_t iBy)
void DoInput(C4PacketType eCtrlType, C4ControlPacket *pPkt, C4ControlDeliveryType eDelivery)
void StopRecord(StdStrBuf *pRecordName=nullptr, BYTE *pRecordSHA1=nullptr)
bool InitReplay(C4Group &rGroup)
C4RoundResults & RoundResults
std::unique_ptr< C4Network2Stats > pNetworkStatistics
void OnResolutionChanged(unsigned int res_x, unsigned int res_y)
C4TransferZones TransferZones
StdStrBuf TempScenarioFile
bool LoadScenarioSection(const char *section_name, DWORD flags)
bool InitNetworkFromReference(const C4Network2Reference &Reference)
char PlayerFilenames[20 *_MAX_PATH_LEN]
void DrawCrewOverheadText(C4TargetFacet &cgo, int32_t player_nr)
C4KeyboardInput & KeyboardInput
C4String * GetTranslatedString(const class C4Value &input_string, C4Value *selected_language, bool fail_silently) const
bool InitNetworkFromAddress(const char *address)
char DirectJoinAddress[_MAX_PATH_LEN]
bool QuickSave(const char *filename, const char *title, bool force_save=false)
void CompileFunc(StdCompiler *compiler, CompileSettings settings, C4ValueNumbers *)
std::unique_ptr< C4FileMonitor > pFileMonitor
C4Object * PlaceVegetation(C4PropList *def, int32_t x, int32_t y, int32_t wdt, int32_t hgt, int32_t growth, C4PropList *shape_proplist, C4PropList *out_pos_proplist)
C4Player * JoinPlayer(const char *filename, int32_t at_client, const char *at_client_name, C4PlayerInfo *info)
void FixRandom(uint64_t seed)
void SetScenarioFilename(const char *)
bool DrawPropListSpecImage(C4Facet &target, C4PropList *spec)
bool CompileRuntimeData(C4Group &group, InitMode init_mode, bool exact, bool sync, C4ValueNumbers *)
std::unique_ptr< C4ScriptGuiWindow > ScriptGuiRoot
C4Object * NewObject(C4PropList *def, C4Object *creator, int32_t owner, C4ObjectInfo *info, int32_t x, int32_t y, int32_t r, C4Real xdir, C4Real ydir, C4Real rdir, int32_t con, int32_t controller, bool grow_from_center)
bool InitPlayers(C4ValueNumbers *)
C4Object * FindObject(C4Def *def, int32_t x=0, int32_t y=0, int32_t wdt=0, int32_t hgt=0, DWORD ocf=OCF_All, C4Object *find_next=nullptr)
void SetInitProgress(float to_progress)
void ClearPointers(C4Object *obj)
C4Value & GlobalSoundModifier
void Abort(bool fApproved=false)
C4Object * FindVisObject(float x, float y, int32_t player_nr, const C4Facet &viewport_game, const C4Facet &viewport_gui, float game_x, float game_y, DWORD category, float gui_x, float gui_y)
class C4ScenarioParameterDefs & ScenarioParameterDefs
float GetTextSpecImageAspect(const char *spec)
C4PlayerControlAssignmentSets PlayerControlDefaultAssignmentSets
bool InitNetworkFromReferenceFile(const char *temp_filename)
C4Object * PlaceAnimal(C4PropList *def)
C4Object * CreateInfoObject(C4ObjectInfo *info, int32_t owner, int32_t x=50, int32_t y=50)
C4PropList * AllocateTranslatedString()
bool CreateSectionFromTempFile(const char *section_name, const char *temp_filename)
void InitFullscreenComponents(bool is_running)
bool DoKeyboardInput(C4KeyCode vk_code, C4KeyEventType event_type, bool alt, bool ctrl, bool shift, bool repeated, class C4GUI::Dialog *for_dialog=nullptr, bool fPlrCtrlOnly=false, int32_t strength=-1)
StdCopyStrBuf NextMissionText
void ClearObjectPtrs(C4Object *to_obj)
bool InitialPlayersJoined
void OnPlayerJoinFinished()
class C4ScenarioObjectsScriptHost * pScenarioObjectsScript
C4PlayerControlAssignmentSets PlayerControlUserAssignmentSets
C4Object * FindConstuctionSiteBlock(int32_t x, int32_t y, int32_t wdt, int32_t hgt)
bool ReloadFile(const char *filepath)
char ScenarioFilename[_MAX_PATH_LEN]
StdCopyStrBuf NextMissionDesc
bool DrawTextSpecImage(C4Facet &target, const char *spec, class C4DrawTransform *transform, uint32_t color=0xff)
C4PlayerInfoList & PlayerInfos
C4ScenarioSection * pCurrentScenarioSection
bool InitMaterialTexture()
bool PlaceInEarth(C4ID id)
static constexpr const char * DirectJoinFilePrefix
bool DropFile(const char *filename, float x, float y)
class C4ScenarioParameters & StartupScenarioParameters
C4PlayerInfoList & RestorePlayerInfos
void OnKeyboardLayoutChanged()
int32_t ObjectCount(C4ID id)
int32_t StartupPlayerCount
C4GameParameters & Parameters
bool LoadAdditionalSystemGroup(class C4Group &parent_group)
std::unique_ptr< C4Network2Reference > pJoinReference
C4LangStringTable ScenarioLangStringTable
C4LangStringTable MainSysLangStringTable
void ObjectRemovalCheck()
bool CheckObjectEnumeration()
bool SaveData(C4Group &group, bool save_section, bool save_exact, bool save_sync, C4ValueNumbers *)
C4ScenarioSection * pScenarioSections
bool LoadScenarioComponents()
char CurrentScenarioSection[C4MaxName+1]
StdCopyStrBuf ScenarioTitle
void Synchronize(bool save_player_files)
bool InitPlayerControlUserSettings()
bool InitGameFinal(InitMode init_mode)
bool fScriptCreatedObjects
C4Object * CreateObjectConstruction(C4PropList *type, C4Object *creator, int32_t owner, int32_t center_x=0, int32_t bottom_y=0, int32_t con=1, bool adjust_terrain=false)
void SetGlobalSoundModifier(C4PropList *modifier_props)
C4PlayerControlDefs PlayerControlDefs
bool DropDef(C4ID id, float x, float y)
void DeleteObjects(bool delete_inactive)
bool fReferenceDefinitionOverride
C4Value GRBroadcast(const char *function, C4AulParSet *pars=nullptr, bool pass_error=false, bool reject_test=false)
bool InitPlayerControlSettings()
C4Object * CreateObject(C4PropList *type, C4Object *creator, int32_t owner=NO_OWNER, int32_t x=50, int32_t y=50, int32_t r=0, bool grow_from_center=false, C4Real xdir=Fix0, C4Real ydir=Fix0, C4Real rdir=Fix0, int32_t controller=NO_OWNER)
bool SaveGameTitle(C4Group &hGroup)
void InitValueOverloads()
bool InitGame(C4Group &group, InitMode init_mode, bool load_sky, C4ValueNumbers *)
char DefinitionFilenames[20 *_MAX_PATH_LEN]
void CastObjects(C4ID id, C4Object *creator, int32_t num, int32_t level, int32_t x, int32_t y, int32_t owner=NO_OWNER, int32_t controller=NO_OWNER, C4ValueArray *out_objects=nullptr)
bool ReloadParticle(const char *name)
bool ActivateMenu(const char *command)
StdCopyStrBuf NextMission
bool ReLinkScriptEngine()
void ClearPointers(C4Object *pObj)
void UpdateDef(C4ID idUpdDef)
void Clear(bool fClearInactive)
void Init(int32_t width, int32_t height)
bool Remove(C4Object *game_object) override
C4Value GRBroadcast(const char *function_name, C4AulParSet *parameters, bool pass_error, bool reject_test)
bool Add(C4Object *game_object)
void UpdateScriptPointers()
void DeleteObjects(bool delete_inactive_objects)
bool ValidateOwners() override
C4ObjectList InactiveObjects
bool AssignInfo() override
int PostLoad(bool keep_inactive_objects, C4ValueNumbers *)
C4ScenarioParameters ScenarioParameters
bool Load(C4Group &hGroup, C4Scenario *pDefault, const char *szGameText, C4LangStringTable *pLang, const char *DefinitionFilenames, C4ScenarioParameters *pStartupScenarioParameters)
const char * getFile() const
C4GameRes * iterRes(C4GameRes *pLast, C4Network2ResType eType=NRT_Null)
bool Save(const char *szFilename)
C4Effect * pScenarioEffects
bool Load(C4Group &, const char *, const char *, C4LangStringTable *) override
C4Value Call(const char *szFunction, C4AulParSet *pPars=nullptr, bool fPassError=false)
~C4GameSec1Timer() override
void OnSec1Timer() override
bool RegisterGlobalGraphics()
bool ReloadResolutionDependantFiles()
bool RegisterMainGroups()
void DeactivateDebugOutput()
bool ToggleShowNetStatus()
bool ToggleShowVertices()
bool InitLoaderScreen(const char *image_name)
std::unique_ptr< C4MessageBoard > MessageBoard
bool SaveScreenshotKey(bool save_all)
void FlashMessage(const char *message)
C4LoaderScreen * pLoaderScreen
bool ToggleShow8BitSurface()
void FlashMessageOnOff(const char *description, bool switch_on)
bool FindNextEntry(const char *wildcard, StdStrBuf *filename=nullptr, size_t *size=nullptr, bool start_at_filename=false)
int EntryCount(const char *wildcard=nullptr)
StdStrBuf GetFullName() const
int PreCacheEntries(const char *search_pattern, bool cache_previous=false)
bool Add(const char *filename, const char *entry_name)
bool LoadEntry(const char *entry_name, char **buffer, size_t *size_info=nullptr, int zeros_to_append=0)
bool OpenAsChild(C4Group *mother, const char *entry_name, bool is_exclusive=false, bool do_create=false)
void ResetSearch(bool reload_contents=false)
bool Move(const char *filename, const char *entry_name)
bool Delete(const char *files, bool recursive=false)
bool FindEntry(const char *wildcard, StdStrBuf *filename=nullptr, size_t *size=nullptr)
bool Open(const char *group_name, bool do_create=false)
bool RegisterGroup(C4Group &rGroup, bool fOwnGrp, int32_t Priority, int32_t Contents, bool fCheckContent=true)
C4Group * RegisterParentFolders(const char *szScenFilename)
virtual const char * GetError() const
bool SetServer(const char *szServerAddress)
const char * ToString() const
C4ID GetID(size_t index, int32_t *ipCount=nullptr) const
int32_t GetIDCount(C4ID c_id, int32_t iZeroDefVal=0) const
C4ObjectList * NextObjectShapes(C4ObjectList *pPrev, C4LSector **ppSct)
C4ObjectList * FirstObjectShapes(C4LSector **ppSct)
void RaiseTerrain(int32_t tx, int32_t ty, int32_t wdt)
int32_t DigFreeRect(int32_t tx, int32_t ty, int32_t wdt, int32_t hgt, C4Object *by_object=nullptr, bool no_dig2objects=false, bool no_instability_check=false)
BYTE GetBackPix(int32_t x, int32_t y) const
void Clear(bool fClearMapCreator=true, bool fClearSky=true, bool fClearRenderer=true)
int32_t GetHeight() const
bool Save(C4Group &hGroup) const
bool Init(C4Group &hGroup, bool fOverloadCurrent, bool fLoadSky, bool &rfLoaded, bool fSavegame)
void ClearPointers(C4Object *pObj)
static bool LoadComponentHost(C4ComponentHost *host, C4Group &hGroup, const char *szFilename, const char *szLanguage)
bool HasStringTable() const
bool Load(C4Group &, const char *, const char *, C4LangStringTable *) override
void InitFunctionMap(C4AulScriptEngine *pEngine)
void Copy(C4MassMoverSet &rSet)
bool Load(C4Group &hGroup)
bool Save(C4Group &hGroup)
void UpdateScriptPointers()
bool LoadEnumeration(C4Group &hGroup)
int32_t Load(C4Group &hGroup)
bool CrossMapMaterials(const char *szEarthMaterial)
void ClearPointers(C4Object *pObj)
void FadeOut(int fadeout_ms)
bool Play(const char *szSongname=nullptr, bool fLoop=false, int fadetime_ms=0, double max_resume_time=0.0, bool allow_break=false)
bool InitForScenario(C4Group &hGroup)
C4Network2Players Players
bool ToggleClientListDlg()
void OnGameSynchronized()
InitResult InitClient(const class C4Network2Reference &Ref, bool fObserver)
void LeagueGameEvaluate(const char *szRecordName=nullptr, const BYTE *pRecordSHA=nullptr)
void AllowJoin(bool fAllow)
void Vote(C4ControlVoteType eType, bool fApprove=true, int32_t iData=0)
bool InitHost(bool fLobby)
bool isLobbyActive() const
bool RetrieveScenario(char *szScenario)
bool GetReferences(C4Network2Reference **&rpReferences, int32_t &rRefCount)
C4GameParameters Parameters
const char * getTitle() const
bool Init(C4PropList *ndef, C4Object *pCreator, int32_t owner, C4ObjectInfo *info, int32_t nx, int32_t ny, int32_t nr, C4Real nxdir, C4Real nydir, C4Real nrdir, int32_t iController)
void ClearPointers(C4Object *ptr)
bool IsVisible(int32_t iForPlr, bool fAsOverlay) const
void DoCon(int32_t iChange, bool grow_from_center)
const ReverseView reverse() const
int ObjectCount(C4ID id=C4ID::None) const
int ClearPointers(C4Object *obj)
bool Save(C4Group &hGroup)
bool Load(C4Group &hGroup)
C4ParticleDef * GetDef(const char *name, C4ParticleDef *exclude=nullptr)
C4ParticleSystemDefinitionList definitions
void Init(PointFreeFn fnPointFree, C4TransferZones *pTransferZones=nullptr)
static bool StreamToRecord(const char *szStream, StdStrBuf *pRecord)
bool ResolveRefs(C4PlayerControlDefs *pControlDefs)
void MergeFrom(const C4PlayerControlAssignmentSets &Src, C4PlayerControlAssignmentSet::MergeMode merge_mode)
void MergeFrom(const C4PlayerControlDefs &Src)
bool Load(C4Group &hGroup, const char *szFilename, C4LangStringTable *pLang)
const C4PlayerControlDefs & GetControlDefs() const
const C4PlayerControlAssignmentSets & GetAssignmentSets() const
int32_t GetJoinIssuedPlayerCount() const
bool RecreatePlayers(C4ValueNumbers *)
bool Load(C4Group &hGroup, const char *szFromFile, class C4LangStringTable *pLang=nullptr)
int32_t GetJoinPendingPlayerCount() const
int32_t GetActiveScriptPlayerCount(bool fCountSavegameResumes, bool fCountInvisible) const
void RecheckAutoGeneratedTeams()
int32_t GetStartupCount()
bool LocalJoinUnjoinedPlayersInQueue()
int32_t GetActivePlayerCount(bool fCountInvisible) const
bool RecreatePlayerFiles()
bool RestoreSavegameInfos(C4PlayerInfoList &rSavegamePlayers)
void ClearPointers(C4Object *pObj)
bool Remove(int iPlayer, bool fDisonnected, bool fNoCalls)
C4Player * Join(const char *szFilename, bool fScenarioInit, int iAtClient, const char *szAtClientName, class C4PlayerInfo *pInfo, C4ValueNumbers *)
C4Player * GetByIndex(int iIndex) const
C4Player * Get(int iPlayer) const
int GetCountNotEliminated() const
bool HasPlayerInTeamSelection()
bool RemoveLocal(bool fDisonnected, bool fNoCalls)
bool SynchronizeLocalFiles()
bool Save(bool fSaveLocalOnly)
C4Player * GetLocalByIndex(int iIndex) const
bool RemoveAtRemoteClient(bool fDisonnected, bool fNoCalls)
int32_t GetPropertyInt(C4PropertyName k, int32_t default_val=0) const
virtual const char * GetName() const
virtual bool GetPropertyByS(const C4String *k, C4Value *pResult) const
std::vector< C4String * > GetSortedLocalProperties(bool add_prototype=true) const
C4PropList * GetPropertyPropList(C4PropertyName k) const
C4String * GetPropertyStr(C4PropertyName k) const
virtual C4Def const * GetDef() const
C4Value Call(C4PropertyName k, C4AulParSet *pPars=nullptr, bool fPassErrors=false)
void SetProperty(C4PropertyName k, const C4Value &to)
static void ClearShelve()
static int32_t GetEnumerationIndex()
static void ShelveNumberedPropLists()
static void UnshelveNumberedPropLists()
static void ClearNumberedPropLists()
static void SetEnumerationIndex(int32_t iMaxObjectNumber)
static void ResetEnumerationIndex()
static int32_t EnumerationIndex
static void ClearScriptPropLists()
int Init(const char *szRegister, const char *szDefRanks, int iRankBase)
bool Overlap(C4Rect &rTarget)
bool Open(C4Group &group, const char *filename) const
bool Load(C4Group &hGroup, const char *szFilename=C4CFN_RoundResults)
bool GetModules(StdStrBuf *psOutModules) const
std::string MissionAccess
C4SEnvironment Environment
bool Save(C4Group &hGroup, bool fSaveSection=false)
C4SDefinitions Definitions
bool Load(C4Group &hGroup, bool fLoadSection=false, bool suppress_errors=false)
void RegisterScriptConstants(const class C4ScenarioParameters &values)
bool Load(C4Group &hGroup, class C4LangStringTable *pLang)
bool ScenarioLoad(const char *szFilename, bool is_temp_file)
bool EnsureTempStore(bool fExtractLandscape, bool fExtractObjects)
class C4ScenarioObjectsScriptHost * pObjectScripts
C4ScenarioSection * pNext
C4Group * GetGroupfile(C4Group &rGrp)
void DoDlgShow(int32_t iChange, bool fUserToggle)
virtual bool Load(C4Group &hGroup, const char *szFilename, const char *szLanguage, C4LangStringTable *pLocalTable)
void Reg2List(C4AulScriptEngine *pEngine)
static void RemoveSolidMasks()
static void PutSolidMasks()
C4SoundModifier * Get(class C4PropList *props, bool create_if_not_found)
void SetGlobalModifier(C4SoundModifier *new_modifier, int32_t player_index)
C4SoundModifierList Modifiers
void ClearPointers(C4Object *pObj)
int32_t LoadEffects(C4Group &hGroup, const char *namespace_prefix, bool group_is_root)
const char * GetCStr() const
C4String * FindString(const char *strString) const
bool SavePNG(C4Group &hGroup, const char *szFilename, bool fSaveAlpha=true, bool fSaveOverlayOnly=false)
int32_t GetStartupTeamCount(int32_t startup_player_count)
static bool LoadFlags(C4Group &hGroup, const char *szEntryName, bool *pOverloadMaterials, bool *pOverloadTextures)
int32_t LoadMap(C4Group &hGroup, const char *szEntryName, bool *pOverloadMaterials, bool *pOverloadTextures)
int32_t LoadTextures(C4Group &hGroup, C4Group *OverloadFile=nullptr)
void ClearPointers(C4Object *pObj)
void SetSize(int32_t inSize)
void SetPropList(C4PropList *PropList)
StdStrBuf GetDataString(int depth=10, const class C4PropListStatic *ignore_reference_parent=nullptr) const
C4PropList * _getPropList() const
C4String * getStr() const
C4String * _getStr() const
void SetString(C4String *Str)
void Denumerate(C4ValueNumbers *)
bool FreeScroll(C4Vec2D scroll_by)
bool ViewportNextPlayer()
void RecalculateViewports()
C4Viewport * GetViewport(int32_t player_nr, C4Viewport *prev=nullptr)
bool CreateViewport(int32_t player_nr, bool silent=false)
void ClearPointers(C4Object *obj)
void Init(bool fScenario)
bool GetSize(C4Rect *pRect)
int GetLineHeight() const
bool GetTextExtent(const char *szText, int32_t &rsx, int32_t &rsy, bool fCheckMarkup=true)
void Value(const T &rStruct)
virtual void NameEnd(bool fBreak=false)
virtual bool isDeserializer()
virtual bool Name(const char *szName)
const StdMeshBox & GetBoundingBox() const
bool ScheduleProcs(int iTimeout=1000/36)
void Remove(StdSchedulerProc *pProc)
void Add(StdSchedulerProc *pProc)
void Ref(const char *pnData)
const char * getData() const
bool LoadFromFile(const char *szFile)
void Format(const char *szFmt,...) GNUC_FORMAT_ATTRIBUTE_O
@ Ico_Controller_LeftStick
@ Ico_Controller_LeftTrigger
@ Ico_Controller_DpadRight
@ Ico_Controller_DpadDown
@ Ico_Controller_RightStick
@ Ico_Controller_LeftShoulder
@ Ico_Controller_RightShoulder
@ Ico_Controller_DpadLeft
@ Ico_Controller_RightTrigger