From ebc8d0f240e54df39a13bd19736e0bdfd9d7fa9d Mon Sep 17 00:00:00 2001 From: Jordan Irwin Date: Fri, 10 May 2024 18:52:04 -0700 Subject: [PATCH] Web client effect for Kika punishment --- buildtools/ant_modules/dist.xml | 3 + data/maps/effect/lightning.png | Bin 0 -> 38726 bytes doc/contributors.md | 1 + doc/contributors/contributors.json | 5 ++ doc/sources/graphics-misc.txt | 4 ++ src/js/stendhal/data/Paths.ts | 3 +- .../event/generic/KikaPunishmentEvent.ts | 58 +++++++++++++++--- src/js/stendhal/ui/ViewPort.ts | 12 ++++ 8 files changed, 78 insertions(+), 8 deletions(-) create mode 100644 data/maps/effect/lightning.png diff --git a/buildtools/ant_modules/dist.xml b/buildtools/ant_modules/dist.xml index 5e65c516b29..e8ded02dd6a 100644 --- a/buildtools/ant_modules/dist.xml +++ b/buildtools/ant_modules/dist.xml @@ -132,6 +132,9 @@ + + + diff --git a/data/maps/effect/lightning.png b/data/maps/effect/lightning.png new file mode 100644 index 0000000000000000000000000000000000000000..510f0117462aa94289ca4993916b32504556a578 GIT binary patch literal 38726 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 literal 0 HcmV?d00001 diff --git a/doc/contributors.md b/doc/contributors.md index 46bc79976bf..8d26c926297 100644 --- a/doc/contributors.md +++ b/doc/contributors.md @@ -998,6 +998,7 @@ The following people released their work to the public with a suitable license f * [Inchadney](http://inchadney.com/sounds.html) * [Gniffelbaf](https://freesound.org/people/Gniffelbaf/) * [Kevin Luce (kevp888)](https://freesound.org/people/kevp888/) +* [Gordon Dylan Johnson (GDJ)](https://openclipart.org/artist/GDJ) diff --git a/doc/contributors/contributors.json b/doc/contributors/contributors.json index 3c14d8f4bc7..dcdff94ebd0 100644 --- a/doc/contributors/contributors.json +++ b/doc/contributors/contributors.json @@ -4772,6 +4772,11 @@ "name": "kevp888", "fullname": "Kevin Luce", "link": "https://freesound.org/people/kevp888/" + }, + { + "name": "GDJ", + "fullname": "Gordon Dylan Johnson", + "link": "https://openclipart.org/artist/GDJ" } ] } diff --git a/doc/sources/graphics-misc.txt b/doc/sources/graphics-misc.txt index 61a8c6789cc..a542471d44d 100644 --- a/doc/sources/graphics-misc.txt +++ b/doc/sources/graphics-misc.txt @@ -63,6 +63,10 @@ rotate* rg1024; CC0; https://openclipart.org/detail/20247 settings* ben; CC0; https://openclipart.org/detail/192629 sound* mightyman; CC0; https://openclipart.org/detail/165992 +data/maps/effect/ + +lightning Gordon Dylan Johnson (GDJ); CC0; https://openclipart.org/detail/268835 + data/sprites/ baby_dragon.png Kimmo Rundelin (kiheru); CC BY-SA 3.0; Stendhal diff --git a/src/js/stendhal/data/Paths.ts b/src/js/stendhal/data/Paths.ts index 15931181eb9..946c63b11e5 100644 --- a/src/js/stendhal/data/Paths.ts +++ b/src/js/stendhal/data/Paths.ts @@ -22,7 +22,8 @@ export class Paths { public static readonly sprites = Paths.data + "/sprites"; public static readonly weather = Paths.sprites + "/weather"; public static readonly achievements = Paths.sprites + "/achievements"; - public static readonly tileset = Paths.data + "/maps/tileset"; + public static readonly maps = Paths.data + "/maps"; + public static readonly tileset = Paths.maps + "/tileset"; public static readonly ws = Paths.extractPath("data-ws"); /** diff --git a/src/js/stendhal/event/generic/KikaPunishmentEvent.ts b/src/js/stendhal/event/generic/KikaPunishmentEvent.ts index 9cf5648f527..ede7b35fbc1 100644 --- a/src/js/stendhal/event/generic/KikaPunishmentEvent.ts +++ b/src/js/stendhal/event/generic/KikaPunishmentEvent.ts @@ -12,21 +12,65 @@ import { RPEvent } from "../RPEvent"; +import { Paths } from "../../data/Paths"; +import { store } from "../../data/SpriteStore"; + import { SoundLayer } from "../../data/enum/SoundLayer"; +import { SoundID } from "../../data/sound/SoundID"; + import { SoundManager } from "../../ui/SoundManager"; +import { ViewPort } from "../../ui/ViewPort"; +import { Color } from "../../util/Color"; + +/** + * Creates effects for Kika punishment. + * + * TODO: + * - maybe make thunderclap louder + * - add some type of beforehand notice, maybe in travel log, about potential punishment + */ export class KikaPunishmentEvent extends RPEvent { - override execute(entity: any) { - // DEBUG: - console.log("Kika punishment!"); + private startTime = 0; + private image = store.get(Paths.maps + "/effect/lightning.png"); - SoundManager.get().playGlobalizedEffect("event/thunderclap", SoundLayer.SFX.value); - // TODO: - // - lightning flash - // - maybe make thunderclap louder + override execute(entity: any) { + this.startTime = Date.now(); + // thunder sound + SoundManager.get().playGlobalizedEffect(SoundID["thunderclap"]!, SoundLayer.SFX.value); + // lightning visual effect + const viewport = ViewPort.get(); + viewport.onDrawComplete = (ctx: CanvasRenderingContext2D, offsetX: number, offsetY: number) => { + this.drawLightning(ctx, offsetX, offsetY); + } + window.setTimeout(function() { viewport.onDrawComplete = undefined; }, 300); + } + + /** + * Draws a lighning effect on the viewport. + * + * @param ctx {CanvasRenderingContext2D} + * Canvas drawing context. + * @param offsetX {number} + * Canvas horizontal offset. + * @param offsetY {number} + * Canvas vertical offset. + */ + private drawLightning(ctx: CanvasRenderingContext2D, offsetX: number, offsetY: number) { + const timeDiff = Date.now() - this.startTime; + ctx.save(); + if (timeDiff <= 100 || timeDiff > 200) { + ctx.globalAlpha = 0.75; + } + ctx.fillStyle = Color.WHITE; + ctx.fillRect(offsetX, offsetY, 640, 480); + if (this.image.height) { + ctx.drawImage(this.image, offsetX, offsetY); + } + ctx.restore(); } } diff --git a/src/js/stendhal/ui/ViewPort.ts b/src/js/stendhal/ui/ViewPort.ts index ed23cfd7d03..e2d764384e8 100644 --- a/src/js/stendhal/ui/ViewPort.ts +++ b/src/js/stendhal/ui/ViewPort.ts @@ -74,6 +74,14 @@ export class ViewPort { /** Styles to be applied when chat panel is not floating. */ private readonly initialStyle: {[prop: string]: string}; + /** + * Callback for instructions to execute when a drawing cycle on the viewport is complete. + * + * The function is called with the parameters `ctx` (CanvasRenderingContext2D), `offsetX`, + * and `offsetY`. + */ + public onDrawComplete?: Function; + /** Singleton instance. */ private static instance: ViewPort; @@ -153,6 +161,10 @@ export class ViewPort { // redraw inventory sprites stendhal.ui.equip.update(); (ui.get(UIComponentEnum.PlayerEquipment) as PlayerEquipmentComponent).update(); + + if (this.onDrawComplete) { + this.onDrawComplete(this.ctx, this.offsetX, this.offsetY); + } } } window.setTimeout(function() {