snow implementation

This commit is contained in:
Rapandrasmus 2024-02-25 00:41:18 +01:00
parent 96c0c4dbad
commit 3958150666
3 changed files with 62 additions and 9 deletions

View file

@ -74765,6 +74765,8 @@ MonoBehaviour:
_freezerBreakParticle: {fileID: 3094020854116406872} _freezerBreakParticle: {fileID: 3094020854116406872}
_peachHitParticle: {fileID: 6214329999445395356} _peachHitParticle: {fileID: 6214329999445395356}
_peachCutParticle: {fileID: 8065249703308610300} _peachCutParticle: {fileID: 8065249703308610300}
_snowParticle: {fileID: 3720903333554756433}
_wind: {fileID: 472793230605118003}
_catAnimationOffsetStart: -0.5 _catAnimationOffsetStart: -0.5
_catAnimationOffsetEnd: 0.5 _catAnimationOffsetEnd: 0.5
--- !u!1 &3169970055236683843 --- !u!1 &3169970055236683843

View file

@ -59,7 +59,7 @@ namespace HeavenStudio.Games.Scripts_LumBEARjack
public void Bop() public void Bop()
{ {
if (_anim.IsPlayingAnimationNames("BeastWhiff", "BeastRest") || _rested) return; if (_anim.IsPlayingAnimationNames("BeastWhiff", "BeastRest") || _rested) return;
_anim.DoScaledAnimationAsync("BeastBop", 0.5f); _anim.DoScaledAnimationAsync("BeastBop", 0.75f);
} }
public void Rest(bool instant, LumBEARjack.RestSoundChoice sound) public void Rest(bool instant, LumBEARjack.RestSoundChoice sound)

View file

