@drincs/nqtr 0.2.12 → 0.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/dist/{ActivityProps-BkHX8xkA.d.ts → ActivityProps-LWY7Zucl.d.ts} +2 -2
  2. package/dist/{ActivityProps-D45DQdcT.d.mts → ActivityProps-WgXDAYbc.d.mts} +2 -2
  3. package/dist/{Commitment-DJD0f8AH.d.mts → Commitment-BujJuTv8.d.mts} +7 -7
  4. package/dist/{Commitment-C_qBgeF9.d.ts → Commitment-DFYAApxl.d.ts} +7 -7
  5. package/dist/{StageProps-CuE_n1Wg.d.mts → StageProps-CqgBUi3e.d.mts} +1 -1
  6. package/dist/{StageProps-CCjGI625.d.ts → StageProps-DghO7WaT.d.ts} +1 -1
  7. package/dist/classes/Activity.d.mts +1 -1
  8. package/dist/classes/Activity.d.ts +1 -1
  9. package/dist/classes/Activity.js +1 -381
  10. package/dist/classes/Activity.js.map +1 -1
  11. package/dist/classes/Activity.mjs +1 -379
  12. package/dist/classes/Activity.mjs.map +1 -1
  13. package/dist/classes/ActivityStoredAbstract.d.mts +1 -1
  14. package/dist/classes/ActivityStoredAbstract.d.ts +1 -1
  15. package/dist/classes/ActivityStoredAbstract.js +1 -398
  16. package/dist/classes/ActivityStoredAbstract.js.map +1 -1
  17. package/dist/classes/ActivityStoredAbstract.mjs +1 -396
  18. package/dist/classes/ActivityStoredAbstract.mjs.map +1 -1
  19. package/dist/classes/Commitment.d.mts +2 -2
  20. package/dist/classes/Commitment.d.ts +2 -2
  21. package/dist/classes/Commitment.js +1 -438
  22. package/dist/classes/Commitment.js.map +1 -1
  23. package/dist/classes/Commitment.mjs +1 -436
  24. package/dist/classes/Commitment.mjs.map +1 -1
  25. package/dist/classes/index.d.mts +3 -3
  26. package/dist/classes/index.d.ts +3 -3
  27. package/dist/classes/index.js +1 -1700
  28. package/dist/classes/index.js.map +1 -1
  29. package/dist/classes/index.mjs +1 -1691
  30. package/dist/classes/index.mjs.map +1 -1
  31. package/dist/classes/navigation/ActivityRoom.d.mts +2 -2
  32. package/dist/classes/navigation/ActivityRoom.d.ts +2 -2
  33. package/dist/classes/navigation/ActivityRoom.js +1 -448
  34. package/dist/classes/navigation/ActivityRoom.js.map +1 -1
  35. package/dist/classes/navigation/ActivityRoom.mjs +1 -446
  36. package/dist/classes/navigation/ActivityRoom.mjs.map +1 -1
  37. package/dist/classes/navigation/Location.d.mts +2 -2
  38. package/dist/classes/navigation/Location.d.ts +2 -2
  39. package/dist/classes/navigation/Location.js +1 -118
  40. package/dist/classes/navigation/Location.js.map +1 -1
  41. package/dist/classes/navigation/Location.mjs +1 -116
  42. package/dist/classes/navigation/Location.mjs.map +1 -1
  43. package/dist/classes/navigation/Map.d.mts +2 -2
  44. package/dist/classes/navigation/Map.d.ts +2 -2
  45. package/dist/classes/navigation/Map.js +1 -114
  46. package/dist/classes/navigation/Map.js.map +1 -1
  47. package/dist/classes/navigation/Map.mjs +1 -112
  48. package/dist/classes/navigation/Map.mjs.map +1 -1
  49. package/dist/classes/navigation/Room.d.mts +2 -2
  50. package/dist/classes/navigation/Room.d.ts +2 -2
  51. package/dist/classes/navigation/Room.js +1 -778
  52. package/dist/classes/navigation/Room.js.map +1 -1
  53. package/dist/classes/navigation/Room.mjs +1 -773
  54. package/dist/classes/navigation/Room.mjs.map +1 -1
  55. package/dist/classes/quest/Goal.js +1 -85
  56. package/dist/classes/quest/Goal.js.map +1 -1
  57. package/dist/classes/quest/Goal.mjs +1 -80
  58. package/dist/classes/quest/Goal.mjs.map +1 -1
  59. package/dist/classes/quest/Quest.d.mts +1 -1
  60. package/dist/classes/quest/Quest.d.ts +1 -1
  61. package/dist/classes/quest/Quest.js +1 -769
  62. package/dist/classes/quest/Quest.js.map +1 -1
  63. package/dist/classes/quest/Quest.mjs +1 -767
  64. package/dist/classes/quest/Quest.mjs.map +1 -1
  65. package/dist/classes/quest/Stage.d.mts +1 -1
  66. package/dist/classes/quest/Stage.d.ts +1 -1
  67. package/dist/classes/quest/Stage.js +1 -536
  68. package/dist/classes/quest/Stage.js.map +1 -1
  69. package/dist/classes/quest/Stage.mjs +1 -531
  70. package/dist/classes/quest/Stage.mjs.map +1 -1
  71. package/dist/constants.d.mts +4 -0
  72. package/dist/constants.d.ts +4 -0
  73. package/dist/constants.js +2 -0
  74. package/dist/constants.js.map +1 -0
  75. package/dist/constants.mjs +2 -0
  76. package/dist/constants.mjs.map +1 -0
  77. package/dist/decorators/ActivityDecorator.d.mts +1 -1
  78. package/dist/decorators/ActivityDecorator.d.ts +1 -1
  79. package/dist/decorators/ActivityDecorator.js +1 -407
  80. package/dist/decorators/ActivityDecorator.js.map +1 -1
  81. package/dist/decorators/ActivityDecorator.mjs +1 -403
  82. package/dist/decorators/ActivityDecorator.mjs.map +1 -1
  83. package/dist/decorators/CommitmentDecorator.d.mts +2 -2
  84. package/dist/decorators/CommitmentDecorator.d.ts +2 -2
  85. package/dist/decorators/CommitmentDecorator.js +1 -91
  86. package/dist/decorators/CommitmentDecorator.js.map +1 -1
  87. package/dist/decorators/CommitmentDecorator.mjs +1 -81
  88. package/dist/decorators/CommitmentDecorator.mjs.map +1 -1
  89. package/dist/decorators/QuestDecorator.d.mts +1 -1
  90. package/dist/decorators/QuestDecorator.d.ts +1 -1
  91. package/dist/decorators/QuestDecorator.js +1 -799
  92. package/dist/decorators/QuestDecorator.js.map +1 -1
  93. package/dist/decorators/QuestDecorator.mjs +1 -794
  94. package/dist/decorators/QuestDecorator.mjs.map +1 -1
  95. package/dist/decorators/RoomDecorator.d.mts +2 -2
  96. package/dist/decorators/RoomDecorator.d.ts +2 -2
  97. package/dist/decorators/RoomDecorator.js +1 -56
  98. package/dist/decorators/RoomDecorator.js.map +1 -1
  99. package/dist/decorators/RoomDecorator.mjs +1 -48
  100. package/dist/decorators/RoomDecorator.mjs.map +1 -1
  101. package/dist/decorators/index.d.mts +3 -3
  102. package/dist/decorators/index.d.ts +3 -3
  103. package/dist/decorators/index.js +1 -1068
  104. package/dist/decorators/index.js.map +1 -1
  105. package/dist/decorators/index.mjs +1 -1053
  106. package/dist/decorators/index.mjs.map +1 -1
  107. package/dist/functions/ActivityFunctions.d.mts +2 -2
  108. package/dist/functions/ActivityFunctions.d.ts +2 -2
  109. package/dist/functions/ActivityFunctions.js +1 -53
  110. package/dist/functions/ActivityFunctions.js.map +1 -1
  111. package/dist/functions/ActivityFunctions.mjs +1 -50
  112. package/dist/functions/ActivityFunctions.mjs.map +1 -1
  113. package/dist/functions/NavigationFunctions.d.mts +2 -2
  114. package/dist/functions/NavigationFunctions.d.ts +2 -2
  115. package/dist/functions/NavigationFunctions.js +1 -181
  116. package/dist/functions/NavigationFunctions.js.map +1 -1
  117. package/dist/functions/NavigationFunctions.mjs +1 -176
  118. package/dist/functions/NavigationFunctions.mjs.map +1 -1
  119. package/dist/functions/QuestFunctions.js +1 -20
  120. package/dist/functions/QuestFunctions.js.map +1 -1
  121. package/dist/functions/QuestFunctions.mjs +1 -18
  122. package/dist/functions/QuestFunctions.mjs.map +1 -1
  123. package/dist/functions/RoutineFunctions.d.mts +4 -4
  124. package/dist/functions/RoutineFunctions.d.ts +4 -4
  125. package/dist/functions/RoutineFunctions.js +1 -126
  126. package/dist/functions/RoutineFunctions.js.map +1 -1
  127. package/dist/functions/RoutineFunctions.mjs +1 -121
  128. package/dist/functions/RoutineFunctions.mjs.map +1 -1
  129. package/dist/functions/index.d.mts +2 -2
  130. package/dist/functions/index.d.ts +2 -2
  131. package/dist/functions/index.js +1 -293
  132. package/dist/functions/index.js.map +1 -1
  133. package/dist/functions/index.mjs +1 -281
  134. package/dist/functions/index.mjs.map +1 -1
  135. package/dist/index.d.mts +55 -13
  136. package/dist/index.d.ts +55 -13
  137. package/dist/index.js +1 -2058
  138. package/dist/index.js.map +1 -1
  139. package/dist/index.mjs +1 -2023
  140. package/dist/index.mjs.map +1 -1
  141. package/dist/interface/ActivityProps.d.mts +1 -1
  142. package/dist/interface/ActivityProps.d.ts +1 -1
  143. package/dist/interface/ActivityProps.js +1 -3
  144. package/dist/interface/ActivityProps.js.map +1 -1
  145. package/dist/interface/ActivityProps.mjs +1 -2
  146. package/dist/interface/ActivityProps.mjs.map +1 -1
  147. package/dist/interface/CommitmentProps.d.mts +2 -2
  148. package/dist/interface/CommitmentProps.d.ts +2 -2
  149. package/dist/interface/CommitmentProps.js +1 -3
  150. package/dist/interface/CommitmentProps.js.map +1 -1
  151. package/dist/interface/CommitmentProps.mjs +1 -2
  152. package/dist/interface/CommitmentProps.mjs.map +1 -1
  153. package/dist/interface/RoomActivityMemory.d.mts +1 -1
  154. package/dist/interface/RoomActivityMemory.d.ts +1 -1
  155. package/dist/interface/RoomActivityMemory.js +1 -3
  156. package/dist/interface/RoomActivityMemory.js.map +1 -1
  157. package/dist/interface/RoomActivityMemory.mjs +1 -2
  158. package/dist/interface/RoomActivityMemory.mjs.map +1 -1
  159. package/dist/interface/RoomProps.d.mts +2 -2
  160. package/dist/interface/RoomProps.d.ts +2 -2
  161. package/dist/interface/RoomProps.js +1 -3
  162. package/dist/interface/RoomProps.js.map +1 -1
  163. package/dist/interface/RoomProps.mjs +1 -2
  164. package/dist/interface/RoomProps.mjs.map +1 -1
  165. package/dist/interface/index.d.mts +3 -3
  166. package/dist/interface/index.d.ts +3 -3
  167. package/dist/interface/index.js +1 -3
  168. package/dist/interface/index.js.map +1 -1
  169. package/dist/interface/index.mjs +1 -2
  170. package/dist/interface/index.mjs.map +1 -1
  171. package/dist/interface/navigation/LocationProps.d.mts +2 -2
  172. package/dist/interface/navigation/LocationProps.d.ts +2 -2
  173. package/dist/interface/navigation/LocationProps.js +1 -3
  174. package/dist/interface/navigation/LocationProps.js.map +1 -1
  175. package/dist/interface/navigation/LocationProps.mjs +1 -2
  176. package/dist/interface/navigation/LocationProps.mjs.map +1 -1
  177. package/dist/interface/navigation/MapProps.d.mts +2 -2
  178. package/dist/interface/navigation/MapProps.d.ts +2 -2
  179. package/dist/interface/navigation/MapProps.js +1 -3
  180. package/dist/interface/navigation/MapProps.js.map +1 -1
  181. package/dist/interface/navigation/MapProps.mjs +1 -2
  182. package/dist/interface/navigation/MapProps.mjs.map +1 -1
  183. package/dist/interface/quest/GoalProps.js +1 -3
  184. package/dist/interface/quest/GoalProps.js.map +1 -1
  185. package/dist/interface/quest/GoalProps.mjs +1 -2
  186. package/dist/interface/quest/GoalProps.mjs.map +1 -1
  187. package/dist/interface/quest/QuestProps.d.mts +1 -1
  188. package/dist/interface/quest/QuestProps.d.ts +1 -1
  189. package/dist/interface/quest/QuestProps.js +1 -3
  190. package/dist/interface/quest/QuestProps.js.map +1 -1
  191. package/dist/interface/quest/QuestProps.mjs +1 -2
  192. package/dist/interface/quest/QuestProps.mjs.map +1 -1
  193. package/dist/interface/quest/StageFlags.js +1 -3
  194. package/dist/interface/quest/StageFlags.js.map +1 -1
  195. package/dist/interface/quest/StageFlags.mjs +1 -2
  196. package/dist/interface/quest/StageFlags.mjs.map +1 -1
  197. package/dist/interface/quest/StageProps.d.mts +1 -1
  198. package/dist/interface/quest/StageProps.d.ts +1 -1
  199. package/dist/interface/quest/StageProps.js +1 -3
  200. package/dist/interface/quest/StageProps.js.map +1 -1
  201. package/dist/interface/quest/StageProps.mjs +1 -2
  202. package/dist/interface/quest/StageProps.mjs.map +1 -1
  203. package/dist/managers/TimeManager.d.mts +30 -31
  204. package/dist/managers/TimeManager.d.ts +30 -31
  205. package/dist/managers/TimeManager.js +1 -250
  206. package/dist/managers/TimeManager.js.map +1 -1
  207. package/dist/managers/TimeManager.mjs +1 -248
  208. package/dist/managers/TimeManager.mjs.map +1 -1
  209. package/dist/managers/index.d.mts +5 -1
  210. package/dist/managers/index.d.ts +5 -1
  211. package/dist/managers/index.js +1 -250
  212. package/dist/managers/index.js.map +1 -1
  213. package/dist/managers/index.mjs +1 -248
  214. package/dist/managers/index.mjs.map +1 -1
  215. package/dist/override/GraphicItemInterface.js +1 -3
  216. package/dist/override/GraphicItemInterface.js.map +1 -1
  217. package/dist/override/GraphicItemInterface.mjs +1 -2
  218. package/dist/override/GraphicItemInterface.mjs.map +1 -1
  219. package/dist/override/GraphicItemType.d.mts +2 -2
  220. package/dist/override/GraphicItemType.d.ts +2 -2
  221. package/dist/override/GraphicItemType.js +1 -3
  222. package/dist/override/GraphicItemType.js.map +1 -1
  223. package/dist/override/GraphicItemType.mjs +1 -2
  224. package/dist/override/GraphicItemType.mjs.map +1 -1
  225. package/dist/override/NeighboringMapsInterface.js +1 -3
  226. package/dist/override/NeighboringMapsInterface.js.map +1 -1
  227. package/dist/override/NeighboringMapsInterface.mjs +1 -2
  228. package/dist/override/NeighboringMapsInterface.mjs.map +1 -1
  229. package/dist/override/OnRenderGraphicItemProps.js +1 -3
  230. package/dist/override/OnRenderGraphicItemProps.js.map +1 -1
  231. package/dist/override/OnRenderGraphicItemProps.mjs +1 -2
  232. package/dist/override/OnRenderGraphicItemProps.mjs.map +1 -1
  233. package/dist/override/OnRunProps.js +1 -3
  234. package/dist/override/OnRunProps.js.map +1 -1
  235. package/dist/override/OnRunProps.mjs +1 -2
  236. package/dist/override/OnRunProps.mjs.map +1 -1
  237. package/dist/override/OnStartEndStageQuest.js +1 -3
  238. package/dist/override/OnStartEndStageQuest.js.map +1 -1
  239. package/dist/override/OnStartEndStageQuest.mjs +1 -2
  240. package/dist/override/OnStartEndStageQuest.mjs.map +1 -1
  241. package/dist/override/index.js +1 -3
  242. package/dist/override/index.js.map +1 -1
  243. package/dist/override/index.mjs +1 -2
  244. package/dist/override/index.mjs.map +1 -1
  245. package/dist/types/ExecutionType.js +1 -3
  246. package/dist/types/ExecutionType.js.map +1 -1
  247. package/dist/types/ExecutionType.mjs +1 -2
  248. package/dist/types/ExecutionType.mjs.map +1 -1
  249. package/dist/types/OnRunActivityEvent.js +1 -3
  250. package/dist/types/OnRunActivityEvent.js.map +1 -1
  251. package/dist/types/OnRunActivityEvent.mjs +1 -2
  252. package/dist/types/OnRunActivityEvent.mjs.map +1 -1
  253. package/dist/types/OnRunCommitmentEvent.js +1 -3
  254. package/dist/types/OnRunCommitmentEvent.js.map +1 -1
  255. package/dist/types/OnRunCommitmentEvent.mjs +1 -2
  256. package/dist/types/OnRunCommitmentEvent.mjs.map +1 -1
  257. package/dist/types/QuestsRequired.d.mts +1 -1
  258. package/dist/types/QuestsRequired.d.ts +1 -1
  259. package/dist/types/QuestsRequired.js +1 -3
  260. package/dist/types/QuestsRequired.js.map +1 -1
  261. package/dist/types/QuestsRequired.mjs +1 -2
  262. package/dist/types/QuestsRequired.mjs.map +1 -1
  263. package/dist/types/TimeDataType.d.mts +6 -0
  264. package/dist/types/TimeDataType.d.ts +6 -0
  265. package/dist/types/TimeDataType.js +2 -0
  266. package/dist/types/TimeDataType.js.map +1 -0
  267. package/dist/types/TimeDataType.mjs +2 -0
  268. package/dist/types/TimeDataType.mjs.map +1 -0
  269. package/dist/types/TimeSettings.d.mts +1 -1
  270. package/dist/types/TimeSettings.d.ts +1 -1
  271. package/dist/types/TimeSettings.js +1 -3
  272. package/dist/types/TimeSettings.js.map +1 -1
  273. package/dist/types/TimeSettings.mjs +1 -2
  274. package/dist/types/TimeSettings.mjs.map +1 -1
  275. package/dist/types/index.d.mts +1 -1
  276. package/dist/types/index.d.ts +1 -1
  277. package/dist/types/index.js +1 -3
  278. package/dist/types/index.js.map +1 -1
  279. package/dist/types/index.mjs +1 -2
  280. package/dist/types/index.mjs.map +1 -1
  281. package/package.json +8 -7
