background colour fading

- also allows fading of shadow and background texture colours
This commit is contained in:
minenice55 2022-08-06 19:15:44 -04:00
parent 2d4af47609
commit c4693eb093
4 changed files with 141 additions and 69 deletions

View File

@ -31390,7 +31390,7 @@ SpriteRenderer:
m_FlipX: 0 m_FlipX: 0
m_FlipY: 0 m_FlipY: 0
m_DrawMode: 0 m_DrawMode: 0
m_Size: {x: 1, y: 1} m_Size: {x: 2.56, y: 10.24}
m_AdaptiveModeThreshold: 0.5 m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0 m_SpriteTileMode: 0
m_WasSpriteAssigned: 1 m_WasSpriteAssigned: 1

View File

@ -43,14 +43,14 @@ TextureImporter:
compressionQuality: 50 compressionQuality: 50
spriteMode: 1 spriteMode: 1
spriteExtrude: 1 spriteExtrude: 1
spriteMeshType: 1 spriteMeshType: 0
alignment: 0 alignment: 0
spritePivot: {x: 0.5, y: 0.5} spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100 spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1 spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 2 alphaUsage: 2
alphaIsTransparency: 0 alphaIsTransparency: 1
spriteTessellationDetail: -1 spriteTessellationDetail: -1
textureType: 8 textureType: 8
textureShape: 1 textureShape: 1
@ -65,7 +65,7 @@ TextureImporter:
platformSettings: platformSettings:
- serializedVersion: 3 - serializedVersion: 3
buildTarget: DefaultTexturePlatform buildTarget: DefaultTexturePlatform
maxTextureSize: 2048 maxTextureSize: 512
resizeAlgorithm: 0 resizeAlgorithm: 0
textureFormat: -1 textureFormat: -1
textureCompression: 0 textureCompression: 0
@ -77,7 +77,7 @@ TextureImporter:
forceMaximumCompressionQuality_BC6H_BC7: 0 forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3 - serializedVersion: 3
buildTarget: Standalone buildTarget: Standalone
maxTextureSize: 2048 maxTextureSize: 512
resizeAlgorithm: 0 resizeAlgorithm: 0
textureFormat: -1 textureFormat: -1
textureCompression: 0 textureCompression: 0

View File

