@wayward/types 2.13.0-beta.dev.20230329.1 → 2.13.0-beta.dev.20230331.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 (26) hide show
  1. package/definitions/game/game/doodad/Doodad.d.ts +2 -3
  2. package/definitions/game/game/entity/Entity.d.ts +14 -5
  3. package/definitions/game/game/entity/EntityMovable.d.ts +2 -2
  4. package/definitions/game/game/entity/EntityWithStats.d.ts +2 -2
  5. package/definitions/game/game/entity/Human.d.ts +2 -1
  6. package/definitions/game/game/entity/action/ActionExecutor.d.ts +1 -1
  7. package/definitions/game/game/entity/creature/Creature.d.ts +2 -3
  8. package/definitions/game/game/entity/creature/corpse/Corpse.d.ts +2 -3
  9. package/definitions/game/game/inspection/infoProviders/UseInfo.d.ts +2 -2
  10. package/definitions/game/game/item/Item.d.ts +2 -3
  11. package/definitions/game/game/item/recipe/Crafter.d.ts +1 -1
  12. package/definitions/game/game/tile/Tile.d.ts +3 -6
  13. package/definitions/game/game/tile/TileEvent.d.ts +2 -3
  14. package/definitions/game/renderer/Renderer.d.ts +4 -0
  15. package/definitions/game/renderer/Renderers.d.ts +3 -0
  16. package/definitions/game/renderer/context/RendererContext.d.ts +3 -1
  17. package/definitions/game/renderer/overlay/GenericOverlay.d.ts +2 -1
  18. package/definitions/game/renderer/spriteBatch/ISpriteBatch.d.ts +3 -1
  19. package/definitions/game/renderer/spriteBatch/PersistantSpriteBatch.d.ts +29 -0
  20. package/definitions/game/renderer/spriteBatch/SpriteBatch1.d.ts +2 -27
  21. package/definitions/game/renderer/spriteBatch/SpriteBatch2.d.ts +4 -31
  22. package/definitions/game/renderer/spriteBatch/SpriteBatchBase.d.ts +53 -0
  23. package/definitions/game/renderer/world/WorldRenderer.d.ts +4 -1
  24. package/definitions/game/save/data/ISaveDataGlobal.d.ts +2 -1
  25. package/definitions/game/ui/screen/screens/game/component/Item.d.ts +0 -2
  26. package/package.json +1 -1
@@ -72,7 +72,7 @@ export interface IDoodadEvents extends IEntityEvents {
72
72
  durabilityChange(durability: number, oldDurability: number): any;
73
73
  durabilityMaxChange(durability: number, oldDurability: number): any;
74
74
  }