@@ -1,119 +1,2 @@
1
- 'use strict';
2
-
3
- var pixiVn = require('@drincs/pixi-vn');
4
-
5
- // src/classes/navigation/Location.ts
6
-
7
- // src/decorators/RoomDecorator.ts
8
- var registeredRooms = {};
9
- function getRoomsByLocation(location) {
10
- return Object.values(registeredRooms).filter((room) => room.location.id === location.id);
11
- }
12
-
13
- // src/classes/navigation/Location.ts
14
- var LOCATION_CATEGORY = "__nqtr-location__";
15
- var LocationBaseModel = class extends pixiVn.StoredClassModel {
16
- /**
17
- * @param id The id of the location, it must be unique.
18
- * @param map The map where the location is.
19
- * @param props The properties of the location.
20
- */
21
- constructor(id, map, props = {}) {
22
- super(LOCATION_CATEGORY, id);
23
- this.defaultName = props.name || "";
24
- this.defaultDisabled = props.disabled || false;
25
- this.defaultHidden = props.hidden || false;
26
- this._renderIcon = props.renderIcon;
27
- this._map = map;
28
- }
29
- /**
30
- * The name of the location.
31
- * If you set undefined, it will return the initial value of name.
32
- */
33
- get name() {
34
- return this.getStorageProperty("name") || this.defaultName;
35
- }
36
- set name(value) {
37
- this.setStorageProperty("name", value);
38
- }
39
- /**
40
- * Whether is disabled. If it is a string, it is a Pixi'VN flag name.
41
- */
42
- get disabled() {
43
- let value = this.getStorageProperty("disabled") || this.defaultDisabled;
44
- if (typeof value === "string") {
45
- return pixiVn.getFlag(value);
46
- }
47
- return value;
48
- }
49
- set disabled(value) {
50
- this.setStorageProperty("disabled", value);
51
- }
52
- /**
53
- * Whether is hidden. If it is a string, it is a Pixi'VN flag name.
54
- */
55
- get hidden() {
56
- let value = this.getStorageProperty("hidden") || this.defaultHidden;
57
- if (typeof value === "string") {
58
- return pixiVn.getFlag(value);
59
- }
60
- return value;
61
- }
62
- set hidden(value) {
63
- this.setStorageProperty("hidden", value);
64
- }
65
- /**
66
- * The function for rendering the icon of the location.
67
- */
68
- get renderIcon() {
69
- let render = this._renderIcon;
70
- if (render === void 0) {
71
- return void 0;
72
- }
73
- if (typeof render === "function") {
74
- return (props) => {
75
- return render(this, props);
76
- };
77
- }
78
- return (props) => render;
79
- }
80
- /**
81
- * The map where the location is.
82
- */
83
- get map() {
84
- return this._map;
85
- }
86
- /**
87
- * Get the entrance room of the location.
88
- * You can cast the room to a specific type that extends RoomBaseModel.
89
- * @returns The entrance room or the first room if there is no entrance.
90
- * @example
91
- * ```typescript
92
- * const entranceHome = new RoomBaseModel("entrance-home", home, { isEntrance: true })
93
- * saveRoom(entranceHome)
94
- * const home = new LocationBaseModel("home", map, { name: "Home" })
95
- *
96
- * const entrance = home.getEntrance() // entrance === entranceHome
97
- * ```
98
- */
99
- getEntrance() {
100
- let rooms = this.getRooms();
101
- if (rooms.length === 0) {
102
- console.error(`[NQTR] The location ${this.id} has no rooms`);
103
- return;
104
- }
105
- return rooms.find((room) => room.isEntrance) || rooms[0];
106
- }
107
- /**
108
- * Get all rooms in the location.
109
- * You can cast the rooms to a specific type that extends RoomBaseModel.
110
- * @returns The rooms in the location.
111
- */
112
- getRooms() {
113
- return getRoomsByLocation(this);
114
- }
115
- };
116
-
117
- module.exports = LocationBaseModel;
118
- //# sourceMappingURL=out.js.map
1
+ 'use strict';var pixiVn=require('@drincs/pixi-vn');var s={};function n(a){return Object.values(s).filter(e=>e.location.id===a.id)}var l="__nqtr-location__",r=class extends pixiVn.StoredClassModel{constructor(e,o,t={}){super(l,e),this.defaultName=t.name||"",this.defaultDisabled=t.disabled||false,this.defaultHidden=t.hidden||false,this._renderIcon=t.renderIcon,this._map=o;}defaultName;get name(){return this.getStorageProperty("name")||this.defaultName}set name(e){this.setStorageProperty("name",e);}defaultDisabled;get disabled(){let e=this.getStorageProperty("disabled")||this.defaultDisabled;return typeof e=="string"?pixiVn.getFlag(e):e}set disabled(e){this.setStorageProperty("disabled",e);}defaultHidden;get hidden(){let e=this.getStorageProperty("hidden")||this.defaultHidden;return typeof e=="string"?pixiVn.getFlag(e):e}set hidden(e){this.setStorageProperty("hidden",e);}_renderIcon;get renderIcon(){let e=this._renderIcon;if(e!==undefined)return typeof e=="function"?o=>e(this,o):o=>e}_map;get map(){return this._map}getEntrance(){let e=this.getRooms();if(e.length===0){console.error(`[NQTR] The location ${this.id} has no rooms`);return}return e.find(o=>o.isEntrance)||e[0]}getRooms(){return n(this)}};module.exports=r;//# sourceMappingURL=Location.js.map
119
2
  //# sourceMappingURL=Location.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/navigation/Location.ts","../../../src/decorators/RoomDecorator.ts"],"names":[],"mappings":";AACA,SAAS,SAAS,wBAAwB;;;ACCnC,IAAM,kBAAmD,CAAC;AA+C1D,SAAS,mBAAgE,UAAsC;AAClH,SAAO,OAAO,OAAO,eAAe,EAAE,OAAO,UAAQ,KAAK,SAAS,OAAO,SAAS,EAAE;AACzF;;;AD5CA,IAAM,oBAAoB;AAY1B,IAAqB,oBAArB,cAAyF,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtG,YAAY,IAAY,KAAW,QAA6B,CAAC,GAAG;AAChE,UAAM,mBAAmB,EAAE;AAC3B,SAAK,cAAc,MAAM,QAAQ;AACjC,SAAK,kBAAkB,MAAM,YAAY;AACzC,SAAK,gBAAgB,MAAM,UAAU;AACrC,SAAK,cAAc,MAAM;AACzB,SAAK,OAAO;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,OAAe;AACf,WAAO,KAAK,mBAA2B,MAAM,KAAK,KAAK;AAAA,EAC3D;AAAA,EACA,IAAI,KAAK,OAA2B;AAChC,SAAK,mBAAmB,QAAQ,KAAK;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,WAAoB;AACpB,QAAI,QAAQ,KAAK,mBAA4B,UAAU,KAAK,KAAK;AACjE,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,SAAS,OAAyB;AAClC,SAAK,mBAAmB,YAAY,KAAK;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,SAAkB;AAClB,QAAI,QAAQ,KAAK,mBAA4B,QAAQ,KAAK,KAAK;AAC/D,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,OAAyB;AAChC,SAAK,mBAAmB,UAAU,KAAK;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,aAAiF;AACjF,QAAI,SAAS,KAAK;AAClB,QAAI,WAAW,QAAW;AACtB,aAAO;AAAA,IACX;AACA,QAAI,OAAO,WAAW,YAAY;AAC9B,aAAO,CAAC,UAAoC;AACxC,eAAO,OAAO,MAAM,KAAK;AAAA,MAC7B;AAAA,IACJ;AACA,WAAO,CAAC,UAAoC;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,MAAY;AACZ,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,cAA8E;AAC1E,QAAI,QAAQ,KAAK,SAAgB;AACjC,QAAI,MAAM,WAAW,GAAG;AACpB,cAAQ,MAAM,uBAAuB,KAAK,EAAE,eAAe;AAC3D;AAAA,IACJ;AACA,WAAO,MAAM,KAAK,UAAQ,KAAK,UAAU,KAAK,MAAM,CAAC;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAiE;AAC7D,WAAO,mBAA0B,IAAI;AAAA,EACzC;AACJ","sourcesContent":["import { GraphicItemType, OnRenderGraphicItemProps } from \"@drincs/nqtr/dist/override\";\nimport { getFlag, StoredClassModel } from \"@drincs/pixi-vn\";\nimport { getRoomsByLocation } from \"../../decorators/RoomDecorator\";\nimport { LocationProps } from \"../../interface\";\nimport MapBaseModel from \"./Map\";\nimport RoomBaseModel from \"./Room\";\n\nconst LOCATION_CATEGORY = \"__nqtr-location__\"\n\n/**\n * The base model of a location. I suggest you extend this class to create your own location model.\n * @example\n * ```typescript\n * export const mcHome = new LocationBaseModel('mc_home', mainMap, {\n * name: 'MC Home',\n * icon: \"https://icon.jpg\",\n * });\n * ```\n */\nexport default class LocationBaseModel<TMap extends MapBaseModel = MapBaseModel> extends StoredClassModel {\n /**\n * @param id The id of the location, it must be unique.\n * @param map The map where the location is.\n * @param props The properties of the location.\n */\n constructor(id: string, map: TMap, props: LocationProps<TMap> = {}) {\n super(LOCATION_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._renderIcon = props.renderIcon\n this._map = map\n }\n\n private defaultName: string\n /**\n * The name of the location.\n * If you set undefined, it will return the initial value of name.\n */\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string | undefined) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultDisabled: boolean | string\n /**\n * Whether is disabled. If it is a string, it is a Pixi'VN flag name.\n */\n get disabled(): boolean {\n let value = this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set disabled(value: boolean | string) {\n this.setStorageProperty(\"disabled\", value)\n }\n\n private defaultHidden: boolean | string\n /**\n * Whether is hidden. If it is a string, it is a Pixi'VN flag name.\n */\n get hidden(): boolean {\n let value = this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set hidden(value: boolean | string) {\n this.setStorageProperty(\"hidden\", value)\n }\n\n private _renderIcon?: GraphicItemType | ((location: LocationBaseModel<TMap>, props: OnRenderGraphicItemProps) => GraphicItemType)\n /**\n * The function for rendering the icon of the location.\n */\n get renderIcon(): ((props: OnRenderGraphicItemProps) => GraphicItemType) | undefined {\n let render = this._renderIcon\n if (render === undefined) {\n return undefined\n }\n if (typeof render === \"function\") {\n return (props: OnRenderGraphicItemProps) => {\n return render(this, props)\n }\n }\n return (props: OnRenderGraphicItemProps) => render\n }\n\n private _map: TMap\n /**\n * The map where the location is.\n */\n get map(): TMap {\n return this._map\n }\n\n /**\n * Get the entrance room of the location.\n * You can cast the room to a specific type that extends RoomBaseModel.\n * @returns The entrance room or the first room if there is no entrance.\n * @example\n * ```typescript\n * const entranceHome = new RoomBaseModel(\"entrance-home\", home, { isEntrance: true })\n * saveRoom(entranceHome)\n * const home = new LocationBaseModel(\"home\", map, { name: \"Home\" })\n * \n * const entrance = home.getEntrance() // entrance === entranceHome\n * ```\n */\n getEntrance<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom | undefined {\n let rooms = this.getRooms<TRoom>()\n if (rooms.length === 0) {\n console.error(`[NQTR] The location ${this.id} has no rooms`)\n return\n }\n return rooms.find(room => room.isEntrance) || rooms[0]\n }\n\n /**\n * Get all rooms in the location.\n * You can cast the rooms to a specific type that extends RoomBaseModel.\n * @returns The rooms in the location.\n */\n getRooms<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom[] {\n return getRoomsByLocation<TRoom>(this)\n }\n}\n","import { LocationBaseModel, MapBaseModel, RoomBaseModel } from \"../classes\"\n\nexport const registeredRooms: { [id: string]: RoomBaseModel } = {}\n\n/**\n * Save a room in the registered rooms. If the room already exists, it will be overwritten.\n * @param room The room to save.\n * @returns \n * @example\n * ```ts\n * saveRoom([mcRoom, aliceRoom, annRoom, bathroom, lounge, terrace, gymRoom]);\n * ```\n */\nexport function saveRoom<TRoom extends RoomBaseModel = RoomBaseModel>(room: TRoom | TRoom[]) {\n if (Array.isArray(room)) {\n room.forEach(c => saveRoom(c))\n return\n }\n if (registeredRooms[room.id]) {\n console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`)\n }\n registeredRooms[room.id] = room\n}\n\n/**\n * Get a room by its id.\n * @param id The id of the room.\n * @returns The room or undefined if not found.\n */\nexport function getRoomById<TRoom extends RoomBaseModel = RoomBaseModel>(id: string): TRoom | undefined {\n try {\n let room = registeredRooms[id]\n if (!room) {\n console.error(`[NQTR] Room ${id} not found`)\n return\n }\n return room as TRoom\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Room ${id}`, e)\n return\n }\n}\n\n/**\n * Get all rooms in a location.\n * @param location The location where the rooms are.\n * @returns The rooms in the location.\n */\nexport function getRoomsByLocation<TRoom extends RoomBaseModel = RoomBaseModel>(location: LocationBaseModel): TRoom[] {\n return Object.values(registeredRooms).filter(room => room.location.id === location.id) as TRoom[]\n}\n\n/**\n * Get all locations in the registered rooms.\n * @returns All locations in the registered rooms.\n */\nexport function getAllLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n let result: { [id: string]: TLocation } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.id] = room.location as TLocation\n })\n return Object.values(result)\n}\n\n/**\n * Get all locations in a map.\n * @param map The map where the locations are.\n * @returns The locations in the map.\n */\nexport function getLocationsByMap<TLocation extends LocationBaseModel = LocationBaseModel>(map: MapBaseModel): TLocation[] {\n return getAllLocations<TLocation>().filter(location => location.map.id === map.id) as TLocation[]\n}\n\n/**\n * Get all maps in the registered rooms.\n * @returns All maps in the registered rooms.\n */\nexport function getAllMaps<TMap extends MapBaseModel = MapBaseModel>(): TMap[] {\n let result: { [id: string]: TMap } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.map.id] = room.location.map as TMap\n })\n return Object.values(result)\n}\n"]}
