Vinifera-Developers / Vinifera

Vinifera is a C&C: Tiberian Sun engine extension implementing new logics and fixing bugs.
GNU General Public License v3.0
44 stars 10 forks source link

[New Feature] Allow sides to have their own sections. #457

Open MikillRosen opened 3 years ago

MikillRosen commented 3 years ago

Description:

Like in Ares, sides should get their own sections so more options to customize sides will be opened.

E1Elite commented 3 years ago

Possible Implementation:

By using the left side index as name for individual sides section, hardcoding specifically to GDI and Nod could be removed to allow additional sides specific values. Right side values are a list of houses. To have unique ID for the sections, the index could be renamed like the following.

[Sides] GDISide=GDI NodSide=Nod NeutralSide=Neutral SpecialSide=Special

[GDISide] GateOne= ; per side gate for either direction, fallsback to 0 or 1 side index values GateTwo= WallTower= ; per side wall tower AIBuildsWalls= PowerPlant= ; per side AI powerplant when short of power which includes very first building for AI. Fallsback to side index's BuildPower value. AdvancedPower= ; per side alternative powerplant PowerTurbine= ; per side, if basic powerplant has upgrades HunterSeeker= ; FirestormGenerator ; if needed per side SurvivorDivisor= Crew= ; per side survivor infantry for objects wirth Crewed or buildings when sold/destroyed Engineer= ; per side survivor infantry when Factory=BuildingType is destroyed/sold Technician= ; per side Disguise= ; per side DroppodTypes= ; per side type list of 2 instead of hardcoded E1 and E2. AIBaseDefenses= ; per side list of BuildingTypes AIBaseDefenseCounts= ; per side list of integers for max of above defenses. This should replace XXXBaseDefenseCoefficient and MaximumBaseDefenseValue. This should also get scaled based on difficulty or counts for each difficulty could be provided. ParaDropTypes= ; per side list of infantry (and units if implemented) ParaDropNum= ; per side quantity list of given ParaDropTypes ParaDropAircraft= ; per side AircraftType for this superweapon if implemented ParachuteAnim= ; per side

;;;; UI and audio MPLoadingScreen= ; per side list of PCX (without resolution value added) MPScorescreen= ; per side PCX MPWinTheme= ; per side music theme ID MPLoseTheme= ; per side LoadingTheme= ; per side if implemented SidebarMixFileIndex= ; could be re-mapped to existing side's mix file like side 4 could use side 0's mix. Defaults to 2 digit side index. EVAIndex= ; could be re-mapped to use exiting side's speech irrespective of fetched mix file. 0 for GDI voices etc.

;;;; Any other side specific flags if needed. ; MessageTextColor= ; color or scheme with/witjout opaque bg ; MPWinText= ; different text instead of Mission Accomplished ; MPLoseText=

Rampastring commented 3 years ago

@E1Elite's suggestion above sounds great! It would solve many issues related to multi-side support with a solution concentrated to one clean section.