@@ -647,6 +647,7 @@ class StageEditor extends UIState {
647647 saveToXml (xml , " folder" , stage .spritesParentFolder );
648648 saveToXml (xml , " startCamPosX" , stage .startCam .x , 0 );
649649 saveToXml (xml , " startCamPosY" , stage .startCam .y , 0 );
650+ xml .attributeOrder = [" name" , " folder" , " zoom" , " startCamPosX" , " startCamPosY" ];
650651
651652 for (prop in stage .extra .keys ())
652653 if (! Stage .DEFAULT_ATTRIBUTES .contains (prop ) && ! prop .startsWith (" stageEditor." ))
@@ -655,94 +656,19 @@ class StageEditor extends UIState {
655656 var group : Xml = null ;
656657 var curGroup : String = null ;
657658
658- for (sprite in getSprites ()) {
659- var button : StageElementButton = sprite .extra .get (exID (" button" ));
660- var newNode : Xml = null ;
659+ for (button in stageSpritesWindow .buttons .members ) {
660+ button .cleanupXML ();
661661 var sprite : FunkinSprite = button .getSprite ();
662- if (button is StageSolidButton ) {
663- var button : StageSolidButton = cast button ;
664- var node : Access = cast sprite .extra .get (exID (" node" ));
665- Logs .trace (" SOLID / BOX isnt implemented yet!" );
666- } else if (button is StageSpriteButton ) {
667- var button : StageSpriteButton = cast button ;
668- var node : Access = cast sprite .extra .get (exID (" node" ));
669- var spriteXML = Xml .createElement (" sprite" );
670- saveToXml (spriteXML , " name" , sprite .name );
671- saveToXml (spriteXML , " x" , sprite .x , 0 );
672- saveToXml (spriteXML , " y" , sprite .y , 0 );
673- saveToXml (spriteXML , " sprite" , sprite .extra .get (exID (" imageFile" )));
674- savePointToXml (spriteXML , " scale" , sprite .scale , 1 );
675- savePointToXml (spriteXML , " scroll" , sprite .scrollFactor , 1 );
676- saveToXml (spriteXML , " skewx" , sprite .skew .x , 0 );
677- saveToXml (spriteXML , " skewy" , sprite .skew .y , 0 );
678- saveToXml (spriteXML , " alpha" , sprite .alpha , 1 );
679- saveToXml (spriteXML , " angle" , sprite .angle , 0 );
680- // saveToXml(spriteXML, "graphicSize", sprite.width, sprite.width);
681- // saveToXml(spriteXML, "graphicSizex", sprite.height, sprite.height);
682- // saveToXml(spriteXML, "graphicSizey", sprite.height, sprite.height);
683- saveToXml (spriteXML , " zoomfactor" , sprite .zoomFactor , 1 );
684- saveToXml (spriteXML , " updateHitbox" , getBoolOfNode (node , " updateHitbox" ), false );
685- saveToXml (spriteXML , " antialiasing" , sprite .antialiasing , true );
686- // saveToXml(spriteXML, "width", sprite.width);
687- // saveToXml(spriteXML, "height", sprite.height);
688- saveToXml (spriteXML , " playOnCountdown" , getBoolOfNode (node , " playOnCountdown" ), false );
689- saveToXml (spriteXML , " interval" , node .getAtt (" beatInterval" ), 2 );
690- saveToXml (spriteXML , " interval" , node .getAtt (" interval" ), 2 );
691- saveToXml (spriteXML , " beatOffset" , node .getAtt (" beatOffset" ), 0 );
692- if (sprite .spriteAnimType != LOOP )
693- spriteXML .set (" type" , sprite .spriteAnimType .toString ());
694- saveToXml (spriteXML , " color" , sprite .color .toWebString (), " #FFFFFF" );
695- @:privateAccess saveToXml (spriteXML , " blend" , sprite .blend .toString (), null );
696- // TODO: save custom parameters
697- // saveToXml(spriteXML, "flipX", sprite.flipX, false);
698- if (node .hasNode .anim ) for (animNode in node .nodes .anim )
699- spriteXML .addChild (animNode .x );
700- newNode = spriteXML ;
701- } else if (button is StageCharacterButton ) {
702- var button : StageCharacterButton = cast button ;
703- var char : Character = button .char ;
704- var node : Access = cast char .extra .get (exID (" node" ));
705- var defaultPos = Stage .getDefaultPos (char .name .replace (" NO_DELETE_" , " " ));
706- var charXML : Xml = Xml .createElement (node .name );
707- if (! char .name .startsWith (" NO_DELETE_" ))
708- saveToXml (charXML , " name" , char .name );
709- saveToXml (charXML , " x" , char .x , defaultPos .x );
710- saveToXml (charXML , " y" , char .y , defaultPos .y );
711- saveToXml (charXML , " camxoffset" , char .extra .get (exID (" camX" )), 0 );
712- saveToXml (charXML , " camyoffset" , char .extra .get (exID (" camY" )), 0 );
713- saveToXml (charXML , " skewx" , char .skew .x , 0 );
714- saveToXml (charXML , " skewy" , char .skew .y , 0 );
715- saveToXml (charXML , " spacingx" , char .extra .get (exID (" spacingX" )), 20 );
716- saveToXml (charXML , " spacingy" , char .extra .get (exID (" spacingY" )), 0 );
717- saveToXml (charXML , " alpha" , char .alpha / 0.75 , 1 );
718- saveToXml (charXML , " angle" , char .angle , 0 );
719- saveToXml (charXML , " zoomfactor" , char .zoomFactor , 1 );
720- saveToXml (charXML , " flipX" , char .isPlayer , defaultPos .flip );
721- savePointToXml (charXML , " scroll" , char .scrollFactor , defaultPos .scroll );
722- savePointToXml (charXML , " scale" , char .scale .scaleNew (button .charScale ), 1 );
723- // TODO: save custom parameters
724- newNode = charXML ;
725- } else if (button is StageUnknownButton ) {
726- var button : StageUnknownButton = cast button ;
727- newNode = button .xml .x ;
728- }
729- else {
730- Logs .trace (" Unknown Stage Type : " + Type .getClassName (Type .getClass (button )));
731- Logs .trace (" > Sprite : " + Type .getClassName (Type .getClass (sprite )));
732- }
662+ var newNode : Xml = button .xml .x ;
733663
734664 if (newNode != null && sprite != null ) {
735- var isLowMemory = sprite .extra .get (exID (" lowMemory" )) == true ;
736- var isHighMemory = sprite .extra .get (exID (" highMemory" )) == true ;
737- /* // Only if this compiled :sob:
738- var groupName:String = null;
739- if ((groupName = isLowMemory ? "low-memory" : isHighMemory ? "high-memory" : null) != null) {
740- var a = group != null && groupName != curGroup && ((group = cast xml.addChild(group)) != null);
741- (group = (group == null ? Xml.createElement(curGroup = groupName) : group)).addChild(newNode);
742- }else xml.addChild(newNode);
743- */
665+ var groupName = (sprite == null ? null :
666+ (
667+ (sprite .extra .get (exID (" lowMemory" )) == true ) ? " low-memory" :
668+ (sprite .extra .get (exID (" highMemory" )) == true ) ? " high-memory" : null
669+ )
670+ );
744671
745- var groupName = isLowMemory ? " low-memory" : isHighMemory ? " high-memory" : null ;
746672 if (group != null && groupName != curGroup ) {
747673 xml .addChild (group );
748674 group = null ;
0 commit comments