@wayward/types 2.14.3-beta.dev.20241223.1 → 2.14.3-beta.dev.20241224.1

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 (22) hide show
  1. package/definitions/game/event/EventBuses.d.ts +12 -8
  2. package/definitions/game/event/EventManager.d.ts +5 -4
  3. package/definitions/game/game/entity/Entity.d.ts +8 -7
  4. package/definitions/game/game/entity/IEntity.d.ts +2 -1
  5. package/definitions/game/game/entity/npc/NPC.d.ts +0 -1
  6. package/definitions/game/game/inspection/InfoProvider.d.ts +2 -1
  7. package/definitions/game/game/inspection/InspectionsHandler.d.ts +2 -1
  8. package/definitions/game/mod/IMod.d.ts +2 -1
  9. package/definitions/game/renderer/world/WorldRenderer.d.ts +4 -0
  10. package/definitions/game/ui/component/ContextMenu.d.ts +1 -1
  11. package/definitions/game/ui/component/IComponent.d.ts +2 -1
  12. package/definitions/game/ui/screen/screens/game/component/ItemComponent.d.ts +2 -43
  13. package/definitions/game/ui/screen/screens/game/component/item/ItemComponentEventBus.d.ts +36 -0
  14. package/definitions/game/ui/screen/screens/game/component/item/ItemComponentHandler.d.ts +46 -0
  15. package/definitions/game/ui/screen/screens/game/component/item/ItemComponentTradeManager.d.ts +32 -0
  16. package/definitions/game/ui/screen/screens/game/dialog/EquipmentDialog.d.ts +2 -2
  17. package/definitions/game/ui/screen/screens/game/static/actions/ActionSlot.d.ts +3 -2
  18. package/definitions/game/ui/screen/screens/game/static/actions/ActionSlotConfigurationColumn.d.ts +2 -1
  19. package/definitions/utilities/collection/map/IterableWeakMap.d.ts +35 -0
  20. package/definitions/utilities/event/EventEmitter.d.ts +27 -3
  21. package/definitions/utilities/event/EventManager.d.ts +11 -1
  22. package/package.json +1 -1
@@ -44,6 +44,7 @@ import type SaveManager from "@wayward/game/save/SaveManager";
44
44
  import type Steamworks from "@wayward/game/steamworks/Steamworks";
45
45
  import type ScreenManager from "@wayward/game/ui/screen/ScreenManager";
46
46
  import type GameScreen from "@wayward/game/ui/screen/screens/GameScreen";
47
+ import type ItemComponentEventBus from "@wayward/game/ui/screen/screens/game/component/item/ItemComponentEventBus";
47
48
  import type ActionBar from "@wayward/game/ui/screen/screens/game/static/ActionBar";
48
49
  import type HoveredTileTracker from "@wayward/game/ui/screen/screens/game/util/HoveredTileTracker";
49
50
  import type ActionMenuHandler from "@wayward/game/ui/screen/screens/game/util/movement/ActionMenuHandler";
@@ -93,10 +94,11 @@ export declare enum EventBus {
93
94
  UiGameScreen = 38,
94
95
  UiHoveredTileTracker = 39,
95
96
  UiInteractionManager = 40,
96
- UiMovementHandler = 41,
97
- UiPathingHandler = 42,
98
- UsableActions = 43,
99
- WorldRenderer = 44
97
+ UiItemComponentStatic = 41,
98
+ UiMovementHandler = 42,
99
+ UiPathingHandler = 43,
100
+ UsableActions = 44,
101
+ WorldRenderer = 45
100
102
  }
