From 82199fe69737ed8d3720845a30335bdad2c15fd3 Mon Sep 17 00:00:00 2001 From: Eli <78963198+niceEli@users.noreply.github.com> Date: Thu, 16 May 2024 19:14:52 -0400 Subject: [PATCH] 1.21 The Sounds Update Added startpos and loop to sounds make sound setup better added newgrounds sounds via CUSTOM with sound ids (this took a month) removed herobrine --- bun.lockb | Bin 138855 -> 139983 bytes src/kLdtkWorlds/campaign/Empty.json | 76 +++++++++++++++++++++++++++- src/kUtils/kLdtkSceneImporter.ts | 59 ++++++++++++++++++--- src/kUtils/kNGLoader.ts | 63 +++++++++++++++++++++++ src/kUtils/kReset.ts | 7 ++- src/main.ts | 3 ++ 6 files changed, 200 insertions(+), 8 deletions(-) create mode 100644 src/kUtils/kNGLoader.ts diff --git a/bun.lockb b/bun.lockb index 53afe6f932738e22f277b62193ad0acae0ae0de0..4840584b17312183f077b644dd45d78eb366eac5 100644 GIT binary patch delta 26244 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 F{{SEs>+S#m diff --git a/src/kLdtkWorlds/campaign/Empty.json b/src/kLdtkWorlds/campaign/Empty.json index 475c926..e258e79 100644 --- a/src/kLdtkWorlds/campaign/Empty.json +++ b/src/kLdtkWorlds/campaign/Empty.json @@ -11,7 +11,7 @@ "iid": "a26276c0-7820-11ed-b6fd-ed05d55c9a75", "jsonVersion": "1.5.3", "appBuildId": 473703, - "nextUid": 226, + "nextUid": 228, "identifierStyle": "Free", "toc": [], "worldLayout": "Free", @@ -2149,6 +2149,80 @@ "allowedRefTags": [], "tilesetUid": null }, + { + "identifier": "StartPos", + "doc": "This is where the song starts (in seconds)", + "__type": "Float", + "uid": 226, + "type": "F_Float", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "ValueOnly", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": "StartPos: ", + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": 0, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": true, + "allowOutOfLevelRef": true, + "allowedRefs": "OnlySame", + "allowedRefsEntityUid": null, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Loop", + "doc": "Enable If You Want The Song To Loop", + "__type": "Bool", + "uid": 227, + "type": "F_Bool", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "NameAndValue", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": true, + "allowOutOfLevelRef": true, + "allowedRefs": "OnlySame", + "allowedRefsEntityUid": null, + "allowedRefTags": [], + "tilesetUid": null + }, { "identifier": "GroupID", "doc": "When This Group Is Active This Object Will Run Its Script Or Do Whatever The QWIK_Script Says It Will Do", diff --git a/src/kUtils/kLdtkSceneImporter.ts b/src/kUtils/kLdtkSceneImporter.ts index 9d5d05f..1f0c5b9 100644 --- a/src/kUtils/kLdtkSceneImporter.ts +++ b/src/kUtils/kLdtkSceneImporter.ts @@ -9,7 +9,7 @@ import matterRect, { import PlayerPawnCircle from "./kMatterPlayerCircle"; import kCamera from "./kCamera"; import kReset from "./kReset"; -import { GameObj, SceneDef, Vec2 } from "kaboom-beta"; +import { AudioPlay, GameObj, SceneDef, Vec2 } from "kaboom-beta"; import Matter from "matter-js"; import matterCircle from "./kMatterCircle"; import kDownloadToVar from "./kDownloadToVar"; @@ -19,6 +19,8 @@ import soundComp from "./soundComp"; import gameInfo from "../gameInfo"; import enemyMovement from "./enemyMovement"; import PlayerPawnCircleTopDown from "./kMatterCircleTopDown"; +import getNGSong from "./kNGLoader"; +import axios from "axios"; /** * Imports LDtk scene data and initializes the level, including loading sprites, setting up triggers, handling collisions, and managing game objects. @@ -29,7 +31,7 @@ import PlayerPawnCircleTopDown from "./kMatterCircleTopDown"; * @param {any} engine - The physics engine * @param {Vec2} zoomZ - The zoom vector (default: k.vec2(1, 1)) */ -export default function kLdtkSceneImporter( +export default async function kLdtkSceneImporter( sceneData, currentScene: SceneDef, nextScene: SceneDef, @@ -62,6 +64,12 @@ export default function kLdtkSceneImporter( let i; let r; + let sfxQ: AudioPlay[] = []; + + globalThis.sfxQ = sfxQ; + + let xhr = new XMLHttpRequest(); + function print(text: any) { k.debug.log(text); console.log(text); @@ -75,6 +83,20 @@ export default function kLdtkSceneImporter( printError("kReset Is Deprecated. Please Remove"); } + function kEndSongs() { + for (let i = 0; i < sfxQ.length; i++) { + const sfx = sfxQ[i]; + sfx.stop(); + } + } + + function kSetSongsPause(paused: boolean) { + for (let i = 0; i < sfxQ.length; i++) { + const sfx = sfxQ[i]; + sfx.paused = paused; + } + } + let enemys: { ent?: GameObj; unkillable?: boolean; @@ -501,15 +523,35 @@ export default function kLdtkSceneImporter( case "Play_Sound": let qsSound: string; if (entValues["Name"] === "CUSTOM") { - qsSound = entValues["Custom_Sound"]; + if ( + Number(entValues["Custom_Sound"]) == + entValues["Custom_Sound"] + ) { + qsSound = "newgroundsAudio_" + entValues["Custom_Sound"]; + } else { + qsSound = entValues["Custom_Sound"]; + } } else { qsSound = kEnumToPath.run(entValues["Name"]); } if (!sounds.includes(qsSound)) { + if (qsSound.startsWith("newgroundsAudio_")) { + //16 letter remove + let ngSound = qsSound.substring(16); + k.loadSound(qsSound, await getNGSong(ngSound)); + } sounds.push(qsSound); } - let Play_Sound_Code = 'k.play("' + String(qsSound) + '");'; + let doLoop = false; + if (entValues["Loop"] === true) { + doLoop = true; + } + let seekPos = 0; + if (typeof entValues["StartPos"] == "number") { + seekPos = entValues["StartPos"]; + } + let Play_Sound_Code = `sfxQ.push(k.play('${String(qsSound)}', {loop: ${doLoop}, seek: ${seekPos} }));`; if ( maxGroups < entValues["GroupID"] || maxGroups < entValues["NextGID"] @@ -806,6 +848,7 @@ export default function kLdtkSceneImporter( if (sessionStorage.getItem(gameInfo.internalName + "_isUGC") !== "true") { localStorage.setItem(gameInfo.internalName + "_score", String(score)); } + kEndSongs(); k.scene("nextLevel", nextScene); k.go("nextLevel"); }); @@ -815,6 +858,7 @@ export default function kLdtkSceneImporter( k.onUpdate(() => { if (isDead) { + kEndSongs(); k.go("scene"); } }); @@ -877,6 +921,7 @@ export default function kLdtkSceneImporter( "levelsize", "soundComp", "enemyMovement", + "sfxQ", ` return (async function() { ${Func} @@ -922,7 +967,8 @@ export default function kLdtkSceneImporter( levelsize, levelsize, soundComp, - enemyMovement + enemyMovement, + sfxQ ) ); @@ -969,6 +1015,7 @@ export default function kLdtkSceneImporter( if (IMC.pausing()) { const objs = k.get("*", { recursive: true }); isPaused = !isPaused; + kSetSongsPause(isPaused); print("Paused: " + isPaused); for (let i = 0; i < objs.length; i++) { const obj = objs[i]; @@ -982,5 +1029,5 @@ export default function kLdtkSceneImporter( }, "noPause", ]); - k.add([kReset(currentScene, deathScore)]); + k.add([kReset(currentScene, deathScore, kEndSongs), "noPause"]); } diff --git a/src/kUtils/kNGLoader.ts b/src/kUtils/kNGLoader.ts new file mode 100644 index 0000000..260d8e0 --- /dev/null +++ b/src/kUtils/kNGLoader.ts @@ -0,0 +1,63 @@ +export default async function getNGSong(id: string): Promise { + async function getPage(url: string): Promise { + return new Promise((resolve, reject) => { + const xhr = new XMLHttpRequest(); + xhr.open("GET", url, true); + xhr.responseType = "text"; + xhr.onload = () => { + if (xhr.status === 200) { + resolve(xhr.response); + } else { + reject(xhr.status); + } + }; + xhr.send(); + }); + } + + if (!id) { + return Promise.reject("Song ID is empty!"); + } + + try { + const response = await getPage( + `https://api.allorigins.win/get?url=https%3A%2F%2Fwww.newgrounds.com%2Faudio%2Flisten%2F${id}` + ); + const data = JSON.parse(response).contents; + const code = JSON.parse(response).status.http_code; + + if (code !== 200) { + if (code === 404) { + return Promise.reject( + "The song could not be found! Please check the song id and try again! (error 404)" + ); + } + return Promise.reject( + `Something went wrong! Please check your internet connection and try again! Error Code: ${code}` + ); + } + + let url = data.substring(data.indexOf(" { console.clear(); if (