@ -33,20 +33,22 @@ namespace HeavenStudio.Games.Loaders
new Param("type", KarateMan.HitThree.HitThree, "Type", "The warning text to show") new Param("type", KarateMan.HitThree.HitThree, "Type", "The warning text to show")
}), }),
new GameAction("prepare", delegate { }, 1f, true), new GameAction("prepare", delegate { }, 1f, true),
new GameAction("set background effects", delegate { var e = eventCaller.currentEntity; KarateMan.instance.SetBgAndShadowCol(e.beat, e.type, e.type2, e.colorA, e.colorB, e.type3); }, 0.5f, false, new List<Param>() new GameAction("set background effects", delegate { var e = eventCaller.currentEntity; KarateMan.instance.SetBgAndShadowCol(e.beat, e.length, e.type, e.type2, e.colorA, e.colorB, e.type3, e.colorC); }, 0.5f, true, new List<Param>()
{ {
new Param("type", KarateMan.BackgroundType.Yellow, "Background Type", "The preset background type"), new Param("type", KarateMan.BackgroundType.Yellow, "Background Type", "The preset background type"),
new Param("type2", KarateMan.ShadowType.Tinted, "Shadow Type", "The shadow type. If Tinted doesn't work with your background color try Custom"), new Param("type2", KarateMan.ShadowType.Tinted, "Shadow Type", "The shadow type. If Tinted doesn't work with your background color try Custom"),
new Param("colorA", new Color(), "Custom Background Color", "The background color to use when background type is set to Custom"), new Param("colorA", new Color(), "Custom Background Color", "The background color to use when background type is set to Custom"),
new Param("colorB", new Color(), "Custom Shadow Color", "The shadow color to use when shadow type is set to Custom"), new Param("colorB", new Color(), "Custom Shadow Color", "The shadow color to use when shadow type is set to Custom"),
new Param("type3", KarateMan.BackgroundFXType.None, "FX Type", "The background effect to be displayed") new Param("colorC", new Color(), "Fading Shadow Color", "When using the Fade background effect, make shadow colour fade to this colour"),
new Param("type3", KarateMan.BackgroundFXType.None, "FX Type", "The background effect to be displayed. Fade uses the entity length to determine colour fading speed")
}), }),
new GameAction("set background texture", delegate { var e = eventCaller.currentEntity; KarateMan.instance.SetBgTexture(e.type, e.type2, e.colorA); }, 0.5f, false, new List<Param>() new GameAction("set background texture", delegate { var e = eventCaller.currentEntity; KarateMan.instance.SetBgTexture(e.type, e.type2, e.colorA, e.colorB); }, 0.5f, false, new List<Param>()
{ {
new Param("type", KarateMan.BackgroundTextureType.Plain, "Texture", "The type of background texture to use"), new Param("type", KarateMan.BackgroundTextureType.Plain, "Texture", "The type of background texture to use"),
new Param("type2", KarateMan.ShadowType.Tinted, "Color Filter Type", "The method used to apply colour to the texture"), new Param("type2", KarateMan.ShadowType.Tinted, "Color Filter Type", "The method used to apply colour to the texture"),
new Param("colorA", new Color(), "Custom Filter Color", "The filter color to use when color filter type is set to Custom"), new Param("colorA", new Color(), "Custom Filter Color", "The filter color to use when color filter type is set to Custom"),
new Param("colorB", new Color(), "Fading Filter Color", "When using the Fade background effect, make filter colour fade to this colour"),
}), }),
new GameAction("special camera", delegate { var e = eventCaller.currentEntity; KarateMan.instance.DoSpecialCamera(e.beat, e.length, e.toggle); }, 8f, true, new List<Param>() new GameAction("special camera", delegate { var e = eventCaller.currentEntity; KarateMan.instance.DoSpecialCamera(e.beat, e.length, e.toggle); }, 8f, true, new List<Param>()
{ {
@ -54,7 +56,7 @@ namespace HeavenStudio.Games.Loaders
}), }),
new GameAction("particle effects", delegate { var e = eventCaller.currentEntity; KarateMan.instance.SetParticleEffect(e.beat, e.type, e.valA, e.valB); }, 0.5f, false, new List<Param>() new GameAction("particle effects", delegate { var e = eventCaller.currentEntity; KarateMan.instance.SetParticleEffect(e.beat, e.type, e.valA, e.valB); }, 0.5f, false, new List<Param>()
{ {
new Param("type", KarateMan.ParticleType.None, "Particle Type", "The type of particle effect to spawn"), new Param("type", KarateMan.ParticleType.None, "Particle Type", "The type of particle effect to spawn. Using \"None\" will stop all effects"),
new Param("valA", new EntityTypes.Float(0f, 64f, 1f), "Wind Strength", "The strength of the particle wind. (Does not work on the Rain particle.)"), new Param("valA", new EntityTypes.Float(0f, 64f, 1f), "Wind Strength", "The strength of the particle wind. (Does not work on the Rain particle.)"),
new Param("valB", new EntityTypes.Float(1f, 12f, 1f), "Particle Intensity", "The intensity of the particle effect") new Param("valB", new EntityTypes.Float(1f, 12f, 1f), "Particle Intensity", "The intensity of the particle effect")
}), }),
@ -69,15 +71,15 @@ namespace HeavenStudio.Games.Loaders
new GameAction("ball", delegate { KarateMan.instance.CreateItem(eventCaller.currentEntity.beat, (int) KarateMan.HitType.Ball); }, 2, hidden: true), new GameAction("ball", delegate { KarateMan.instance.CreateItem(eventCaller.currentEntity.beat, (int) KarateMan.HitType.Ball); }, 2, hidden: true),
new GameAction("tacobell", delegate { KarateMan.instance.CreateItem(eventCaller.currentEntity.beat, (int) KarateMan.HitType.TacoBell); }, 2, hidden: true), new GameAction("tacobell", delegate { KarateMan.instance.CreateItem(eventCaller.currentEntity.beat, (int) KarateMan.HitType.TacoBell); }, 2, hidden: true),
new GameAction("hit4", delegate { KarateMan.instance.DoWord(eventCaller.currentEntity.beat, (int) KarateMan.HitThree.HitFour); }, hidden: true), new GameAction("hit4", delegate { KarateMan.instance.DoWord(eventCaller.currentEntity.beat, (int) KarateMan.HitThree.HitFour); }, hidden: true),
new GameAction("bgfxon", delegate { KarateMan.instance.SetBgFx((int) KarateMan.BackgroundFXType.Sunburst); }, hidden: true), new GameAction("bgfxon", delegate { var e = eventCaller.currentEntity; KarateMan.instance.SetBgFx((int) KarateMan.BackgroundFXType.Sunburst, e.beat, e.length); }, hidden: true),
new GameAction("bgfxoff", delegate { KarateMan.instance.SetBgFx((int) KarateMan.BackgroundFXType.None); }, hidden: true), new GameAction("bgfxoff", delegate { var e = eventCaller.currentEntity; KarateMan.instance.SetBgFx((int) KarateMan.BackgroundFXType.None, e.beat, e.length); }, hidden: true),
new GameAction("hit3", delegate { var e = eventCaller.currentEntity; KarateMan.instance.DoWord(e.beat, e.type); }, 1f, false, new GameAction("hit3", delegate { var e = eventCaller.currentEntity; KarateMan.instance.DoWord(e.beat, e.type); }, 1f, false,
new List<Param>() new List<Param>()
{ {
new Param("type", KarateMan.HitThree.HitThree, "Type", "The warning text to show") new Param("type", KarateMan.HitThree.HitThree, "Type", "The warning text to show")
}, },
hidden: true), hidden: true),
new GameAction("set background color", delegate { var e = eventCaller.currentEntity; KarateMan.instance.SetBgAndShadowCol(e.beat, e.type, e.type2, e.colorA, e.colorB, (int) KarateMan.instance.currentBgEffect); }, 0.5f, false, new GameAction("set background color", delegate { var e = eventCaller.currentEntity; KarateMan.instance.SetBgAndShadowCol(e.beat, e.length, e.type, e.type2, e.colorA, e.colorB, (int) KarateMan.instance.currentBgEffect, e.colorB); }, 0.5f, false,
new List<Param>() new List<Param>()
{ {
new Param("type", KarateMan.BackgroundType.Yellow, "Background Type", "The preset background type"), new Param("type", KarateMan.BackgroundType.Yellow, "Background Type", "The preset background type"),
@ -87,7 +89,7 @@ namespace HeavenStudio.Games.Loaders
}, },
hidden: true), hidden: true),
new GameAction("set background fx", delegate { KarateMan.instance.SetBgFx(eventCaller.currentEntity.type); }, 0.5f, false, new List<Param>() new GameAction("set background fx", delegate { var e = eventCaller.currentEntity; KarateMan.instance.SetBgFx(e.type, e.beat, e.length); }, 0.5f, false, new List<Param>()
{ {
new Param("type", KarateMan.BackgroundFXType.None, "FX Type", "The background effect to be displayed") new Param("type", KarateMan.BackgroundFXType.None, "FX Type", "The background effect to be displayed")
}, },
@ -225,18 +227,25 @@ namespace HeavenStudio.Games
public GameObject BGEffect; public GameObject BGEffect;
int bgType = (int) BackgroundType.Yellow; int bgType = (int) BackgroundType.Yellow;
Color bgColour; Color bgColour;
Color bgColourLast;
public BackgroundFXType currentBgEffect = BackgroundFXType.None; public BackgroundFXType currentBgEffect = BackgroundFXType.None;
float bgFadeTime = Single.MinValue;
float bgFadeDuration = 0f;
Animator bgEffectAnimator; Animator bgEffectAnimator;
SpriteRenderer bgEffectSpriteRenderer; SpriteRenderer bgEffectSpriteRenderer;
int textureFiltertype = (int) ShadowType.Tinted; int textureFiltertype = (int) ShadowType.Tinted;
Color filterColour;
Color filterColourNext;
public GameObject BGGradient; public GameObject BGGradient;
SpriteRenderer bgGradientRenderer; SpriteRenderer bgGradientRenderer;
[Header("Shadows")] [Header("Shadows")]
int currentShadowType = (int) ShadowType.Tinted; int currentShadowType = (int) ShadowType.Tinted;
Color customShadowColour = Color.white; Color customShadowColour = Color.white;
Color fadeShadowColour = Color.white;
Color oldShadowColour;
[Header("Particles")] [Header("Particles")]
//wind //wind
@ -266,7 +275,7 @@ namespace HeavenStudio.Games
bgGradientRenderer = BGGradient.GetComponent<SpriteRenderer>(); bgGradientRenderer = BGGradient.GetComponent<SpriteRenderer>();
SetBgAndShadowCol(0f, bgType, (int) currentShadowType, BackgroundColors[bgType], customShadowColour, (int)currentBgEffect); SetBgAndShadowCol(0f, 0f, bgType, (int) currentShadowType, BackgroundColors[bgType], customShadowColour, (int)currentBgEffect, customShadowColour);
} }
private void Update() private void Update()
@ -321,6 +330,27 @@ namespace HeavenStudio.Games
cameraAngle = CameraAngle.Normal; cameraAngle = CameraAngle.Normal;
cameraPosition = CameraPosition[0].position; cameraPosition = CameraPosition[0].position;
} }
float fadeProg = cond.GetPositionFromBeat(bgFadeTime, bgFadeDuration);
if (bgFadeTime != Single.MinValue && fadeProg >= 0)
{
if (fadeProg >= 1f)
{
bgFadeTime = Single.MinValue;
bgFadeDuration = 0f;
BGPlane.color = bgColour;
filterColour = filterColourNext;
UpdateFilterColour(bgColour, filterColour);
oldShadowColour = GetShadowColor(true);
}
else
{
Color col = Color.LerpUnclamped(bgColourLast, bgColour, fadeProg);
BGPlane.color = col;
UpdateFilterColour(col, Color.LerpUnclamped(filterColour, filterColourNext, fadeProg));
}
}
GameCamera.additionalPosition = cameraPosition - GameCamera.defaultPosition; GameCamera.additionalPosition = cameraPosition - GameCamera.defaultPosition;
BGEffect.transform.position = new Vector3(GameCamera.instance.transform.position.x, GameCamera.instance.transform.position.y, 0); BGEffect.transform.position = new Vector3(GameCamera.instance.transform.position.x, GameCamera.instance.transform.position.y, 0);
} }
@ -460,46 +490,6 @@ namespace HeavenStudio.Games
Jukebox.PlayOneShotGame(outSound, forcePlay: true); Jukebox.PlayOneShotGame(outSound, forcePlay: true);
} }
public void SetBgAndShadowCol(float beat, int bgType, int shadowType, Color a, Color b, int fx)
{
this.bgType = bgType;
if (this.bgType == (int) BackgroundType.Custom)
bgColour = a;
else
bgColour = BackgroundColors[this.bgType];
BGPlane.color = bgColour;
UpdateShadowColour(shadowType, b);
SetBgFx(fx);
if (textureFiltertype == (int) ShadowType.Tinted)
bgGradientRenderer.color = Color.LerpUnclamped(bgColour, ShadowBlendColor, 0.45f);
}
public void SetBgFx(int fx)
{
currentBgEffect = (BackgroundFXType) fx;
}
public void SetBgTexture(int type, int filterType, Color filterColor)
{
Color col;
textureFiltertype = filterType;
if (textureFiltertype == (int) ShadowType.Tinted)
col = Color.LerpUnclamped(bgColour, ShadowBlendColor, 0.45f);
else
col = filterColor;
switch (type)
{
case (int) BackgroundTextureType.Gradient:
BGGradient.SetActive(true);
bgGradientRenderer.color = col;
break;
default:
BGGradient.SetActive(false);
break;
}
}
public void Combo(float beat) public void Combo(float beat)
{ {
Jukebox.PlayOneShotGame("karateman/barrelOutCombos", forcePlay: true); Jukebox.PlayOneShotGame("karateman/barrelOutCombos", forcePlay: true);
@ -556,27 +546,105 @@ namespace HeavenStudio.Games
return mobj; return mobj;
} }
public static Color ShadowBlendColor = new Color(195 / 255f, 48 / 255f, 2 / 255f); public void SetBgAndShadowCol(float beat, float length, int bgType, int shadowType, Color a, Color b, int fx, Color c)
public Color GetShadowColor()
{ {
if(currentShadowType == (int) ShadowType.Custom) SetBgFx(fx, beat, length);
{ UpdateShadowColour(shadowType, b, c);
return customShadowColour;
} this.bgType = bgType;
else if(bgType < (int) BackgroundType.Custom) if (this.bgType == (int) BackgroundType.Custom)
{ bgColour = a;
return ShadowColors[bgType]; else
} bgColour = BackgroundColors[this.bgType];
BGPlane.color = bgColour;
return Color.LerpUnclamped(bgColour, ShadowBlendColor, 0.45f);
if (textureFiltertype == (int) ShadowType.Tinted)
filterColour = Color.LerpUnclamped(bgColour, ShadowBlendColor, 0.45f);
} }
public void UpdateShadowColour(int type, Color colour) public void SetBgFx(int fx, float beat, float length)
{ {
switch (fx)
{
case (int) BackgroundFXType.Fade:
bgColourLast = bgColour;
bgFadeTime = beat;
bgFadeDuration = length;
break;
default:
currentBgEffect = (BackgroundFXType) fx;
break;
}
}
public void SetBgTexture(int type, int filterType, Color filterColor, Color nextColor)
{
textureFiltertype = filterType;
if (textureFiltertype == (int) ShadowType.Tinted)
filterColour = Color.LerpUnclamped(bgColour, filterColor, 0.45f);
else
{
filterColour = filterColor;
filterColourNext = nextColor;
}
switch (type)
{
case (int) BackgroundTextureType.Gradient:
BGGradient.SetActive(true);
break;
default:
BGGradient.SetActive(false);
break;
}
UpdateFilterColour(bgColour, filterColour);
}
void UpdateFilterColour(Color bgColor, Color filterColor)
{
Color col;
if (textureFiltertype == (int) ShadowType.Tinted)
col = Color.LerpUnclamped(bgColor, ShadowBlendColor, 0.45f);
else
col = filterColor;
bgGradientRenderer.color = col;
}
public static Color ShadowBlendColor = new Color(195 / 255f, 48 / 255f, 2 / 255f);
public Color GetShadowColor(bool next = false)
{
Color lastCol, nextCol;
lastCol = oldShadowColour;
if(currentShadowType == (int) ShadowType.Custom)
nextCol = fadeShadowColour;
else if(bgType < (int) BackgroundType.Custom)
nextCol = ShadowColors[bgType];
else
nextCol = Color.LerpUnclamped(bgColour, ShadowBlendColor, 0.45f);
float fadeProg = Conductor.instance.GetPositionFromBeat(bgFadeTime, bgFadeDuration);
if (fadeProg <= 1f && fadeProg >= 0)
{
Debug.Log(fadeProg);
return Color.LerpUnclamped(lastCol, nextCol, fadeProg);
}
return next ? nextCol : lastCol;
}
public void UpdateShadowColour(int type, Color colour, Color fadeColour)
{
if(currentShadowType == (int) ShadowType.Custom)
oldShadowColour = customShadowColour;
else if(bgType < (int) BackgroundType.Custom)
oldShadowColour = ShadowColors[bgType];
else
oldShadowColour = Color.LerpUnclamped(bgColour, ShadowBlendColor, 0.45f);
currentShadowType = type; currentShadowType = type;
customShadowColour = colour; customShadowColour = colour;
fadeShadowColour = fadeColour;
Joe.UpdateShadowColour();
} }
public void SetParticleEffect(float beat, int type, float windStrength, float particleStrength) public void SetParticleEffect(float beat, int type, float windStrength, float particleStrength)
@ -604,6 +672,8 @@ namespace HeavenStudio.Games
break; break;
default: default:
SnowEffect.Stop(); SnowEffect.Stop();
FireEffect.Stop();
RainEffect.Stop();
break; break;
} }
Wind.windMain = windStrength; Wind.windMain = windStrength;

View File

@ -125,6 +125,8 @@ namespace HeavenStudio.Games.Scripts_KarateMan
Jukebox.PlayOneShotGame("karateman/swingKick", forcePlay: true); Jukebox.PlayOneShotGame("karateman/swingKick", forcePlay: true);
} }
} }
UpdateShadowColour();
} }
public bool Punch(int forceHand = 0) public bool Punch(int forceHand = 0)