1
+ {"version":3,"sources":["../../../src/decorators/RoomDecorator.ts","../../../src/classes/navigation/Location.ts"],"names":["registeredRooms","getRoomsByLocation","location","room","LOCATION_CATEGORY","LocationBaseModel","StoredClassModel","id","map","props","value","getFlag","render","rooms"],"mappings":"mDAEO,IAAMA,CAAmD,CAAA,EA+CzD,CAAA,SAASC,CAAgEC,CAAAA,CAAAA,CAAsC,CAClH,OAAO,MAAA,CAAO,MAAOF,CAAAA,CAAe,CAAE,CAAA,MAAA,CAAOG,GAAQA,CAAK,CAAA,QAAA,CAAS,EAAOD,GAAAA,CAAAA,CAAS,EAAE,CACzF,CC5CME,IAAAA,CAAAA,CAAoB,mBAYLC,CAAAA,CAAAA,CAArB,cAAyFC,uBAAiB,CAMtG,WAAYC,CAAAA,CAAAA,CAAYC,CAAWC,CAAAA,CAAAA,CAA6B,EAAC,CAAG,CAChE,KAAML,CAAAA,CAAAA,CAAmBG,CAAE,CAAA,CAC3B,IAAK,CAAA,WAAA,CAAcE,EAAM,IAAQ,EAAA,EAAA,CACjC,IAAK,CAAA,eAAA,CAAkBA,CAAM,CAAA,QAAA,EAAY,MACzC,IAAK,CAAA,aAAA,CAAgBA,CAAM,CAAA,MAAA,EAAU,KACrC,CAAA,IAAA,CAAK,YAAcA,CAAM,CAAA,UAAA,CACzB,IAAK,CAAA,IAAA,CAAOD,EAChB,CAEQ,YAKR,IAAI,IAAA,EAAe,CACf,OAAO,IAAK,CAAA,kBAAA,CAA2B,MAAM,CAAK,EAAA,IAAA,CAAK,WAC3D,CACA,IAAI,IAAA,CAAKE,EAA2B,CAChC,IAAA,CAAK,kBAAmB,CAAA,MAAA,CAAQA,CAAK,EACzC,CAEQ,eAIR,CAAA,IAAI,QAAoB,EAAA,CACpB,IAAIA,CAAAA,CAAQ,KAAK,kBAA4B,CAAA,UAAU,CAAK,EAAA,IAAA,CAAK,eACjE,CAAA,OAAI,OAAOA,CAAU,EAAA,QAAA,CACVC,cAAQD,CAAAA,CAAK,CAEjBA,CAAAA,CACX,CACA,IAAI,QAAA,CAASA,CAAyB,CAAA,CAClC,IAAK,CAAA,kBAAA,CAAmB,WAAYA,CAAK,EAC7C,CAEQ,aAAA,CAIR,IAAI,MAAA,EAAkB,CAClB,IAAIA,CAAAA,CAAQ,IAAK,CAAA,kBAAA,CAA4B,QAAQ,CAAA,EAAK,KAAK,aAC/D,CAAA,OAAI,OAAOA,CAAAA,EAAU,QACVC,CAAAA,cAAAA,CAAQD,CAAK,CAEjBA,CAAAA,CACX,CACA,IAAI,MAAOA,CAAAA,CAAAA,CAAyB,CAChC,IAAK,CAAA,kBAAA,CAAmB,QAAUA,CAAAA,CAAK,EAC3C,CAEQ,YAIR,IAAI,UAAA,EAAiF,CACjF,IAAIE,CAAS,CAAA,IAAA,CAAK,YAClB,GAAIA,CAAAA,GAAW,SAGf,CAAA,OAAI,OAAOA,CAAAA,EAAW,WACVH,CACGG,EAAAA,CAAAA,CAAO,IAAMH,CAAAA,CAAK,CAGzBA,CAAAA,CAAAA,EAAoCG,CAChD,CAEQ,IAAA,CAIR,IAAI,GAAA,EAAY,CACZ,OAAO,KAAK,IAChB,CAeA,WAA8E,EAAA,CAC1E,IAAIC,CAAAA,CAAQ,KAAK,QAAgB,EAAA,CACjC,GAAIA,CAAAA,CAAM,MAAW,GAAA,CAAA,CAAG,CACpB,OAAQ,CAAA,KAAA,CAAM,CAAuB,oBAAA,EAAA,IAAA,CAAK,EAAE,CAAA,aAAA,CAAe,EAC3D,MACJ,CACA,OAAOA,CAAAA,CAAM,IAAKV,CAAAA,CAAAA,EAAQA,EAAK,UAAU,CAAA,EAAKU,CAAM,CAAA,CAAC,CACzD,CAOA,QAAiE,EAAA,CAC7D,OAAOZ,CAAAA,CAA0B,IAAI,CACzC,CACJ","file":"Location.js","sourcesContent":["import { LocationBaseModel, MapBaseModel, RoomBaseModel } from \"../classes\"\n\nexport const registeredRooms: { [id: string]: RoomBaseModel } = {}\n\n/**\n * Save a room in the registered rooms. If the room already exists, it will be overwritten.\n * @param room The room to save.\n * @returns \n * @example\n * ```ts\n * saveRoom([mcRoom, aliceRoom, annRoom, bathroom, lounge, terrace, gymRoom]);\n * ```\n */\nexport function saveRoom<TRoom extends RoomBaseModel = RoomBaseModel>(room: TRoom | TRoom[]) {\n if (Array.isArray(room)) {\n room.forEach(c => saveRoom(c))\n return\n }\n if (registeredRooms[room.id]) {\n console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`)\n }\n registeredRooms[room.id] = room\n}\n\n/**\n * Get a room by its id.\n * @param id The id of the room.\n * @returns The room or undefined if not found.\n */\nexport function getRoomById<TRoom extends RoomBaseModel = RoomBaseModel>(id: string): TRoom | undefined {\n try {\n let room = registeredRooms[id]\n if (!room) {\n console.error(`[NQTR] Room ${id} not found`)\n return\n }\n return room as TRoom\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Room ${id}`, e)\n return\n }\n}\n\n/**\n * Get all rooms in a location.\n * @param location The location where the rooms are.\n * @returns The rooms in the location.\n */\nexport function getRoomsByLocation<TRoom extends RoomBaseModel = RoomBaseModel>(location: LocationBaseModel): TRoom[] {\n return Object.values(registeredRooms).filter(room => room.location.id === location.id) as TRoom[]\n}\n\n/**\n * Get all locations in the registered rooms.\n * @returns All locations in the registered rooms.\n */\nexport function getAllLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n let result: { [id: string]: TLocation } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.id] = room.location as TLocation\n })\n return Object.values(result)\n}\n\n/**\n * Get all locations in a map.\n * @param map The map where the locations are.\n * @returns The locations in the map.\n */\nexport function getLocationsByMap<TLocation extends LocationBaseModel = LocationBaseModel>(map: MapBaseModel): TLocation[] {\n return getAllLocations<TLocation>().filter(location => location.map.id === map.id) as TLocation[]\n}\n\n/**\n * Get all maps in the registered rooms.\n * @returns All maps in the registered rooms.\n */\nexport function getAllMaps<TMap extends MapBaseModel = MapBaseModel>(): TMap[] {\n let result: { [id: string]: TMap } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.map.id] = room.location.map as TMap\n })\n return Object.values(result)\n}\n","import { GraphicItemType, OnRenderGraphicItemProps } from \"@drincs/nqtr/dist/override\";\nimport { getFlag, StoredClassModel } from \"@drincs/pixi-vn\";\nimport { getRoomsByLocation } from \"../../decorators/RoomDecorator\";\nimport { LocationProps } from \"../../interface\";\nimport MapBaseModel from \"./Map\";\nimport RoomBaseModel from \"./Room\";\n\nconst LOCATION_CATEGORY = \"__nqtr-location__\"\n\n/**\n * The base model of a location. I suggest you extend this class to create your own location model.\n * @example\n * ```typescript\n * export const mcHome = new LocationBaseModel('mc_home', mainMap, {\n * name: 'MC Home',\n * icon: \"https://icon.jpg\",\n * });\n * ```\n */\nexport default class LocationBaseModel<TMap extends MapBaseModel = MapBaseModel> extends StoredClassModel {\n /**\n * @param id The id of the location, it must be unique.\n * @param map The map where the location is.\n * @param props The properties of the location.\n */\n constructor(id: string, map: TMap, props: LocationProps<TMap> = {}) {\n super(LOCATION_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._renderIcon = props.renderIcon\n this._map = map\n }\n\n private defaultName: string\n /**\n * The name of the location.\n * If you set undefined, it will return the initial value of name.\n */\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string | undefined) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultDisabled: boolean | string\n /**\n * Whether is disabled. If it is a string, it is a Pixi'VN flag name.\n */\n get disabled(): boolean {\n let value = this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set disabled(value: boolean | string) {\n this.setStorageProperty(\"disabled\", value)\n }\n\n private defaultHidden: boolean | string\n /**\n * Whether is hidden. If it is a string, it is a Pixi'VN flag name.\n */\n get hidden(): boolean {\n let value = this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set hidden(value: boolean | string) {\n this.setStorageProperty(\"hidden\", value)\n }\n\n private _renderIcon?: GraphicItemType | ((location: LocationBaseModel<TMap>, props: OnRenderGraphicItemProps) => GraphicItemType)\n /**\n * The function for rendering the icon of the location.\n */\n get renderIcon(): ((props: OnRenderGraphicItemProps) => GraphicItemType) | undefined {\n let render = this._renderIcon\n if (render === undefined) {\n return undefined\n }\n if (typeof render === \"function\") {\n return (props: OnRenderGraphicItemProps) => {\n return render(this, props)\n }\n }\n return (props: OnRenderGraphicItemProps) => render\n }\n\n private _map: TMap\n /**\n * The map where the location is.\n */\n get map(): TMap {\n return this._map\n }\n\n /**\n * Get the entrance room of the location.\n * You can cast the room to a specific type that extends RoomBaseModel.\n * @returns The entrance room or the first room if there is no entrance.\n * @example\n * ```typescript\n * const entranceHome = new RoomBaseModel(\"entrance-home\", home, { isEntrance: true })\n * saveRoom(entranceHome)\n * const home = new LocationBaseModel(\"home\", map, { name: \"Home\" })\n * \n * const entrance = home.getEntrance() // entrance === entranceHome\n * ```\n */\n getEntrance<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom | undefined {\n let rooms = this.getRooms<TRoom>()\n if (rooms.length === 0) {\n console.error(`[NQTR] The location ${this.id} has no rooms`)\n return\n }\n return rooms.find(room => room.isEntrance) || rooms[0]\n }\n\n /**\n * Get all rooms in the location.\n * You can cast the rooms to a specific type that extends RoomBaseModel.\n * @returns The rooms in the location.\n */\n getRooms<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom[] {\n return getRoomsByLocation<TRoom>(this)\n }\n}\n"]}
@@ -1,117 +1,2 @@
1
- import { StoredClassModel, getFlag } from '@drincs/pixi-vn';
2
-
3
- // src/classes/navigation/Location.ts
4
-
5
- // src/decorators/RoomDecorator.ts
6
- var registeredRooms = {};
7
- function getRoomsByLocation(location) {
8
- return Object.values(registeredRooms).filter((room) => room.location.id === location.id);
9
- }
10
-
11
- // src/classes/navigation/Location.ts
12
- var LOCATION_CATEGORY = "__nqtr-location__";
13
- var LocationBaseModel = class extends StoredClassModel {
14
- /**
15
- * @param id The id of the location, it must be unique.
16
- * @param map The map where the location is.
17
- * @param props The properties of the location.
18
- */
19
- constructor(id, map, props = {}) {
20
- super(LOCATION_CATEGORY, id);
21
- this.defaultName = props.name || "";
22
- this.defaultDisabled = props.disabled || false;
23
- this.defaultHidden = props.hidden || false;
24
- this._renderIcon = props.renderIcon;
25
- this._map = map;
26
- }
27
- /**
28
- * The name of the location.
29
- * If you set undefined, it will return the initial value of name.
30
- */
31
- get name() {
32
- return this.getStorageProperty("name") || this.defaultName;
33
- }
34
- set name(value) {
35
- this.setStorageProperty("name", value);
36
- }
37
- /**
38
- * Whether is disabled. If it is a string, it is a Pixi'VN flag name.
39
- */
40
- get disabled() {
41
- let value = this.getStorageProperty("disabled") || this.defaultDisabled;
42
- if (typeof value === "string") {
43
- return getFlag(value);
44
- }
45
- return value;
46
- }
47
- set disabled(value) {
48
- this.setStorageProperty("disabled", value);
49
- }
50
- /**
51
- * Whether is hidden. If it is a string, it is a Pixi'VN flag name.
52
- */
53
- get hidden() {
54
- let value = this.getStorageProperty("hidden") || this.defaultHidden;
55
- if (typeof value === "string") {
56
- return getFlag(value);
57
- }
58
- return value;
59
- }
60
- set hidden(value) {
61
- this.setStorageProperty("hidden", value);
62
- }
63
- /**
64
- * The function for rendering the icon of the location.
65
- */
66
- get renderIcon() {
67
- let render = this._renderIcon;
68
- if (render === void 0) {
69
- return void 0;
70
- }
71
- if (typeof render === "function") {
72
- return (props) => {
73
- return render(this, props);
74
- };
75
- }
76
- return (props) => render;
77
- }
78
- /**
79
- * The map where the location is.
80
- */
81
- get map() {
82
- return this._map;
83
- }
84
- /**
85
- * Get the entrance room of the location.
86
- * You can cast the room to a specific type that extends RoomBaseModel.
87
- * @returns The entrance room or the first room if there is no entrance.
88
- * @example
89
- * ```typescript
90
- * const entranceHome = new RoomBaseModel("entrance-home", home, { isEntrance: true })
91
- * saveRoom(entranceHome)
92
- * const home = new LocationBaseModel("home", map, { name: "Home" })
93
- *
94
- * const entrance = home.getEntrance() // entrance === entranceHome
95
- * ```
96
- */
97
- getEntrance() {
98
- let rooms = this.getRooms();
99
- if (rooms.length === 0) {
100
- console.error(`[NQTR] The location ${this.id} has no rooms`);
101
- return;
102
- }
103
- return rooms.find((room) => room.isEntrance) || rooms[0];
104
- }
105
- /**
106
- * Get all rooms in the location.
107
- * You can cast the rooms to a specific type that extends RoomBaseModel.
108
- * @returns The rooms in the location.
109
- */
110
- getRooms() {
111
- return getRoomsByLocation(this);
112
- }
113
- };
114
-
115
- export { LocationBaseModel as default };
116
- //# sourceMappingURL=out.js.map
1
+ import {StoredClassModel,getFlag}from'@drincs/pixi-vn';var s={};function n(a){return Object.values(s).filter(e=>e.location.id===a.id)}var l="__nqtr-location__",r=class extends StoredClassModel{constructor(e,o,t={}){super(l,e),this.defaultName=t.name||"",this.defaultDisabled=t.disabled||false,this.defaultHidden=t.hidden||false,this._renderIcon=t.renderIcon,this._map=o;}defaultName;get name(){return this.getStorageProperty("name")||this.defaultName}set name(e){this.setStorageProperty("name",e);}defaultDisabled;get disabled(){let e=this.getStorageProperty("disabled")||this.defaultDisabled;return typeof e=="string"?getFlag(e):e}set disabled(e){this.setStorageProperty("disabled",e);}defaultHidden;get hidden(){let e=this.getStorageProperty("hidden")||this.defaultHidden;return typeof e=="string"?getFlag(e):e}set hidden(e){this.setStorageProperty("hidden",e);}_renderIcon;get renderIcon(){let e=this._renderIcon;if(e!==undefined)return typeof e=="function"?o=>e(this,o):o=>e}_map;get map(){return this._map}getEntrance(){let e=this.getRooms();if(e.length===0){console.error(`[NQTR] The location ${this.id} has no rooms`);return}return e.find(o=>o.isEntrance)||e[0]}getRooms(){return n(this)}};export{r as default};//# sourceMappingURL=Location.mjs.map
117
2
  //# sourceMappingURL=Location.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/navigation/Location.ts","../../../src/decorators/RoomDecorator.ts"],"names":[],"mappings":";AACA,SAAS,SAAS,wBAAwB;;;ACCnC,IAAM,kBAAmD,CAAC;AA+C1D,SAAS,mBAAgE,UAAsC;AAClH,SAAO,OAAO,OAAO,eAAe,EAAE,OAAO,UAAQ,KAAK,SAAS,OAAO,SAAS,EAAE;AACzF;;;AD5CA,IAAM,oBAAoB;AAY1B,IAAqB,oBAArB,cAAyF,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtG,YAAY,IAAY,KAAW,QAA6B,CAAC,GAAG;AAChE,UAAM,mBAAmB,EAAE;AAC3B,SAAK,cAAc,MAAM,QAAQ;AACjC,SAAK,kBAAkB,MAAM,YAAY;AACzC,SAAK,gBAAgB,MAAM,UAAU;AACrC,SAAK,cAAc,MAAM;AACzB,SAAK,OAAO;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,OAAe;AACf,WAAO,KAAK,mBAA2B,MAAM,KAAK,KAAK;AAAA,EAC3D;AAAA,EACA,IAAI,KAAK,OAA2B;AAChC,SAAK,mBAAmB,QAAQ,KAAK;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,WAAoB;AACpB,QAAI,QAAQ,KAAK,mBAA4B,UAAU,KAAK,KAAK;AACjE,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,SAAS,OAAyB;AAClC,SAAK,mBAAmB,YAAY,KAAK;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,SAAkB;AAClB,QAAI,QAAQ,KAAK,mBAA4B,QAAQ,KAAK,KAAK;AAC/D,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,OAAyB;AAChC,SAAK,mBAAmB,UAAU,KAAK;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,aAAiF;AACjF,QAAI,SAAS,KAAK;AAClB,QAAI,WAAW,QAAW;AACtB,aAAO;AAAA,IACX;AACA,QAAI,OAAO,WAAW,YAAY;AAC9B,aAAO,CAAC,UAAoC;AACxC,eAAO,OAAO,MAAM,KAAK;AAAA,MAC7B;AAAA,IACJ;AACA,WAAO,CAAC,UAAoC;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,MAAY;AACZ,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,cAA8E;AAC1E,QAAI,QAAQ,KAAK,SAAgB;AACjC,QAAI,MAAM,WAAW,GAAG;AACpB,cAAQ,MAAM,uBAAuB,KAAK,EAAE,eAAe;AAC3D;AAAA,IACJ;AACA,WAAO,MAAM,KAAK,UAAQ,KAAK,UAAU,KAAK,MAAM,CAAC;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAiE;AAC7D,WAAO,mBAA0B,IAAI;AAAA,EACzC;AACJ","sourcesContent":["import { GraphicItemType, OnRenderGraphicItemProps } from \"@drincs/nqtr/dist/override\";\nimport { getFlag, StoredClassModel } from \"@drincs/pixi-vn\";\nimport { getRoomsByLocation } from \"../../decorators/RoomDecorator\";\nimport { LocationProps } from \"../../interface\";\nimport MapBaseModel from \"./Map\";\nimport RoomBaseModel from \"./Room\";\n\nconst LOCATION_CATEGORY = \"__nqtr-location__\"\n\n/**\n * The base model of a location. I suggest you extend this class to create your own location model.\n * @example\n * ```typescript\n * export const mcHome = new LocationBaseModel('mc_home', mainMap, {\n * name: 'MC Home',\n * icon: \"https://icon.jpg\",\n * });\n * ```\n */\nexport default class LocationBaseModel<TMap extends MapBaseModel = MapBaseModel> extends StoredClassModel {\n /**\n * @param id The id of the location, it must be unique.\n * @param map The map where the location is.\n * @param props The properties of the location.\n */\n constructor(id: string, map: TMap, props: LocationProps<TMap> = {}) {\n super(LOCATION_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._renderIcon = props.renderIcon\n this._map = map\n }\n\n private defaultName: string\n /**\n * The name of the location.\n * If you set undefined, it will return the initial value of name.\n */\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string | undefined) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultDisabled: boolean | string\n /**\n * Whether is disabled. If it is a string, it is a Pixi'VN flag name.\n */\n get disabled(): boolean {\n let value = this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set disabled(value: boolean | string) {\n this.setStorageProperty(\"disabled\", value)\n }\n\n private defaultHidden: boolean | string\n /**\n * Whether is hidden. If it is a string, it is a Pixi'VN flag name.\n */\n get hidden(): boolean {\n let value = this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set hidden(value: boolean | string) {\n this.setStorageProperty(\"hidden\", value)\n }\n\n private _renderIcon?: GraphicItemType | ((location: LocationBaseModel<TMap>, props: OnRenderGraphicItemProps) => GraphicItemType)\n /**\n * The function for rendering the icon of the location.\n */\n get renderIcon(): ((props: OnRenderGraphicItemProps) => GraphicItemType) | undefined {\n let render = this._renderIcon\n if (render === undefined) {\n return undefined\n }\n if (typeof render === \"function\") {\n return (props: OnRenderGraphicItemProps) => {\n return render(this, props)\n }\n }\n return (props: OnRenderGraphicItemProps) => render\n }\n\n private _map: TMap\n /**\n * The map where the location is.\n */\n get map(): TMap {\n return this._map\n }\n\n /**\n * Get the entrance room of the location.\n * You can cast the room to a specific type that extends RoomBaseModel.\n * @returns The entrance room or the first room if there is no entrance.\n * @example\n * ```typescript\n * const entranceHome = new RoomBaseModel(\"entrance-home\", home, { isEntrance: true })\n * saveRoom(entranceHome)\n * const home = new LocationBaseModel(\"home\", map, { name: \"Home\" })\n * \n * const entrance = home.getEntrance() // entrance === entranceHome\n * ```\n */\n getEntrance<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom | undefined {\n let rooms = this.getRooms<TRoom>()\n if (rooms.length === 0) {\n console.error(`[NQTR] The location ${this.id} has no rooms`)\n return\n }\n return rooms.find(room => room.isEntrance) || rooms[0]\n }\n\n /**\n * Get all rooms in the location.\n * You can cast the rooms to a specific type that extends RoomBaseModel.\n * @returns The rooms in the location.\n */\n getRooms<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom[] {\n return getRoomsByLocation<TRoom>(this)\n }\n}\n","import { LocationBaseModel, MapBaseModel, RoomBaseModel } from \"../classes\"\n\nexport const registeredRooms: { [id: string]: RoomBaseModel } = {}\n\n/**\n * Save a room in the registered rooms. If the room already exists, it will be overwritten.\n * @param room The room to save.\n * @returns \n * @example\n * ```ts\n * saveRoom([mcRoom, aliceRoom, annRoom, bathroom, lounge, terrace, gymRoom]);\n * ```\n */\nexport function saveRoom<TRoom extends RoomBaseModel = RoomBaseModel>(room: TRoom | TRoom[]) {\n if (Array.isArray(room)) {\n room.forEach(c => saveRoom(c))\n return\n }\n if (registeredRooms[room.id]) {\n console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`)\n }\n registeredRooms[room.id] = room\n}\n\n/**\n * Get a room by its id.\n * @param id The id of the room.\n * @returns The room or undefined if not found.\n */\nexport function getRoomById<TRoom extends RoomBaseModel = RoomBaseModel>(id: string): TRoom | undefined {\n try {\n let room = registeredRooms[id]\n if (!room) {\n console.error(`[NQTR] Room ${id} not found`)\n return\n }\n return room as TRoom\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Room ${id}`, e)\n return\n }\n}\n\n/**\n * Get all rooms in a location.\n * @param location The location where the rooms are.\n * @returns The rooms in the location.\n */\nexport function getRoomsByLocation<TRoom extends RoomBaseModel = RoomBaseModel>(location: LocationBaseModel): TRoom[] {\n return Object.values(registeredRooms).filter(room => room.location.id === location.id) as TRoom[]\n}\n\n/**\n * Get all locations in the registered rooms.\n * @returns All locations in the registered rooms.\n */\nexport function getAllLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n let result: { [id: string]: TLocation } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.id] = room.location as TLocation\n })\n return Object.values(result)\n}\n\n/**\n * Get all locations in a map.\n * @param map The map where the locations are.\n * @returns The locations in the map.\n */\nexport function getLocationsByMap<TLocation extends LocationBaseModel = LocationBaseModel>(map: MapBaseModel): TLocation[] {\n return getAllLocations<TLocation>().filter(location => location.map.id === map.id) as TLocation[]\n}\n\n/**\n * Get all maps in the registered rooms.\n * @returns All maps in the registered rooms.\n */\nexport function getAllMaps<TMap extends MapBaseModel = MapBaseModel>(): TMap[] {\n let result: { [id: string]: TMap } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.map.id] = room.location.map as TMap\n })\n return Object.values(result)\n}\n"]}
