diff --git a/devTools/types/FC/facilities.d.ts b/devTools/types/FC/facilities.d.ts index e31140fcb24828f1ffa064abec3e206e52e19d57..e2f030c57488d4c2e119e0fb288289e76585e64e 100644 --- a/devTools/types/FC/facilities.d.ts +++ b/devTools/types/FC/facilities.d.ts @@ -1,5 +1,6 @@ declare namespace FC { namespace Facilities { + export type Facility = InstanceType<typeof App.Entity.Facilities.Facility>; export type Animal = InstanceType<typeof App.Entity.Animal>; interface Pit { diff --git a/src/004-base/facility.js b/src/004-base/facility.js index 779bdfa2d955f9e4a43822c144f58ffc60344cbb..b88bd4b20725e8202df7fd058ac4ffca14830647 100644 --- a/src/004-base/facility.js +++ b/src/004-base/facility.js @@ -267,6 +267,15 @@ App.Entity.Facilities.Facility = class { return res !== undefined ? res : 'the ' + this.genericName; } + set name(newName) { + const stateObj = V[this.desc.baseName]; + if (stateObj && typeof stateObj === "object") { + stateObj.name = newName; + } else { + V[this.desc.baseName + "Name"] = newName; + } + } + /** @returns {string} */ get nameCaps() { return capFirstChar(this.name); diff --git a/src/facilities/facilities.css b/src/facilities/facilities.css new file mode 100644 index 0000000000000000000000000000000000000000..0c64d4f6e5edb051153508cde6dc4708d0f2abae --- /dev/null +++ b/src/facilities/facilities.css @@ -0,0 +1,3 @@ +.facility-rename { + margin-top: 1em; +} diff --git a/src/facilities/pit/pit.js b/src/facilities/pit/pit.js index bfc8fa414b636dc6a5cd5b0b5471df74be802cd4..dd09ab878aa6a95331c097be2e49308401c5b4c7 100644 --- a/src/facilities/pit/pit.js +++ b/src/facilities/pit/pit.js @@ -19,7 +19,9 @@ App.Facilities.Pit.pit = function() { App.UI.DOM.appendNewElement("div", frag, App.UI.SlaveList.listSJFacilitySlaves(App.Entity.facilities.pit, passage(), false, {assign: "Select a slave to fight", remove: "Cancel a slave's fight", transfer: null}), "pit-assign"); } - frag.appendChild(rename()); + frag.appendChild(App.Facilities.rename(App.Entity.facilities.pit, () => { + App.UI.DOM.replace(introDiv, intro); + })); return frag; @@ -395,22 +397,6 @@ App.Facilities.Pit.pit = function() { return scheduledDiv; } - - function rename() { - const renameDiv = App.UI.DOM.makeElement("div", `Rename ${V.pit.name}: `, ["pit-rename"]); - const renameNote = App.UI.DOM.makeElement("span", ` Use a noun or similar short phrase`, ["note"]); - - renameDiv.append(App.UI.DOM.makeTextBox(V.pit.name, newName => { - V.pit.name = newName; - - App.UI.DOM.replace(renameDiv, rename); - App.UI.DOM.replace(introDiv, intro); - })); - - renameDiv.append(renameNote); - - return renameDiv; - } }; App.Facilities.Pit.init = function() { diff --git a/src/facilities/utils.js b/src/facilities/utils.js new file mode 100644 index 0000000000000000000000000000000000000000..872757fa83a6b80700067cfae11f4484e392b10f --- /dev/null +++ b/src/facilities/utils.js @@ -0,0 +1,25 @@ +/** + * Adds a new "Rename Facility" textbox. + * + * Allows the use of custom handler functions. + * @param {App.Entity.Facilities.Facility} facility The name of the facility in variable form. + * @param {function():void} [handler] Any custom function to be run upon entering a new name. + */ +App.Facilities.rename = function rename(facility, handler) { + const renameDiv = App.UI.DOM.makeElement("div", `Rename ${facility.name}: `, ["facility-rename"]); + const renameNote = App.UI.DOM.makeElement("span", ` Use a noun or similar short phrase`, ["note"]); + + renameDiv.appendChild(App.UI.DOM.makeTextBox(facility.name, newName => { + facility.name = newName; + + App.UI.DOM.replace(renameDiv, App.Facilities.rename(facility)); + + if (handler) { + handler(); + } + })); + + renameDiv.appendChild(renameNote); + + return renameDiv; +};