Add research support

This commit is contained in:
Anibus
2025-08-18 13:02:10 +03:00
parent f94553bb9a
commit 851bb71601
25 changed files with 714 additions and 311 deletions
+4 -4
View File
@@ -2,15 +2,15 @@ enum ArmorTypeValues {
InfantryLow = 'Infantry Low',
InfantryMedium = 'Infantry Medium',
InfantryHigh = 'Infantry High',
InfantryHeavyMedium = 'Infantry Heavy Medium',
InfantryHeavyHigh = 'Infantry Heavy High',
Commander = 'Commander',
InfantryHeavyMedium = 'Infantry H.Med.',
InfantryHeavyHigh = 'Infantry H.High',
Commander = 'Infantry Com.',
VehicleLow = 'Vehicle Low',
VehicleMedium = 'Vehicle Medium',
VehicleHigh = 'Vehicle High',
LivingMetal = 'Living Metal',
Titan = 'Titan',
Air = 'Air',
Air = 'Vehicle Air',
BuildingLow = 'Building Low',
BuildingMedium = 'Building Medium',
BuildingHigh = 'Building High',
+23
View File
@@ -0,0 +1,23 @@
export interface IAffectedEntity {
id: number
name: string
icon: string
filename: string
}
export interface ISergeantUnitShortDto {
id: number
name: string
icon: string
filename: string
unit: IAffectedEntity
}
export interface IWeaponUnitShortDto {
id: number
name: string
filename: string
units: IAffectedEntity[]
sergeants: ISergeantUnitShortDto[]
buildings: IAffectedEntity[]
}
+10 -19
View File
@@ -1,7 +1,11 @@
import {Irace} from "./Irace";
import {IArmorType} from "./IArmorType";
import {WeaponHardpoint} from "./IUnit";
import {IBuildingShort} from "./IBuildingShort";
import {IUnitShort} from "./IUnitShort";
import {IModifier} from "./IModifier";
import {IRequirement} from "./IRequirement";
import {IResearch} from "./IResearch";
import {IResearchShort} from "./IResearchShort";
export interface IBuilding {
id: number
@@ -30,6 +34,9 @@ export interface IBuilding {
modId: number
weapons: WeaponHardpoint[]
addons: IBuildingAddon[]
researches: IResearch[]
units: IUnitShort[]
affectedResearches: IResearchShort[],
}
export interface IBuildingAddon {
@@ -43,8 +50,8 @@ export interface IBuildingAddon {
addonCostFaith: number;
addonCostSouls: number;
addonCostTime: number;
addonModifiers: IAddonModifier[];
addonRequirement: IAddonRequirement;
addonModifiers: IModifier[];
addonRequirement: IRequirement;
icon?: string;
}
@@ -54,19 +61,3 @@ export interface IBuildingAddonShort {
name: string;
icon: string;
}
export interface IAddonRequirement {
requirementBuildings: IBuildingShort[];
requirementBuildingsEither: IBuildingShort[];
requirementsGlobalAddons: IBuildingAddonShort[];
replaceWhenDone: Boolean;
requireAddon: IBuildingAddonShort;
requiredTotalPop?: number;
}
export interface IAddonModifier {
id: number;
reference: string;
usageType: string;
value: number;
}
+8
View File
@@ -0,0 +1,8 @@
export interface IModifier {
id: number;
reference: string;
usageType: string;
target: string;
value: number;
}
+13
View File
@@ -0,0 +1,13 @@
import {IBuildingShort} from "./IBuildingShort";
import {IBuildingAddonShort} from "./IBuilding";
import {IResearchRequirements} from "./IResearchRequirements";
export interface IRequirement {
requirementBuildings: IBuildingShort[];
requirementBuildingsEither: IBuildingShort[];
requirementsGlobalAddons: IBuildingAddonShort[];
requirementResearches: IResearchRequirements[];
replaceWhenDone: Boolean;
requireAddon: IBuildingAddonShort;
requiredTotalPop?: number;
}
+24
View File
@@ -0,0 +1,24 @@
import {IModifier} from "./IModifier";
import {IRequirement} from "./IRequirement";
import {IAffectedEntity, ISergeantUnitShortDto, IWeaponUnitShortDto} from "./IAffectedEntity";
export interface IResearch {
id: number
name: string
filename: string
description: string
costRequisition: number
costPower: number
costPopulation: number
costFaith: number
costSouls: number
costTime: number
icon: string
modId: number
affectedUnits: IAffectedEntity[]
affectedSergeants: ISergeantUnitShortDto[]
affectedBuildings: IAffectedEntity[]
affectedWeapons: IWeaponUnitShortDto[]
requirements: IRequirement
modifiers: IModifier[]
}
+6
View File
@@ -0,0 +1,6 @@
import {IResearchShort} from "./IResearchShort";
export interface IResearchRequirements {
researchShortDto: IResearchShort,
researchMustNotBeComplete: Boolean,
}
+6
View File
@@ -0,0 +1,6 @@
export interface IResearchShort {
id: string;
name: string;
icon: string;
buildingId: number;
}
+4
View File
@@ -1,5 +1,6 @@
import {Irace} from "./Irace";
import {IArmorType} from "./IArmorType";
import {IResearchShort} from "./IResearchShort";
export interface IUnitResponse {
race: string
@@ -53,6 +54,7 @@ export interface IUnit {
modId: number
sergeants: ISergeant[]
weapons: WeaponHardpoint[]
affectedResearches: IResearchShort[],
}
export interface ISergeant {
@@ -81,6 +83,7 @@ export interface ISergeant {
detectRadius: number
icon: string
weapons: WeaponHardpoint[]
affectedResearches: IResearchShort[],
}
@@ -118,6 +121,7 @@ export interface IWeapon {
icon: string
modId: number
weaponArmorPiercing: IWeaponPiercing[]
affectedResearches: IResearchShort[],
}
export interface IWeaponPiercing {