From 6475a49bf430c87cc31bb813fa9477b615924bc3 Mon Sep 17 00:00:00 2001 From: Eric Myllyoja <ericmyllyoja@gmail.com> Date: Sun, 6 Mar 2022 03:33:12 -0500 Subject: [PATCH] Final cleanup before PR. --- .vscode/launch.json | 4 +- Project.xml | 167 ++++++++++----------- source/FreeplayState.hx | 1 - source/Note.hx | 5 - source/PlayState.hx | 117 +++------------ source/i18n/README.md | 4 +- source/modding/base/ScriptedFlxState.hx | 12 -- source/modding/base/ScriptedFlxSubState.hx | 12 -- source/play/stage/Stage.hx | 6 +- 9 files changed, 106 insertions(+), 222 deletions(-) delete mode 100644 source/modding/base/ScriptedFlxState.hx delete mode 100644 source/modding/base/ScriptedFlxSubState.hx diff --git a/.vscode/launch.json b/.vscode/launch.json index 3a9d77249..4afcd170e 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -2,13 +2,13 @@ "version": "0.2.0", "configurations": [ { - // Launch in native/CPP + // Launch in native/CPP "name": "Lime", "type": "lime", "request": "launch" }, { - // Evaluate macros with debugging enabled + // Evaluate macros with debugging enabled "name": "Haxe Eval", "type": "haxe-eval", "request": "launch" diff --git a/Project.xml b/Project.xml index 7ee04917c..bf6b741e3 100644 --- a/Project.xml +++ b/Project.xml @@ -24,14 +24,10 @@ <window if="html5" resizable="true" /> <!--Desktop-specific--> - <window if="desktop" orientation="landscape" fullscreen="false" resizable="true" vsync="false"/> + <window if="desktop" orientation="landscape" fullscreen="false" resizable="true" vsync="false" /> <!--Mobile-specific--> - <window if="mobile" orientation="landscape" fullscreen="true" width="0" height="0" resizable="false"/> - - <!-- This macro permanently silences an annoying warning. --> - <option flashStrict="False" /> - <haxeflag name="--macro" value="allowPackage('flash')" /> + <window if="mobile" orientation="landscape" fullscreen="true" width="0" height="0" resizable="false" /> <!-- _____________________________ Path Settings ____________________________ --> @@ -41,76 +37,76 @@ <classpath name="source" /> - <assets path="assets/preload" rename="assets" exclude="*.ogg" if="web"/> - <assets path="assets/preload" rename="assets" exclude="*.mp3" unless="web"/> - + <assets path="assets/preload" rename="assets" exclude="*.ogg" if="web" /> + <assets path="assets/preload" rename="assets" exclude="*.mp3" unless="web" /> + <define name="PRELOAD_ALL" unless="web" /> - <define name="NO_PRELOAD_ALL" unless="PRELOAD_ALL"/> - + <define name="NO_PRELOAD_ALL" unless="PRELOAD_ALL" /> + <section if="PRELOAD_ALL"> - <library name="songs" preload="true" /> - <library name="shared" preload="true" /> + <library name="songs" preload="true" /> + <library name="shared" preload="true" /> <library name="tutorial" preload="true" /> - <library name="week1" preload="true" /> - <library name="week2" preload="true" /> - <library name="week3" preload="true" /> - <library name="week4" preload="true" /> - <library name="week5" preload="true" /> - <library name="week6" preload="true" /> - <library name="week7" preload="true" /> - <library name="week8" preload="true" /> + <library name="week1" preload="true" /> + <library name="week2" preload="true" /> + <library name="week3" preload="true" /> + <library name="week4" preload="true" /> + <library name="week5" preload="true" /> + <library name="week6" preload="true" /> + <library name="week7" preload="true" /> + <library name="week8" preload="true" /> </section> - + <section if="NO_PRELOAD_ALL"> - <library name="songs" preload="false" /> - <library name="shared" preload="false" /> + <library name="songs" preload="false" /> + <library name="shared" preload="false" /> <library name="tutorial" preload="false" /> - <library name="week1" preload="false" /> - <library name="week2" preload="false" /> - <library name="week3" preload="false" /> - <library name="week4" preload="false" /> - <library name="week5" preload="false" /> - <library name="week6" preload="false" /> - <library name="week7" preload="false" /> - <library name="week8" preload="false" /> + <library name="week1" preload="false" /> + <library name="week2" preload="false" /> + <library name="week3" preload="false" /> + <library name="week4" preload="false" /> + <library name="week5" preload="false" /> + <library name="week6" preload="false" /> + <library name="week7" preload="false" /> + <library name="week8" preload="false" /> </section> - - <assets path="assets/songs" library="songs" exclude="*.fla|*.ogg" if="web" /> - <assets path="assets/songs" library="songs" exclude="*.fla|*.mp3" unless="web"/> - <assets path="assets/shared" library="shared" exclude="*.fla|*.ogg" if="web"/> - <assets path="assets/shared" library="shared" exclude="*.fla|*.mp3" unless="web"/> - <assets path="assets/tutorial" library="tutorial" exclude="*.fla|*.ogg" if="web"/> - <assets path="assets/tutorial" library="tutorial" exclude="*.fla|*.mp3" unless="web"/> - <assets path="assets/week1" library="week1" exclude="*.fla|*.ogg" if="web"/> - <assets path="assets/week1" library="week1" exclude="*.fla|*.mp3" unless="web"/> - <assets path="assets/week2" library="week2" exclude="*.fla|*.ogg" if="web"/> - <assets path="assets/week2" library="week2" exclude="*.fla|*.mp3" unless="web"/> - <assets path="assets/week3" library="week3" exclude="*.fla|*.ogg" if="web"/> - <assets path="assets/week3" library="week3" exclude="*.fla|*.mp3" unless="web"/> - <assets path="assets/week4" library="week4" exclude="*.fla|*.ogg" if="web"/> - <assets path="assets/week4" library="week4" exclude="*.fla|*.mp3" unless="web"/> - <assets path="assets/week5" library="week5" exclude="*.fla|*.ogg" if="web"/> - <assets path="assets/week5" library="week5" exclude="*.fla|*.mp3" unless="web"/> - <assets path="assets/week6" library="week6" exclude="*.fla|*.ogg" if="web"/> - <assets path="assets/week6" library="week6" exclude="*.fla|*.mp3" unless="web"/> - <assets path="assets/week7" library="week7" exclude="*.fla|*.ogg" if="web"/> - <assets path="assets/week7" library="week7" exclude="*.fla|*.mp3" unless="web"/> - <assets path="assets/week8" library="week8" exclude="*.fla|*.ogg" if="web"/> - <assets path="assets/week8" library="week8" exclude="*.fla|*.mp3" unless="web"/> - + + <assets path="assets/songs" library="songs" exclude="*.fla|*.ogg" if="web" /> + <assets path="assets/songs" library="songs" exclude="*.fla|*.mp3" unless="web" /> + <assets path="assets/shared" library="shared" exclude="*.fla|*.ogg" if="web" /> + <assets path="assets/shared" library="shared" exclude="*.fla|*.mp3" unless="web" /> + <assets path="assets/tutorial" library="tutorial" exclude="*.fla|*.ogg" if="web" /> + <assets path="assets/tutorial" library="tutorial" exclude="*.fla|*.mp3" unless="web" /> + <assets path="assets/week1" library="week1" exclude="*.fla|*.ogg" if="web" /> + <assets path="assets/week1" library="week1" exclude="*.fla|*.mp3" unless="web" /> + <assets path="assets/week2" library="week2" exclude="*.fla|*.ogg" if="web" /> + <assets path="assets/week2" library="week2" exclude="*.fla|*.mp3" unless="web" /> + <assets path="assets/week3" library="week3" exclude="*.fla|*.ogg" if="web" /> + <assets path="assets/week3" library="week3" exclude="*.fla|*.mp3" unless="web" /> + <assets path="assets/week4" library="week4" exclude="*.fla|*.ogg" if="web" /> + <assets path="assets/week4" library="week4" exclude="*.fla|*.mp3" unless="web" /> + <assets path="assets/week5" library="week5" exclude="*.fla|*.ogg" if="web" /> + <assets path="assets/week5" library="week5" exclude="*.fla|*.mp3" unless="web" /> + <assets path="assets/week6" library="week6" exclude="*.fla|*.ogg" if="web" /> + <assets path="assets/week6" library="week6" exclude="*.fla|*.mp3" unless="web" /> + <assets path="assets/week7" library="week7" exclude="*.fla|*.ogg" if="web" /> + <assets path="assets/week7" library="week7" exclude="*.fla|*.mp3" unless="web" /> + <assets path="assets/week8" library="week8" exclude="*.fla|*.ogg" if="web" /> + <assets path="assets/week8" library="week8" exclude="*.fla|*.mp3" unless="web" /> + <!-- <assets path='example_mods' rename='mods' embed='false'/> --> - <assets path='example_mods' rename='mods' embed='false' exclude="*.md"/> + <assets path='example_mods' rename='mods' embed='false' exclude="*.md" /> <assets path='art/readme.txt' rename='do NOT readme.txt' /> - - <assets path="CHANGELOG.md" rename='changelog.txt'/> + + <assets path="CHANGELOG.md" rename='changelog.txt' /> <!-- NOTE FOR FUTURE SELF SINCE FONTS ARE ALWAYS FUCKY TO FIX ONE OF THEM, I CONVERTED IT TO OTF. DUNNO IF YOU NEED TO THEN UHHH I USED THE NAME OF THE FONT WITH SETFORMAT() ON THE TEXT!!! NOT USING A DIRECT THING TO THE ASSET!!! --> - <assets path="assets/fonts" embed='true'/> + <assets path="assets/fonts" embed='true' /> <!-- _______________________________ Libraries ______________________________ --> <haxelib name="openfl" /> @@ -124,26 +120,27 @@ <!--In case you want to use the ui package--> <haxelib name="flixel-ui" /> <!--haxelib name="newgrounds" unless="switch"/> --> - <haxelib name="faxe" if='switch'/> + <haxelib name="faxe" if='switch' /> <haxelib name="polymod" /> <haxelib name="firetongue" /> - + <!-- <haxelib name="colyseus"/> --> <!-- <haxelib name="colyseus-websocket" /> --> <!-- <haxelib name="newgrounds"/> --> - <haxelib name="hxcpp-debug-server" if="desktop debug"/> - + <haxelib name="hxcpp-debug-server" if="desktop debug" /> + <!-- swf stufffff --> <!-- <haxelib name="swf"/> --> <!-- <library path="assets/tanky.swf" preload="true"/> --> <!-- <library path="assets/tankBG.swf" preload="true"/> --> - + <!-- <haxelib name="flixel-animate" /> --> <!-- <haxelib name="spinehaxe" /> --> <!-- https://github.com/ninjamuffin99/Flixel-Animate-Atlas-Player --> - <!--<haxelib name="discord_rpc" if="cpp"/> --> <!-- foesn't work with neko --> + <!--<haxelib name="discord_rpc" if="cpp"/> --> + <!-- foesn't work with neko --> <!-- <haxelib name="hxcpp-debug-server" if="desktop"/> --> <!-- <haxelib name="markdown" /> --> @@ -184,7 +181,7 @@ <!--Enable this for Nape release builds for a serious peformance improvement--> <haxedef name="NAPE_RELEASE_BUILD" unless="debug" /> - <haxeflag name="-no-traces" unless="debug" /> + <haxeflag name="-no-traces" unless="debug" /> <!-- HScript relies heavily on Reflection, which means we can't use DCE. --> <haxeflag name="--dce no" /> <haxedef name="HXCPP_CHECK_POINTER" /> @@ -193,10 +190,10 @@ <!-- _________________________________ Custom _______________________________ --> <!--Place custom nodes like icons here (higher priority to override the HaxeFlixel icon)--> - - <icon path="art/icon16.png" size='16'/> - <icon path="art/icon32.png" size='32'/> - <icon path="art/icon64.png" size='64'/> + + <icon path="art/icon16.png" size='16' /> + <icon path="art/icon32.png" size='32' /> + <icon path="art/icon64.png" size='64' /> <icon path="art/iconOG.png" /> <!-- @@ -207,31 +204,31 @@ <haxeflag name="--macro" value="include('modding.base')" /> <!-- <haxedef name="SKIP_TO_PLAYSTATE" if="debug" /> --> - - <haxedef name="CAN_OPEN_LINKS" unless="switch"/> - <haxedef name="CAN_CHEAT" if="switch debug"/> - + + <haxedef name="CAN_OPEN_LINKS" unless="switch" /> + <haxedef name="CAN_CHEAT" if="switch debug" /> + <!-- Skip the Intro --> <section if="debug"> <!-- Starts the game at the specified week, at the first song --> <!-- <haxedef name="week" value="1" if="debug"/> --> - + <!-- Starts the game at the specified song --> <!-- <haxedef name="song" value="bopeebo" if="debug"/> --> - + <!-- Difficulty, only used for week or song, defaults to 1 --> <!-- <haxedef name="dif" value="2" if="debug"/> --> </section> - + <!-- <haxedef name="CLEAR_INPUT_SAVE"/> --> - + <section if="newgrounds"> <!-- Enables Ng.core.verbose --> <!-- <haxedef name="NG_VERBOSE" /> --> - + <!-- Enables a NG debug session, so medals don't permently unlock --> <!-- <haxedef name="NG_DEBUG" /> --> - + <!-- pretends that the saved session Id was expired, forcing the reconnect prompt --> <!-- <haxedef name="NG_FORCE_EXPIRED_SESSION" if="debug" /> --> </section> @@ -239,8 +236,8 @@ <!-- <prebuild haxe="trace('prebuilding');"/> --> <!-- <postbuild haxe="art/Postbuild.hx"/> --> - <config:ios allow-provisioning-updates="true" team-id=""/> - + <config:ios allow-provisioning-updates="true" team-id="" /> + <!-- Options for Polymod --> <section if="polymod"> <!-- Turns on additional debug logging. --> @@ -266,10 +263,10 @@ <section if='TOOLS'> <!-- Compiles tool for old song conversion shit --> <!-- Assumes you use it on windows/desktop!!!! --> - <postbuild command='haxe -main art/SongConverter.hx --cs export/songShit'/> + <postbuild command='haxe -main art/SongConverter.hx --cs export/songShit' /> <assets path='export/songShit/bin/SongConverter.exe' rename='SongConverter.exe' /> <!-- <postbuild command='ren export/songShit/bin export/songShit/tools '/> --> <!-- <postbuild command='move export/songShit/tools export/release/windows/bin'/> --> </section> -</project> +</project> \ No newline at end of file diff --git a/source/FreeplayState.hx b/source/FreeplayState.hx index 58a163b08..b56f9fc95 100644 --- a/source/FreeplayState.hx +++ b/source/FreeplayState.hx @@ -518,7 +518,6 @@ class FreeplayState extends MusicBeatSubstate if (controls.BACK) { FlxG.sound.play(Paths.sound('cancelMenu')); - // close(); FlxG.switchState(new MainMenuState()); } diff --git a/source/Note.hx b/source/Note.hx index f5ce550c0..529b020e9 100644 --- a/source/Note.hx +++ b/source/Note.hx @@ -1,17 +1,12 @@ package; import flixel.FlxSprite; -import flixel.graphics.frames.FlxAtlasFrames; import flixel.math.FlxMath; -import flixel.util.FlxColor; -import flixel.util.FlxTimer; import shaderslmfao.ColorSwap; import ui.PreferencesMenu; using StringTools; -import polymod.format.ParseRules.TargetSignatureElement; - class Note extends FlxSprite { public var data = new NoteData(); diff --git a/source/PlayState.hx b/source/PlayState.hx index 103aa05ac..07b35cce3 100644 --- a/source/PlayState.hx +++ b/source/PlayState.hx @@ -1,25 +1,17 @@ package; -import shaderslmfao.WiggleEffect; -import play.stage.StageData; -import play.stage.Stage; -import Note; -import Section.SwagSection; -import SongLoad.SwagSong; import charting.ChartingState; +import flixel.addons.effects.FlxTrail; +import flixel.addons.transition.FlxTransitionableState; import flixel.FlxCamera; import flixel.FlxObject; import flixel.FlxSprite; import flixel.FlxState; import flixel.FlxSubState; -import flixel.addons.effects.FlxTrail; -import flixel.addons.transition.FlxTransitionableState; import flixel.group.FlxGroup; -import flixel.math.FlxAngle; import flixel.math.FlxMath; import flixel.math.FlxPoint; import flixel.math.FlxRect; -import flixel.system.FlxSound; import flixel.text.FlxText; import flixel.tweens.FlxEase; import flixel.tweens.FlxTween; @@ -30,9 +22,12 @@ import flixel.util.FlxTimer; import haxe.Json; import lime.ui.Haptic; import lime.utils.Assets; -import shaderslmfao.BuildingShaders; +import Note; +import play.stage.Stage; +import play.stage.StageData; +import Section.SwagSection; import shaderslmfao.ColorSwap; -import shaderslmfao.OverlayBlend; +import SongLoad.SwagSong; import ui.PopUpStuff; import ui.PreferencesMenu; @@ -106,11 +101,6 @@ class PlayState extends MusicBeatState public static var seenCutscene:Bool = false; - var halloweenBG:FlxSprite; - var isHalloween:Bool = false; - - var foregroundSprites:FlxTypedGroup<BGSprite>; - var talking:Bool = true; var songScore:Int = 0; var scoreTxt:FlxText; @@ -158,8 +148,6 @@ class PlayState extends MusicBeatState Conductor.mapBPMChanges(SONG); Conductor.changeBPM(SONG.bpm); - foregroundSprites = new FlxTypedGroup<BGSprite>(); - // dialogue init shit, just for week 5 really (for now...?) switch (SONG.song.toLowerCase()) { @@ -175,11 +163,9 @@ class PlayState extends MusicBeatState initDiscord(); #end - initStageBullshit(); + initStage(); initCharacters(); - add(foregroundSprites); - if (dialogue != null) { doof = new DialogueBox(false, dialogue); @@ -368,56 +354,35 @@ class PlayState extends MusicBeatState FlxG.cameras.add(camHUD, false); } - // a lot of this stage code will be cleaned up more when the stage load shit is more fleshed out! For now it's still a lot of hardcoded shit!! - function initStageBullshit() + function initStage() { // TODO: Move stageId to the song file. switch (SONG.song.toLowerCase()) { case 'spookeez' | 'monster' | 'south': curStageId = "spookyMansion"; - loadStage(curStageId); - case 'pico' | 'blammed' | 'philly': curStageId = 'phillyTrain'; - loadStage(curStageId); - case "milf" | 'satin-panties' | 'high': curStageId = 'limoRide'; - loadStage(curStageId); - case "cocoa" | 'eggnog': curStageId = 'mallXmas'; - loadStage(curStageId); - case 'winter-horrorland': curStageId = 'mallEvil'; - loadStage(curStageId); - case 'pyro': curStageId = 'pyro'; - loadStage(curStageId); - case 'senpai' | 'roses': curStageId = 'school'; - loadStage(curStageId); - case "darnell": curStageId = 'phillyStreets'; - loadStage(curStageId); - case 'thorns': curStageId = 'schoolEvil'; - loadStage(curStageId); - case 'guns' | 'stress' | 'ugh': curStageId = 'tankmanBattlefield'; - loadStage(curStageId); - default: curStageId = "mainStage"; - loadStage(curStageId); } + loadStage(curStageId); } function initCharacters() @@ -640,6 +605,8 @@ class PlayState extends MusicBeatState * * This is useful for when you want to edit a stage without reloading the whole game. * Reloading works on both the JSON and the HXC, if applicable. + * + * Call this by pressing F5 on a debug build. */ function debug_refreshStages() { @@ -687,45 +654,6 @@ class PlayState extends MusicBeatState } } - function loadStageOld(path:String) - { - curStageId = path; - - var json = Assets.getText(Paths.file('data/stagedata/${curStageId}Stage.json')); - - var parsed:StageData = cast Json.parse(json); - - defaultCamZoom *= parsed.camZoom; - - for (prop in parsed.propsBackground) - { - var funnyProp:BGSprite = new BGSprite(prop.path, prop.x, prop.y, prop.scrollX, prop.scrollY, null, false, false); - - if (prop.animBullshit != null) - funnyProp.setupSparrow(prop.path, prop.animBullshit.anims, prop.animBullshit.isLooping); - else - funnyProp.justLoadImage(prop.path); - - if (prop.updateHitbox != null && !prop.updateHitbox) - { - funnyProp.scale.set(prop.scaleX, prop.scaleY); - } - else - { - funnyProp.setGraphicSize(Std.int(funnyProp.width * prop.scaleX), Std.int(funnyProp.height * prop.scaleY)); - funnyProp.updateHitbox(); - } - - if (prop.antialiasing != null) - funnyProp.antialiasing = prop.antialiasing; - - funnyProp.scrollFactor.set(prop.scrollX, prop.scrollY); - add(funnyProp); - } - - trace(parsed.propsBackground); - } - function gunsIntro() { inCutscene = true; @@ -1384,8 +1312,6 @@ class PlayState extends MusicBeatState var swagNote:Note = new Note(daStrumTime, daNoteData, oldNote); swagNote.data = songNotes; - // swagNote.data.sustainLength = songNotes.sustainLength; - // swagNote.data.altNote = songNotes.altNote; swagNote.scrollFactor.set(0, 0); var susLength:Float = swagNote.data.sustainLength; @@ -1728,9 +1654,11 @@ class PlayState extends MusicBeatState persistentDraw = true; paused = true; + // There is a 1/1000 change to use a special pause menu. + // This prevents the player from resuming, but that's the point. + // It's a reference to Gitaroo Man, which doesn't let you pause the game. if (FlxG.random.bool(1 / 1000)) { - // gitaroo man easter egg FlxG.switchState(new GitarooPause()); } else @@ -1762,7 +1690,6 @@ class PlayState extends MusicBeatState if (FlxG.keys.justPressed.EIGHT) FlxG.switchState(new ui.animDebugShit.DebugBoundingState()); - // get it like refreshing a browser if (FlxG.keys.justPressed.F5) debug_refreshStages(); @@ -2001,11 +1928,7 @@ class PlayState extends MusicBeatState curStage.onNoteMiss(daNote); } health -= 0.0775; - // Practice mode doesn't mute the vocals on miss. - if (!practiceMode) - { - vocals.volume = 0; - } + vocals.volume = 0; killCombo(); } @@ -2497,12 +2420,8 @@ class PlayState extends MusicBeatState if (!practiceMode) songScore -= 10; - // Practice mode doesn't mute the vocals on miss. - if (!practiceMode) - { - vocals.volume = 0; - FlxG.sound.play(Paths.soundRandom('missnote', 1, 3), FlxG.random.float(0.1, 0.2)); - } + vocals.volume = 0; + FlxG.sound.play(Paths.soundRandom('missnote', 1, 3), FlxG.random.float(0.1, 0.2)); /* boyfriend.stunned = true; diff --git a/source/i18n/README.md b/source/i18n/README.md index d71d55305..d55a8f41c 100644 --- a/source/i18n/README.md +++ b/source/i18n/README.md @@ -1 +1,3 @@ -i18n is short for internationalization. \ No newline at end of file +# i18n + +This package contains functions used for internationalization (i18n). diff --git a/source/modding/base/ScriptedFlxState.hx b/source/modding/base/ScriptedFlxState.hx deleted file mode 100644 index b7d9f0504..000000000 --- a/source/modding/base/ScriptedFlxState.hx +++ /dev/null @@ -1,12 +0,0 @@ -package modding.base; - -import flixel.FlxState; -import modding.IHook; - -// TODO: Polymod is having trouble with this one. -// Maybe there's a type parameter that's nested too much? -// @:hscriptClass -// class ScriptedFlxState extends FlxState implements IHook -// { -// // No body needed for this class, it's magic ;) -// } diff --git a/source/modding/base/ScriptedFlxSubState.hx b/source/modding/base/ScriptedFlxSubState.hx deleted file mode 100644 index 23c14e01a..000000000 --- a/source/modding/base/ScriptedFlxSubState.hx +++ /dev/null @@ -1,12 +0,0 @@ -package modding.base; - -import flixel.FlxSubState; -import modding.IHook; - -// TODO: Polymod is having trouble with this one. -// Maybe there's a type parameter that's nested too much? -// @:hscriptClass -// class ScriptedFlxSubState extends FlxSubState implements IHook -// { -// // No body needed for this class, it's magic ;) -// } diff --git a/source/play/stage/Stage.hx b/source/play/stage/Stage.hx index 617974f85..829376b0a 100644 --- a/source/play/stage/Stage.hx +++ b/source/play/stage/Stage.hx @@ -201,13 +201,11 @@ class Stage extends FlxSpriteGroup implements IHook } /** - * A function that gets called every frame. - * @param elapsed The number of + * A function that should get called every frame. */ public function onUpdate(elapsed:Float):Void { // Override me in your scripted stage to perform custom behavior! - // trace('Stage.onUpdate(${elapsed})'); } /** @@ -303,8 +301,6 @@ class Stage extends FlxSpriteGroup implements IHook /** * Retrieves a given character from the stage. - * @param id - * @return Character */ public function getCharacter(id:String):Character {