1
0
Fork 0
mirror of https://github.com/ninjamuffin99/Funkin.git synced 2024-11-15 19:33:36 +00:00

Fix for switching to old icon on isPixel levels

This commit is contained in:
Cameron Taylor 2024-08-06 13:44:02 -04:00
parent 960c151985
commit 62d0b33689

View file

@ -150,13 +150,17 @@ class HealthIcon extends FunkinSprite
{ {
if (characterId == 'bf-old') if (characterId == 'bf-old')
{ {
isPixel = PlayState.instance.currentStage.getBoyfriend().isPixel;
PlayState.instance.currentStage.getBoyfriend().initHealthIcon(false); PlayState.instance.currentStage.getBoyfriend().initHealthIcon(false);
} }
else else
{ {
characterId = 'bf-old'; characterId = 'bf-old';
isPixel = false;
loadCharacter(characterId); loadCharacter(characterId);
} }
lerpIconSize(true);
} }
/** /**
@ -200,31 +204,45 @@ class HealthIcon extends FunkinSprite
if (bopEvery != 0) if (bopEvery != 0)
{ {
// Lerp the health icon back to its normal size, lerpIconSize();
// while maintaining aspect ratio.
if (this.width > this.height)
{
// Apply linear interpolation while accounting for frame rate.
var targetSize:Int = Std.int(MathUtil.coolLerp(this.width, HEALTH_ICON_SIZE * this.size.x, 0.15));
setGraphicSize(targetSize, 0);
}
else
{
var targetSize:Int = Std.int(MathUtil.coolLerp(this.height, HEALTH_ICON_SIZE * this.size.y, 0.15));
setGraphicSize(0, targetSize);
}
// Lerp the health icon back to its normal angle. // Lerp the health icon back to its normal angle.
this.angle = MathUtil.coolLerp(this.angle, 0, 0.15); this.angle = MathUtil.coolLerp(this.angle, 0, 0.15);
this.updateHitbox();
} }
this.updatePosition(); this.updatePosition();
} }
/**
* Does the calculation to lerp the icon size. Usually called every frame, but can be forced to the target size.
* Mainly forced when changing to old icon to not have a weird lerp related to changing from pixel icon to non-pixel old icon
* @param force Force the icon immedialtely to be the target size. Defaults to false.
*/
function lerpIconSize(force:Bool = false):Void
{
// Lerp the health icon back to its normal size,
// while maintaining aspect ratio.
if (this.width > this.height)
{
// Apply linear interpolation while accounting for frame rate.
var targetSize:Int = Std.int(MathUtil.coolLerp(this.width, HEALTH_ICON_SIZE * this.size.x, 0.15));
if (force) targetSize = Std.int(HEALTH_ICON_SIZE * this.size.x);
setGraphicSize(targetSize, 0);
}
else
{
var targetSize:Int = Std.int(MathUtil.coolLerp(this.height, HEALTH_ICON_SIZE * this.size.y, 0.15));
if (force) targetSize = Std.int(HEALTH_ICON_SIZE * this.size.y);
setGraphicSize(0, targetSize);
}
this.updateHitbox();
}
/** /**
* Update the position (and status) of the health icon. * Update the position (and status) of the health icon.
*/ */
@ -412,6 +430,8 @@ class HealthIcon extends FunkinSprite
isLegacyStyle = !isNewSpritesheet(charId); isLegacyStyle = !isNewSpritesheet(charId);
trace(' Loading health icon for character: $charId (legacy: $isLegacyStyle)');
if (!isLegacyStyle) if (!isLegacyStyle)
{ {
loadSparrow('icons/icon-$charId'); loadSparrow('icons/icon-$charId');