From 92176023db72a118357b15aae26b218d694c44ce Mon Sep 17 00:00:00 2001 From: NeeEoo Date: Sun, 11 Jun 2023 20:26:55 +0200 Subject: [PATCH] Fixed chart editor animate atlases --- TODO.md | 6 ++- .../editors/character/CharacterEditor.hx | 45 +++++++++---------- .../editors/character/CharacterSelection.hx | 8 ++-- .../editors/character/DeleteAnimScreen.hx | 2 +- .../funkin/editors/character/HelpControls.hx | 6 ++- .../editors/character/SelectAnimUpdate.hx | 8 ++-- .../editors/character/UpdateAnimScreen.hx | 2 +- 7 files changed, 41 insertions(+), 36 deletions(-) diff --git a/TODO.md b/TODO.md index 95daf308..e5dc40d8 100644 --- a/TODO.md +++ b/TODO.md @@ -16,6 +16,11 @@ - [x] Metadata Editing - [ ] Custom Notes - [ ] Step based zooming +- [ ] Character Editor + - [ ] Change ghost anim + - [ ] Make gf characters be positioned correctly + - [ ] Make it so dragging the character moves the offset + - [ ] Disable volume controls when selecting stuff - [ ] Use latest hxCodec - [ ] Re-export gf-christmas, gf-car and gf-tankmen with padding - [ ] Multiple state scripts & Multiple global scripts @@ -26,7 +31,6 @@ - [ ] Add note offset - [ ] Dialogue - [ ] Finish Base Game port -- [ ] Character Editor - [ ] Add credits - [ ] Verbose mode (`--verbose`) - [ ] Tooltips diff --git a/source/funkin/editors/character/CharacterEditor.hx b/source/funkin/editors/character/CharacterEditor.hx index e2515529..22bbd600 100644 --- a/source/funkin/editors/character/CharacterEditor.hx +++ b/source/funkin/editors/character/CharacterEditor.hx @@ -59,9 +59,8 @@ class CharacterEditor extends UIState editorCamera = FlxG.camera; uiCamera = new FlxCamera(); uiCamera.bgColor = 0; - FlxG.cameras.add(uiCamera); + FlxG.cameras.add(uiCamera, false); FlxG.camera.follow(camFollow); - FlxCamera.defaultCameras = [editorCamera]; // Add Stage and Centered Cross add(stage); @@ -136,9 +135,10 @@ class CharacterEditor extends UIState function resortAnims(animations:Array) { + // TODO: add support for danceLeft danceRight if (getAnimIndex("idle") != 0) { - var oldanims = animations; + var oldanims = animations.copy(); animations.clear(); animations.push(searchAnim("idle", oldanims)); for (anim in oldanims) @@ -348,8 +348,11 @@ class CharacterEditor extends UIState } ofs_cross.clear(); - var horizontal_cross = new FlxSprite(0, 0).makeGraphic(2000, 5); - var vertical_cross = new FlxSprite(0, 0).makeGraphic(5, 2000); + + var x = -800; + + var horizontal_cross = new FlxSprite(x, -70).makeSolid(2000, 5); + var vertical_cross = new FlxSprite(x, 0).makeSolid(5, 2000); horizontal_cross.y += (vertical_cross.height / 2); vertical_cross.x += (horizontal_cross.width / 2); ofs_cross.add(horizontal_cross); @@ -503,7 +506,7 @@ class CharacterEditor extends UIState }*/ ghostChar.color = 0xFF666688; ghostChar.antialiasing = char.antialiasing; - ghostChar.playAnim(char.animation.curAnim.name, true); + ghostChar.playAnim(char.characterData.animations[curAnim].name, true); } function controlCharacter() @@ -514,15 +517,18 @@ class CharacterEditor extends UIState FlxG.keys.justPressed.UP, FlxG.keys.justPressed.DOWN ]; + var holdShift = FlxG.keys.pressed.SHIFT; + var holdAlt = FlxG.keys.pressed.ALT; for (i in 0...controlArray.length) { if (controlArray[i]) { - var holdShift = FlxG.keys.pressed.SHIFT; - var multiplier = 1; + var multiplier:Float = 1; if (holdShift) multiplier = 10; + if (holdAlt) + multiplier = 0.1; var negaMult:Int = 1; if (i % 2 == 1) @@ -558,11 +564,9 @@ class CharacterEditor extends UIState new FlxPoint(char.characterData.animations[curAnim].x, char.characterData.animations[curAnim].y)); */ char.playAnim(char.characterData.animations[curAnim].name, false); - if (ghostChar.animation.curAnim != null - && char.animation.curAnim != null - && char.animation.curAnim.name == ghostChar.animation.curAnim.name) + if (char.getAnimName() != null && char.getAnimName() == ghostChar.getAnimName()) { - ghostChar.playAnim(char.animation.curAnim.name, false); + ghostChar.playAnim(char.getAnimName(), false); } } } @@ -611,19 +615,13 @@ class CharacterEditor extends UIState var forward = (FlxG.keys.justPressed.L); var backwards = (FlxG.keys.justPressed.K); - var changelimit = char.characterData.animations.length; - if (forward || backwards) { - if (forward) - curAnim += 1; - else if (backwards) - curAnim -= 1; + var changeLimit = char.characterData.animations.length; + curAnim = FlxMath.wrap(curAnim + (forward ? 1 : -1), 0, changeLimit-1); - if (curAnim >= changelimit) - curAnim = 0; - else if (curAnim < 0) - curAnim = changelimit - 1; + trace(curAnim); + trace(char.characterData.animations[curAnim]); char.playAnim(char.characterData.animations[curAnim].name, false); playingAnim.text = 'Animation:\n${char.characterData.animations[curAnim].name}'; @@ -694,7 +692,6 @@ class CharacterEditor extends UIState function set_camZoom(value:Float):Float { editorCamera.zoom = value; - camZoom = value; - return value; + return camZoom = value; } } diff --git a/source/funkin/editors/character/CharacterSelection.hx b/source/funkin/editors/character/CharacterSelection.hx index fdc7de44..1d26f6a6 100644 --- a/source/funkin/editors/character/CharacterSelection.hx +++ b/source/funkin/editors/character/CharacterSelection.hx @@ -40,7 +40,7 @@ class CharacterSelection extends EditorTreeMenu if (optionsTree.members.length > 1) { // selected a song // small flashbang var color:FlxColor = characterList.characters[main.curSelected].iconColor.getDefault(0xFFFFFFFF); - + bg.colorTransform.redOffset = 0.25 * color.red; bg.colorTransform.greenOffset = 0.25 * color.green; bg.colorTransform.blueOffset = 0.25 * color.blue; @@ -70,16 +70,16 @@ class CharactersList for (s in charactersFound) if (s.endsWith(".xml")) characters.push(CharacterConfig.loadCharacterData(s.replace(".xml", ""))); - return false; + return true; } - return true; + return false; } public static function get() { var characterList = new CharactersList(); - if (characterList.getCharactersFromSource(MODS)) + if (!characterList.getCharactersFromSource(MODS)) characterList.getCharactersFromSource(SOURCE); return characterList; diff --git a/source/funkin/editors/character/DeleteAnimScreen.hx b/source/funkin/editors/character/DeleteAnimScreen.hx index 83da3351..ec5d6299 100644 --- a/source/funkin/editors/character/DeleteAnimScreen.hx +++ b/source/funkin/editors/character/DeleteAnimScreen.hx @@ -44,7 +44,7 @@ class DeleteAnimScreen extends UISubstateWindow close(); }); animButtons.add(newbutton); - y_adder += 60; + y_adder += 45; } closeButton = new UIButton(windowSpr.x - 120, windowSpr.y + 20, "Close", function() { diff --git a/source/funkin/editors/character/HelpControls.hx b/source/funkin/editors/character/HelpControls.hx index 8340c49f..a2d6855e 100644 --- a/source/funkin/editors/character/HelpControls.hx +++ b/source/funkin/editors/character/HelpControls.hx @@ -15,7 +15,11 @@ class HelpControls extends UISubstateWindow super.create(); var helpText = new UIText(windowSpr.x + 25, windowSpr.y + 240, -1, "Left/Right/Up/Down Arrow: To change the offset of the current\nplaying animation.\n - Left mouse button on the character: Change character's position.", 24); +Left mouse button on the character: Change character's position.\nK to change to prev anim, L to change to new anim +Space to play animation + +I to zoom in +O to zoom out", 24); add(helpText); var closeButton = new UIButton(helpText.x, helpText.y + 160, "Close", function() diff --git a/source/funkin/editors/character/SelectAnimUpdate.hx b/source/funkin/editors/character/SelectAnimUpdate.hx index c097b922..576f0189 100644 --- a/source/funkin/editors/character/SelectAnimUpdate.hx +++ b/source/funkin/editors/character/SelectAnimUpdate.hx @@ -36,15 +36,15 @@ class SelectAnimUpdate extends UISubstateWindow add(animButtons); var y_ofs = 60; - + for (anim in char.characterData.animations) { var newbutton = new UIButton(animButtons.x - 550, animButtons.y + y_ofs, anim.name, function() { - open_update_window(anim); + openUpdateWindow(anim); }); animButtons.add(newbutton); - y_ofs += 60; + y_ofs += 45; } cancelButton = new UIButton(windowSpr.x - 10, windowSpr.y + 20, "Cancel", function() @@ -55,7 +55,7 @@ class SelectAnimUpdate extends UISubstateWindow add(cancelButton); } - public function open_update_window(anim:AnimData) + public function openUpdateWindow(anim:AnimData) { openSubState(new UpdateAnimScreen(this.char, this.ghostChar, anim, this.editor)); } diff --git a/source/funkin/editors/character/UpdateAnimScreen.hx b/source/funkin/editors/character/UpdateAnimScreen.hx index 39736b2c..e04ccd87 100644 --- a/source/funkin/editors/character/UpdateAnimScreen.hx +++ b/source/funkin/editors/character/UpdateAnimScreen.hx @@ -117,7 +117,7 @@ class UpdateAnimScreen extends UISubstateWindow animData.indices.push(i); } } - + XMLUtil.addAnimToSprite(char, animData); char.characterData.animations[selectedAnimIndex] = animData; char.playAnim(name, true);