mirror of
https://github.com/Pax1601/DCSOlympus.git
synced 2025-10-29 16:56:34 +00:00
80 lines
2.4 KiB
TypeScript
80 lines
2.4 KiB
TypeScript
export class UnitDatabase {
|
|
blueprints: { [key: string]: UnitBlueprint } = {};
|
|
|
|
constructor() {
|
|
|
|
}
|
|
|
|
/* Returns a list of all possible roles in a database */
|
|
getRoles() {
|
|
var roles: string[] = [];
|
|
for (let unit in this.blueprints) {
|
|
for (let loadout of this.blueprints[unit].loadouts) {
|
|
for (let role of loadout.roles) {
|
|
if (role !== "" && !roles.includes(role))
|
|
roles.push(role);
|
|
}
|
|
}
|
|
}
|
|
return roles;
|
|
}
|
|
|
|
/* Gets a specific blueprint by name */
|
|
getByName(name: string) {
|
|
if (name in this.blueprints)
|
|
return this.blueprints[name];
|
|
return null;
|
|
}
|
|
|
|
/* Gets a specific blueprint by label */
|
|
getByLabel(label: string) {
|
|
for (let unit in this.blueprints) {
|
|
if (this.blueprints[unit].label === label)
|
|
return this.blueprints[unit];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/* Gets a specific blueprint by range */
|
|
getByRange(range: string) {
|
|
for (let unit in this.blueprints) {
|
|
if (this.blueprints[unit].range === range)
|
|
return this.blueprints[unit];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/* Get all blueprints by role */
|
|
getByRole(role: string) {
|
|
var units = [];
|
|
for (let unit in this.blueprints) {
|
|
for (let loadout of this.blueprints[unit].loadouts) {
|
|
if (loadout.roles.includes(role) || loadout.roles.includes(role.toLowerCase())) {
|
|
units.push(this.blueprints[unit])
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return units;
|
|
}
|
|
|
|
/* Get the names of all the loadouts for a specific unit and for a specific role */
|
|
getLoadoutNamesByRole(name: string, role: string) {
|
|
var loadouts = [];
|
|
for (let loadout of this.blueprints[name].loadouts) {
|
|
if (loadout.roles.includes(role) || loadout.roles.includes("")) {
|
|
loadouts.push(loadout.name)
|
|
}
|
|
}
|
|
return loadouts;
|
|
}
|
|
|
|
/* Get the loadout content from the unit name and loadout name */
|
|
getLoadoutByName(name: string, loadoutName: string) {
|
|
for (let loadout of this.blueprints[name].loadouts) {
|
|
if (loadout.name === loadoutName)
|
|
return loadout;
|
|
}
|
|
return null;
|
|
}
|
|
} |