From 03f1d6f102d888ca3963c50fd5a3fb8046b191b9 Mon Sep 17 00:00:00 2001
From: DCoded <dicoded@email.com>
Date: Fri, 22 Jul 2022 11:17:24 -0400
Subject: [PATCH] Added FacilityFramework interface

---
 devTools/types/FC/facilities.d.ts             | 61 +++++++++++++++++++
 src/facilities/arcade/arcadeFramework.js      |  1 +
 src/facilities/armory/armoryFramework.js      |  1 +
 src/facilities/brothel/brothelFramework.js    |  1 +
 .../cellblock/cellblockFramework.js           |  1 +
 src/facilities/clinic/clinicFramework.js      |  1 +
 src/facilities/club/clubFramework.js          |  1 +
 src/facilities/dairy/dairyFramework.js        |  1 +
 src/facilities/farmyard/farmyardFramework.js  |  1 +
 .../headGirlSuite/headGirlSuiteFramework.js   |  1 +
 .../incubator/incubatorFramework.js           |  1 +
 .../masterSuite/masterSuiteFramework.js       |  1 +
 src/facilities/nursery/nurseryFramework.js    |  1 +
 .../penthouse/penthouseFramework.js           |  1 +
 src/facilities/pit/pitFramework.js            |  1 +
 .../schoolroom/schoolroomFramework.js         |  1 +
 .../servantsQuartersFramework.js              |  1 +
 src/facilities/spa/spaFramework.js            |  1 +
 18 files changed, 78 insertions(+)

diff --git a/devTools/types/FC/facilities.d.ts b/devTools/types/FC/facilities.d.ts
index 0e884609c14..b1c568ea241 100644
--- a/devTools/types/FC/facilities.d.ts
+++ b/devTools/types/FC/facilities.d.ts
@@ -39,6 +39,67 @@ declare namespace FC {
 		nodes?: Array<string|HTMLElement|DocumentFragment>;
 	}
 