75
- export default class Doodad extends Entity<DoodadType, DoodadTag> implements IUnserializedCallback, IObject<DoodadType>, IDoodadOptions, Partial<IContainer>, IHasInsulation, IHasBuilder, IHasMagic {
75
+ export default class Doodad extends Entity<IDoodadDescription, DoodadType, DoodadTag> implements IUnserializedCallback, IObject<DoodadType>, IDoodadOptions, Partial<IContainer>, IHasInsulation, IHasBuilder, IHasMagic {
76
76
  static is(value: any): value is Doodad;
77
77
  get constructorFunction(): typeof Doodad;
78
78
  static getRegistrarId(): number;
@@ -104,7 +104,6 @@ export default class Doodad extends Entity<DoodadType, DoodadTag> implements IUn
104
104
  stillContainer?: Item;
105
105
  tradedFrom?: string[];
106
106
  weight?: number;
107
- private _description?;
108
107
  private _tileId?;
109
108
  /**
110
109
  * Separate property just for wells because isInGroup is still expensive for processWell()
@@ -133,7 +132,7 @@ export default class Doodad extends Entity<DoodadType, DoodadTag> implements IUn
133
132
  * - `doodad.getName(undefined, 3)` // "stone furnaces"
134
133
  */
135
134
  getName(article?: false | "definite" | "indefinite", count?: number): import("../../language/impl/TranslationImpl").default;
136
- description(): IDoodadDescription | undefined;
135
+ protected getDescription(): IDoodadDescription | undefined;
137
136
  updateTile(tileUpdateType: TileUpdateType): void;
138
137
  changeType(doodadType: DoodadType): void;
139
138
  isValid(): boolean;
@@ -34,7 +34,7 @@ import type EntityWithStats from "game/entity/EntityWithStats";
34
34
  import type Tile from "game/tile/Tile";
35
35
  import type EntityMovable from "game/entity/EntityMovable";
36
36
  import type { RenderSource, UpdateRenderFlag } from "renderer/IRenderer";
37
- export default abstract class Entity<TypeType extends number = number, TagType = unknown, CounterType = unknown> extends EventEmitter.Host<IEntityEvents> implements IReferenceable, IInspector, ITemperatureSource, INotificationLocation, IVector3 {
37
+ export default abstract class Entity<DescriptionType = unknown, TypeType extends number = number, TagType = unknown, CounterType = unknown> extends EventEmitter.Host<IEntityEvents> implements IReferenceable, IInspector, ITemperatureSource, INotificationLocation, IVector3 {
38
38
  abstract readonly entityType: EntityType;
39
39
  abstract readonly tileUpdateType: TileUpdateType;
40
40
  id: number;
@@ -58,14 +58,23 @@ export default abstract class Entity<TypeType extends number = number, TagType =
58
58
  * This should be cleared when x,y,z is changing.
59
59
  */
60
60
  private _tilesAround;
61
+ protected _description?: DescriptionType;
61
62
  constructor(entityOptions?: IEntityConstructorOptions<TypeType>);
62
63
  get island(): import("../island/Island").default;
63
64
  get reference(): Reference | undefined;
65
+ /**
66
+ * Get the entities description
67
+ */
68
+ get description(): DescriptionType | undefined;
64
69
  /**
65
70
  * Adds a referenceId to the entity if it doesn't already have one
66
71
  */
67
72
  addReferenceId(): void;
68
73
  abstract getName(): Translation;
74
+ /**
75
+ * Called when filling out the entities description for the first time
76
+ */
77
+ protected abstract getDescription(): DescriptionType | undefined;
69
78
  toString(): string;
70
79
  getInspectionId(): string;
71
80
  /**
@@ -81,7 +90,7 @@ export default abstract class Entity<TypeType extends number = number, TagType =
81
90
  get tilesAround(): Tile[] | undefined;
82
91
  protected setCachedTile(tile: Tile): void;
83
92
  clearTileCache(): void;
84
- isNearby(entity: Entity): boolean;
93
+ isNearby(entity: Entity<DescriptionType>): boolean;
85
94
  isInFov(): boolean;
86
95
  setInFov(inFov: boolean): void;
87
96
  isOnFire(): FireType;
@@ -96,9 +105,9 @@ export default abstract class Entity<TypeType extends number = number, TagType =
96
105
  addTag(tag: TagType): void;
97
106
  removeTag(tag: TagType): void;
98
107
  abstract isValid(): boolean;
99
- get asEntity(): Entity<TypeType, TagType>;
100
- get asEntityMovable(): EntityMovable<TypeType, TagType> | undefined;
101
- get asEntityWithStats(): EntityWithStats<TypeType, TagType> | undefined;
108
+ get asEntity(): Entity<DescriptionType, TypeType, TagType>;
109
+ get asEntityMovable(): EntityMovable<DescriptionType, TypeType, TagType> | undefined;
110
+ get asEntityWithStats(): EntityWithStats<DescriptionType, TypeType, TagType> | undefined;
102
111
  abstract get asCorpse(): Corpse | undefined;
103
112
  abstract get asCreature(): Creature | undefined;
104
113
  abstract get asDoodad(): Doodad | undefined;
@@ -39,7 +39,7 @@ export interface IEntityMovableEvents extends IEntityEvents {
39
39
  /**
40
40
  * Entity class that allows movement
41
41
  */
42
- export default abstract class EntityMovable<TypeType extends number = number, TagType = unknown, CounterType = unknown> extends Entity<TypeType, TagType, CounterType> implements IRendererOrigin {
42
+ export default abstract class EntityMovable<DescriptionType = unknown, TypeType extends number = number, TagType = unknown, CounterType = unknown> extends Entity<DescriptionType, TypeType, TagType, CounterType> implements IRendererOrigin {
43
43
  event: IEventEmitter<this, IEntityMovableEvents>;
44
44
  /**
45
45
  * Not guaranteed to be synced between the server and client for Human entities
@@ -83,7 +83,7 @@ export default abstract class EntityMovable<TypeType extends number = number, Ta
83
83
  * @returns False to block the move
84
84
  */
85
85
  protected abstract updateTile(fromTile: Tile, toTile: Tile): boolean;
86
- get asEntityMovable(): EntityMovable<TypeType, TagType>;
86
+ get asEntityMovable(): EntityMovable<DescriptionType, TypeType, TagType>;
87
87
  /**
88
88
  * Regular entities don't have a direction so this will be the same as getTile()
89
89
  */
@@ -31,7 +31,7 @@ export interface IEntityWithStatsEvents extends IEntityMovableEvents, IStatEvent
31
31
  * Entity class that includes stats/status system.
32
32
  * Note: We're assuming something with stats is also movable!
33
33
  */
34
- export default abstract class EntityWithStats<TypeType extends number = number, TagType = unknown> extends EntityMovable<TypeType, TagType> implements IStatHost {
34
+ export default abstract class EntityWithStats<DescriptionType = unknown, TypeType extends number = number, TagType = unknown> extends EntityMovable<DescriptionType, TypeType, TagType> implements IStatHost {
35
35
  event: IEventEmitter<this, IEntityWithStatsEvents>;
36
36
  stats: IStats;
37
37
  status: IStatus;
@@ -39,7 +39,7 @@ export default abstract class EntityWithStats<TypeType extends number = number,
39
39
  private readonly statusHandlers;
40
40
  constructor(entityOptions?: IEntityConstructorOptions<TypeType>);
41
41
  protected getApplicableStatusEffects(): Set<StatusType> | undefined;
42
- get asEntityWithStats(): EntityWithStats<TypeType, TagType>;
42
+ get asEntityWithStats(): EntityWithStats<DescriptionType, TypeType, TagType>;
43
43
  /**
44
44
  * Returns whether the entity has the given `StatusType`
45
45
  * @param status The status to check
@@ -55,7 +55,7 @@ import type { IVector2, IVector3 } from "utilities/math/IVector";
55
55
  import Vector2 from "utilities/math/Vector2";
56
56
  import type { IVector4 } from "utilities/math/Vector4";
57
57
  export declare const REPUTATION_MAX = 64000;
58
- export default abstract class Human<TypeType extends number = number> extends EntityWithStats<TypeType> implements IHasInsulation {
58
+ export default abstract class Human<TypeType extends number = number> extends EntityWithStats<unknown, TypeType> implements IHasInsulation {
59
59
  static getNameTranslation(): import("../../language/impl/TranslationImpl").default;
60
60
  event: IEventEmitter<this, IHumanEvents>;
61
61
  anim: number;
@@ -119,6 +119,7 @@ export default abstract class Human<TypeType extends number = number> extends En
119
119
  protected gameOptionsCached?: IGameOptionsPlayer;
120
120
  protected cachedMovementPenalty?: number;
121
121
  constructor(entityOptions?: IEntityConstructorOptions<TypeType>);
122
+ protected getDescription(): void;
122
123
  abstract createNoteManager(): INoteManager;
123
124
  abstract createMessageManager(): IMessageManager;
124
125
  abstract createQuestManager(): IQuestManager;
@@ -30,7 +30,7 @@ export default class ActionExecutor<A extends Array<ActionArgument | ActionArgum
30
30
  * Note: Prefer `IActionApi.get` if you're calling this from within another action.
31
31
  */
32
32
  static get<D extends AnyActionDescription>(action: D): D extends IActionDescription<infer A, infer E, infer R, infer CU, infer AV> ? ActionExecutor<A, E, R, CU, AV> : never;
33
- static executeMultiplayer(packet: ActionPacket, executor?: Entity<number, unknown, unknown> | undefined, nonMpActionExecutor?: ActionExecutor<Array<ActionArgument | ActionArgument[]>, Entity, any, any, any[]>): any;
33
+ static executeMultiplayer(packet: ActionPacket, executor?: Entity<unknown, number, unknown, unknown> | undefined, nonMpActionExecutor?: ActionExecutor<Array<ActionArgument | ActionArgument[]>, Entity, any, any, any[]>): any;
34
34
  get executor(): E;
35
35
  get actionStack(): ActionType[];
36
36
  get lastAction(): ActionType;
@@ -26,7 +26,7 @@ import type { IUnserializedCallback } from "save/serializer/ISerializer";
26
26
  import { Direction } from "utilities/math/Direction";
27
27
  import type { IVector3 } from "utilities/math/IVector";
28
28
  import Vector2 from "utilities/math/Vector2";
29
- export default class Creature extends EntityWithStats<CreatureType> implements IUnserializedCallback, IObject<CreatureType> {
29
+ export default class Creature extends EntityWithStats<ICreatureDescription, CreatureType> implements IUnserializedCallback, IObject<CreatureType> {
30
30
  static is(value: any): value is Creature;
31
31
  get entityType(): EntityType.Creature;
32
32
  get tileUpdateType(): TileUpdateType;
@@ -57,7 +57,6 @@ export default class Creature extends EntityWithStats<CreatureType> implements I
57
57
  respawned?: number;
58
58
  shouldSkipNextUpdate?: true;
59
59
  tameTime?: number;
60
- private _description;
61
60
  spawnAnimationTime: IMovementTime | undefined;
62
61
  constructor(entityOptions?: IEntityConstructorOptions<CreatureType>, aberrant?: boolean);
63
62
  /**
@@ -74,7 +73,7 @@ export default class Creature extends EntityWithStats<CreatureType> implements I
74
73
  * - `creature.getName(undefined, 3)` // "acid spitter demons"
75
74
  */
76
75
  getName(article?: false | "definite" | "indefinite", count?: number): Translation;
77
- description(): ICreatureDescription | undefined;
76
+ protected getDescription(): ICreatureDescription | undefined;
78
77
  hasAi(aiType: AiType): boolean;
79
78
  isHidden(): boolean;
80
79
  isRetaliator(): boolean;
@@ -35,7 +35,7 @@ export interface ICorpseEvents extends IEntityEvents {
35
35
  /**
36
36
  * TODO: extends Entity?
37
37
  */
38
- export default class Corpse extends Entity<CreatureType> implements IObject<CreatureType> {
38
+ export default class Corpse extends Entity<ICorpseDescription, CreatureType> implements IObject<CreatureType> {
39
39
  static is(value: any): value is Corpse;
40
40
  get entityType(): EntityType.Corpse;
41
41
  get tileUpdateType(): TileUpdateType;
@@ -46,7 +46,6 @@ export default class Corpse extends Entity<CreatureType> implements IObject<Crea
46
46
  respawned?: number;
47
47
  startingDecay?: number;
48
48
  step?: number | undefined;
49
- private _description;
50
49
  private _creatureDescription;
51
50
  constructor(entityOptions?: IEntityConstructorOptions<CreatureType>, decay?: number);
52
51
  get asCorpse(): Corpse | undefined;
@@ -71,7 +70,7 @@ export default class Corpse extends Entity<CreatureType> implements IObject<Crea
71
70
  * - `corpse.getName(undefined, 3)` // "acid spitter demons"
72
71
  */
73
72
  getName(article?: false | "definite" | "indefinite", count?: number): Translation;
74
- description(): ICorpseDescription | undefined;
73
+ protected getDescription(): ICorpseDescription | undefined;
75
74
  creatureDescription(): ICreatureDescription | undefined;
76
75
  isValid(): boolean;
77
76
  getDecayAtStart(): number;
@@ -23,9 +23,9 @@ export interface IDescribed {
23
23
  referenceId?: number;
24
24
  quality?: Quality;
25
25
  island: Island;
26
- description(): any;
26
+ description: any;
27
27
  }
28
- export type DescribedDescription<T extends IDescribed> = Exclude<ReturnType<T["description"]>, undefined>;
28
+ export type DescribedDescription<T extends IDescribed> = Exclude<T["description"], undefined>;
29
29
  export interface IUseInfoBase<T extends IDescribed, A extends ActionType> {
30
30
  entityType: T["entityType"];
31
31
  value?: T;
@@ -69,7 +69,7 @@ export interface IItemEvents extends IEntityMovableEvents {
69
69
  durabilityChange(durability: number, oldDurability: number): any;
70
70
  durabilityMaxChange(durabilityMax: number, oldDurabilityMax: number): any;
71
71
  }
72
- export default class Item extends EntityMovable<ItemType, ItemTag, ItemCounter> implements Partial<IContainer>, IContainable, IUnserializedCallback, IObject<ItemType>, IObjectOptions, IContainable, Partial<IContainer>, IHasInsulation, IHasMagic {
72
+ export default class Item extends EntityMovable<IItemDescription, ItemType, ItemTag, ItemCounter> implements Partial<IContainer>, IContainable, IUnserializedCallback, IObject<ItemType>, IObjectOptions, IContainable, Partial<IContainer>, IHasInsulation, IHasMagic {
73
73
  get entityType(): EntityType.Item;
74
74
  get tileUpdateType(): TileUpdateType;
75
75
  readonly event: IEventEmitter<this, IItemEvents>;
@@ -107,7 +107,6 @@ export default class Item extends EntityMovable<ItemType, ItemTag, ItemCounter>
107
107
  offsetY?: number;
108
108
  [SYMBOL_CONTAINER_CACHED_REFERENCE]?: ContainerReference;
109
109
  private _movementOptions?;
110
- private _description;
111
110
  constructor(itemType?: ItemType | undefined, islandId?: IslandId, quality?: Quality, human?: Human);
112
111
  get asCorpse(): undefined;
113
112
  get asCreature(): undefined;
@@ -162,7 +161,7 @@ export default class Item extends EntityMovable<ItemType, ItemTag, ItemCounter>
162
161
  * - `item.getName(undefined, 3)` // "stone axes"
163
162
  */
164
163
  getName(article?: false | "definite" | "indefinite", count?: number, showCount?: boolean, showQuality?: boolean, showRenamedQuotes?: boolean, showMagicalType?: boolean): import("../../language/impl/TranslationImpl").default;
165
- description(): IItemDescription | undefined;
164
+ protected getDescription(): IItemDescription | undefined;
166
165
  isTransient(): boolean;
167
166
  isValid(): boolean;
168
167
  isProtected(): boolean;
@@ -48,7 +48,7 @@ export default class Crafter {
48
48
  * @param includeCrafterTile Whether the tile the crafter is on should be included. Defaults to `true`.
49
49
  */
50
50
  tilesAroundCrafter(includeCrafterTile?: boolean): Stream<any>;
51
- getCrafter(): Entity<number, unknown, unknown>;
51
+ getCrafter(): Entity<unknown, number, unknown, unknown>;
52
52
  getUsable<R extends RecipeRequirementType>(type: R, requirement: InstanceType<RecipeRequirementClass<R>>): Set<RecipeInputType<R>>;
53
53
  getUsed<R extends RecipeRequirementType>(type: R, requirement?: InstanceType<RecipeRequirementClass<R>>): Stream<RecipeInputType<R>>;
54
54
  /**
@@ -58,7 +58,6 @@ export default class Tile implements IVector4, Partial<ITileContainer>, IFieldOf
58
58
  */
59
59
  rendererData: number;
60
60
  quality?: Quality;
61
- overlays?: IOverlayInfo[];
62
61
  /**
63
62
  * Entities on the tile
64
63
  */
@@ -83,7 +82,7 @@ export default class Tile implements IVector4, Partial<ITileContainer>, IFieldOf
83
82
  */
84
83
  constructor(island: Island, x: number, y: number, z: number, id: number);
85
84
  get point(): IVector3;
86
- description(): ITerrainDescription | undefined;
85
+ get description(): ITerrainDescription | undefined;
87
86
  toString(): string;
88
87
  get type(): TerrainType;
89
88
  /**
@@ -228,10 +227,8 @@ export default class Tile implements IVector4, Partial<ITileContainer>, IFieldOf
228
227
  * Decrease the depth of a water tile if under 6 connected tiles
229
228
  */
230
229
  consumeWaterTile(): void;
231
- addOverlay(overlay: IOverlayInfo, ifNotExist?: (overlay: IOverlayInfo) => boolean): boolean;
232
- hasOverlay(filter: (overlay: IOverlayInfo) => boolean): boolean | undefined;
233
- removeOverlay(overlay: IOverlayInfo): boolean;
234
- removeOverlay(filter: (overlay: IOverlayInfo) => boolean): boolean;
230
+ addOrUpdateOverlay(overlay: IOverlayInfo): void;
231
+ removeOverlay(overlay: IOverlayInfo): void;
235
232
  canSeeObject(type: CanASeeBType, object: IVector4 & {
236
233
  fromX: number;
237
234
  fromY: number;
@@ -28,7 +28,7 @@ export interface ITileEventEvents extends IEntityMovableEvents {
28
28
  */
29
29
  fireUpdate(tile: Tile, stage: FireStage | undefined): any;
30
30
  }
31
- export default class TileEvent extends EntityMovable<TileEventType> implements IObject<TileEventType> {
31
+ export default class TileEvent extends EntityMovable<ITileEventDescription, TileEventType> implements IObject<TileEventType> {
32
32
  static is(value: any): value is TileEvent;
33
33
  get entityType(): EntityType.TileEvent;
34
34
  get tileUpdateType(): TileUpdateType;
@@ -48,7 +48,6 @@ export default class TileEvent extends EntityMovable<TileEventType> implements I
48
48
  */
49
49
  fuel?: number;
50
50
  private fireStage?;
51
- private _description;
52
51
  constructor(entityOptions?: IEntityConstructorOptions<TileEventType>);
53
52
  isValid(): boolean;
54
53
  get asCorpse(): undefined;
@@ -63,7 +62,7 @@ export default class TileEvent extends EntityMovable<TileEventType> implements I
63
62
  get point(): IVector3;
64
63
  get tile(): Tile;
65
64
  toString(): string;
66
- description(): ITileEventDescription | undefined;
65
+ protected getDescription(): ITileEventDescription | undefined;
67
66
  getName(article?: false | "definite" | "indefinite", count?: number): import("../../language/impl/TranslationImpl").default;
68
67
  getProducedTemperature(): number | undefined;
69
68
  updateFire(tile: Tile): void;
@@ -11,6 +11,8 @@
11
11
  import EventEmitter from "event/EventEmitter";
12
12
  import type { IslandId } from "game/island/IIsland";
13
13
  import type Island from "game/island/Island";
14
+ import type { IOverlayInfo } from "game/tile/ITerrain";
15
+ import type Tile from "game/tile/Tile";
14
16
  import type { IRendererOrigin } from "renderer/context/RendererOrigin";
15
17
  import type { IRendererEvents } from "renderer/IRenderer";
16
18
  import { RenderSource, UpdateRenderFlag } from "renderer/IRenderer";
@@ -98,6 +100,8 @@ export default class Renderer extends EventEmitter.Host<IRendererEvents> {
98
100
  getAmbientLightLevel(z: number): number;
99
101
  updateAmbientLightLevel(z: number): number;
100
102
  updateView(source: RenderSource, updateFov: boolean | UpdateRenderFlag.FieldOfView | UpdateRenderFlag.FieldOfViewSkipTransition): void;
103
+ addOrUpdateOverlay(tile: Tile, overlay: IOverlayInfo): void;
104
+ removeOverlay(tile: Tile, overlay: IOverlayInfo): void;
101
105
  updateThumbnail(): Promise<string | undefined>;
102
106
  update(timeStamp: number): void;
103
107
  computeSpritesInViewport(): void;
@@ -14,6 +14,7 @@ import type StatusEffect from "game/entity/status/StatusEffect";
14
14
  import type { IslandId } from "game/island/IIsland";
15
15
  import type Island from "game/island/Island";
16
16
  import type { DisplayableItemType } from "game/item/IItem";
17
+ import type { IOverlayInfo } from "game/tile/ITerrain";
17
18
  import type Tile from "game/tile/Tile";
18
19
  import type { RenderSource, UpdateRenderFlag } from "renderer/IRenderer";
19
20
  import type { CreatureNotifierType, INotificationLocation, ItemNotifierType, NotifierIconType, StatNotificationType } from "renderer/notifier/INotifier";
@@ -47,6 +48,8 @@ export default class Renderers {
47
48
  delete(): Promise<void>;
48
49
  update(timeStamp: number): void;
49
50
  computeSpritesInViewport(origin: IVector4): void;
51
+ addOrUpdateOverlay(tile: Tile, overlay: IOverlayInfo): void;
52
+ removeOverlay(tile: Tile, overlay: IOverlayInfo): void;
50
53
  updateView(origin: IVector4 | undefined, source: RenderSource, updateFov?: boolean | UpdateRenderFlag.FieldOfView | UpdateRenderFlag.FieldOfViewSkipTransition): void;
51
54
  updateRender(origin: IVector4 | undefined, source: RenderSource, flag: UpdateRenderFlag): void;
52
55
  }
@@ -11,6 +11,7 @@
11
11
  import type BaseRendererContext from "renderer/context/BaseRendererContext";
12
12
  import type { IRendererOrigin } from "renderer/context/RendererOrigin";
13
13
  import type Renderer from "renderer/Renderer";
14
+ import { PersistantSpriteBatch } from "renderer/spriteBatch/PersistantSpriteBatch";
14
15
  import SpriteBatch1 from "renderer/spriteBatch/SpriteBatch1";
15
16
  import SpriteBatch2 from "renderer/spriteBatch/SpriteBatch2";
16
17
  import type WebGlContext from "renderer/WebGlContext";
@@ -24,5 +25,6 @@ export default class RendererContext {
24
25
  get isWebGl2(): boolean;
25
26
  get origin(): IRendererOrigin;
26
27
  get viewport(): IVector2;
27
- createSpriteBatch(capacity: number, depthOffset?: number, yOffset?: number, enableAlphaMultiplcation?: boolean): SpriteBatch2 | SpriteBatch1;
28
+ createSpriteBatch(capacity: number, depthOffset?: number, yOffset?: number, enableAlphaMultiplcation?: boolean, enforceBeginAndEnd?: boolean): SpriteBatch1 | SpriteBatch2;
29
+ createPersistantSpriteBatch(depthOffset?: number, yOffset?: number, enableAlphaMultiplcation?: boolean): PersistantSpriteBatch;
28
30
  }
@@ -11,8 +11,9 @@
11
11
  import type { IOverlayInfo } from "game/tile/ITerrain";
12
12
  import type Tile from "game/tile/Tile";
13
13
  export default abstract class GenericOverlay<OVERLAY extends IOverlayInfo = IOverlayInfo, PARAMS extends any[] = []> {
14
- private readonly overlay;
14
+ protected readonly overlay: Map<Tile, OVERLAY>;
15
15
  protected alpha: number;
16
+ constructor(hideByDefault?: boolean);
16
17
  getDefaultAlpha(): number;
17
18
  show(): void;
18
19
  hide(): void;
@@ -12,7 +12,9 @@ export default interface ISpriteBatch {
12
12
  readonly capacity: number;
13
13
  delete(): void;
14
14
  begin(): void;
15
- add(tileX: number, tileY: number, spriteSize: number, sourceX: number, sourceY: number, sourceSize: number, offsetX?: number, offsetY?: number, red?: number, green?: number, blue?: number, alpha?: number): void;
16
15
  end(): number;
16
+ add(tileX: number, tileY: number, spriteSize: number, sourceX: number, sourceY: number, sourceSize: number, offsetX?: number, offsetY?: number, red?: number, green?: number, blue?: number, alpha?: number): number | undefined;
17
+ update(index: number, tileX: number, tileY: number, spriteSize: number, sourceX: number, sourceY: number, sourceSize: number, offsetX?: number, offsetY?: number, red?: number, green?: number, blue?: number, alpha?: number): void;
18
+ remove(index: number): boolean;
17
19
  render(x: number, y: number, tileScale: number, viewportWidth: number, viewportHeight: number): void;
18
20
  }
@@ -0,0 +1,29 @@
1
+ /*!
2
+ * Copyright 2011-2021 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 ISpriteBatch from "renderer/spriteBatch/ISpriteBatch";
12
+ /**
13
+ * A sprite batch that doesn't reset on each frame.
14
+ * Works similar to tile layers (tile / doodad rendering)
15
+ */
16
+ export declare class PersistantSpriteBatch implements ISpriteBatch {
17
+ readonly spriteBatch: ISpriteBatch;
18
+ private _dirty;
19
+ private readonly _freeIndexes;
20
+ constructor(spriteBatch: ISpriteBatch);
21
+ get capacity(): number;
22
+ delete(): void;
23
+ begin(): void;
24
+ end(): number;
25
+ add(tileX: number, tileY: number, spriteSize: number, sourceX: number, sourceY: number, sourceSize: number, offsetX?: number | undefined, offsetY?: number | undefined, red?: number | undefined, green?: number | undefined, blue?: number | undefined, alpha?: number | undefined): number | undefined;
26
+ update(index: number, tileX: number, tileY: number, spriteSize: number, sourceX: number, sourceY: number, sourceSize: number, offsetX?: number, offsetY?: number, red?: number, green?: number, blue?: number, alpha?: number): void;
27
+ remove(index: number): boolean;
28
+ render(x: number, y: number, tileScale: number, viewportWidth: number, viewportHeight: number): void;
29
+ }
@@ -8,36 +8,11 @@
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 type ISpriteBatch from "renderer/spriteBatch/ISpriteBatch";
12
- import type Vector2 from "utilities/math/Vector2";
13
- import type WebGlContext from "renderer/WebGlContext";
14
- import type RendererContext from "renderer/context/RendererContext";
11
+ import { SpriteBatchBase } from "renderer/spriteBatch/SpriteBatchBase";
15
12
  /**
16
13
  * SpriteBatch for WebGl 1
17
14
  */
18
- export default class SpriteBatch1 implements ISpriteBatch {
19
- private readonly context;
20
- readonly capacity: number;
21
- private readonly depthOffset;
22
- private readonly yOffset;
23
- private readonly enableAlphaMultiplcation;
24
- private readonly shaderProgram;
25
- texSprites: WebGLTexture | undefined;
26
- inverseSpriteTextureSize: Vector2 | undefined;
27
- private count;
28
- private readonly buffer;
29
- private readonly colorBuffer;
30
- private array;
31
- private colorArray;
32
- private begun;
33
- private _setup;
34
- static initializePrograms(webGlContext: WebGlContext): Promise<void>;
35
- constructor(context: RendererContext, capacity: number, depthOffset?: number, yOffset?: number, enableAlphaMultiplcation?: boolean);
15
+ export default class SpriteBatch1 extends SpriteBatchBase {
36
16
  setup(): void;
37
- delete(): void;
38
- clear(): void;
39
- begin(): void;
40
- add(tileX: number, tileY: number, spriteSize: number, sourceX: number, sourceY: number, sourceSize: number, offsetX?: number, offsetY?: number, red?: number, green?: number, blue?: number, alpha?: number): void;
41
- end(): number;
42
17
  render(x: number, y: number, tileScale: number, viewportWidth: number, viewportHeight: number): void;
43
18
  }
@@ -8,42 +8,15 @@
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 type ISpriteBatch from "renderer/spriteBatch/ISpriteBatch";
12
- import type Vector2 from "utilities/math/Vector2";
13
- import type WebGlContext from "renderer/WebGlContext";
14
11
  import type RendererContext from "renderer/context/RendererContext";
12
+ import { SpriteBatchBase } from "renderer/spriteBatch/SpriteBatchBase";
15
13
  /**
16
14
  * SpriteBatch for WebGl 2
17
15
  */
18
- export default class SpriteBatch2 implements ISpriteBatch {
19
- private readonly context;
20
- readonly capacity: number;
21
- private readonly depthOffset;
22
- private readonly yOffset;
23
- private readonly enableAlphaMultiplcation;
24
- private readonly shaderProgram;
25
- texSprites: WebGLTexture | undefined;
26
- inverseSpriteTextureSize: Vector2 | undefined;
27
- private spriteCount;
28
- private readonly texCordBuffer;
29
- private readonly dataBuffer;
30
- private dataArray;
31
- private readonly colorBuffer;
32
- private colorArray;
33
- private begun;
34
- private readonly vertexArray;
35
- private _setup;
36
- static initializePrograms(webGlContext: WebGlContext): Promise<void>;
37
- constructor(context: RendererContext, capacity: number, depthOffset?: number, yOffset?: number, enableAlphaMultiplcation?: boolean);
16
+ export default class SpriteBatch2 extends SpriteBatchBase {
17
+ protected readonly vertexArray: WebGLVertexArrayObject;
18
+ constructor(context: RendererContext, capacity: number, depthOffset: number, yOffset: number, enableAlphaMultiplcation: boolean, enforceBeginAndEnd: boolean);
38
19
  setup(): void;
39
20
  delete(): void;
40
- clear(): void;
41
- begin(): void;
42
- add(tileX: number, tileY: number, spriteSize: number, sourceX: number, sourceY: number, sourceSize: number, offsetX?: number, offsetY?: number, red?: number, green?: number, blue?: number, alpha?: number): void;
43
- /**
44
- * Binds sprites to be included in the next render
45
- * @returns number of sprites being rendered
46
- */
47
- end(): number;
48
21
  render(x: number, y: number, tileScale: number, viewportWidth: number, viewportHeight: number): void;
49
22
  }
@@ -0,0 +1,53 @@
1
+ /*!
2
+ * Copyright 2011-2021 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 CompiledProgram from "renderer/CompiledProgram";
12
+ import type WebGlContext from "renderer/WebGlContext";
13
+ import type RendererContext from "renderer/context/RendererContext";
14
+ import type ISpriteBatch from "renderer/spriteBatch/ISpriteBatch";
15
+ import type Vector2 from "utilities/math/Vector2";
16
+ export declare const dataLengthPerSprite = 8;
17
+ export declare const colorLengthPerSprite = 4;
18
+ /**
19
+ * Base class for sprite batches
20
+ */
21
+ export declare abstract class SpriteBatchBase implements ISpriteBatch {
22
+ protected readonly context: RendererContext;
23
+ readonly capacity: number;
24
+ protected readonly depthOffset: number;
25
+ protected readonly yOffset: number;
26
+ protected readonly enableAlphaMultiplcation: boolean;
27
+ protected readonly enforceBeginAndEnd: boolean;
28
+ protected readonly shaderProgram: CompiledProgram;
29
+ texSprites: WebGLTexture | undefined;
30
+ inverseSpriteTextureSize: Vector2 | undefined;
31
+ protected spriteCount: number;
32
+ protected readonly texCordBuffer: WebGLBuffer;
33
+ protected readonly dataBuffer: WebGLBuffer;
34
+ protected dataArray: Float32Array;
35
+ protected readonly colorBuffer: WebGLBuffer;
36
+ protected colorArray: Uint8Array;
37
+ protected begun: boolean;
38
+ protected _setup: boolean;
39
+ static initializePrograms(webGlContext: WebGlContext): Promise<void>;
40
+ constructor(context: RendererContext, capacity: number, depthOffset: number, yOffset: number, enableAlphaMultiplcation: boolean, enforceBeginAndEnd: boolean);
41
+ abstract setup(): void;
42
+ abstract render(x: number, y: number, tileScale: number, viewportWidth: number, viewportHeight: number): void;
43
+ delete(): void;
44
+ begin(): void;
45
+ add(tileX: number, tileY: number, spriteSize: number, sourceX: number, sourceY: number, sourceSize: number, offsetX?: number, offsetY?: number, red?: number, green?: number, blue?: number, alpha?: number): number | undefined;
46
+ update(index: number, tileX: number, tileY: number, spriteSize: number, sourceX: number, sourceY: number, sourceSize: number, offsetX?: number, offsetY?: number, red?: number, green?: number, blue?: number, alpha?: number): void;
47
+ remove(index: number): boolean;
48
+ /**
49
+ * Binds sprites to be included in the next render
50
+ * @returns number of sprites being rendered
51
+ */
52
+ end(): number;
53
+ }
@@ -12,6 +12,7 @@ import EventEmitter from "event/EventEmitter";
12
12
  import type Creature from "game/entity/creature/Creature";
13
13
  import type NPC from "game/entity/npc/NPC";
14
14
  import type Island from "game/island/Island";
15
+ import type { IOverlayInfo } from "game/tile/ITerrain";
15
16
  import { TerrainType } from "game/tile/ITerrain";
16
17
  import type Tile from "game/tile/Tile";
17
18
  import { WorldZ } from "game/WorldZ";
@@ -112,6 +113,7 @@ export default class WorldRenderer extends EventEmitter.Host<IWorldRendererEvent
112
113
  readonly fieldOfView: FieldOfView;
113
114
  readonly particleSystem: ParticleSystem;
114
115
  readonly notifier: Notifier;
116
+ private readonly overlays;
115
117
  layers: Record<number, WorldLayerRenderer>;
116
118
  defaultAdaptor: ITileAdaptor;
117
119
  doodadLikeAdaptor: ITileAdaptor;
@@ -186,6 +188,8 @@ export default class WorldRenderer extends EventEmitter.Host<IWorldRendererEvent
186
188
  getAmbientColorDawn(): [number, number, number];
187
189
  getAmbientIntensity(): number;
188
190
  getFogColor(): [x: number, y: number, z: number];
191
+ addOrUpdateOverlay(tile: Tile, overlay: IOverlayInfo): void;
192
+ removeOverlay(tile: Tile, overlay: IOverlayInfo): void;
189
193
  shouldRender(): RenderFlag;
190
194
  renderWorld(timeStamp: number, x: number, y: number, z: number): void;
191
195
  renderWorldLayer(worldLayer: WorldLayerRenderer, x: number, y: number, tileScale: number, viewWidth: number, viewHeight: number, renderFlags: RenderFlag, enableDepth: boolean): void;
@@ -236,7 +240,6 @@ export default class WorldRenderer extends EventEmitter.Host<IWorldRendererEvent
236
240
  * @returns True when there's more rendering to be done
237
241
  */
238
242
  private computeSpritesInViewportImmediately;
239
- private batchOverlay;
240
243
  private batchItems;
241
244
  private batchItem;
242
245
  private batchTileEvents;
@@ -99,7 +99,8 @@ export declare enum MusicPlaylist {
99
99
  export declare enum TooltipVisibilityOption {
100
100
  HiddenUnlessBind = 0,
101
101
  ShowMoreInformationWithBind = 1,
102
- AlwaysShowMoreInformation = 2
102
+ AlwaysShowMoreInformation = 2,
103
+ Default = 1
103
104
  }
104
105
  export type IOptionsOld = Partial<Pick<IOptions, "bindings">> & Partial<{
105
106
  alwaysShowMoreInformation: boolean;
@@ -42,7 +42,6 @@ export declare enum ItemDetailIconLocation {
42
42
  export declare enum ItemClasses {
43
43
  Main = "item-component",
44
44
  Icon = "item-component-icon",
45
- ItemIcon = "item-component-icon-item",
46
45
  ItemIconIsReal = "item-component-icon-item-is-real",
47
46
  ActionIcon = "item-component-icon-action",
48
47
  ActionIconHasItem = "item-component-icon-action-has-item",
@@ -90,7 +89,6 @@ export default class ItemComponent extends Component {
90
89
  protected readonly handler: IItemHandler;
91
90
  static registerSlot(slot: ItemSlot): void;
92
91
  event: IEventEmitter<this, Events<IDraggableComponent> & IItemSlotEvents>;
93
- readonly itemIcon: Component<HTMLElement>;
94
92
  readonly magicalIcon: Component<HTMLElement>;
95
93
  readonly protectedIcon: Component<HTMLElement>;
96
94
  readonly actionIcon: Component<HTMLElement> | undefined;
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.13.0-beta.dev.20230329.1",
4
+ "version": "2.13.0-beta.dev.20230331.1",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",