1
+ {"version":3,"sources":["../../../src/decorators/RoomDecorator.ts","../../../src/classes/navigation/Location.ts"],"names":["registeredRooms","getRoomsByLocation","location","room","LOCATION_CATEGORY","LocationBaseModel","StoredClassModel","id","map","props","value","getFlag","render","rooms"],"mappings":"uDAEO,IAAMA,CAAmD,CAAA,EA+CzD,CAAA,SAASC,CAAgEC,CAAAA,CAAAA,CAAsC,CAClH,OAAO,MAAA,CAAO,MAAOF,CAAAA,CAAe,CAAE,CAAA,MAAA,CAAOG,GAAQA,CAAK,CAAA,QAAA,CAAS,EAAOD,GAAAA,CAAAA,CAAS,EAAE,CACzF,CC5CME,IAAAA,CAAAA,CAAoB,mBAYLC,CAAAA,CAAAA,CAArB,cAAyFC,gBAAiB,CAMtG,WAAYC,CAAAA,CAAAA,CAAYC,CAAWC,CAAAA,CAAAA,CAA6B,EAAC,CAAG,CAChE,KAAML,CAAAA,CAAAA,CAAmBG,CAAE,CAAA,CAC3B,IAAK,CAAA,WAAA,CAAcE,EAAM,IAAQ,EAAA,EAAA,CACjC,IAAK,CAAA,eAAA,CAAkBA,CAAM,CAAA,QAAA,EAAY,MACzC,IAAK,CAAA,aAAA,CAAgBA,CAAM,CAAA,MAAA,EAAU,KACrC,CAAA,IAAA,CAAK,YAAcA,CAAM,CAAA,UAAA,CACzB,IAAK,CAAA,IAAA,CAAOD,EAChB,CAEQ,YAKR,IAAI,IAAA,EAAe,CACf,OAAO,IAAK,CAAA,kBAAA,CAA2B,MAAM,CAAK,EAAA,IAAA,CAAK,WAC3D,CACA,IAAI,IAAA,CAAKE,EAA2B,CAChC,IAAA,CAAK,kBAAmB,CAAA,MAAA,CAAQA,CAAK,EACzC,CAEQ,eAIR,CAAA,IAAI,QAAoB,EAAA,CACpB,IAAIA,CAAAA,CAAQ,KAAK,kBAA4B,CAAA,UAAU,CAAK,EAAA,IAAA,CAAK,eACjE,CAAA,OAAI,OAAOA,CAAU,EAAA,QAAA,CACVC,OAAQD,CAAAA,CAAK,CAEjBA,CAAAA,CACX,CACA,IAAI,QAAA,CAASA,CAAyB,CAAA,CAClC,IAAK,CAAA,kBAAA,CAAmB,WAAYA,CAAK,EAC7C,CAEQ,aAAA,CAIR,IAAI,MAAA,EAAkB,CAClB,IAAIA,CAAAA,CAAQ,IAAK,CAAA,kBAAA,CAA4B,QAAQ,CAAA,EAAK,KAAK,aAC/D,CAAA,OAAI,OAAOA,CAAAA,EAAU,QACVC,CAAAA,OAAAA,CAAQD,CAAK,CAEjBA,CAAAA,CACX,CACA,IAAI,MAAOA,CAAAA,CAAAA,CAAyB,CAChC,IAAK,CAAA,kBAAA,CAAmB,QAAUA,CAAAA,CAAK,EAC3C,CAEQ,YAIR,IAAI,UAAA,EAAiF,CACjF,IAAIE,CAAS,CAAA,IAAA,CAAK,YAClB,GAAIA,CAAAA,GAAW,SAGf,CAAA,OAAI,OAAOA,CAAAA,EAAW,WACVH,CACGG,EAAAA,CAAAA,CAAO,IAAMH,CAAAA,CAAK,CAGzBA,CAAAA,CAAAA,EAAoCG,CAChD,CAEQ,IAAA,CAIR,IAAI,GAAA,EAAY,CACZ,OAAO,KAAK,IAChB,CAeA,WAA8E,EAAA,CAC1E,IAAIC,CAAAA,CAAQ,KAAK,QAAgB,EAAA,CACjC,GAAIA,CAAAA,CAAM,MAAW,GAAA,CAAA,CAAG,CACpB,OAAQ,CAAA,KAAA,CAAM,CAAuB,oBAAA,EAAA,IAAA,CAAK,EAAE,CAAA,aAAA,CAAe,EAC3D,MACJ,CACA,OAAOA,CAAAA,CAAM,IAAKV,CAAAA,CAAAA,EAAQA,EAAK,UAAU,CAAA,EAAKU,CAAM,CAAA,CAAC,CACzD,CAOA,QAAiE,EAAA,CAC7D,OAAOZ,CAAAA,CAA0B,IAAI,CACzC,CACJ","file":"Location.mjs","sourcesContent":["import { LocationBaseModel, MapBaseModel, RoomBaseModel } from \"../classes\"\n\nexport const registeredRooms: { [id: string]: RoomBaseModel } = {}\n\n/**\n * Save a room in the registered rooms. If the room already exists, it will be overwritten.\n * @param room The room to save.\n * @returns \n * @example\n * ```ts\n * saveRoom([mcRoom, aliceRoom, annRoom, bathroom, lounge, terrace, gymRoom]);\n * ```\n */\nexport function saveRoom<TRoom extends RoomBaseModel = RoomBaseModel>(room: TRoom | TRoom[]) {\n if (Array.isArray(room)) {\n room.forEach(c => saveRoom(c))\n return\n }\n if (registeredRooms[room.id]) {\n console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`)\n }\n registeredRooms[room.id] = room\n}\n\n/**\n * Get a room by its id.\n * @param id The id of the room.\n * @returns The room or undefined if not found.\n */\nexport function getRoomById<TRoom extends RoomBaseModel = RoomBaseModel>(id: string): TRoom | undefined {\n try {\n let room = registeredRooms[id]\n if (!room) {\n console.error(`[NQTR] Room ${id} not found`)\n return\n }\n return room as TRoom\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Room ${id}`, e)\n return\n }\n}\n\n/**\n * Get all rooms in a location.\n * @param location The location where the rooms are.\n * @returns The rooms in the location.\n */\nexport function getRoomsByLocation<TRoom extends RoomBaseModel = RoomBaseModel>(location: LocationBaseModel): TRoom[] {\n return Object.values(registeredRooms).filter(room => room.location.id === location.id) as TRoom[]\n}\n\n/**\n * Get all locations in the registered rooms.\n * @returns All locations in the registered rooms.\n */\nexport function getAllLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n let result: { [id: string]: TLocation } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.id] = room.location as TLocation\n })\n return Object.values(result)\n}\n\n/**\n * Get all locations in a map.\n * @param map The map where the locations are.\n * @returns The locations in the map.\n */\nexport function getLocationsByMap<TLocation extends LocationBaseModel = LocationBaseModel>(map: MapBaseModel): TLocation[] {\n return getAllLocations<TLocation>().filter(location => location.map.id === map.id) as TLocation[]\n}\n\n/**\n * Get all maps in the registered rooms.\n * @returns All maps in the registered rooms.\n */\nexport function getAllMaps<TMap extends MapBaseModel = MapBaseModel>(): TMap[] {\n let result: { [id: string]: TMap } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.map.id] = room.location.map as TMap\n })\n return Object.values(result)\n}\n","import { GraphicItemType, OnRenderGraphicItemProps } from \"@drincs/nqtr/dist/override\";\nimport { getFlag, StoredClassModel } from \"@drincs/pixi-vn\";\nimport { getRoomsByLocation } from \"../../decorators/RoomDecorator\";\nimport { LocationProps } from \"../../interface\";\nimport MapBaseModel from \"./Map\";\nimport RoomBaseModel from \"./Room\";\n\nconst LOCATION_CATEGORY = \"__nqtr-location__\"\n\n/**\n * The base model of a location. I suggest you extend this class to create your own location model.\n * @example\n * ```typescript\n * export const mcHome = new LocationBaseModel('mc_home', mainMap, {\n * name: 'MC Home',\n * icon: \"https://icon.jpg\",\n * });\n * ```\n */\nexport default class LocationBaseModel<TMap extends MapBaseModel = MapBaseModel> extends StoredClassModel {\n /**\n * @param id The id of the location, it must be unique.\n * @param map The map where the location is.\n * @param props The properties of the location.\n */\n constructor(id: string, map: TMap, props: LocationProps<TMap> = {}) {\n super(LOCATION_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._renderIcon = props.renderIcon\n this._map = map\n }\n\n private defaultName: string\n /**\n * The name of the location.\n * If you set undefined, it will return the initial value of name.\n */\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string | undefined) {\n this.setStorageProperty(\"name\", value)\n }\n\n private defaultDisabled: boolean | string\n /**\n * Whether is disabled. If it is a string, it is a Pixi'VN flag name.\n */\n get disabled(): boolean {\n let value = this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set disabled(value: boolean | string) {\n this.setStorageProperty(\"disabled\", value)\n }\n\n private defaultHidden: boolean | string\n /**\n * Whether is hidden. If it is a string, it is a Pixi'VN flag name.\n */\n get hidden(): boolean {\n let value = this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set hidden(value: boolean | string) {\n this.setStorageProperty(\"hidden\", value)\n }\n\n private _renderIcon?: GraphicItemType | ((location: LocationBaseModel<TMap>, props: OnRenderGraphicItemProps) => GraphicItemType)\n /**\n * The function for rendering the icon of the location.\n */\n get renderIcon(): ((props: OnRenderGraphicItemProps) => GraphicItemType) | undefined {\n let render = this._renderIcon\n if (render === undefined) {\n return undefined\n }\n if (typeof render === \"function\") {\n return (props: OnRenderGraphicItemProps) => {\n return render(this, props)\n }\n }\n return (props: OnRenderGraphicItemProps) => render\n }\n\n private _map: TMap\n /**\n * The map where the location is.\n */\n get map(): TMap {\n return this._map\n }\n\n /**\n * Get the entrance room of the location.\n * You can cast the room to a specific type that extends RoomBaseModel.\n * @returns The entrance room or the first room if there is no entrance.\n * @example\n * ```typescript\n * const entranceHome = new RoomBaseModel(\"entrance-home\", home, { isEntrance: true })\n * saveRoom(entranceHome)\n * const home = new LocationBaseModel(\"home\", map, { name: \"Home\" })\n * \n * const entrance = home.getEntrance() // entrance === entranceHome\n * ```\n */\n getEntrance<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom | undefined {\n let rooms = this.getRooms<TRoom>()\n if (rooms.length === 0) {\n console.error(`[NQTR] The location ${this.id} has no rooms`)\n return\n }\n return rooms.find(room => room.isEntrance) || rooms[0]\n }\n\n /**\n * Get all rooms in the location.\n * You can cast the rooms to a specific type that extends RoomBaseModel.\n * @returns The rooms in the location.\n */\n getRooms<TRoom extends RoomBaseModel = RoomBaseModel>(): TRoom[] {\n return getRoomsByLocation<TRoom>(this)\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import '@drincs/nqtr/dist/override';
2
2
  import '@drincs/pixi-vn';
3
- export { M as default } from '../../Commitment-DJD0f8AH.mjs';
4
- import '../../ActivityProps-D45DQdcT.mjs';
3
+ export { c as default } from '../../Commitment-BujJuTv8.mjs';
4
+ import '../../ActivityProps-WgXDAYbc.mjs';
5
5
  import '../../types/OnRunActivityEvent.mjs';
6
6
  import '../Activity.mjs';
7
7
  import '../../types/ExecutionType.mjs';
@@ -1,7 +1,7 @@
1
1
  import '@drincs/nqtr/dist/override';
2
2
  import '@drincs/pixi-vn';
3
- export { M as default } from '../../Commitment-C_qBgeF9.js';
4
- import '../../ActivityProps-BkHX8xkA.js';
3
+ export { c as default } from '../../Commitment-DFYAApxl.js';
4
+ import '../../ActivityProps-LWY7Zucl.js';
5
5
  import '../../types/OnRunActivityEvent.js';
6
6
  import '../Activity.js';
7
7
  import '../../types/ExecutionType.js';
@@ -1,115 +1,2 @@
1
- 'use strict';
2
-
3
- var pixiVn = require('@drincs/pixi-vn');
4
-
5
- // src/classes/navigation/Map.ts
6
-
7
- // src/decorators/RoomDecorator.ts
8
- var registeredRooms = {};
9
- function getAllLocations() {
10
- let result = {};
11
- Object.values(registeredRooms).forEach((room) => {
12
- result[room.location.id] = room.location;
13
- });
14
- return Object.values(result);
15
- }
16
- function getLocationsByMap(map) {
17
- return getAllLocations().filter((location) => location.map.id === map.id);
18
- }
19
-
20
- // src/classes/navigation/Map.ts
21
- var MAP_CATEGORY = "__nqtr-map__";
22
- var MapBaseModel = class extends pixiVn.StoredClassModel {
23
- /**
24
- * @param id The id of the map, it must be unique.
25
- * @param props The properties of the map.
26
- */
27
- constructor(id, props = {}) {
28
- super(MAP_CATEGORY, id);
29
- this.defaultName = props.name || "";
30
- this._renderImage = props.renderImage;
31
- this.defaultDisabled = props.disabled || false;
32
- this.defaultHidden = props.hidden || false;
33
- this._neighboringMaps = props.neighboringMaps;
34
- }
35
- /**
36
- * The name of the map.
37
- * If you set undefined, it will return the initial value of name.
38
- */
39
- get name() {
40
- return this.getStorageProperty("name") || this.defaultName;
41
- }
42
- set name(value) {
43
- this.setStorageProperty("name", value);
44
- }
45
- /**
46
- * The function for rendering the image of the map.
47
- */
48
- get renderImage() {
49
- let render = this._renderImage;
50
- if (render === void 0) {
51
- return void 0;
52
- }
53
- if (typeof render === "function") {
54
- return (props) => {
55
- return render(this, props);
56
- };
57
- }
58
- return (props) => render;
59
- }
60
- /**
61
- * Whether is disabled. If it is a string, it is a Pixi'VN flag name.
62
- */
63
- get disabled() {
64
- let value = this.getStorageProperty("disabled") || this.defaultDisabled;
65
- if (typeof value === "string") {
66
- return pixiVn.getFlag(value);
67
- }
68
- return value;
69
- }
70
- set disabled(value) {
71
- this.setStorageProperty("disabled", value);
72
- }
73
- /**
74
- * Whether is hidden. If it is a string, it is a Pixi'VN flag name.
75
- */
76
- get hidden() {
77
- let value = this.getStorageProperty("hidden") || this.defaultHidden;
78
- if (typeof value === "string") {
79
- return pixiVn.getFlag(value);
80
- }
81
- return value;
82
- }
83
- set hidden(value) {
84
- this.setStorageProperty("hidden", value);
85
- }
86
- /**
87
- * The neighboring maps that are available in this map.
88
- * @example
89
- * ```ts
90
- * {
91
- * "north": "atlanta_map_id",
92
- * "south": "miami_map_id",
93
- * "east": "new_york_map_id",
94
- * "west": "los_angeles_map_id"
95
- * }
96
- * ```
97
- */
98
- get neighboringMaps() {
99
- return this._neighboringMaps || {};
100
- }
101
- set neighboringMaps(value) {
102
- this._neighboringMaps = value;
103
- }
104
- /**
105
- * Get all locations in the map.
106
- * @returns The locations in the map.
107
- */
108
- getLocations() {
109
- return getLocationsByMap(this);
110
- }
111
- };
112
-
113
- module.exports = MapBaseModel;
114
- //# sourceMappingURL=out.js.map
1
+ 'use strict';var pixiVn=require('@drincs/pixi-vn');var i={};function s(){let t={};return Object.values(i).forEach(e=>{t[e.location.id]=e.location;}),Object.values(t)}function n(t){return s().filter(e=>e.map.id===t.id)}var l="__nqtr-map__",a=class extends pixiVn.StoredClassModel{constructor(e,o={}){super(l,e),this.defaultName=o.name||"",this._renderImage=o.renderImage,this.defaultDisabled=o.disabled||false,this.defaultHidden=o.hidden||false,this._neighboringMaps=o.neighboringMaps;}defaultName;get name(){return this.getStorageProperty("name")||this.defaultName}set name(e){this.setStorageProperty("name",e);}_renderImage;get renderImage(){let e=this._renderImage;if(e!==undefined)return typeof e=="function"?o=>e(this,o):o=>e}defaultDisabled;get disabled(){let e=this.getStorageProperty("disabled")||this.defaultDisabled;return typeof e=="string"?pixiVn.getFlag(e):e}set disabled(e){this.setStorageProperty("disabled",e);}defaultHidden;get hidden(){let e=this.getStorageProperty("hidden")||this.defaultHidden;return typeof e=="string"?pixiVn.getFlag(e):e}set hidden(e){this.setStorageProperty("hidden",e);}_neighboringMaps;get neighboringMaps(){return this._neighboringMaps||{}}set neighboringMaps(e){this._neighboringMaps=e;}getLocations(){return n(this)}};module.exports=a;//# sourceMappingURL=Map.js.map
115
2
  //# sourceMappingURL=Map.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/navigation/Map.ts","../../../src/decorators/RoomDecorator.ts"],"names":[],"mappings":";AACA,SAAS,SAAS,wBAAwB;;;ACCnC,IAAM,kBAAmD,CAAC;AAuD1D,SAAS,kBAAwF;AACpG,MAAI,SAAsC,CAAC;AAC3C,SAAO,OAAO,eAAe,EAAE,QAAQ,UAAQ;AAC3C,WAAO,KAAK,SAAS,EAAE,IAAI,KAAK;AAAA,EACpC,CAAC;AACD,SAAO,OAAO,OAAO,MAAM;AAC/B;AAOO,SAAS,kBAA2E,KAAgC;AACvH,SAAO,gBAA2B,EAAE,OAAO,cAAY,SAAS,IAAI,OAAO,IAAI,EAAE;AACrF;;;ADlEA,IAAM,eAAe;AAkBrB,IAAqB,eAArB,cAA0C,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKvD,YAAY,IAAY,QAAkB,CAAC,GAAG;AAC1C,UAAM,cAAc,EAAE;AACtB,SAAK,cAAc,MAAM,QAAQ;AACjC,SAAK,eAAe,MAAM;AAC1B,SAAK,kBAAkB,MAAM,YAAY;AACzC,SAAK,gBAAgB,MAAM,UAAU;AACrC,SAAK,mBAAmB,MAAM;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,OAAe;AACf,WAAO,KAAK,mBAA2B,MAAM,KAAK,KAAK;AAAA,EAC3D;AAAA,EACA,IAAI,KAAK,OAA2B;AAChC,SAAK,mBAAmB,QAAQ,KAAK;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,cAAkF;AAClF,QAAI,SAAS,KAAK;AAClB,QAAI,WAAW,QAAW;AACtB,aAAO;AAAA,IACX;AACA,QAAI,OAAO,WAAW,YAAY;AAC9B,aAAO,CAAC,UAAoC;AACxC,eAAO,OAAO,MAAM,KAAK;AAAA,MAC7B;AAAA,IACJ;AACA,WAAO,CAAC,UAAoC;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,WAAoB;AACpB,QAAI,QAAQ,KAAK,mBAA4B,UAAU,KAAK,KAAK;AACjE,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,SAAS,OAAyB;AAClC,SAAK,mBAAmB,YAAY,KAAK;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,SAAkB;AAClB,QAAI,QAAQ,KAAK,mBAA4B,QAAQ,KAAK,KAAK;AAC/D,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,QAAQ,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,OAAyB;AAChC,SAAK,mBAAmB,UAAU,KAAK;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,IAAI,kBAA4C;AAC5C,WAAO,KAAK,oBAAoB,CAAC;AAAA,EACrC;AAAA,EACA,IAAI,gBAAgB,OAA6C;AAC7D,SAAK,mBAAmB;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAqF;AACjF,WAAO,kBAA6B,IAAI;AAAA,EAC5C;AACJ","sourcesContent":["import { GraphicItemType, NeighboringMapsInterface, OnRenderGraphicItemProps } from \"@drincs/nqtr/dist/override\"\nimport { getFlag, StoredClassModel } from \"@drincs/pixi-vn\"\nimport { getLocationsByMap } from \"../../decorators/RoomDecorator\"\nimport { MapProps } from \"../../interface\"\nimport LocationBaseModel from \"./Location\"\n\nconst MAP_CATEGORY = \"__nqtr-map__\"\n\n/**\n * The base model of a map. I suggest you extend this class to create your own map model.\n * @example\n * ```typescript\n * export const mainMap = new MapBaseModel('main_map', {\n * name: 'Main Map',\n * image: \"https://image.jpg\",\n * neighboringMaps: {\n * \"north\": \"atlanta_map_id\",\n * \"south\": \"miami_map_id\",\n * \"east\": \"new_york_map_id\",\n * \"west\": \"los_angeles_map_id\"\n * }\n * });\n * ```\n */\nexport default class MapBaseModel extends StoredClassModel {\n /**\n * @param id The id of the map, it must be unique.\n * @param props The properties of the map. \n */\n constructor(id: string, props: MapProps = {}) {\n super(MAP_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this._renderImage = props.renderImage\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._neighboringMaps = props.neighboringMaps\n }\n\n private defaultName: string\n /**\n * The name of the map.\n * If you set undefined, it will return the initial value of name.\n */\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string | undefined) {\n this.setStorageProperty(\"name\", value)\n }\n\n private _renderImage?: GraphicItemType | ((map: MapBaseModel, props: OnRenderGraphicItemProps) => GraphicItemType)\n /**\n * The function for rendering the image of the map.\n */\n get renderImage(): ((props: OnRenderGraphicItemProps) => GraphicItemType) | undefined {\n let render = this._renderImage\n if (render === undefined) {\n return undefined\n }\n if (typeof render === \"function\") {\n return (props: OnRenderGraphicItemProps) => {\n return render(this, props)\n }\n }\n return (props: OnRenderGraphicItemProps) => render\n }\n\n private defaultDisabled: boolean | string\n /**\n * Whether is disabled. If it is a string, it is a Pixi'VN flag name.\n */\n get disabled(): boolean {\n let value = this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set disabled(value: boolean | string) {\n this.setStorageProperty(\"disabled\", value)\n }\n\n private defaultHidden: boolean | string\n /**\n * Whether is hidden. If it is a string, it is a Pixi'VN flag name.\n */\n get hidden(): boolean {\n let value = this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set hidden(value: boolean | string) {\n this.setStorageProperty(\"hidden\", value)\n }\n\n private _neighboringMaps?: NeighboringMapsInterface\n /**\n * The neighboring maps that are available in this map.\n * @example\n * ```ts\n * {\n * \"north\": \"atlanta_map_id\",\n * \"south\": \"miami_map_id\",\n * \"east\": \"new_york_map_id\",\n * \"west\": \"los_angeles_map_id\"\n * }\n * ```\n */\n get neighboringMaps(): NeighboringMapsInterface {\n return this._neighboringMaps || {}\n }\n set neighboringMaps(value: NeighboringMapsInterface | undefined) {\n this._neighboringMaps = value\n }\n\n /**\n * Get all locations in the map.\n * @returns The locations in the map.\n */\n getLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n return getLocationsByMap<TLocation>(this)\n }\n}\n","import { LocationBaseModel, MapBaseModel, RoomBaseModel } from \"../classes\"\n\nexport const registeredRooms: { [id: string]: RoomBaseModel } = {}\n\n/**\n * Save a room in the registered rooms. If the room already exists, it will be overwritten.\n * @param room The room to save.\n * @returns \n * @example\n * ```ts\n * saveRoom([mcRoom, aliceRoom, annRoom, bathroom, lounge, terrace, gymRoom]);\n * ```\n */\nexport function saveRoom<TRoom extends RoomBaseModel = RoomBaseModel>(room: TRoom | TRoom[]) {\n if (Array.isArray(room)) {\n room.forEach(c => saveRoom(c))\n return\n }\n if (registeredRooms[room.id]) {\n console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`)\n }\n registeredRooms[room.id] = room\n}\n\n/**\n * Get a room by its id.\n * @param id The id of the room.\n * @returns The room or undefined if not found.\n */\nexport function getRoomById<TRoom extends RoomBaseModel = RoomBaseModel>(id: string): TRoom | undefined {\n try {\n let room = registeredRooms[id]\n if (!room) {\n console.error(`[NQTR] Room ${id} not found`)\n return\n }\n return room as TRoom\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Room ${id}`, e)\n return\n }\n}\n\n/**\n * Get all rooms in a location.\n * @param location The location where the rooms are.\n * @returns The rooms in the location.\n */\nexport function getRoomsByLocation<TRoom extends RoomBaseModel = RoomBaseModel>(location: LocationBaseModel): TRoom[] {\n return Object.values(registeredRooms).filter(room => room.location.id === location.id) as TRoom[]\n}\n\n/**\n * Get all locations in the registered rooms.\n * @returns All locations in the registered rooms.\n */\nexport function getAllLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n let result: { [id: string]: TLocation } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.id] = room.location as TLocation\n })\n return Object.values(result)\n}\n\n/**\n * Get all locations in a map.\n * @param map The map where the locations are.\n * @returns The locations in the map.\n */\nexport function getLocationsByMap<TLocation extends LocationBaseModel = LocationBaseModel>(map: MapBaseModel): TLocation[] {\n return getAllLocations<TLocation>().filter(location => location.map.id === map.id) as TLocation[]\n}\n\n/**\n * Get all maps in the registered rooms.\n * @returns All maps in the registered rooms.\n */\nexport function getAllMaps<TMap extends MapBaseModel = MapBaseModel>(): TMap[] {\n let result: { [id: string]: TMap } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.map.id] = room.location.map as TMap\n })\n return Object.values(result)\n}\n"]}
1
+ {"version":3,"sources":["../../../src/decorators/RoomDecorator.ts","../../../src/classes/navigation/Map.ts"],"names":["registeredRooms","getAllLocations","result","room","getLocationsByMap","map","location","MAP_CATEGORY","MapBaseModel","StoredClassModel","id","props","value","render","getFlag"],"mappings":"mDAEO,IAAMA,CAAmD,CAAA,EAuDzD,CAAA,SAASC,CAAwF,EAAA,CACpG,IAAIC,CAAsC,CAAA,EAC1C,CAAA,OAAA,MAAA,CAAO,MAAOF,CAAAA,CAAe,EAAE,OAAQG,CAAAA,CAAAA,EAAQ,CAC3CD,CAAAA,CAAOC,CAAK,CAAA,QAAA,CAAS,EAAE,CAAIA,CAAAA,CAAAA,CAAK,SACpC,CAAC,CACM,CAAA,MAAA,CAAO,OAAOD,CAAM,CAC/B,CAOO,SAASE,CAA2EC,CAAAA,CAAAA,CAAgC,CACvH,OAAOJ,CAAAA,EAA6B,CAAA,MAAA,CAAOK,CAAYA,EAAAA,CAAAA,CAAS,GAAI,CAAA,EAAA,GAAOD,CAAI,CAAA,EAAE,CACrF,CClEME,IAAAA,CAAAA,CAAe,eAkBAC,CAArB,CAAA,cAA0CC,uBAAiB,CAKvD,WAAYC,CAAAA,CAAAA,CAAYC,EAAkB,EAAC,CAAG,CAC1C,KAAA,CAAMJ,CAAcG,CAAAA,CAAE,EACtB,IAAK,CAAA,WAAA,CAAcC,CAAM,CAAA,IAAA,EAAQ,EACjC,CAAA,IAAA,CAAK,aAAeA,CAAM,CAAA,WAAA,CAC1B,IAAK,CAAA,eAAA,CAAkBA,CAAM,CAAA,QAAA,EAAY,MACzC,IAAK,CAAA,aAAA,CAAgBA,CAAM,CAAA,MAAA,EAAU,KACrC,CAAA,IAAA,CAAK,iBAAmBA,CAAM,CAAA,gBAClC,CAEQ,WAAA,CAKR,IAAI,IAAA,EAAe,CACf,OAAO,IAAA,CAAK,kBAA2B,CAAA,MAAM,CAAK,EAAA,IAAA,CAAK,WAC3D,CACA,IAAI,IAAA,CAAKC,CAA2B,CAAA,CAChC,IAAK,CAAA,kBAAA,CAAmB,OAAQA,CAAK,EACzC,CAEQ,YAAA,CAIR,IAAI,WAAA,EAAkF,CAClF,IAAIC,CAAAA,CAAS,IAAK,CAAA,YAAA,CAClB,GAAIA,CAAAA,GAAW,UAGf,OAAI,OAAOA,CAAW,EAAA,UAAA,CACVF,CACGE,EAAAA,CAAAA,CAAO,KAAMF,CAAK,CAAA,CAGzBA,CAAoCE,EAAAA,CAChD,CAEQ,eAAA,CAIR,IAAI,QAAoB,EAAA,CACpB,IAAID,CAAAA,CAAQ,IAAK,CAAA,kBAAA,CAA4B,UAAU,CAAK,EAAA,IAAA,CAAK,eACjE,CAAA,OAAI,OAAOA,CAAAA,EAAU,SACVE,cAAQF,CAAAA,CAAK,CAEjBA,CAAAA,CACX,CACA,IAAI,QAASA,CAAAA,CAAAA,CAAyB,CAClC,IAAA,CAAK,kBAAmB,CAAA,UAAA,CAAYA,CAAK,EAC7C,CAEQ,aAIR,CAAA,IAAI,MAAkB,EAAA,CAClB,IAAIA,CAAAA,CAAQ,KAAK,kBAA4B,CAAA,QAAQ,CAAK,EAAA,IAAA,CAAK,aAC/D,CAAA,OAAI,OAAOA,CAAU,EAAA,QAAA,CACVE,cAAQF,CAAAA,CAAK,CAEjBA,CAAAA,CACX,CACA,IAAI,MAAOA,CAAAA,CAAAA,CAAyB,CAChC,IAAA,CAAK,kBAAmB,CAAA,QAAA,CAAUA,CAAK,EAC3C,CAEQ,gBAaR,CAAA,IAAI,eAA4C,EAAA,CAC5C,OAAO,IAAK,CAAA,gBAAA,EAAoB,EACpC,CACA,IAAI,gBAAgBA,CAA6C,CAAA,CAC7D,IAAK,CAAA,gBAAA,CAAmBA,EAC5B,CAMA,YAAqF,EAAA,CACjF,OAAOR,CAAAA,CAA6B,IAAI,CAC5C,CACJ","file":"Map.js","sourcesContent":["import { LocationBaseModel, MapBaseModel, RoomBaseModel } from \"../classes\"\n\nexport const registeredRooms: { [id: string]: RoomBaseModel } = {}\n\n/**\n * Save a room in the registered rooms. If the room already exists, it will be overwritten.\n * @param room The room to save.\n * @returns \n * @example\n * ```ts\n * saveRoom([mcRoom, aliceRoom, annRoom, bathroom, lounge, terrace, gymRoom]);\n * ```\n */\nexport function saveRoom<TRoom extends RoomBaseModel = RoomBaseModel>(room: TRoom | TRoom[]) {\n if (Array.isArray(room)) {\n room.forEach(c => saveRoom(c))\n return\n }\n if (registeredRooms[room.id]) {\n console.warn(`[NQTR] Room id ${room.id} already exists, it will be overwritten`)\n }\n registeredRooms[room.id] = room\n}\n\n/**\n * Get a room by its id.\n * @param id The id of the room.\n * @returns The room or undefined if not found.\n */\nexport function getRoomById<TRoom extends RoomBaseModel = RoomBaseModel>(id: string): TRoom | undefined {\n try {\n let room = registeredRooms[id]\n if (!room) {\n console.error(`[NQTR] Room ${id} not found`)\n return\n }\n return room as TRoom\n }\n catch (e) {\n console.error(`[NQTR] Error while getting Room ${id}`, e)\n return\n }\n}\n\n/**\n * Get all rooms in a location.\n * @param location The location where the rooms are.\n * @returns The rooms in the location.\n */\nexport function getRoomsByLocation<TRoom extends RoomBaseModel = RoomBaseModel>(location: LocationBaseModel): TRoom[] {\n return Object.values(registeredRooms).filter(room => room.location.id === location.id) as TRoom[]\n}\n\n/**\n * Get all locations in the registered rooms.\n * @returns All locations in the registered rooms.\n */\nexport function getAllLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n let result: { [id: string]: TLocation } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.id] = room.location as TLocation\n })\n return Object.values(result)\n}\n\n/**\n * Get all locations in a map.\n * @param map The map where the locations are.\n * @returns The locations in the map.\n */\nexport function getLocationsByMap<TLocation extends LocationBaseModel = LocationBaseModel>(map: MapBaseModel): TLocation[] {\n return getAllLocations<TLocation>().filter(location => location.map.id === map.id) as TLocation[]\n}\n\n/**\n * Get all maps in the registered rooms.\n * @returns All maps in the registered rooms.\n */\nexport function getAllMaps<TMap extends MapBaseModel = MapBaseModel>(): TMap[] {\n let result: { [id: string]: TMap } = {}\n Object.values(registeredRooms).forEach(room => {\n result[room.location.map.id] = room.location.map as TMap\n })\n return Object.values(result)\n}\n","import { GraphicItemType, NeighboringMapsInterface, OnRenderGraphicItemProps } from \"@drincs/nqtr/dist/override\"\nimport { getFlag, StoredClassModel } from \"@drincs/pixi-vn\"\nimport { getLocationsByMap } from \"../../decorators/RoomDecorator\"\nimport { MapProps } from \"../../interface\"\nimport LocationBaseModel from \"./Location\"\n\nconst MAP_CATEGORY = \"__nqtr-map__\"\n\n/**\n * The base model of a map. I suggest you extend this class to create your own map model.\n * @example\n * ```typescript\n * export const mainMap = new MapBaseModel('main_map', {\n * name: 'Main Map',\n * image: \"https://image.jpg\",\n * neighboringMaps: {\n * \"north\": \"atlanta_map_id\",\n * \"south\": \"miami_map_id\",\n * \"east\": \"new_york_map_id\",\n * \"west\": \"los_angeles_map_id\"\n * }\n * });\n * ```\n */\nexport default class MapBaseModel extends StoredClassModel {\n /**\n * @param id The id of the map, it must be unique.\n * @param props The properties of the map. \n */\n constructor(id: string, props: MapProps = {}) {\n super(MAP_CATEGORY, id)\n this.defaultName = props.name || \"\"\n this._renderImage = props.renderImage\n this.defaultDisabled = props.disabled || false\n this.defaultHidden = props.hidden || false\n this._neighboringMaps = props.neighboringMaps\n }\n\n private defaultName: string\n /**\n * The name of the map.\n * If you set undefined, it will return the initial value of name.\n */\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string | undefined) {\n this.setStorageProperty(\"name\", value)\n }\n\n private _renderImage?: GraphicItemType | ((map: MapBaseModel, props: OnRenderGraphicItemProps) => GraphicItemType)\n /**\n * The function for rendering the image of the map.\n */\n get renderImage(): ((props: OnRenderGraphicItemProps) => GraphicItemType) | undefined {\n let render = this._renderImage\n if (render === undefined) {\n return undefined\n }\n if (typeof render === \"function\") {\n return (props: OnRenderGraphicItemProps) => {\n return render(this, props)\n }\n }\n return (props: OnRenderGraphicItemProps) => render\n }\n\n private defaultDisabled: boolean | string\n /**\n * Whether is disabled. If it is a string, it is a Pixi'VN flag name.\n */\n get disabled(): boolean {\n let value = this.getStorageProperty<boolean>(\"disabled\") || this.defaultDisabled\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set disabled(value: boolean | string) {\n this.setStorageProperty(\"disabled\", value)\n }\n\n private defaultHidden: boolean | string\n /**\n * Whether is hidden. If it is a string, it is a Pixi'VN flag name.\n */\n get hidden(): boolean {\n let value = this.getStorageProperty<boolean>(\"hidden\") || this.defaultHidden\n if (typeof value === \"string\") {\n return getFlag(value)\n }\n return value\n }\n set hidden(value: boolean | string) {\n this.setStorageProperty(\"hidden\", value)\n }\n\n private _neighboringMaps?: NeighboringMapsInterface\n /**\n * The neighboring maps that are available in this map.\n * @example\n * ```ts\n * {\n * \"north\": \"atlanta_map_id\",\n * \"south\": \"miami_map_id\",\n * \"east\": \"new_york_map_id\",\n * \"west\": \"los_angeles_map_id\"\n * }\n * ```\n */\n get neighboringMaps(): NeighboringMapsInterface {\n return this._neighboringMaps || {}\n }\n set neighboringMaps(value: NeighboringMapsInterface | undefined) {\n this._neighboringMaps = value\n }\n\n /**\n * Get all locations in the map.\n * @returns The locations in the map.\n */\n getLocations<TLocation extends LocationBaseModel = LocationBaseModel>(): TLocation[] {\n return getLocationsByMap<TLocation>(this)\n }\n}\n"]}