101
103
  declare const eventBuses: {
102
104
  [EventBus.Actions](): ActionExecutor<any, any, any, any, any>;
@@ -140,6 +142,7 @@ declare const eventBuses: {
140
142
  [EventBus.UiGameScreen](): GameScreen;
141
143
  [EventBus.UiHoveredTileTracker](): HoveredTileTracker;
142
144
  [EventBus.UiInteractionManager](): InteractionManager;
145
+ [EventBus.UiItemComponentStatic](): ItemComponentEventBus;
143
146
  [EventBus.UiMovementHandler](): MovementHandler;
144
147
  [EventBus.UiPathingHandler](): PathingHandler;
145
148
  [EventBus.UsableActions](): UsableAction;
@@ -188,10 +191,11 @@ export declare const eventBusManager: EventBusManager<EventBus, {
188
191
  38(): GameScreen;
189
192
  39(): HoveredTileTracker;
190
193
  40(): InteractionManager;
191
- 41(): MovementHandler;
192
- 42(): PathingHandler;
193
- 43(): UsableAction;
194
- 44(): WorldRenderer;
194
+ 41(): ItemComponentEventBus;
195
+ 42(): MovementHandler;
196
+ 43(): PathingHandler;
197
+ 44(): UsableAction;
198
+ 45(): WorldRenderer;
195
199
  }>;
196
200
  /**
197
201
  * For backwards compat / ease of use
@@ -57,10 +57,11 @@ export declare const eventManager: EventManager<EventBus, {
57
57
  38(): import("../ui/screen/screens/GameScreen").default;
58
58
  39(): import("../ui/screen/screens/game/util/HoveredTileTracker").default;
59
59
  40(): import("../ui/screen/screens/game/util/movement/InteractionManager").default;
60
- 41(): import("../ui/screen/screens/game/util/movement/MovementHandler").default;
61
- 42(): import("../ui/screen/screens/game/util/movement/PathingHandler").default;
62
- 43(): import("../game/entity/action/usable/UsableAction").default;
63
- 44(): import("../renderer/world/WorldRenderer").WorldRenderer;
60
+ 41(): import("../ui/screen/screens/game/component/item/ItemComponentEventBus").default;
61
+ 42(): import("../ui/screen/screens/game/util/movement/MovementHandler").default;
62
+ 43(): import("../ui/screen/screens/game/util/movement/PathingHandler").default;
63
+ 44(): import("../game/entity/action/usable/UsableAction").default;
64
+ 45(): import("../renderer/world/WorldRenderer").WorldRenderer;
64
65
  }>;
65
66
  /**
66
67
  * EventHandler that is typed with the games event buses
@@ -34,6 +34,7 @@ import type TileEvent from "@wayward/game/game/tile/TileEvent";
34
34
  import { type ISerializedTranslation } from "@wayward/game/language/ITranslation";
35
35
  import type Translation from "@wayward/game/language/Translation";
36
36
  import type { RenderSource, UpdateRenderFlag } from "@wayward/game/renderer/IRenderer";
37
+ import type { Renderer } from "@wayward/game/renderer/Renderer";
37
38
  import type { INotificationLocation, ItemNotifierType, MarkerIconType, StatNotificationType } from "@wayward/game/renderer/notifier/INotifier";
38
39
  import type { IVector3 } from "@wayward/game/utilities/math/IVector";
39
40
  import type { IVector4 } from "@wayward/game/utilities/math/Vector4";
@@ -44,21 +45,18 @@ export default abstract class Entity<DescriptionType = unknown, TypeType extends
44
45
  abstract readonly tileUpdateType: TileUpdateType;
45
46
  id: number;
46
47
  type: TypeType;
48
+ historicalActions?: PartialRecord<ActionType, number>;
47
49
  referenceId?: number;
48
50
  renamed?: string | ISerializedTranslation;
49
51
  x: number;
50
52
  y: number;
51
53
  z: WorldZ;
52
54
  private _data?;
55
+ private _persistentMarker?;
56
+ private _persistentMarkerHidden?;
53
57
  private _tags?;
54
- historicalActions?: PartialRecord<ActionType, number>;
55
58
  islandId: IslandId;
56
59
  preventRendering?: boolean;
57
- /**
58
- * Notifier marker assigned to this entity
59
- */
60
- private persistentMarker;
61
- private persistentMarkerHidden;
62
60
  private _humansWithinBound?;
63
61
  /**
64
62
  * Cached tile the entity is on.
@@ -119,7 +117,10 @@ export default abstract class Entity<DescriptionType = unknown, TypeType extends
119
117
  updateView(source: RenderSource, updateFov?: boolean | UpdateRenderFlag.FieldOfView | UpdateRenderFlag.FieldOfViewSkipTransition): void;
120
118
  notifyItem(itemNotifierType: ItemNotifierType, item: Item): void;
121
119
  notifyStat(type: StatNotificationType, value: number): void;
122
- initMarker(): void;
120
+ /**
121
+ * This is called clientside the first time the renderer seens the entity
122
+ */
123
+ onFirstRender(renderer: Renderer): void;
123
124
  getCurrentMarkerIconType(): MarkerIconType | undefined;
124
125
  setMarkerIconHidden(hidden: boolean): void;
125
126
  addMarkerIcon(type: MarkerIconType): void;
@@ -25,7 +25,8 @@ import type Item from "@wayward/game/game/item/Item";
25
25
  import type Tile from "@wayward/game/game/tile/Tile";
26
26
  import type TileEvent from "@wayward/game/game/tile/TileEvent";
27
27
  import type { Direction } from "@wayward/game/utilities/math/Direction";
28
- export interface IEntityEvents {
28
+ import type { IEventSubscriberEvents } from "@wayward/utilities/event/EventEmitter";
29
+ export interface IEntityEvents extends IEventSubscriberEvents {
29
30
  /**
30
31
  * Called when an entity is killed by another entity.
31
32
  */
@@ -76,7 +76,6 @@ export default abstract class NPC extends Human<INPCDescription, NPCType, Refere
76
76
  addMilestone(): void;
77
77
  protected getStatusApplicability(): StatusApplicability | undefined;
78
78
  get isValid(): boolean;
79
- load(): void;
80
79
  /**
81
80
  * Creates inventory, equips items, and scales stats
82
81
  */
@@ -21,8 +21,9 @@ import type { ISerializedImagePath } from "@wayward/game/ui/util/ImagePath";
21
21
  import ImagePath from "@wayward/game/ui/util/ImagePath";
22
22
  import BaseObserver from "@wayward/game/utilities/Observer";
23
23
  import type { IStringSection } from "@wayward/game/utilities/string/Interpolator";
24
+ import type { IEventSubscriberEvents } from "@wayward/utilities/event/EventEmitter";
24
25
  import EventEmitter from "@wayward/utilities/event/EventEmitter";
25
- export interface IInfoProviderEvents {
26
+ export interface IInfoProviderEvents extends IEventSubscriberEvents {
26
27
  /**
27
28
  * Should be emitted when the info provider is starting to initialize its component.
28
29
  */
@@ -13,8 +13,9 @@ import type { InfoProviderContext } from "@wayward/game/game/inspection/InfoProv
13
13
  import type Inspection from "@wayward/game/game/inspection/Inspection";
14
14
  import type { ResolvedInspection } from "@wayward/game/game/inspection/InspectionTypeMap";
15
15
  import HashSet from "@wayward/utilities/collection/set/HashSet";
16
+ import type { IEventSubscriberEvents } from "@wayward/utilities/event/EventEmitter";
16
17
  import EventEmitter from "@wayward/utilities/event/EventEmitter";
17
- export interface IInspectionsHandlerEvents {
18
+ export interface IInspectionsHandlerEvents extends IEventSubscriberEvents {
18
19
  updatedInspections(type: InspectType, newInspections: HashSet<Inspection<any>>, oldInspections?: HashSet<Inspection<any>>): any;
19
20
  }
20
21
  export default abstract class InspectionsHandler extends EventEmitter.Host<IInspectionsHandlerEvents> {
@@ -9,6 +9,7 @@
9
9
  * https://github.com/WaywardGame/types/wiki
10
10
  */
11
11
  import type Version from "@wayward/game/utilities/Version";
12
+ import type { IEventSubscriberEvents } from "@wayward/utilities/event/EventEmitter";
12
13
  export declare enum MultiplayerCompatibility {
13
14
  Clientside = "clientside",
14
15
  Serverside = "serverside",
@@ -35,7 +36,7 @@ export interface IModConfig {
35
36
  readonly github?: string;
36
37
  readonly saveGameData?: boolean;
37
38
  }
38
- export interface IModEvents {
39
+ export interface IModEvents extends IEventSubscriberEvents {
39
40
  unload(): any;
40
41
  initialize(): any;
41
42
  uninitialize(): any;
@@ -144,6 +144,10 @@ export declare class WorldRenderer extends EventEmitter.Host<IWorldRendererEvent
144
144
  private overlayBatch;
145
145
  private vehicleBatch;
146
146
  private readonly entitiesInViewport;
147
+ /**
148
+ * A set of entities seen before (rendered on screen at least once)
149
+ */
150
+ private entititiesRenderedBefore;
147
151
  private viewportSpritesDirty;
148
152
  private cachedBounds;
149
153
  private cachedBoundsTimestamp;
@@ -14,7 +14,7 @@ import Component from "@wayward/game/ui/component/Component";
14
14
  import type { TranslationGenerator } from "@wayward/game/ui/component/IComponent";
15
15
  import Text, { Heading } from "@wayward/game/ui/component/Text";
16
16
  import Bindable from "@wayward/game/ui/input/Bindable";
17
- import type { ItemComponentHandler } from "@wayward/game/ui/screen/screens/game/component/ItemComponent";
17
+ import type { ItemComponentHandler } from "@wayward/game/ui/screen/screens/game/component/item/ItemComponentHandler";
18
18
  import type Tooltip from "@wayward/game/ui/tooltip/Tooltip";
19
19
  import type { IDraggableComponent, IDraggableEvents } from "@wayward/game/ui/util/Draggable";
20
20
  import Draggable from "@wayward/game/ui/util/Draggable";
@@ -14,7 +14,8 @@ import type { ISerializedTranslation } from "@wayward/game/language/ITranslation
14
14
  import type Translation from "@wayward/game/language/Translation";
15
15
  import type Component from "@wayward/game/ui/component/Component";
16
16
  import type { IStringSection } from "@wayward/game/utilities/string/Interpolator";
17
- export interface IComponentEvents {
17
+ import type { IEventSubscriberEvents } from "@wayward/utilities/event/EventEmitter";
18
+ export interface IComponentEvents extends IEventSubscriberEvents {
18
19
  show(): any;
19
20
  hide(): any;
20
21
  toggleVisible(visible: boolean): any;
@@ -8,29 +8,23 @@
8
8
  * Wayward is a copyrighted and licensed work. Modification and/or distribution of any source files is prohibited. If you wish to modify the game in any way, please refer to the modding guide:
9
9
  * https://github.com/WaywardGame/types/wiki
10
10
  */
11
- import { Quality } from "@wayward/game/game/IObject";
12
11
  import { EquipType } from "@wayward/game/game/entity/IHuman";
13
12
  import type { ActionId } from "@wayward/game/game/entity/action/usable/IUsableAction";
14
- import type UsableAction from "@wayward/game/game/entity/action/usable/UsableAction";
15
- import type MerchantNPC from "@wayward/game/game/entity/npc/npcs/Merchant";
16
- import type { IContainer, ItemTypeExtra } from "@wayward/game/game/item/IItem";
17
13
  import { ItemType } from "@wayward/game/game/item/IItem";
18
14
  import type Item from "@wayward/game/game/item/Item";
19
15
  import type MagicalPropertyManager from "@wayward/game/game/magic/MagicalPropertyManager";
20
16
  import Component from "@wayward/game/ui/component/Component";
21
17
  import type ContextMenu from "@wayward/game/ui/component/ContextMenu";
22
18
  import Bindable from "@wayward/game/ui/input/Bindable";
19
+ import { ItemComponentHandler } from "@wayward/game/ui/screen/screens/game/component/item/ItemComponentHandler";
23
20
  import type ActionBar from "@wayward/game/ui/screen/screens/game/static/ActionBar";
24
21
  import type { ActionSlot } from "@wayward/game/ui/screen/screens/game/static/actions/ActionSlot";
25
22
  import type { IDraggableEvents } from "@wayward/game/ui/util/Draggable";
26
23
  import Draggable from "@wayward/game/ui/util/Draggable";
27
- import type Sortable from "@wayward/game/ui/util/Sortable";
28
24
  import type { ISortableDraggableEvents } from "@wayward/game/ui/util/Sortable";
29
25
  import PerfCache from "@wayward/game/utilities/PerfCache";
30
26
  import Vector2 from "@wayward/game/utilities/math/Vector2";
31
- import WeakishSet from "@wayward/utilities/collection/set/WeakishSet";
32
27
  import type { Events, IEventEmitter } from "@wayward/utilities/event/EventEmitter";
33
- import EventEmitter from "@wayward/utilities/event/EventEmitter";
34
28
  type ItemSlotExtend = Omit<Component, "event"> & {
35
29
  event: IEventEmitter<Component, IItemSlotEvents>;
36
30
  };
@@ -104,33 +98,6 @@ export declare enum ItemClasses {
104
98
  export declare namespace ItemClasses {
105
99
  const IconLocation: (enumValue: ItemDetailIconLocation) => "item-component-icon-location-topleft" | "item-component-icon-location-bottomright";
106
100
  }
107
- export interface IItemComponentHandlerDescription {
108
- noDrag?: true;
109
- equipSlot?: EquipType;
110
- hasHighlight?: SupplierOr<boolean>;
111
- getItem?(): Item | undefined;
112
- getItemType?(): ItemType | ItemTypeExtra | undefined;
113
- getItemQuality?(): ArrayOr<Quality> | undefined;
114
- getAction?(): UsableAction | undefined;
115
- getActionSlot?(): ActionSlot | undefined;
116
- getBindables?(bindables: Bindable[]): Bindable[];
117
- getSortable?(): Sortable;
118
- getStackQuantity?(): number;
119
- getContainer?(): IContainer | undefined;
120
- getStackItems?(): readonly Item[];
121
- getStackDisplayItem?(): Item | undefined;
122
- getDisplayItem?(): Item | undefined;
123
- getDurability?(): number;
124
- getCooldown?(): number;
125
- isDamaged?(): boolean;
126
- isDecayed?(): boolean;
127
- }
128
- export interface ItemComponentHandler extends IItemComponentHandlerDescription {
129
- }
130
- export declare class ItemComponentHandler {
131
- readonly isItemComponentHandler = true;
132
- constructor(description?: IItemComponentHandlerDescription);
133
- }
134
101
  export declare enum ItemTradeType {
135
102
  None = "",
136
103
  ToMerchant = "To",
@@ -164,19 +131,10 @@ export interface IItemComponentStaticEvents {
164
131
  }
165
132
  export default class ItemComponent extends Component implements ItemSlot {
166
133
  readonly handler: ItemComponentHandler;
167
- static readonly eventGlobal: EventEmitter<null, IItemComponentStaticEvents>;
168
134
  static create<C extends ItemComponent = ItemComponent>(handler: ItemComponentHandler, ...params: any[]): C | undefined;
169
135
  static registerSlot(slot: ItemSlot): void;
170
136
  static getHovered(): ItemComponent | undefined;
171
137
  static QUALITY_CLASS_NAMES: PerfCache<string[]>;
172
- private static readonly tradingByItem;
173
- private static readonly tradingToMerchant;
174
- private static readonly tradingFromMerchant;
175
- static getTrading(merchant: MerchantNPC, type: ItemTradeType): WeakishSet<Item> | undefined;
176
- static isTrading(item: Item, merchant: MerchantNPC): boolean;
177
- static toggleTrading(items: Item[], merchant: MerchantNPC, trading: ItemTradeType): ItemTradeType;
178
- private static sendMerchantChatMessage;
179
- static clearTrading(merchant?: MerchantNPC): void;
180
138
  event: IEventEmitter<this, IItemComponentEvents>;
181
139
  readonly magicalIcon: Component<HTMLElement> | undefined;
182
140
  readonly protectedIcon: Component<HTMLElement> | undefined;
@@ -228,6 +186,7 @@ export default class ItemComponent extends Component implements ItemSlot {
228
186
  protected onUpdateDecay(): void;
229
187
  protected onUpdateQuality(): void;
230
188
  protected onTickEnd(): void;
189
+ protected onRooted(): void;
231
190
  protected onRootedAndAppend(): void;
232
191
  protected onLoadedOnIsland(): void;
233
192
  protected onActionBarItemSlottedMapUpdate(): void;
@@ -0,0 +1,36 @@
1
+ /*!
2
+ * Copyright 2011-2024 Unlok
3
+ * https://www.unlok.ca
4
+ *
5
+ * Credits & Thanks:
6
+ * https://www.unlok.ca/credits-thanks/
7
+ *
8
+ * Wayward is a copyrighted and licensed work. Modification and/or distribution of any source files is prohibited. If you wish to modify the game in any way, please refer to the modding guide:
9
+ * https://github.com/WaywardGame/types/wiki
10
+ */
11
+ import type { ItemRefreshType } from "@wayward/game/ui/screen/screens/game/component/ItemComponent";
12
+ import type ItemComponent from "@wayward/game/ui/screen/screens/game/component/ItemComponent";
13
+ import type ActionBar from "@wayward/game/ui/screen/screens/game/static/ActionBar";
14
+ import type { ActionSlot } from "@wayward/game/ui/screen/screens/game/static/actions/ActionSlot";
15
+ import EventEmitter from "@wayward/utilities/event/EventEmitter";
16
+ interface IItemComponentEventBusEvents {
17
+ update(type: ItemRefreshType): any;
18
+ changeHovered(): any;
19
+ }
20
+ declare namespace _ {
21
+ class ItemComponentEventBus extends EventEmitter.Host<IItemComponentEventBusEvents> {
22
+ private readonly items;
23
+ private readonly itemsForTickEndEvents;
24
+ registerItem(component: ItemComponent): void;
25
+ registerForTickEndEvents(component: ItemComponent): void;
26
+ deregisterForTickEndEvents(component: ItemComponent): void;
27
+ protected onUpdate(type: ItemRefreshType): void;
28
+ protected onSlotUpdate(actionBar: ActionBar, slot: ActionSlot): void;
29
+ protected onTickEnd(): void;
30
+ protected onLoadedOnIsland(): void;
31
+ protected onActionBarItemSlottedMapUpdate(): void;
32
+ }
33
+ }
34
+ type ItemComponentEventBus = _.ItemComponentEventBus;
35
+ declare function ItemComponentEventBus(): ItemComponentEventBus;
36
+ export default ItemComponentEventBus;
@@ -0,0 +1,46 @@
1
+ /*!
2
+ * Copyright 2011-2024 Unlok
3
+ * https://www.unlok.ca
4
+ *
5
+ * Credits & Thanks:
6
+ * https://www.unlok.ca/credits-thanks/
7
+ *
8
+ * Wayward is a copyrighted and licensed work. Modification and/or distribution of any source files is prohibited. If you wish to modify the game in any way, please refer to the modding guide:
9
+ * https://github.com/WaywardGame/types/wiki
10
+ */
11
+ import type UsableAction from "@wayward/game/game/entity/action/usable/UsableAction";
12
+ import type { EquipType } from "@wayward/game/game/entity/IHuman";
13
+ import type { Quality } from "@wayward/game/game/IObject";
14
+ import type { ItemTypeExtra, IContainer } from "@wayward/game/game/item/IItem";
15
+ import { ItemType } from "@wayward/game/game/item/IItem";
16
+ import type Item from "@wayward/game/game/item/Item";
17
+ import type Bindable from "@wayward/game/ui/input/Bindable";
18
+ import type { ActionSlot } from "@wayward/game/ui/screen/screens/game/static/actions/ActionSlot";
19
+ import type Sortable from "@wayward/game/ui/util/Sortable";
20
+ export interface IItemComponentHandlerDescription {
21
+ noDrag?: true;
22
+ equipSlot?: EquipType;
23
+ hasHighlight?: SupplierOr<boolean>;
24
+ getItem?(): Item | undefined;
25
+ getItemType?(): ItemType | ItemTypeExtra | undefined;
26
+ getItemQuality?(): ArrayOr<Quality> | undefined;
27
+ getAction?(): UsableAction | undefined;
28
+ getActionSlot?(): ActionSlot | undefined;
29
+ getBindables?(bindables: Bindable[]): Bindable[];
30
+ getSortable?(): Sortable;
31
+ getStackQuantity?(): number;
32
+ getContainer?(): IContainer | undefined;
33
+ getStackItems?(): readonly Item[];
34
+ getStackDisplayItem?(): Item | undefined;
35
+ getDisplayItem?(): Item | undefined;
36
+ getDurability?(): number;
37
+ getCooldown?(): number;
38
+ isDamaged?(): boolean;
39
+ isDecayed?(): boolean;
40
+ }
41
+ export interface ItemComponentHandler extends IItemComponentHandlerDescription {
42
+ }
43
+ export declare class ItemComponentHandler {
44
+ readonly isItemComponentHandler = true;
45
+ constructor(description?: IItemComponentHandlerDescription);
46
+ }
@@ -0,0 +1,32 @@
1
+ /*!
2
+ * Copyright 2011-2024 Unlok
3
+ * https://www.unlok.ca
4
+ *
5
+ * Credits & Thanks:
6
+ * https://www.unlok.ca/credits-thanks/
7
+ *
8
+ * Wayward is a copyrighted and licensed work. Modification and/or distribution of any source files is prohibited. If you wish to modify the game in any way, please refer to the modding guide:
9
+ * https://github.com/WaywardGame/types/wiki
10
+ */
11
+ import type Human from "@wayward/game/game/entity/Human";
12
+ import type MerchantNPC from "@wayward/game/game/entity/npc/npcs/Merchant";
13
+ import type Item from "@wayward/game/game/item/Item";
14
+ import { ItemTradeType } from "@wayward/game/ui/screen/screens/game/component/ItemComponent";
15
+ import WeakishSet from "@wayward/utilities/collection/set/WeakishSet";
16
+ declare namespace _ {
17
+ class ItemComponentTradeManager {
18
+ private readonly tradingByItem;
19
+ private readonly tradingToMerchant;
20
+ private readonly tradingFromMerchant;
21
+ getTrading(merchant: MerchantNPC, type: ItemTradeType): WeakishSet<Item> | undefined;
22
+ getTradeType(item: Item): ItemTradeType | undefined;
23
+ isTrading(item: Item, merchant: MerchantNPC): boolean;
24
+ toggleTrading(items: Item[], merchant: MerchantNPC, trading: ItemTradeType): ItemTradeType;
25
+ private sendMerchantChatMessage;
26
+ clearTrading(merchant?: MerchantNPC): void;
27
+ onTrade(merchant: MerchantNPC, human: Human): void;
28
+ }
29
+ }
30
+ type ItemComponentTradeManager = _.ItemComponentTradeManager;
31
+ declare function ItemComponentTradeManager(): ItemComponentTradeManager;
32
+ export default ItemComponentTradeManager;
@@ -14,8 +14,8 @@ import Component from "@wayward/game/ui/component/Component";
14
14
  import type { IBindHandlerApi } from "@wayward/game/ui/input/Bind";
15
15
  import Bindable from "@wayward/game/ui/input/Bindable";
16
16
  import Dialog from "@wayward/game/ui/screen/screens/game/component/Dialog";
17
- import type { IItemDropApi, IItemPickUpApi, ItemSlot } from "@wayward/game/ui/screen/screens/game/component/ItemComponent";
18
- import ItemComponent, { ItemRefreshType } from "@wayward/game/ui/screen/screens/game/component/ItemComponent";
17
+ import { ItemRefreshType, type IItemDropApi, type IItemPickUpApi, type ItemSlot } from "@wayward/game/ui/screen/screens/game/component/ItemComponent";
18
+ import ItemComponent from "@wayward/game/ui/screen/screens/game/component/ItemComponent";
19
19
  import EquipmentSlotTooltipHandler from "@wayward/game/ui/screen/screens/game/dialog/equipment/EquipmentSlotTooltip";
20
20
  import { MenuBarButtonType } from "@wayward/game/ui/screen/screens/game/static/menubar/IMenuBarButton";
21
21
  export declare enum EquipmentClasses {
@@ -25,8 +25,9 @@ import Component from "@wayward/game/ui/component/Component";
25
25
  import type { IRefreshable } from "@wayward/game/ui/component/Refreshable";
26
26
  import Text from "@wayward/game/ui/component/Text";
27
27
  import type { IBindHandlerApi } from "@wayward/game/ui/input/Bind";
28
- import type { IItemSlotEvents, ItemSlot } from "@wayward/game/ui/screen/screens/game/component/ItemComponent";
29
- import ItemComponent, { ItemComponentHandler } from "@wayward/game/ui/screen/screens/game/component/ItemComponent";
28
+ import { type IItemSlotEvents, type ItemSlot } from "@wayward/game/ui/screen/screens/game/component/ItemComponent";
29
+ import ItemComponent from "@wayward/game/ui/screen/screens/game/component/ItemComponent";
30
+ import { ItemComponentHandler } from "@wayward/game/ui/screen/screens/game/component/item/ItemComponentHandler";
30
31
  import type ActionBar from "@wayward/game/ui/screen/screens/game/static/ActionBar";
31
32
  import { ActionSlotUpdateReason, IActionBarSlotData } from "@wayward/game/ui/screen/screens/game/static/actions/IActionBar";
32
33
  import type TooltipLocationHandler from "@wayward/game/ui/tooltip/TooltipLocationHandler";
@@ -22,8 +22,9 @@ import HorizontalLine from "@wayward/game/ui/component/HorizontalLine";
22
22
  import RangeChoiceList from "@wayward/game/ui/component/RangeChoiceList";
23
23
  import Text, { Heading, Paragraph } from "@wayward/game/ui/component/Text";
24
24
  import ItemDropdown from "@wayward/game/ui/component/dropdown/ItemDropdown";
25
- import type { IItemComponentHandlerDescription, IItemDropApi, IItemSlotEvents, ItemSlot } from "@wayward/game/ui/screen/screens/game/component/ItemComponent";
25
+ import type { IItemDropApi, ItemSlot, IItemSlotEvents } from "@wayward/game/ui/screen/screens/game/component/ItemComponent";
26
26
  import ItemComponent from "@wayward/game/ui/screen/screens/game/component/ItemComponent";
27
+ import type { IItemComponentHandlerDescription } from "@wayward/game/ui/screen/screens/game/component/item/ItemComponentHandler";
27
28
  import type { Events, IEventEmitter } from "@wayward/utilities/event/EventEmitter";
28
29
  export declare enum ActionSlotConfigurationColumnClasses {
29
30
  Main = "game-action-configuration-drawer-configuration-column",
@@ -0,0 +1,35 @@
1
+ /*!
2
+ * Copyright 2011-2024 Unlok
3
+ * https://www.unlok.ca
4
+ *
5
+ * Credits & Thanks:
6
+ * https://www.unlok.ca/credits-thanks/
7
+ *
8
+ * Wayward is a copyrighted and licensed work. Modification and/or distribution of any source files is prohibited. If you wish to modify the game in any way, please refer to the modding guide:
9
+ * https://github.com/WaywardGame/types/wiki
10
+ */
11
+ /**
12
+ * Strong keys are stored in a Map.
13
+ * Weak keys are stored in a WeakMap.
14
+ * Based on https://github.com/tc39/proposal-weakrefs?tab=readme-ov-file#iterable-weakmaps
15
+ */
16
+ export declare class IterableWeakMap<K, V> implements Iterable<[K, V]> {
17
+ #private;
18
+ constructor(iterable?: Iterable<[K, V]>);
19
+ /**
20
+ * This is more of an estimate since we might be waiting for some garbage collection to happen
21
+ */
22
+ get size(): number;
23
+ /**
24
+ * This will cause keys that are cleaned up via garbage collection to be logged
25
+ */
26
+ enableLogging(): IterableWeakMap<K, V>;
27
+ get(key: K): V | undefined;
28
+ set(key: K, value: V): this;
29
+ delete(key: K): boolean;
30
+ [Symbol.iterator](): Generator<[K, V]>;
31
+ entries(): IterableIterator<[K, V]>;
32
+ keys(): IterableIterator<K>;
33
+ values(): IterableIterator<V>;
34
+ private isWeakKey;
35
+ }
@@ -8,6 +8,7 @@
8
8
  * Wayward is a copyrighted and licensed work. Modification and/or distribution of any source files is prohibited. If you wish to modify the game in any way, please refer to the modding guide:
9
9
  * https://github.com/WaywardGame/types/wiki
10
10
  */
11
+ import { IterableWeakMap } from "@wayward/utilities/collection/map/IterableWeakMap";
11
12
  import { PriorityMap } from "@wayward/utilities/collection/map/PriorityMap";
12
13
  export declare enum Priority {
13
14
  Lowest = -2000,
@@ -24,12 +25,16 @@ type Abstract<T> = Function & {
24
25
  };
25
26
  type Constructor<T> = new (...args: any[]) => T;
26
27
  type ClassOrAbstractClass<T> = Abstract<T> | Constructor<T>;
28
+ export interface IEventSubscriberEvents {
29
+ releaseEventSubscriptions(): any;
30
+ }
27
31
  export interface IEventEmitterHost<E> {
28
32
  event: IEventEmitter<this | null, E>;
29
33
  }
30
34
  export type IEventEmitterHostClass<E> = ClassOrAbstractClass<IEventEmitterHost<E>>;
31
35
  export type Events<T> = T extends IEventEmitterHost<infer E> ? E : T extends IEventEmitterHostClass<infer E> ? E : never;
32
- export type EventPriorityMap = PriorityMap<Map<string | Handler<any, any>, string | Handler<any, any>>>;
36
+ export type EventPriorityMapKV = string | Handler<any, any>;
37
+ export type EventPriorityMap = PriorityMap<Map<EventPriorityMapKV, EventPriorityMapKV> | IterableWeakMap<EventPriorityMapKV, EventPriorityMapKV>>;
33
38
  export interface ITrueEventEmitterHostClass<E> extends Class<any> {
34
39
  [SYMBOL_SUPERCLASSES]: Array<ITrueEventEmitterHostClass<E>>;
35
40
  [SYMBOL_SUBSCRIPTIONS]: Map<any, Map<keyof E, EventPriorityMap>>;
@@ -59,8 +64,14 @@ export interface IEventEmitter<H = any, E = any> {
59
64
  emitAsyncParallel<K extends keyof E>(event: K, ...args: ArgsOf<E[K]>): Promise<Array<(Extract<ReturnOf<E[K]>, Promise<any>> extends Promise<infer R> ? R : never) | Exclude<ReturnOf<E[K]>, Promise<any>>>> & {
60
65
  isResolved?: true;
61
66
  };
67
+ subscribe<K extends ArrayOr<keyof E>>(host: IEventEmitterHost<IEventSubscriberEvents>, event: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number, once?: boolean): H;
68
+ /** @deprecated */
62
69
  subscribe<K extends ArrayOr<keyof E>>(event: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number, once?: boolean): H;
70
+ subscribeUnsafe<K extends ArrayOr<keyof E>>(event: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number, once?: boolean): H;
71
+ subscribeNext<K extends ArrayOr<keyof E>>(host: IEventEmitterHost<IEventSubscriberEvents>, event: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number): H;
72
+ /** @deprecated */
63
73
  subscribeNext<K extends ArrayOr<keyof E>>(event: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number): H;
74
+ subscribeNextUnsafe<K extends ArrayOr<keyof E>>(event: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number): H;
64
75
  unsubscribe<K extends ArrayOr<keyof E>>(event: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number): boolean;
65
76
  waitFor<K extends ArrayOr<keyof E>>(events: K, priority?: number): Promise<ArgsOf<K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>>;
66
77
  race<K extends ArrayOr<keyof E>>(raceWith: Promise<any>, events: K, priority?: number): Promise<ArgsOf<K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>>;
@@ -72,8 +83,14 @@ export interface IEventEmitter<H = any, E = any> {
72
83
  export interface IUntilSubscriber<H, E> {
73
84
  until(promise: Promise<any>): this;
74
85
  until<E2>(emitter: IEventEmitterHost<E2>, ...events: Array<keyof E2>): this;
86
+ subscribe<K extends ArrayOr<keyof E>>(host: IEventEmitterHost<IEventSubscriberEvents>, event: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number): H;
87
+ /** @deprecated */
75
88
  subscribe<K extends ArrayOr<keyof E>>(event: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number): H;
89
+ subscribeUnsafe<K extends ArrayOr<keyof E>>(event: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number): H;
90
+ subscribeNext<K extends ArrayOr<keyof E>>(host: IEventEmitterHost<IEventSubscriberEvents>, event: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number): H;
91
+ /** @deprecated */
76
92
  subscribeNext<K extends ArrayOr<keyof E>>(event: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number): H;
93
+ subscribeNextUnsafe<K extends ArrayOr<keyof E>>(event: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number): H;
77
94
  }
78
95
  declare class EventEmitter<H, E> {
79
96
  private readonly host;
@@ -92,8 +109,15 @@ declare class EventEmitter<H, E> {
92
109
  emitReduce<K extends keyof E, A extends ReturnOf<E[K]> & Head<ArgsOf<E[K]>>>(event: K, arg: A, ...args: Tail<ArgsOf<E[K]>>): Extract<ReturnOf<E[K]> & Head<ArgsOf<E[K]>>, undefined> extends undefined ? (undefined extends A ? ReturnOf<E[K]> : A) : ReturnOf<E[K]>;
93
110
  emitAsync<K extends keyof E>(event: K, ...args: ArgsOf<E[K]>): Promise<any[]>;
94
111
  emitAsyncParallel<K extends keyof E>(event: K, ...args: ArgsOf<E[K]>): Promise<any[]>;
95
- subscribe<K extends ArrayOr<keyof E>>(events: K, handler: keyof H | Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number, once?: boolean): H;
96
- subscribeNext<K extends ArrayOr<keyof E>>(events: K, handler: keyof H | Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number): H;
112
+ subscribeUnsafe<K extends ArrayOr<keyof E>>(events: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number, once?: boolean): H;
113
+ subscribe<K extends ArrayOr<keyof E>>(host: IEventEmitterHost<IEventSubscriberEvents>, events: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number, once?: boolean): H;
114
+ /** @deprecated */
115
+ subscribe<K extends ArrayOr<keyof E>>(events: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number, once?: boolean): H;
116
+ private subscribeInternal;
117
+ subscribeNextUnsafe<K extends ArrayOr<keyof E>>(events: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number): H;
118
+ subscribeNext<K extends ArrayOr<keyof E>>(host: IEventEmitterHost<IEventSubscriberEvents>, events: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number): H;
119
+ /** @deprecated */
120
+ subscribeNext<K extends ArrayOr<keyof E>>(events: K, handler: Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number): H;
97
121
  unsubscribe<K extends ArrayOr<keyof E>>(events: K, handler: keyof H | Handler<H, K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>, priority?: number): boolean;
98
122
  waitFor<K extends ArrayOr<keyof E>>(events: K, priority?: number): Promise<ArgsOf<K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>>;
99
123
  race<K extends ArrayOr<keyof E>>(raceWith: number | Promise<any>, events: K, priority?: number): Promise<ArgsOf<K extends any[] ? E[K[number]] : E[Extract<K, keyof E>]>>;
@@ -10,7 +10,7 @@
10
10
  */
11
11
  import type { EventBusManager } from "@wayward/utilities/event/EventBusManager";
12
12
  import type EventEmitter from "@wayward/utilities/event/EventEmitter";
13
- import type { Events, IEventEmitterHost, IEventEmitterHostClass } from "@wayward/utilities/event/EventEmitter";
13
+ import type { Events, IEventEmitterHost, IEventEmitterHostClass, IEventSubscriberEvents } from "@wayward/utilities/event/EventEmitter";
14
14
  type HostOrHostClass = IEventEmitterHost<any> | IEventEmitterHostClass<any>;
15
15
  type HostFromHostOrHostClass<H> = H extends {
16
16
  event: EventEmitter<null, any>;
@@ -55,7 +55,17 @@ export declare class EventManager<EventBus extends number, EventBuses extends Re
55
55
  waitFor<E extends EmitterOrBus<EventBus>, K extends Event<EventBus, EventBuses, E>>(emitter: E, event: K, priority?: number): Promise<Parameters<Handler<EventBus, EventBuses, E, K>>>;
56
56
  until<E2>(emitter: IEventEmitterHost<E2>, ...events: Array<keyof E2>): IEventManagerUntil<EventBus, EventBuses>;
57
57
  until(promise: Promise<any>): IEventManagerUntil<EventBus, EventBuses>;
58
+ registerEventBusSubscriber(subscriber: IEventEmitterHost<IEventSubscriberEvents>): void;
59
+ /**
60
+ * @deprecated This subscriber object will not be automatically cleaned up!
61
+ *
62
+ * If this is intentional, switch to {@link registerEventBusSubscriberUnsafe}.
63
+ *
64
+ * Otherwise, this subscriber object needs to be an {@link IEventEmitterHost}<{@link IEventSubscriberEvents}> —
65
+ * the `"releaseEventSubscriptions"` call will automatically clean up this subscriber.
66
+ */
58
67
  registerEventBusSubscriber(subscriber: object): void;
68
+ registerEventBusSubscriberUnsafe(subscriber: object): void;
59
69
  deregisterEventBusSubscriber(subscriber: object): boolean;
60
70
  }
61
71
  declare const SYMBOL_EVENT_HANDLERS: unique symbol;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@wayward/types",
3
3
  "description": "TypeScript declarations for Wayward, used for modding.",
4
- "version": "2.14.3-beta.dev.20241223.1",
4
+ "version": "2.14.3-beta.dev.20241224.1",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",