// SPDX-License-Identifier: MIT // Copyright © 2007-2025 Sander Stolk #include "factions.h" #include "game.h" #include "info.h" #include "ai.h" #include "fileio.h" struct FactionInfo factionInfo[MAX_DIFFERENT_FACTIONS]; int faction[MAX_DIFFERENT_FACTIONS]; int factionTechLevel[MAX_DIFFERENT_FACTIONS]; int rebuildDelayStructures[MAX_DIFFERENT_FACTIONS]; int rebuildDelayUnits[MAX_DIFFERENT_FACTIONS]; int repairSpeed[MAX_DIFFERENT_FACTIONS]; int unitBuildSpeed[MAX_DIFFERENT_FACTIONS]; enum Side neutralSide; int getFaction(enum Side side) { return faction[side]; } void setFaction(enum Side side, int nr) { faction[side] = nr; } int getFactionTechLevel(enum Side side) { return factionTechLevel[side]; } int getRebuildDelayStructures(enum Side side) { return rebuildDelayStructures[side]; } int getRebuildDelayUnits(enum Side side) { return rebuildDelayUnits[side]; } int getRepairSpeed(enum Side side) { return repairSpeed[side]; } int getUnitBuildSpeed(enum Side side) { return unitBuildSpeed[side]; } inline enum Side getNeutralSide() { return neutralSide; } void initFactions() { int amountOfFactions = 0; char oneline[256]; FILE *fp; int i, j, k, l; fp = openFile("factions.ini", FS_PROJECT_FILE); readstr(fp, oneline); sscanf(oneline, "AMOUNT-OF-FACTIONS %i", &amountOfFactions); if (amountOfFactions > MAX_DIFFERENT_FACTIONS) errorSI("Too many types of factions exist. Limit is:", MAX_DIFFERENT_FACTIONS); amountOfFactions %= (MAX_DIFFERENT_FACTIONS + 1); for (i=0; i