@ -124,6 +124,22 @@ namespace HeavenStudio.Games.Loaders
new("sound", LumBEARjack.RestSoundChoice.Random, "Sound") new("sound", LumBEARjack.RestSoundChoice.Random, "Sound")
} }
}, },
new("snow", "Snow")
{
function = delegate
{
var e = eventCaller.currentEntity;
LumBEARjack.instance.SetSnow(e["on"], e["instant"], e["wS"], e["pS"]);
},
defaultLength = 0.5f,
parameters = new()
{
new("on", true, "Visible"),
new("instant", false, "Instant"),
new("pS", new EntityTypes.Float(0f, 100f, 1f), "Particle Strength"),
new("wS", new EntityTypes.Float(-100f, 100f, 1f), "Wind Strength")
}
},
// Stretchable Objects // Stretchable Objects
@ -302,6 +318,10 @@ namespace HeavenStudio.Games
[SerializeField] private ParticleSystem _peachHitParticle; [SerializeField] private ParticleSystem _peachHitParticle;
[SerializeField] private ParticleSystem _peachCutParticle; [SerializeField] private ParticleSystem _peachCutParticle;
[Header("Snow")]
[SerializeField] private ParticleSystem _snowParticle;
[SerializeField] private WindZone _wind;
[Header("Parameters")] [Header("Parameters")]
[SerializeField] private double _catAnimationOffsetStart = -0.5; [SerializeField] private double _catAnimationOffsetStart = -0.5;
[SerializeField] private double _catAnimationOffsetEnd = 0.5; [SerializeField] private double _catAnimationOffsetEnd = 0.5;
@ -417,6 +437,7 @@ namespace HeavenStudio.Games
PersistObjects(beat); PersistObjects(beat);
HandleBops(beat); HandleBops(beat);
HandleCatAnimation(beat); HandleCatAnimation(beat);
HandleSnow(beat);
} }
public override void OnPlay(double beat) public override void OnPlay(double beat)
@ -425,6 +446,16 @@ namespace HeavenStudio.Games
PersistObjects(beat); PersistObjects(beat);
HandleBops(beat); HandleBops(beat);
HandleCatAnimation(beat); HandleCatAnimation(beat);
HandleSnow(beat);
}
private void HandleSnow(double beat)
{
var lastSnow = EventCaller.GetAllInGameManagerList("lumbearjack", new string[] { "snow" }).FindLast(x => x.beat < beat);
if (lastSnow != null)
{
SetSnow(lastSnow["on"], true, lastSnow["wS"], lastSnow["pS"]);
}
} }
private void HandleCatPresence(double beat) private void HandleCatPresence(double beat)
@ -667,15 +698,15 @@ namespace HeavenStudio.Games
{ {
case WhoBops.Both: case WhoBops.Both:
if (!_bearNoBopBeats.Contains(beat)) _bear.Bop(); if (!_bearNoBopBeats.Contains(beat)) _bear.Bop();
if (!_catRight.IsPlayingAnimationNames("CatGrab")) _catRight.DoScaledAnimationAsync("CatBop", 0.5f); if (!_catRight.IsPlayingAnimationNames("CatGrab")) _catRight.DoScaledAnimationAsync("CatBop", 0.75f);
if (!_catLeft.IsPlayingAnimationNames("CatGrab")) _catLeft.DoScaledAnimationAsync("CatBop", 0.5f); if (!_catLeft.IsPlayingAnimationNames("CatGrab")) _catLeft.DoScaledAnimationAsync("CatBop", 0.75f);
break; break;
case WhoBops.Bear: case WhoBops.Bear:
if (!_bearNoBopBeats.Contains(beat)) _bear.Bop(); if (!_bearNoBopBeats.Contains(beat)) _bear.Bop();
break; break;
case WhoBops.Cats: case WhoBops.Cats:
if (!_catRight.IsPlayingAnimationNames("CatGrab")) _catRight.DoScaledAnimationAsync("CatBop", 0.5f); if (!_catRight.IsPlayingAnimationNames("CatGrab")) _catRight.DoScaledAnimationAsync("CatBop", 0.75f);
if (!_catLeft.IsPlayingAnimationNames("CatGrab")) _catLeft.DoScaledAnimationAsync("CatBop", 0.5f); if (!_catLeft.IsPlayingAnimationNames("CatGrab")) _catLeft.DoScaledAnimationAsync("CatBop", 0.75f);
break; break;
default: default:
break; break;
@ -698,15 +729,15 @@ namespace HeavenStudio.Games
{ {
case WhoBops.Both: case WhoBops.Both:
_bear.Bop(); _bear.Bop();
if (!_catRight.IsPlayingAnimationNames("CatGrab")) _catRight.DoScaledAnimationAsync("CatBop", 0.5f); if (!_catRight.IsPlayingAnimationNames("CatGrab")) _catRight.DoScaledAnimationAsync("CatBop", 0.75f);
if (!_catLeft.IsPlayingAnimationNames("CatGrab")) _catLeft.DoScaledAnimationAsync("CatBop", 0.5f); if (!_catLeft.IsPlayingAnimationNames("CatGrab")) _catLeft.DoScaledAnimationAsync("CatBop", 0.75f);
break; break;
case WhoBops.Bear: case WhoBops.Bear:
_bear.Bop(); _bear.Bop();
break; break;
case WhoBops.Cats: case WhoBops.Cats:
if (!_catRight.IsPlayingAnimationNames("CatGrab")) _catRight.DoScaledAnimationAsync("CatBop", 0.5f); if (!_catRight.IsPlayingAnimationNames("CatGrab")) _catRight.DoScaledAnimationAsync("CatBop", 0.75f);
if (!_catLeft.IsPlayingAnimationNames("CatGrab")) _catLeft.DoScaledAnimationAsync("CatBop", 0.5f); if (!_catLeft.IsPlayingAnimationNames("CatGrab")) _catLeft.DoScaledAnimationAsync("CatBop", 0.75f);
break; break;
default: default:
break; break;
@ -985,6 +1016,26 @@ namespace HeavenStudio.Games
#region Particles and Effects #region Particles and Effects
public void SetSnow(bool isOn, bool instant, float windStrength, float particleStrength)
{
_snowParticle.gameObject.SetActive(isOn);
if (!isOn)
{
_snowParticle.Stop();
return;
}
var emm = _snowParticle.emission;
var main = _snowParticle.main;
emm.rateOverTimeMultiplier = particleStrength;
main.prewarm = instant;
_wind.windMain = 0.5f * windStrength;
_snowParticle.Play();
}
public void DoSmallObjectEffect(SmallType type) public void DoSmallObjectEffect(SmallType type)
{ {
switch (type) switch (type)