Skip to content

Commit

Permalink
real time rank anim replacing for atlas
Browse files Browse the repository at this point in the history
gonna work on sparrow later i have school work to do
  • Loading branch information
KoloInDaCrib committed Dec 4, 2024
1 parent c9fc9e1 commit 7da379e
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ class CharSelectAtlasSprite extends FlxAnimate

var symbolsInitialized:Bool = false;

function initSymbols()
public function initSymbols()
{
if (symbolsInitialized) return;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import funkin.ui.debug.char.animate.CharSelectAtlasSprite;
import funkin.graphics.FunkinSprite;
import funkin.ui.debug.char.pages.CharCreatorResultsPage;
import flixel.FlxSprite;
import haxe.io.Path;

@:build(haxe.ui.macros.ComponentMacros.build("assets/exclude/data/ui/char-creator/dialogs/results/results-anim-dialog.xml"))
@:access(funkin.ui.debug.char.pages.CharCreatorResultsPage)
Expand Down Expand Up @@ -89,11 +90,13 @@ private class AddRankAnimationDataBox extends HBox
var removeButton:Button;

var page:CharCreatorResultsPage;
var dialog:ResultsAnimDialog;

public function new(daDialog:ResultsAnimDialog)
{
super();
page = cast (daDialog.page, CharCreatorResultsPage);
page = cast(daDialog.page, CharCreatorResultsPage);
dialog = daDialog;

styleString = "border:1px solid $normal-border-color";
percentWidth = 100;
Expand Down Expand Up @@ -127,7 +130,7 @@ private class AddRankAnimationDataBox extends HBox
parentList.removeComponentAt(parentList.childComponents.length - 2);

var daData = page.currentAnims.pop();
var daDataSprite = cast (daData.sprite, FlxSprite);
var daDataSprite = cast(daData.sprite, FlxSprite);

daDataSprite.kill();
page.remove(daDataSprite, true);
Expand Down Expand Up @@ -174,13 +177,13 @@ private class AddRankAnimationDataBox extends HBox
if (parentList == null) return newBox;

newBox.ID = parentList.childComponents.length - 1;
if (page.currentAnims.length <= newBox.ID)
if (page.currentAnims.length <= newBox.ID)
{
page.currentAnims.push(
{
sprite: null,
delay: newBox.animData.delay
});
{
sprite: null,
delay: newBox.animData.delay
});
}

newBox.onOffsetsChange = function() {
Expand All @@ -206,8 +209,9 @@ private class AddRankAnimationDataBox extends HBox
copyData(data, newBox.animData);
}

newBox.onLoopDataChange = function()
{
newBox.onAssetChange = function() reloadSpriteFromBox(newBox);

newBox.onLoopDataChange = function() {
var obj = page.currentAnims[newBox.ID];
if (obj?.sprite == null) return;

Expand Down Expand Up @@ -258,7 +262,54 @@ private class AddRankAnimationDataBox extends HBox
return newBox;
}

function copyData(?oldData:PlayerResultsAnimationData, newData:PlayerResultsAnimationData) //this is how we update data
function reloadSpriteFromBox(box:RankAnimationData)
{
var obj = page.currentAnims[box.ID];
if (obj?.sprite == null) return;

var animPath:String = Paths.stripLibrary(box.animData.assetPath);
var animLibrary:String = Paths.getLibrary(box.animData.assetPath);

var isAbsolute:Bool = Path.isAbsolute(box.animData.assetPath);

if (box.animData.renderType == "animateatlas")
{
var newObj = new CharSelectAtlasSprite(0, 0, null, null);

if (isAbsolute)
{
if (Path.extension(box.animData.assetPath) != "zip") return;
newObj.loadFromZip(funkin.util.FileUtil.readBytesFromPath(box.animData.assetPath));
}
else
{
newObj.loadAtlas(Paths.animateAtlas(animPath, animLibrary));
}

if (newObj.anim == null || newObj.frames == null) return;

newObj.initSymbols();

var spr:FlxSprite = cast obj.sprite;
spr.kill();
page.remove(spr);
spr.destroy();

obj.sprite = newObj;
box.onOffsetsChange();
box.onLoopDataChange();
newObj.zIndex = box.animData.zIndex;
newObj.scale.set(box.animData.scale, box.animData.scale);

page.add(newObj);
page.refresh();
}
else {} // will do

copyData(dialog.rankAnimationDataMap[dialog.currentRank][box.ID], box.animData);
}

function copyData(?oldData:PlayerResultsAnimationData, newData:PlayerResultsAnimationData) // this is how we update data
{
if (oldData != null)
{
Expand All @@ -272,9 +323,7 @@ private class AddRankAnimationDataBox extends HBox
oldData.loopFrame = newData.loopFrame;
oldData.loopFrameLabel = newData.loopFrameLabel;
}

if (oldData == null) oldData = newData;

else if (oldData == null) oldData = newData;
}
}

Expand Down Expand Up @@ -327,7 +376,7 @@ private class RankAnimationData extends VBox
function get_animData():PlayerResultsAnimationData
{
return {
renderType: animRenderType.safeSelectedItem,
renderType: animRenderType.safeSelectedItem.value,
assetPath: animAssetPath.text,
offsets: [animOffsetX.value, animOffsetY.value],
zIndex: animZIndex.value,
Expand Down Expand Up @@ -399,9 +448,12 @@ private class RankAnimationData extends VBox

animOffsetX.onChange = animOffsetY.onChange = _ -> onOffsetsChange();
animLooped.onChange = animLoopFrame.onChange = animLoopFrameLabel.onChange = _ -> onLoopDataChange();
animRenderType.onChange = animAssetPath.onChange = _ -> onAssetChange();
}

public dynamic function onOffsetsChange() {}

public dynamic function onLoopDataChange() {}

public dynamic function onAssetChange() {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -178,15 +178,15 @@ class CharCreatorImportExportHandler

playerData.charSelect = new PlayerCharSelectData(selectPage.position);
playerData.results =
{
music: null,
perfectGold: resultPageDialog.rankAnimationDataMap[PERFECT_GOLD],
perfect: resultPageDialog.rankAnimationDataMap[PERFECT],
excellent: resultPageDialog.rankAnimationDataMap[EXCELLENT],
great: resultPageDialog.rankAnimationDataMap[GREAT],
good: resultPageDialog.rankAnimationDataMap[GOOD],
loss: resultPageDialog.rankAnimationDataMap[SHIT],
};
{
music: null,
perfectGold: resultPageDialog.rankAnimationDataMap[PERFECT_GOLD],
perfect: resultPageDialog.rankAnimationDataMap[PERFECT],
excellent: resultPageDialog.rankAnimationDataMap[EXCELLENT],
great: resultPageDialog.rankAnimationDataMap[GREAT],
good: resultPageDialog.rankAnimationDataMap[GOOD],
loss: resultPageDialog.rankAnimationDataMap[SHIT],
};

playerData.unlocked = true;

Expand Down

0 comments on commit 7da379e

Please sign in to comment.