diff --git a/script/View.js b/script/View.js deleted file mode 100644 index 52c6413..0000000 --- a/script/View.js +++ /dev/null @@ -1,1412 +0,0 @@ -// AssetManager.ts -var Point = class _Point { - x = 0; - y = 0; - constructor(x, y) { - if (x !== void 0 && y !== void 0) { - this.x = x; - this.y = y; - return; - } - } - clone() { - return new _Point(this.x, this.y); - } -}; -var Size = class { - width = 0; - height = 0; - constructor(width, height) { - if (width !== void 0 && height !== void 0) { - this.width = width; - this.height = height; - return; - } - } - clone() { - return new Point(this.width, this.height); - } -}; -var Rect = class _Rect { - left = 0; - top = 0; - right = 0; - bottom = 0; - get x() { - return this.left; - } - set x(value) { - const diff = value - this.left; - this.left += diff; - this.right += diff; - } - get y() { - return this.top; - } - set y(value) { - const diff = value - this.top; - this.top += diff; - this.bottom += diff; - } - get width() { - return this.right - this.left; - } - set width(value) { - this.right = this.left + value; - } - get height() { - return this.bottom - this.top; - } - set height(value) { - this.bottom = this.top + value; - } - get centerX() { - return (this.left + this.right) / 2; - } - get centerY() { - return (this.top + this.bottom) / 2; - } - get location() { - let point = new Point(); - point.x = this.centerX; - point.y = this.centerY; - return point; - } - set location(point) { - let w = this.width; - let h = this.height; - this.left = point.x; - this.right = this.left + w; - this.top = point.y; - this.bottom = this.top + h; - } - get size() { - let size = new Size(); - size.width = this.width; - size.height = this.height; - return size; - } - set size(size) { - this.width = size.width; - this.height = size.height; - } - get isEmpty() { - return this.width <= 0 || this.height <= 0; - } - constructor(arg0, arg1, arg2, arg3) { - if (typeof arg0 === "number" && typeof arg1 === "number") { - if (typeof arg2 === "number" && typeof arg3 === "number") { - this.left = arg0; - this.top = arg1; - this.right = arg0 + arg2; - this.bottom = arg1 + arg3; - return; - } - this.right = arg0; - this.bottom = arg1; - return; - } else if (arg0 instanceof Point && arg1 instanceof Size) { - this.left = arg0.x; - this.top = arg0.y; - this.right = arg0.x + arg1.width; - this.bottom = arg0.y + arg1.height; - return; - } else if (arg0 instanceof Size) { - this.right = arg0.width; - this.bottom = arg0.height; - return; - } - } - inflate(dx, dy) { - this.left -= dx; - this.right += dx; - this.top -= dy; - this.bottom += dy; - } - clone() { - return new _Rect(this.left, this.top, this.width, this.height); - } - union(rect) { - const left = Math.min(this.left, rect.left); - const top = Math.min(this.top, rect.top); - const right = Math.max(this.right, rect.right); - const bottom = Math.max(this.bottom, rect.bottom); - return new _Rect(left, top, right - left, bottom - top); - } -}; -var Color = class _Color { - argb = 0; - constructor(a, r, g, b) { - if (typeof a === "string") { - let s = a; - if (s.startsWith("#")) { - s = s.substring(1); - } - s = s.trim(); - switch (s.length) { - case 3: - s = "ff" + s.split("").map((c) => c + c).join(""); - break; - case 4: - s = s.split("").map((c) => c + c).join(""); - break; - case 6: - s = "ff" + s; - break; - case 8: - break; - default: - s = "ffffffff"; - } - const u = parseInt(s, 16); - this.argb = u; - return; - } - if (a !== void 0 && r === void 0 && g === void 0 && b === void 0) { - this.argb = a; - return; - } - if (a === void 0 && r !== void 0 && g !== void 0 && b !== void 0) { - const u = 255 << 24 | (r & 255) << 16 | (g & 255) << 8 | b & 255; - this.argb = u; - return; - } - if (a !== void 0 && r !== void 0 && g !== void 0 && b !== void 0) { - const u = a << 24 | (r & 255) << 16 | (g & 255) << 8 | b & 255; - this.argb = u; - return; - } - this.argb = 0; - } - get a() { - return this.argb >>> 24 & 255; - } - set a(value) { - const v = value & 255; - this.argb = v << 24 | this.argb & 16777215; - } - get r() { - return this.argb >>> 16 & 255; - } - set r(value) { - const v = value & 255; - this.argb = this.argb & 4278255615 | v << 16; - } - get g() { - return this.argb >>> 8 & 255; - } - set g(value) { - const v = value & 255; - this.argb = this.argb & 4294902015 | v << 8; - } - get b() { - return this.argb & 255; - } - set b(value) { - const v = value & 255; - this.argb = this.argb & 4294967040 | v; - } - toUint32() { - return this.argb; - } - clone() { - return new _Color(this.argb); - } - static FromRgba(r, g, b, a) { - if (typeof r === "string" && g === void 0 && b === void 0 && a === void 0) { - r = r.trim(); - if (r[0] === "#") r = r.slice(1); - if (r.length === 8) { - return new _Color(r.slice(6, 8) + r.slice(0, 6)); - } else if (r.length === 6) return new _Color(r); - else if (r.length === 4) { - return new _Color(r[3] + r[3] + r.slice(0, 3).split("").map((i) => i + i).join("")); - } else if (r.length === 3) { - return new _Color("FF" + r.split("").map((i) => i + i).join("")); - } else return new _Color(); - } else if (typeof r === "number" && typeof g === "number" && typeof b === "number" && typeof a === "number") { - return new _Color(a, r, g, b); - } else { - return new _Color(); - } - } - toRgbaString() { - return `rgba(${this.r}, ${this.g}, ${this.b}, ${this.a / 255})`; - } - toHexString(includeAlpha = true) { - if (includeAlpha) { - return `#${this.argb.toString(16).padStart(8, "0")}`; - } else { - const rgb = this.argb & 16777215; - return `#${rgb.toString(16).padStart(6, "0")}`; - } - } - equals(other) { - return this.argb === other.argb; - } - static get Transparent() { - return new _Color(0, 0, 0, 0); - } - static get Black() { - return new _Color(255, 0, 0, 0); - } - static get White() { - return new _Color(255, 255, 255, 255); - } - withAlpha(alpha) { - return new _Color(alpha, this.r, this.g, this.b); - } - withRed(red) { - return new _Color(this.a, red, this.g, this.b); - } - withGreen(green) { - return new _Color(this.a, this.r, green, this.b); - } - withBlue(blue) { - return new _Color(this.a, this.r, this.g, blue); - } -}; -var SliceInfo = class { - bounds = new Rect(); - center = new Rect(); - pivot = new Point(); - scale = 1; - blobUrl = ""; - get isNinePatch() { - return !this.center.isEmpty; - } -}; -var assetFilePath = "assets.png"; -var slicesFilePath = "assets.bin"; -var directoryPath = "./rdviewAssets"; -async function loadAssetFile() { - const pngPath = directoryPath + "/" + assetFilePath; - return await new Promise((resolve, reject) => { - const img = new Image(); - img.onload = () => resolve(img); - img.onerror = (e) => reject(new Error(`Failed to load asset file: ${pngPath}`)); - img.src = pngPath; - }); -} -async function readFromStream(stream) { - const canvas = new OffscreenCanvas(1, 1); - let offset = 0; - const count = stream.getUint8(0); - offset += 1; - const sliceInfos = /* @__PURE__ */ new Map(); - for (let i = 0; i < count; i++) { - const sliceInfo = new SliceInfo(); - const keyLength = stream.getUint8(offset); - offset += 1; - const key = new TextDecoder().decode(new Uint8Array(stream.buffer, offset, keyLength)); - offset += keyLength; - const left = stream.getUint8(offset); - offset += 1; - const top = stream.getUint8(offset); - offset += 1; - const wh = stream.getUint16(offset, true); - offset += 2; - const width = wh & 31; - const height = wh >> 5 & 63; - sliceInfo.bounds = new Rect(left, top, width, height); - const hasCenter = (wh & 32768) !== 0; - const hasPivot = (wh & 16384) !== 0; - if (hasCenter) { - const centerByte = stream.getUint8(offset); - offset += 1; - const centerLeft = centerByte & 3; - const centerTop = centerByte >> 2 & 3; - const centerWidth = centerByte >> 4 & 3; - const centerHeight = centerByte >> 6 & 3; - sliceInfo.center = new Rect(centerLeft, centerTop, centerWidth, centerHeight); - } - if (hasPivot) { - const pivotByte = stream.getUint8(offset); - offset += 1; - let pivotLeft = pivotByte & 7; - let pivotTop = pivotByte >> 3 & 7; - if ((pivotByte & 128) !== 0) { - pivotLeft *= -1; - } - if ((pivotByte & 64) !== 0) { - pivotTop *= -1; - } - sliceInfo.pivot = new Point(pivotLeft, pivotTop); - } - canvas.width = width; - canvas.height = height; - const ctx = canvas.getContext("2d"); - if (ctx === null) { - throw new Error("Failed to get 2D context"); - } - ctx.clearRect(0, 0, width, height); - ctx.drawImage(assetFile, sliceInfo.bounds.left, sliceInfo.bounds.top, width, height, 0, 0, width, height); - const blob = await canvas.convertToBlob({ - type: "image/png" - }); - sliceInfo.blobUrl = URL.createObjectURL(blob); - sliceInfos.set(key, sliceInfo); - } - return sliceInfos; -} -var assetLoaded = false; -var assetFile = await loadAssetFile(); -var slices = await readFromStream(new DataView(await (await fetch(directoryPath + "/" + slicesFilePath)).arrayBuffer())).finally(() => { - assetLoaded = true; -}); - -// Consts.ts -var Tab = /* @__PURE__ */ function(Tab2) { - Tab2["Sounds"] = "sounds"; - Tab2["Rows"] = "rows"; - Tab2["Actions"] = "actions"; - Tab2["Decorations"] = "decorations"; - Tab2["Rooms"] = "rooms"; - Tab2["Windows"] = "windows"; - Tab2["Unknown"] = "unknown"; - return Tab2; -}({}); -var SayReadyGetSetGoWords = /* @__PURE__ */ function(SayReadyGetSetGoWords2) { - SayReadyGetSetGoWords2["SayReaDyGetSetGoNew"] = "SayReaDyGetSetGoNew"; - SayReadyGetSetGoWords2["SayReaDyGetSetOne"] = "SayReaDyGetSetOne"; - SayReadyGetSetGoWords2["SayGetSetGo"] = "SayGetSetGo"; - SayReadyGetSetGoWords2["SayGetSetOne"] = "SayGetSetOne"; - SayReadyGetSetGoWords2["JustSayRea"] = "JustSayRea"; - SayReadyGetSetGoWords2["JustSayDy"] = "JustSayDy"; - SayReadyGetSetGoWords2["JustSayGet"] = "JustSayGet"; - SayReadyGetSetGoWords2["JustSaySet"] = "JustSaySet"; - SayReadyGetSetGoWords2["JustSayAnd"] = "JustSayAnd"; - SayReadyGetSetGoWords2["JustSayGo"] = "JustSayGo"; - SayReadyGetSetGoWords2["JustSayStop"] = "JustSayStop"; - SayReadyGetSetGoWords2["JustSayAndStop"] = "JustSayAndStop"; - SayReadyGetSetGoWords2["SaySwitch"] = "SaySwitch"; - SayReadyGetSetGoWords2["SayWatch"] = "SayWatch"; - SayReadyGetSetGoWords2["SayListen"] = "SayListen"; - SayReadyGetSetGoWords2["Count1"] = "Count1"; - SayReadyGetSetGoWords2["Count2"] = "Count2"; - SayReadyGetSetGoWords2["Count3"] = "Count3"; - SayReadyGetSetGoWords2["Count4"] = "Count4"; - SayReadyGetSetGoWords2["Count5"] = "Count5"; - SayReadyGetSetGoWords2["Count6"] = "Count6"; - SayReadyGetSetGoWords2["Count7"] = "Count7"; - SayReadyGetSetGoWords2["Count8"] = "Count8"; - SayReadyGetSetGoWords2["Count9"] = "Count9"; - SayReadyGetSetGoWords2["Count10"] = "Count10"; - SayReadyGetSetGoWords2["SayReadyGetSetGo"] = "SayReadyGetSetGo"; - SayReadyGetSetGoWords2["JustSayReady"] = "JustSayReady"; - return SayReadyGetSetGoWords2; -}({}); -var EventType = /* @__PURE__ */ function(EventType2) { - EventType2["AddClassicBeat"] = "AddClassicBeat"; - EventType2["AddFreeTimeBeat"] = "AddFreeTimeBeat"; - EventType2["AddOneshotBeat"] = "AddOneshotBeat"; - EventType2["AdvanceText"] = "AdvanceText"; - EventType2["BassDrop"] = "BassDrop"; - EventType2["Blend"] = "Blend"; - EventType2["CallCustomMethod"] = "CallCustomMethod"; - EventType2["ChangeCharacter"] = "ChangeCharacter"; - EventType2["ChangePlayersRows"] = "ChangePlayersRows"; - EventType2["Comment"] = "Comment"; - EventType2["CustomFlash"] = "CustomFlash"; - EventType2["DesktopColor"] = "DesktopColor"; - EventType2["FadeRoom"] = "FadeRoom"; - EventType2["FinishLevel"] = "FinishLevel"; - EventType2["Flash"] = "Flash"; - EventType2["FlipScreen"] = "FlipScreen"; - EventType2["FloatingText"] = "FloatingText"; - EventType2["ForwardDecorationEvent"] = "ForwardDecorationEvent"; - EventType2["ForwardEvent"] = "ForwardEvent"; - EventType2["ForwardRowEvent"] = "ForwardRowEvent"; - EventType2["HideRow"] = "HideRow"; - EventType2["HideWindow"] = "HideWindow"; - EventType2["InvertColors"] = "InvertColors"; - EventType2["MacroEvent"] = "MacroEvent"; - EventType2["MaskRoom"] = "MaskRoom"; - EventType2["Move"] = "Move"; - EventType2["MoveCamera"] = "MoveCamera"; - EventType2["MoveRoom"] = "MoveRoom"; - EventType2["MoveRow"] = "MoveRow"; - EventType2["NarrateRowInfo"] = "NarrateRowInfo"; - EventType2["NewWindowDance"] = "NewWindowDance"; - EventType2["PaintHands"] = "PaintHands"; - EventType2["PlayAnimation"] = "PlayAnimation"; - EventType2["PlayExpression"] = "PlayExpression"; - EventType2["PlaySong"] = "PlaySong"; - EventType2["PlaySound"] = "PlaySound"; - EventType2["PulseCamera"] = "PulseCamera"; - EventType2["PulseFreeTimeBeat"] = "PulseFreeTimeBeat"; - EventType2["ReadNarration"] = "ReadNarration"; - EventType2["RenameWindow"] = "RenameWindow"; - EventType2["ReorderRooms"] = "ReorderRooms"; - EventType2["ReorderRow"] = "ReorderRow"; - EventType2["ReorderSprite"] = "ReorderSprite"; - EventType2["ReorderWindows"] = "ReorderWindows"; - EventType2["SayReadyGetSetGo"] = "SayReadyGetSetGo"; - EventType2["SetBackgroundColor"] = "SetBackgroundColor"; - EventType2["SetBeatSound"] = "SetBeatSound"; - EventType2["SetBeatsPerMinute"] = "SetBeatsPerMinute"; - EventType2["SetClapSounds"] = "SetClapSounds"; - EventType2["SetCountingSound"] = "SetCountingSound"; - EventType2["SetCrotchetsPerBar"] = "SetCrotchetsPerBar"; - EventType2["SetForeground"] = "SetForeground"; - EventType2["SetGameSound"] = "SetGameSound"; - EventType2["SetHandOwner"] = "SetHandOwner"; - EventType2["SetHeartExplodeInterval"] = "SetHeartExplodeInterval"; - EventType2["SetHeartExplodeVolume"] = "SetHeartExplodeVolume"; - EventType2["SetMainWindow"] = "SetMainWindow"; - EventType2["SetOneshotWave"] = "SetOneshotWave"; - EventType2["SetPlayStyle"] = "SetPlayStyle"; - EventType2["SetRoomContentMode"] = "SetRoomContentMode"; - EventType2["SetRoomPerspective"] = "SetRoomPerspective"; - EventType2["SetRowXs"] = "SetRowXs"; - EventType2["SetSpeed"] = "SetSpeed"; - EventType2["SetTheme"] = "SetTheme"; - EventType2["SetVFXPreset"] = "SetVFXPreset"; - EventType2["SetVisible"] = "SetVisible"; - EventType2["SetWindowContent"] = "SetWindowContent"; - EventType2["ShakeScreen"] = "ShakeScreen"; - EventType2["ShakeScreenCustom"] = "ShakeScreenCustom"; - EventType2["ShowDialogue"] = "ShowDialogue"; - EventType2["ShowHands"] = "ShowHands"; - EventType2["ShowRooms"] = "ShowRooms"; - EventType2["ShowStatusSign"] = "ShowStatusSign"; - EventType2["ShowSubdivisionsRows"] = "ShowSubdivisionsRows"; - EventType2["SpinningRows"] = "SpinningRows"; - EventType2["Stutter"] = "Stutter"; - EventType2["TagAction"] = "TagAction"; - EventType2["TextExplosion"] = "TextExplosion"; - EventType2["Tile"] = "Tile"; - EventType2["Tint"] = "Tint"; - EventType2["TintRows"] = "TintRows"; - EventType2["WindowResize"] = "WindowResize"; - return EventType2; -}({}); -var EventAttriblte = /* @__PURE__ */ function(EventAttriblte2) { - EventAttriblte2[EventAttriblte2["None"] = 0] = "None"; - EventAttriblte2[EventAttriblte2["DurationEvent"] = 1] = "DurationEvent"; - EventAttriblte2[EventAttriblte2["RoomEvent"] = 2] = "RoomEvent"; - return EventAttriblte2; -}({}); -var EventInfo = class { - defaultTab; - durationKey = "duration"; - attr; - get isDurationEvent() { - return (this.attr & EventAttriblte.DurationEvent) !== 0; - } - get isRoomEvent() { - return (this.attr & EventAttriblte.RoomEvent) !== 0; - } - constructor(tab, enumAttriblte, durationKey) { - this.defaultTab = tab; - this.attr = enumAttriblte ?? EventAttriblte.None; - this.durationKey = durationKey ?? "duration"; - } -}; -var WordInfo = class { - phrase; - length; - constructor(phrase, length) { - this.phrase = phrase; - this.length = length; - } -}; -var WordInfos = { - SayReaDyGetSetGoNew: new WordInfo("Rea, Dy, Get, Set, Go!", 4), - SayReaDyGetSetOne: new WordInfo("Rea, Dy, Get, Set, One!", 4), - SayGetSetGo: new WordInfo("Get, Set, Go!", 2), - SayGetSetOne: new WordInfo("Get, Set, One!", 2), - JustSayRea: new WordInfo("Rea", 0), - JustSayDy: new WordInfo("Dy", 0), - JustSayGet: new WordInfo("Get", 0), - JustSaySet: new WordInfo("Set", 0), - JustSayAnd: new WordInfo("And", 0), - JustSayGo: new WordInfo("Go!", 0), - JustSayStop: new WordInfo("Stop", 0), - JustSayAndStop: new WordInfo("And Stop!", 0), - SaySwitch: new WordInfo("Switch", 0), - SayWatch: new WordInfo("Watch", 0), - SayListen: new WordInfo("Listen", 0), - Count1: new WordInfo("1", 0), - Count2: new WordInfo("2", 0), - Count3: new WordInfo("3", 0), - Count4: new WordInfo("4", 0), - Count5: new WordInfo("5", 0), - Count6: new WordInfo("6", 0), - Count7: new WordInfo("7", 0), - Count8: new WordInfo("8", 0), - Count9: new WordInfo("9", 0), - Count10: new WordInfo("10", 0), - SayReadyGetSetGo: new WordInfo("Ready, Get, Set, Go!", 4), - JustSayReady: new WordInfo("Ready", 0) -}; -var EventInfos = { - AddClassicBeat: new EventInfo(Tab.Rows), - AddFreeTimeBeat: new EventInfo(Tab.Rows), - AddOneshotBeat: new EventInfo(Tab.Rows), - AdvanceText: new EventInfo(Tab.Actions, EventAttriblte.DurationEvent, "duration"), - BassDrop: new EventInfo(Tab.Actions), - Blend: new EventInfo(Tab.Decorations), - CallCustomMethod: new EventInfo(Tab.Actions), - ChangeCharacter: new EventInfo(Tab.Actions), - ChangePlayersRows: new EventInfo(Tab.Actions), - Comment: new EventInfo(Tab.Unknown), - CustomFlash: new EventInfo(Tab.Actions, EventAttriblte.DurationEvent, "duration"), - DesktopColor: new EventInfo(Tab.Windows, EventAttriblte.DurationEvent, "duration"), - FadeRoom: new EventInfo(Tab.Rooms, EventAttriblte.DurationEvent, "duration"), - FinishLevel: new EventInfo(Tab.Actions), - Flash: new EventInfo(Tab.Actions), - FlipScreen: new EventInfo(Tab.Actions), - FloatingText: new EventInfo(Tab.Actions, EventAttriblte.DurationEvent | EventAttriblte.RoomEvent, "duration"), - ForwardDecorationEvent: new EventInfo(Tab.Decorations), - ForwardEvent: new EventInfo(Tab.Unknown), - ForwardRowEvent: new EventInfo(Tab.Rows), - HideRow: new EventInfo(Tab.Actions), - HideWindow: new EventInfo(Tab.Windows), - InvertColors: new EventInfo(Tab.Actions), - MacroEvent: new EventInfo(Tab.Unknown), - MaskRoom: new EventInfo(Tab.Rooms), - Move: new EventInfo(Tab.Decorations, EventAttriblte.DurationEvent, "duration"), - MoveCamera: new EventInfo(Tab.Actions, EventAttriblte.DurationEvent, "duration"), - MoveRoom: new EventInfo(Tab.Rooms, EventAttriblte.DurationEvent, "duration"), - MoveRow: new EventInfo(Tab.Actions, EventAttriblte.DurationEvent, "duration"), - NarrateRowInfo: new EventInfo(Tab.Sounds), - NewWindowDance: new EventInfo(Tab.Actions, EventAttriblte.DurationEvent, "duration"), - PaintHands: new EventInfo(Tab.Actions, EventAttriblte.DurationEvent | EventAttriblte.RoomEvent, "duration"), - PlayAnimation: new EventInfo(Tab.Decorations), - PlayExpression: new EventInfo(Tab.Actions), - PlaySong: new EventInfo(Tab.Sounds), - PlaySound: new EventInfo(Tab.Sounds), - PulseCamera: new EventInfo(Tab.Actions), - PulseFreeTimeBeat: new EventInfo(Tab.Rows), - ReadNarration: new EventInfo(Tab.Sounds), - RenameWindow: new EventInfo(Tab.Windows), - ReorderRooms: new EventInfo(Tab.Rooms), - ReorderRow: new EventInfo(Tab.Rows), - ReorderSprite: new EventInfo(Tab.Decorations), - ReorderWindows: new EventInfo(Tab.Windows), - SayReadyGetSetGo: new EventInfo(Tab.Sounds), - SetBackgroundColor: new EventInfo(Tab.Actions, EventAttriblte.DurationEvent | EventAttriblte.RoomEvent, "duration"), - SetBeatSound: new EventInfo(Tab.Sounds), - SetBeatsPerMinute: new EventInfo(Tab.Sounds), - SetClapSounds: new EventInfo(Tab.Sounds), - SetCountingSound: new EventInfo(Tab.Sounds), - SetCrotchetsPerBar: new EventInfo(Tab.Sounds), - SetForeground: new EventInfo(Tab.Actions, EventAttriblte.DurationEvent | EventAttriblte.RoomEvent, "duration"), - SetGameSound: new EventInfo(Tab.Sounds), - SetHandOwner: new EventInfo(Tab.Actions), - SetHeartExplodeInterval: new EventInfo(Tab.Sounds), - SetHeartExplodeVolume: new EventInfo(Tab.Sounds), - SetMainWindow: new EventInfo(Tab.Windows), - SetOneshotWave: new EventInfo(Tab.Rows), - SetPlayStyle: new EventInfo(Tab.Actions), - SetRoomContentMode: new EventInfo(Tab.Rooms), - SetRoomPerspective: new EventInfo(Tab.Rooms, EventAttriblte.DurationEvent, "duration"), - SetRowXs: new EventInfo(Tab.Rows), - SetSpeed: new EventInfo(Tab.Actions, EventAttriblte.DurationEvent, "duration"), - SetTheme: new EventInfo(Tab.Actions, EventAttriblte.DurationEvent | EventAttriblte.RoomEvent, "duration"), - SetVFXPreset: new EventInfo(Tab.Actions, EventAttriblte.DurationEvent | EventAttriblte.RoomEvent, "duration"), - SetVisible: new EventInfo(Tab.Decorations), - SetWindowContent: new EventInfo(Tab.Windows, EventAttriblte.DurationEvent, "duration"), - ShakeScreen: new EventInfo(Tab.Actions, EventAttriblte.RoomEvent), - ShakeScreenCustom: new EventInfo(Tab.Actions, EventAttriblte.DurationEvent | EventAttriblte.RoomEvent, "duration"), - ShowDialogue: new EventInfo(Tab.Actions), - ShowHands: new EventInfo(Tab.Actions), - ShowRooms: new EventInfo(Tab.Rooms, EventAttriblte.DurationEvent, "duration"), - ShowStatusSign: new EventInfo(Tab.Actions, EventAttriblte.DurationEvent, "duration"), - ShowSubdivisionsRows: new EventInfo(Tab.Actions), - SpinningRows: new EventInfo(Tab.Actions, EventAttriblte.DurationEvent, "duration"), - Stutter: new EventInfo(Tab.Actions), - TagAction: new EventInfo(Tab.Actions), - TextExplosion: new EventInfo(Tab.Actions), - Tile: new EventInfo(Tab.Decorations, EventAttriblte.DurationEvent, "duration"), - Tint: new EventInfo(Tab.Decorations, EventAttriblte.DurationEvent, "duration"), - TintRows: new EventInfo(Tab.Actions, EventAttriblte.DurationEvent | EventAttriblte.RoomEvent, "duration"), - WindowResize: new EventInfo(Tab.Actions, EventAttriblte.DurationEvent, "duration") -}; - -// View.ts -var lineHeight = 6; -var charHeight = 8; -var iconSize = 14; -var IconStyle = class { - enabled = true; - active = false; - hover = false; - scale = 1; - showDuration = false; -}; -function withState(color, active, enabled) { - return (enabled ? color : new Color(4286874756)).withAlpha(active ? 192 : 91); -} -function createLayer(key, bound, color, style) { - const layer = document.createElement("div"); - const info = slices.get(key); - layer.style.position = "absolute"; - layer.style.boxSizing = "content-box"; - if (info?.isNinePatch) { - const center = info.center; - const width = bound?.width ?? info.bounds.width; - const height = bound?.height ?? info.bounds.height; - layer.style.left = `${(bound?.left ?? bound?.x ?? 0) * style.scale}px`; - layer.style.top = `${(bound?.top ?? bound?.y ?? 0) * style.scale}px`; - layer.style.borderStyle = "solid"; - layer.style.borderWidth = `${center.top * style.scale}px ${(info.bounds.width - center.right) * style.scale}px ${(info.bounds.height - center.bottom) * style.scale}px ${center.left * style.scale}px`; - layer.style.borderImageSource = `url(${info.blobUrl})`; - layer.style.borderImageSlice = `${center.top} ${info.bounds.width - center.right} ${info.bounds.height - center.bottom} ${center.left} fill`; - layer.style.borderImageWidth = `1`; - layer.style.borderImageOutset = `0`; - layer.style.borderImageRepeat = `repeat`; - layer.style.width = `${(width - center.left - (info.bounds.width - center.right)) * style.scale}px`; - layer.style.height = `${(height - center.top - (info.bounds.height - center.bottom)) * style.scale}px`; - } else { - if (bound instanceof Rect) { - layer.style.left = `${(bound.left - (info?.pivot.x ?? 0)) * style.scale}px`; - layer.style.top = `${(bound.top - (info?.pivot.y ?? 0)) * style.scale}px`; - layer.style.width = `${(bound.width ?? info?.bounds.width ?? 0) * style.scale}px`; - layer.style.height = `${(bound.height ?? info?.bounds.height ?? 0) * style.scale}px`; - if (info) { - layer.style.backgroundImage = `url(${info.blobUrl})`; - } - layer.style.backgroundSize = `${(bound.width ?? info?.bounds.width ?? 0) * style.scale}px ${(bound.height ?? info?.bounds.height ?? 0) * style.scale}px`; - } else { - layer.style.left = `${((bound?.x ?? 0) - (info?.pivot.x ?? 0)) * style.scale}px`; - layer.style.top = `${((bound?.y ?? 0) - (info?.pivot.y ?? 0)) * style.scale}px`; - layer.style.width = `${(info?.bounds.width ?? 0) * style.scale}px`; - layer.style.height = `${(info?.bounds.height ?? 0) * style.scale}px`; - if (info) { - layer.style.backgroundImage = `url(${info.blobUrl})`; - } - layer.style.backgroundSize = `${(info?.bounds.width ?? 0) * style.scale}px ${(info?.bounds.height ?? 0) * style.scale}px`; - } - } - if (color && Color.White.equals(color) === false) { - const filterId = getColorMatrixId(color); - layer.style.filter = `url(#${filterId})`; - layer.onColorChange = (color2) => { - if (!color2) { - return; - } - const newFilterId = getColorMatrixId(color2); - layer.style.filter = `url(#${newFilterId})`; - }; - } else { - } - return layer; -} -var colorMatrixIds = /* @__PURE__ */ new Map(); -var colorMatrixCache = document.createElement("div"); -document.body.appendChild(colorMatrixCache); -function getColorMatrixId(rgba) { - if (colorMatrixIds.has(rgba.toUint32())) { - return colorMatrixIds.get(rgba.toUint32()); - } - const feColorMatrix = document.createElementNS("http://www.w3.org/2000/svg", "feColorMatrix"); - feColorMatrix.setAttribute("type", "matrix"); - const r = rgba.r / 255; - const g = rgba.g / 255; - const b = rgba.b / 255; - const a = rgba.a / 255; - feColorMatrix.setAttribute("values", `${r} 0 0 0 0 0 ${g} 0 0 0 0 0 ${b} 0 0 0 0 0 ${a} 0`); - const filter = document.createElementNS("http://www.w3.org/2000/svg", "filter"); - filter.setAttribute("id", `filter_${rgba.toHexString()}`); - filter.appendChild(feColorMatrix); - const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg"); - svg.setAttribute("width", "0"); - svg.setAttribute("height", "0"); - svg.appendChild(filter); - colorMatrixCache.appendChild(svg); - colorMatrixIds.set(rgba.toUint32(), filter.getAttribute("id")); - return filter.getAttribute("id"); -} -function measureRDFontText(text) { - let len = 0; - for (let i = 0; i < text.length; i++) { - const char = text.charAt(i); - if (char === "\n") { - len = 0; - } else { - const charCode = char.charCodeAt(0); - const charKey = `char_${charCode.toString(16).padStart(4, "0")}`; - const charInfo = slices.get(charKey); - len += charInfo?.bounds.width ?? 0; - } - } - return len; -} -function createRDFontLayer(text, style, color) { - const lineHead = new Point(0, -charHeight); - const start = lineHead.clone(); - const layer = document.createElement("div"); - layer.style.position = "absolute"; - for (let i = 0; i < text.length; i++) { - const char = text.charAt(i); - if (char === "\n") { - start.x = lineHead.x; - start.y += lineHeight * style.scale; - } else { - const charCode = char.charCodeAt(0); - const charKey = `char_${charCode.toString(16).padStart(4, "0")}`; - const charInfo = slices.get(charKey); - if (charInfo) { - const charLayer = createLayer(charKey, new Point(start.x, start.y), color, style); - start.x += charInfo.bounds.width * style.scale; - layer.appendChild(charLayer); - } - } - } - return layer; -} -function createBackLayer(size, color, style) { - const outline = "event_outline"; - const back = "event_back"; - const backLayer = createLayer(back, new Rect(1, 1, (size?.width ?? iconSize) - 2, (size?.height ?? iconSize) - 2), withState(color, style.active, style.enabled), style); - const outlineLayer = createLayer(outline, size ? new Rect(size) : null, new Color(style.active ? 4294967295 : 4289243304), style); - if (backLayer.onColorChange) { - backLayer.onStateChange = (style2) => backLayer.onColorChange(withState(color, style2.active, style2.enabled)); - } - if (outlineLayer.onColorChange) { - outlineLayer.onStateChange = (style2) => outlineLayer.onColorChange(new Color(style2.active ? 4294967295 : 4289243304)); - } - return [ - backLayer, - outlineLayer - ]; -} -function colorOf(tab) { - switch (tab) { - case Tab.Sounds: - return new Color("d92433"); - case Tab.Rows: - return new Color("2c4fdb"); - case Tab.Actions: - return new Color("c544b3"); - case Tab.Rooms: - return new Color("d8b811"); - case Tab.Decorations: - return new Color("00c459"); - case Tab.Windows: - return new Color("50b5d7"); - default: - return new Color("7d7d7d"); - } -} -function layerHoverInit(layer) { - layer.style.opacity = "0"; - layer.onStateChange = (style) => { - if (style.hover) { - layer.style.opacity = "1.0"; - } else { - layer.style.opacity = "0"; - } - }; -} -function createHintLayer(hint, width, color) { - const hintLayer = document.createElement("div"); - hintLayer.style.position = "absolute"; - hintLayer.style.left = `${width}px`; - hintLayer.style.width = `max-content`; - hintLayer.innerHTML = hint; - hintLayer.style.fontSize = `${18}px`; - hintLayer.style.fontFamily = "d9, Arial, sans-serif"; - hintLayer.style.color = color.toRgbaString(); - hintLayer.style.fontWeight = "bold"; - hintLayer.style.textShadow = ` - 2px 2px 0 black, - 2px 0px 0 black, - 2px -2px 0 black, - 0px -2px 0 black, - -2px -2px 0 black, - -2px 0px 0 black, - -2px 2px 0 black, - 0px 2px 0 black - `; - hintLayer.style.pointerEvents = "none"; - hintLayer.style.opacity = "0"; - hintLayer.style.zIndex = "10"; - hintLayer.onStateChange = (style) => { - if (style.hover) { - hintLayer.style.opacity = "1.0"; - } else { - hintLayer.style.opacity = "0"; - } - }; - return hintLayer; -} -function createElementEvent(obj, style) { - style = { - ...new IconStyle(), - ...style - }; - const evttype = obj.type ?? EventType.ForwardEvent; - let key0 = `event_${obj.type}`; - if (!slices.has(key0)) { - if (!slices.has("event_Unknown")) { - return null; - } - key0 = "event_Unknown"; - } - const info = slices.get(key0); - if (!info) { - console.warn(`Slice info for event type ${evttype} not found.`); - return null; - } - const evttypeEnum = EventType[evttype]; - const evinfo = EventInfos[evttypeEnum]; - const key = "event_" + evttype; - const pulse = "event_beat_pulse"; - const hit = "event_beat_hit"; - const hitf = "event_beat_hit_freeze"; - const hitb = "event_beat_hit_burn"; - const beatcross = "event_beat_cross"; - const beatx = "event_beat_x"; - const beatsynco = "event_beat_synco"; - const beatline = "event_beat_line"; - const evtag = "event_tag"; - const evbarea = "event_beat_area"; - const evbskip = "event_beat_skip"; - const beatColor = new Color(4284539717); - const element = document.createElement("div"); - const internalLayers = []; - if (evttype === EventType.NewWindowDance) { - obj.tab = obj.customTab ?? Tab.Windows; - } - function addLayers(layers) { - for (const layer of layers) { - if (layer) { - element.appendChild(layer); - internalLayers.push(layer); - } - } - } - element.style.imageRendering = "pixelated"; - switch (evttype) { - case EventType.AddClassicBeat: - { - const tick = obj.tick ?? 1; - const swing = (obj.swing ?? 0) || 1; - const hold = obj.hold ?? 0; - const syncoSwing = obj.syncoSwing ?? 0; - const prexs = obj.preXs ?? { - syncoBeat: -1, - syncoSwing: 0 - }; - const length = obj.length ?? 7; - const iconWidth = iconSize * (tick * (length - 1 - prexs.syncoSwing)); - const holdBar = hold > 0 ? createLayer(evbarea, new Rect(iconWidth, 0, iconSize * hold, iconSize), new Color(style.active ? 4291839731 : 4286462352), style) : null; - if (holdBar) { - holdBar.style.pointerEvents = "none"; - } - const backLayers2 = createBackLayer(new Size(iconWidth, iconSize), colorOf(obj.tab ?? evinfo.defaultTab), style); - const pulses = []; - for (let i = 0; i < length - 1; i++) { - const pulseLayer = createLayer(pulse, new Point(iconSize * (tick * (i + i % 2 * (1 - swing) - (i <= prexs.syncoBeat ? 0 : prexs.syncoSwing))), 0), null, style); - layerHoverInit(pulseLayer); - pulses.push(pulseLayer); - } - const hitLayer = createLayer(hit, new Point(iconSize * (tick * (length - 1 - (prexs.syncoSwing ?? 0))) - 1, 0), null, style); - addLayers([ - holdBar, - ...backLayers2, - ...pulses, - hitLayer - ]); - } - break; - case EventType.AddOneshotBeat: - { - const tick = obj.tick ?? 1; - const interval = obj.interval ?? 2; - const loop = obj.loops ?? 0; - const subdiv = obj.subdivisions ?? 1; - const hold = obj.hold ?? false; - const skip = obj.skipshot ?? false; - const mode = obj.freezeBurnMode ?? null; - const delay = obj.freezeBurnMode === "Freezeshot" ? obj.delay ?? 0 : 0; - const subdivWidth = iconSize * (subdiv - 1) / subdiv * tick; - const eventWidth = iconSize * (interval * loop + tick + delay); - const off = interval - tick; - const backLayers2 = createBackLayer(new Size(eventWidth, iconSize), colorOf(obj.tab ?? evinfo.defaultTab), style); - const holdWidth = hold ? iconSize * (interval - tick - delay) : 0; - const holdLayer = hold && holdWidth - subdivWidth > 0 ? createLayer(evbarea, new Rect(eventWidth + subdivWidth, 0, holdWidth - subdivWidth, iconSize), new Color(style.enabled ? 4291839731 : 4285493103), style) : null; - const subdivLayer = subdiv > 1 ? createLayer(evbarea, new Rect(eventWidth, 0, subdivWidth, iconSize), new Color(style.enabled ? 4279480353 : 4285493103), style) : null; - const skipshotLayer = skip ? createLayer(evbarea, new Rect(eventWidth + Math.max(subdivWidth, holdWidth), 0, iconSize * (interval - delay) - Math.max(subdivWidth, holdWidth), iconSize), new Color(style.enabled ? 4291115835 : 4285493103), style) : null; - const skipHitLayer = skip ? createLayer(evbskip, new Point(eventWidth + iconSize * (interval - delay) - 1, 0), null, style) : null; - if (holdLayer) holdLayer.style.pointerEvents = "none"; - if (subdivLayer) subdivLayer.style.pointerEvents = "none"; - if (skipshotLayer) skipshotLayer.style.pointerEvents = "none"; - if (skipHitLayer) skipHitLayer.style.pointerEvents = "none"; - const pulses = []; - const crossLayers = []; - const posx = -off * iconSize; - const hittype = mode === "Freezeshot" ? hitf : hitb; - for (let l = 0; l <= loop; l++) { - for (let i = 0; i < subdiv; i++) { - const pulseLayer = createLayer(pulse, new Point(iconSize * (l * interval + i * tick / subdiv), 0), null, style); - layerHoverInit(pulseLayer); - pulses.push(pulseLayer); - } - for (let i = 0; i < subdiv; i++) { - const hitLayer2 = createLayer(hit, new Point(iconSize * (l * interval + delay + tick + i * tick / subdiv) - 1, 0), null, style); - pulses.push(hitLayer2); - } - const crossLayer1 = mode || hold ? createLayer(beatcross, new Point(iconSize * l * interval + posx - 1, 0), null, style) : null; - const crossLayer2 = mode ? createLayer(beatcross, new Point(iconSize * (l - (mode === "Freezeshot" ? 0 : 1)) * interval - 1, 0), null, style) : null; - const hitLayer = createLayer(hittype, new Point(iconSize * (l * interval + tick) - 1, 0), null, style); - if (crossLayer1) { - layerHoverInit(crossLayer1); - crossLayers.push(crossLayer1); - } - if (crossLayer2) { - layerHoverInit(crossLayer2); - crossLayers.push(crossLayer2); - } - pulses.push(hitLayer); - } - const loopLayer = createLayer("event_beat_loop", new Point(eventWidth, 0), null, style); - loopLayer.style.opacity = "0"; - loopLayer.style.zIndex = "5"; - loopLayer.onStateChange = (style2) => { - if (style2.hover) { - loopLayer.style.opacity = "1.0"; - } else { - loopLayer.style.opacity = "0"; - } - }; - addLayers([ - ...backLayers2, - holdLayer, - subdivLayer, - skipshotLayer, - skipHitLayer, - ...pulses, - loopLayer, - ...crossLayers - ]); - } - break; - case EventType.AddFreeTimeBeat: - { - const hold = obj.hold ?? 0; - const holdLayer = hold > 0 ? createLayer(evbarea, new Rect(info.bounds.width, 0, iconSize * hold - info.bounds.width, iconSize), new Color(style.active ? 4291839731 : 4286462352), style) : null; - if (holdLayer) { - holdLayer.style.pointerEvents = "none"; - } - const backLayers2 = createBackLayer(new Size(info.bounds.width, iconSize), beatColor, style); - const hitLayer = obj.pulse === 6 ? createLayer(hit, new Point(0, 0), null, style) : null; - const textLayer = createRDFontLayer(((obj.pulse ?? 0) + 1).toString(), style, null); - textLayer.style.left = `${1.5 * style.scale}px`; - textLayer.style.top = `${10 * style.scale}px`; - addLayers([ - holdLayer, - ...backLayers2, - hitLayer, - textLayer - ]); - } - break; - case EventType.Comment: - { - const backLayers2 = createBackLayer(info.bounds.size, new Color(obj.color ?? "7d7d7d"), style); - const iconLayer = createLayer(key, null, null, style); - addLayers([ - ...backLayers2, - iconLayer - ]); - } - break; - case EventType.DesktopColor: - { - const backLayers2 = createBackLayer(info.bounds.size, colorOf(obj.tab ?? evinfo.defaultTab), style); - console.log(info.bounds.size); - const iconColorLayer = createLayer(`${key}_0`, new Point(0, iconSize), new Color(obj.endColor ?? "ffffff"), style); - const iconLayer = createLayer(`${key}_1`, new Point(0, iconSize), null, style); - addLayers([ - ...backLayers2, - iconColorLayer, - iconLayer - ]); - } - break; - case EventType.PulseFreeTimeBeat: - { - const hold = obj.hold ?? 0; - const holdLayer = hold > 0 ? createLayer(evbarea, new Rect(info.bounds.width, 0, iconSize * hold - info.bounds.width, info.bounds.height), new Color(style.active ? 4291839731 : 4286462352), style) : null; - if (holdLayer) { - holdLayer.style.pointerEvents = "none"; - } - const backLayers2 = createBackLayer(new Size(info.bounds.width, info.bounds.height), beatColor, style); - const hitLayer = obj.pulse === 6 ? createLayer(hit, new Point(0, 0), null, style) : null; - let text = ""; - switch (obj.action) { - case "Custom": - text = ((obj.customPulse ?? 0) + 1).toString(); - break; - case "Increment": - text = ">"; - break; - case "Decrement": - text = "<"; - break; - case "Remove": - text = "x"; - break; - } - const textLayer = createRDFontLayer(text, style, null); - textLayer.style.left = `${1.5 * style.scale}px`; - textLayer.style.top = `${10 * style.scale}px`; - addLayers([ - holdLayer, - ...backLayers2, - hitLayer, - textLayer - ]); - } - break; - case EventType.ReorderRooms: - case EventType.ReorderWindows: - { - const backLayers2 = createBackLayer(info.bounds.size, colorOf(obj.tab ?? evinfo.defaultTab), style); - const orderLayers = []; - const order = obj.order ?? [ - 0, - 1, - 2, - 3 - ]; - for (let i = 0; i < order.length; i++) { - { - const orderLayer = createLayer(`${key}_${order[i]}`, new Point(0, i * iconSize), null, style); - orderLayers.push(orderLayer); - } - } - addLayers([ - ...backLayers2, - ...orderLayers - ]); - } - break; - case EventType.SayReadyGetSetGo: - { - const wordInfo = WordInfos[obj.phraseToSay ?? SayReadyGetSetGoWords.JustSayGo]; - const len = wordInfo.length * (obj.tick ?? 0) + 1; - const stringToJoin = wordInfo.phrase.split(" "); - const stringToDraw = [ - stringToJoin[0] - ]; - let lw = measureRDFontText(stringToJoin[0]); - const sw = measureRDFontText(" "); - const backLayers2 = createBackLayer(new Size(len * iconSize, iconSize), colorOf(obj.tab ?? evinfo.defaultTab), style); - const wordLayers = []; - for (let i = 1; i < stringToJoin.length; i++) { - const part = stringToJoin[i]; - const w = measureRDFontText(part); - if (lw + sw + w > len * iconSize * style.scale) { - lw = w; - stringToDraw.push(part); - } else { - lw += sw + w; - stringToDraw[stringToDraw.length - 1] += " " + part; - } - } - const c = Math.min(stringToDraw.length, 3); - let top = iconSize / 2 - charHeight * c / 4 + 1; - for (let i = 0; i < c; i++) { - const line = stringToDraw[i]; - const p = new Point((len * iconSize - measureRDFontText(line) / 2) / 2, top + (i * charHeight + lineHeight) / 2); - const wordLayer = createRDFontLayer(line, { - ...style, - scale: style.scale / 2 - }, null); - wordLayer.style.left = `${p.x * style.scale}px`; - wordLayer.style.top = `${p.y * style.scale}px`; - wordLayers.push(wordLayer); - } - addLayers([ - ...backLayers2, - ...wordLayers - ]); - } - break; - case EventType.SetRowXs: - { - const syncoBeat = obj.syncoBeat ?? -1; - const width = info.bounds.width / 6; - const iconBounds = slices.get(beatx).bounds; - const s = width / iconBounds.width; - let left = 0; - const top = iconSize / 2 - iconBounds.height * s / 2; - const patternLayers = []; - const backLayers2 = createBackLayer(new Size(info.bounds.width, info.bounds.height), colorOf(obj.tab ?? evinfo.defaultTab), style); - for (let p of obj.pattern) { - const beatxLayer = createLayer(p === "x" ? beatx : beatline, new Rect(left, top, width, iconBounds.height * s), null, style); - patternLayers.push(beatxLayer); - left += width; - } - const syncoBeatLayer = syncoBeat >= 0 ? createLayer(beatsynco, new Rect(width * syncoBeat, top, width, iconBounds.height * s), null, style) : null; - addLayers([ - ...backLayers2, - ...patternLayers, - syncoBeatLayer - ]); - } - break; - case EventType.ShowRooms: - { - const backLayers2 = createBackLayer(new Size(iconSize, iconSize * 4), colorOf(obj.tab ?? evinfo.defaultTab), style); - const roomLayers = []; - for (let i = 0; i < 4; i++) { - const roomLayer = createLayer(`${key}_${obj.rooms.indexOf(i) >= 0 ? "1" : "0"}`, new Point(0, i * iconSize * style.scale), null, { - ...style, - scale: style.scale / 2 - }); - roomLayers.push(roomLayer); - } - addLayers([ - ...backLayers2, - ...roomLayers - ]); - } - break; - default: - const backLayers = createBackLayer(info.bounds.size, colorOf(obj.tab ?? evinfo.defaultTab), style); - addLayers(backLayers); - switch (evttype) { - case EventType.CustomFlash: - const iconLayer = createLayer(key, null, null, style); - const startColorLayer = createLayer(`${key}_0`, null, new Color(obj.startColor ?? "000000").withAlpha((obj.startOpacity ?? 0) * 255), style); - const endColorLayer = createLayer(`${key}_1`, null, new Color(obj.endColor ?? "000000").withAlpha((obj.endOpacity ?? 0) * 255), style); - addLayers([ - iconLayer, - startColorLayer, - endColorLayer - ]); - break; - case EventType.FlipScreen: - { - const flip = (obj.flipX ? 1 : 0) | (obj.flipY ? 2 : 0); - const iconLayer2 = createLayer(flip === 0 ? `${key}_0` : `${key}_${flip - 1}`, null, null, style); - addLayers([ - iconLayer2 - ]); - } - break; - case EventType.FloatingText: - { - const backColorLayer = createLayer(`${key}_0`, null, Color.FromRgba(obj.color ?? "FFFFFFFF"), style); - const foreColorLayer = createLayer(`${key}_1`, null, Color.FromRgba(obj.outlineColor ?? "FFFFFFFF"), style); - addLayers([ - backColorLayer, - foreColorLayer - ]); - } - break; - case EventType.MoveRoom: - { - const degree = obj.angle ?? 0; - const radius = -degree * Math.PI / 180; - let width = (obj.scale ? obj.scale[0] ?? 0 : 100) / 100; - let height = (obj.scale ? obj.scale[1] ?? 0 : 100) / 100; - const pleft = (obj.pivot ? obj.pivot[0] ?? 0 : 50) / 100; - const ptop = (obj.pivot ? obj.pivot[1] ?? 0 : 50) / 100; - if (width === 0 || height === 0) break; - const uniform = Math.sqrt(width * width + height * height); - width /= uniform; - height /= uniform; - const roomLayer = createLayer(key, new Rect(iconSize / 2, iconSize / 2, iconSize * width, iconSize * height), null, style); - let pivotx = width * (1 - pleft * 2); - let pivoty = height * (1 - ptop * 2); - const widthrotated = pivotx * Math.cos(radius) + pivoty * Math.sin(radius); - const heightrotated = -pivotx * Math.sin(radius) + pivoty * Math.cos(radius); - const pointLayer = document.createElement("div"); - pointLayer.style.position = "absolute"; - pointLayer.style.width = `${style.scale}px`; - pointLayer.style.height = `${style.scale}px`; - pointLayer.style.left = `${iconSize * (1 - widthrotated) * style.scale / 2}px`; - pointLayer.style.top = `${iconSize * (1 + heightrotated) * style.scale / 2}px`; - pointLayer.style.backgroundColor = "#FF0000"; - roomLayer.style.transform = `translate(-50%, -50%) rotate(${-degree}deg)`; - addLayers([ - roomLayer, - pointLayer - ]); - } - break; - case EventType.PaintHands: - case EventType.Tint: - case EventType.TintRows: - { - const border = obj.border; - const backColorLayer = createLayer(key, null, Color.FromRgba(obj.tintColor ?? "FFFFFFFF"), style); - const foreColorLayer = border ? createLayer(border === "Outline" ? `${key}_0` : border === "Glow" ? `${key}_1` : "", null, Color.FromRgba(obj.borderColor ?? "FFFFFFFF"), style) : null; - addLayers([ - backColorLayer, - foreColorLayer - ]); - } - break; - case EventType.SetBackgroundColor: - { - const backType = obj.backgroundType ?? "Color"; - const iconLayer2 = createLayer(key, null, null, style); - const images = obj.image ?? []; - const imagePath = images.length > 0 ? images[0] : ""; - const contentInfo = slices.get(`${key}_1`); - const colorLayer = createLayer(`${key}_0`, null, Color.FromRgba((backType === "Color" ? obj.color : null) ?? "FFFFFF"), style); - const contentLayer = backType === "Image" ? createLayer("", contentInfo?.bounds ? new Rect(contentInfo?.bounds.size) : null, null, style) : null; - if (backType === "Image" && contentLayer) { - contentLayer.style.backgroundImage = `url(${imagePath})`; - contentLayer.style.left = `${-(contentInfo?.pivot.x ?? 0) * style.scale}px`; - contentLayer.style.top = `${-(contentInfo?.pivot.y ?? 0) * style.scale}px`; - } - addLayers([ - iconLayer2, - colorLayer, - contentLayer - ]); - } - break; - case EventType.SetCrotchetsPerBar: - { - const cpb = obj.crotchetsPerBar ?? 0; - const iconLayer2 = createLayer(key, null, null, style); - const cpbLayer = createRDFontLayer(cpb > 9 ? "-" : cpb.toString(), style, Color.Black); - const bLayer = createRDFontLayer("4", style, Color.Black); - cpbLayer.style.left = `${2 * style.scale}px`; - cpbLayer.style.top = `${9 * style.scale}px`; - bLayer.style.left = `${8 * style.scale}px`; - bLayer.style.top = `${14 * style.scale}px`; - addLayers([ - iconLayer2, - cpbLayer, - bLayer - ]); - } - break; - case EventType.SetForeground: - { - const iconLayer2 = createLayer(key, null, null, style); - const images = obj.image ?? []; - const imagePath = images.length > 0 ? images[0] : ""; - const contentInfo = slices.get(`${key}_1`); - const colorLayer = imagePath ? createLayer(`${key}_0`, null, Color.Black, style) : null; - const contentLayer = imagePath ? createLayer("", contentInfo?.bounds ? new Rect(contentInfo?.bounds.size) : null, null, style) : null; - if (contentLayer) { - contentLayer.style.backgroundImage = `url(${imagePath})`; - contentLayer.style.left = `${-(contentInfo?.pivot.x ?? 0) * style.scale}px`; - contentLayer.style.top = `${-(contentInfo?.pivot.y ?? 0) * style.scale}px`; - } - addLayers([ - iconLayer2, - colorLayer, - contentLayer - ]); - } - break; - default: - const layer = createLayer(key, null, null, style); - addLayers([ - layer - ]); - break; - } - break; - } - if (evinfo.isDurationEvent) { - const duration = obj[evinfo.durationKey] ?? 0; - const durWidth = iconSize * duration; - const durationLayer = durWidth > info.bounds.width ? createLayer(evbarea, new Rect(info.bounds.width, 0, durWidth - info.bounds.width, info.bounds.height), colorOf(obj.tab ?? evinfo.defaultTab), style) : null; - if (durationLayer) { - durationLayer.style.pointerEvents = "none"; - layerHoverInit(durationLayer); - } - addLayers([ - durationLayer - ]); - } - const rooms = obj.rooms ?? []; - const roomEnabled = new Color(4292392977); - const roomDisabled = new Color(4284177243); - if (evinfo.isRoomEvent) { - const roomLayers = []; - for (let i = 0; i < 4; i++) { - const roomLayer = createLayer(`room_${i}`, new Point(iconSize, 0), rooms.indexOf(i) > -1 ? roomEnabled : roomDisabled, style); - if (roomLayer) { - layerHoverInit(roomLayer); - } - roomLayers.push(roomLayer); - } - const roomTopLayer = rooms.indexOf(4) > -1 ? createLayer(`room_top`, new Point(iconSize, 0), roomEnabled, style) : null; - if (roomTopLayer) { - layerHoverInit(roomTopLayer); - } - roomLayers.push(roomTopLayer); - addLayers(roomLayers); - } - const condition = obj.if ?? ""; - if (condition.length > 0) { - const positive = /(? { - style2 = { - ...style2 - }; - internalLayers.forEach((layer) => { - if (layer.onStateChange) { - layer.onStateChange(style2); - } - }); - }; - return element; -} -export { - createElementEvent -};