+	interface IFacilityAssignment {
+		/** The name of the assignment. */
+		position: string;
+		/** The assignment type. */
+		assignment: Assignment;
+		/** Whether the assigned slaves engage in sex with the public. */
+		publicSexUse: boolean;
+		/** Whether fuckdolls can work here. */
+		fuckdollAccepted: boolean;
+		/** Whether slaves assigned here can work at another assignment at the same time. */
+		partTime?: boolean;
+	}
+
+	interface IManagerAssignment {
+		/** The name of the assignment. */
+		position: string;
+		/** The assignment name's abbreviated form, if any. */
+		positionAbbreviation?: string;
+		/** The assignment type. */
+		assignment: Assignment;
+		/** A list of careers that count towards past experience. */
+		careers: string[];
+		/** Which of a slave's manager skills is affected. */
+		skill: string;
+		/** Whether the assigned slaves engage in sex with the public. */
+		publicSexUse: boolean;
+		/** Whether fuckdolls can work here. */
+		fuckdollAccepted: boolean;
+		/** Whether broodmothers can work here. */
+		broodmotherAccepted: boolean;
+		/** If slaves assigned here must be able to walk. */
+		shouldWalk: boolean;
+		/** If slaves assigned here must be able to hold items. */
+		shouldHold: boolean;
+		/** If slaves assigned here must be able to see. */
+		shouldSee: boolean;
+		/** If slaves assigned here must be able to hear. */
+		shouldHear: boolean;
+		/** If slaves assigned here must be able to talk. */
+		shouldTalk: boolean;
+		/** If slaves assigned here must have cognitive function. */
+		shouldThink: boolean;
+		/** The minimum required devotion level to be assigned here. */
+		requiredDevotion: number;
+	}
+
+	interface FacilityFramework {
+		/** The variable name of the facility. */
+		baseName: string;
+		/** The generic form of the facility. */
+		genericName: string|null;
+		/** An object listing all the available positions in the facility. */
+		jobs: Record<string, IFacilityAssignment>;
+		/** The default job in the facility. */
+		defaultJob: string;
+		/** Properties pertaining to the facility's manager. */
+		manager: IManagerAssignment;
+		/** Whether the facility can use FS decorations. */
+		decorated: boolean;
+	}
+
 	namespace Facilities {
 		export type Facility = InstanceType<typeof App.Facilities.Facility>;
 		export type Animal = InstanceType<typeof App.Entity.Animal>;
diff --git a/src/facilities/arcade/arcadeFramework.js b/src/facilities/arcade/arcadeFramework.js
index 4093d972395..e1d08b73707 100644
--- a/src/facilities/arcade/arcadeFramework.js
+++ b/src/facilities/arcade/arcadeFramework.js
@@ -1,3 +1,4 @@
+/** @type {FC.FacilityFramework} */
 App.Data.Facilities.arcade = {
 	baseName: "arcade",
 	genericName: null,
diff --git a/src/facilities/armory/armoryFramework.js b/src/facilities/armory/armoryFramework.js
index a1ed3c90559..e5dfab7527c 100644
--- a/src/facilities/armory/armoryFramework.js
+++ b/src/facilities/armory/armoryFramework.js
@@ -1,3 +1,4 @@
+/** @type {FC.FacilityFramework} */
 App.Data.Facilities.armory = {
 	baseName: "dojo",
 	genericName: "Armory",
diff --git a/src/facilities/brothel/brothelFramework.js b/src/facilities/brothel/brothelFramework.js
index b50d706ae25..920452717a7 100644
--- a/src/facilities/brothel/brothelFramework.js
+++ b/src/facilities/brothel/brothelFramework.js
@@ -1,3 +1,4 @@
+/** @type {FC.FacilityFramework} */
 App.Data.Facilities.brothel = {
 	baseName: "brothel",
 	genericName: null,
diff --git a/src/facilities/cellblock/cellblockFramework.js b/src/facilities/cellblock/cellblockFramework.js
index 999da56441c..f24e87f5034 100644
--- a/src/facilities/cellblock/cellblockFramework.js
+++ b/src/facilities/cellblock/cellblockFramework.js
@@ -1,3 +1,4 @@
+/** @type {FC.FacilityFramework} */
 App.Data.Facilities.cellblock = {
 	baseName: "cellblock",
 	genericName: null,
diff --git a/src/facilities/clinic/clinicFramework.js b/src/facilities/clinic/clinicFramework.js
index dbdde301ccf..b55c9b8c15d 100644
--- a/src/facilities/clinic/clinicFramework.js
+++ b/src/facilities/clinic/clinicFramework.js
@@ -1,3 +1,4 @@
+/** @type {FC.FacilityFramework} */
 App.Data.Facilities.clinic = {
 	baseName: "clinic",
 	genericName: null,
diff --git a/src/facilities/club/clubFramework.js b/src/facilities/club/clubFramework.js
index 19bb8d05833..ac5ae912fe4 100644
--- a/src/facilities/club/clubFramework.js
+++ b/src/facilities/club/clubFramework.js
@@ -1,3 +1,4 @@
+/** @type {FC.FacilityFramework} */
 App.Data.Facilities.club = {
 	baseName: "club",
 	genericName: null,
diff --git a/src/facilities/dairy/dairyFramework.js b/src/facilities/dairy/dairyFramework.js
index 3c3b1db0d80..f50004d6d36 100644
--- a/src/facilities/dairy/dairyFramework.js
+++ b/src/facilities/dairy/dairyFramework.js
@@ -1,3 +1,4 @@
+/** @type {FC.FacilityFramework} */
 App.Data.Facilities.dairy = {
 	baseName: "dairy",
 	genericName: null,
diff --git a/src/facilities/farmyard/farmyardFramework.js b/src/facilities/farmyard/farmyardFramework.js
index 399caad3194..5c700f61b4e 100644
--- a/src/facilities/farmyard/farmyardFramework.js
+++ b/src/facilities/farmyard/farmyardFramework.js
@@ -1,3 +1,4 @@
+/** @type {FC.FacilityFramework} */
 App.Data.Facilities.farmyard = {
 	baseName: "farmyard",
 	genericName: null,
diff --git a/src/facilities/headGirlSuite/headGirlSuiteFramework.js b/src/facilities/headGirlSuite/headGirlSuiteFramework.js
index ae9d465fd8b..3010a1ccd76 100644
--- a/src/facilities/headGirlSuite/headGirlSuiteFramework.js
+++ b/src/facilities/headGirlSuite/headGirlSuiteFramework.js
@@ -1,3 +1,4 @@
+/** @type {FC.FacilityFramework} */
 App.Data.Facilities.headGirlSuite = {
 	baseName: "HGSuite",
 	genericName: null,
diff --git a/src/facilities/incubator/incubatorFramework.js b/src/facilities/incubator/incubatorFramework.js
index dce45c6cd6c..126f3d74648 100644
--- a/src/facilities/incubator/incubatorFramework.js
+++ b/src/facilities/incubator/incubatorFramework.js
@@ -1,3 +1,4 @@
+/** @type {FC.FacilityFramework} */
 App.Data.Facilities.incubator = {
 	baseName: "incubator",
 	genericName: null,
diff --git a/src/facilities/masterSuite/masterSuiteFramework.js b/src/facilities/masterSuite/masterSuiteFramework.js
index 83e67a77324..67e0e8537cd 100644
--- a/src/facilities/masterSuite/masterSuiteFramework.js
+++ b/src/facilities/masterSuite/masterSuiteFramework.js
@@ -1,3 +1,4 @@
+/** @type {FC.FacilityFramework} */
 App.Data.Facilities.masterSuite = {
 	baseName: "masterSuite",
 	genericName: "Master Suite",
diff --git a/src/facilities/nursery/nurseryFramework.js b/src/facilities/nursery/nurseryFramework.js
index 94597390d5e..68e36ecc27f 100644
--- a/src/facilities/nursery/nurseryFramework.js
+++ b/src/facilities/nursery/nurseryFramework.js
@@ -1,3 +1,4 @@
+/** @type {FC.FacilityFramework} */
 App.Data.Facilities.nursery = {
 	baseName: "nursery",
 	genericName: null,
diff --git a/src/facilities/penthouse/penthouseFramework.js b/src/facilities/penthouse/penthouseFramework.js
index ee9be3de8a4..f90b7bf6509 100644
--- a/src/facilities/penthouse/penthouseFramework.js
+++ b/src/facilities/penthouse/penthouseFramework.js
@@ -1,3 +1,4 @@
+/** @type {FC.FacilityFramework} */
 App.Data.Facilities.penthouse = {
 	baseName: "penthouse",
 	genericName: "Penthouse",
diff --git a/src/facilities/pit/pitFramework.js b/src/facilities/pit/pitFramework.js
index ffb7a1954f4..a12fec5369e 100644
--- a/src/facilities/pit/pitFramework.js
+++ b/src/facilities/pit/pitFramework.js
@@ -1,3 +1,4 @@
+/** @type {FC.FacilityFramework} */
 App.Data.Facilities.pit = {
 	baseName: "pit",
 	genericName: null,
diff --git a/src/facilities/schoolroom/schoolroomFramework.js b/src/facilities/schoolroom/schoolroomFramework.js
index eee251f1307..f0f1ec16173 100644
--- a/src/facilities/schoolroom/schoolroomFramework.js
+++ b/src/facilities/schoolroom/schoolroomFramework.js
@@ -1,3 +1,4 @@
+/** @type {FC.FacilityFramework} */
 App.Data.Facilities.schoolroom = {
 	baseName: "schoolroom",
 	genericName: null,
diff --git a/src/facilities/servantsQuarters/servantsQuartersFramework.js b/src/facilities/servantsQuarters/servantsQuartersFramework.js
index 948cfa531c7..54a43e534ab 100644
--- a/src/facilities/servantsQuarters/servantsQuartersFramework.js
+++ b/src/facilities/servantsQuarters/servantsQuartersFramework.js
@@ -1,3 +1,4 @@
+/** @type {FC.FacilityFramework} */
 App.Data.Facilities.servantsQuarters = {
 	baseName: "servantsQuarters",
 	genericName: "Servants' Quarters",
diff --git a/src/facilities/spa/spaFramework.js b/src/facilities/spa/spaFramework.js
index 95012872750..0310f8141b6 100644
--- a/src/facilities/spa/spaFramework.js
+++ b/src/facilities/spa/spaFramework.js
@@ -1,3 +1,4 @@
+/** @type {FC.FacilityFramework} */
 App.Data.Facilities.spa = {
 	baseName: "spa",
 	genericName: null,
-- 
GitLab