HeavenStudio/Assets/Scripts/Games/WizardsWaltz/Plant.cs
Slaith ebeea121ed Moved all minigame initialization to Awake()
I just moved everything that was in start to awake. There are a few other changes I made, like using init functions rather than awake in scripts that depended on something that was initialized in another script's awake (to make sure things always happen in the right order), as well as some other stuff in some specific minigames
2022-03-25 19:08:46 -07:00

101 lines
2.2 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
namespace HeavenStudio.Games.Scripts_WizardsWaltz
{
public class Plant : PlayerActionObject
{
public Animator animator;
public SpriteRenderer spriteRenderer;
public float createBeat;
private WizardsWaltz game;
private bool hit = false;
private bool passed = false;
public int order = 0;
private void Awake()
{
game = WizardsWaltz.instance;
spriteRenderer.sortingOrder = order;
animator.Play("Appear", 0, 0);
}
private void Update()
{
if (!passed && Conductor.instance.songPositionInBeats > createBeat + game.beatInterval)
{
StartCoroutine(FadeOut());
passed = true;
}
if (hit) return;
float stateBeat = Conductor.instance.GetPositionFromMargin(createBeat + game.beatInterval, 1f);
StateCheck(stateBeat);
if (PlayerInput.Pressed(true))
{
if (state.perfect)
{
Ace();
} else if (state.notPerfect())
{
Miss();
}
}
}
public void Bloom()
{
animator.Play("Hit", 0, 0);
}
public void IdlePlant()
{
animator.Play("IdlePlant", 0, 0);
}
public void IdleFlower()
{
animator.Play("IdleFlower", 0, 0);
}
public void Eat()
{
animator.Play("Eat", 0, 0);
}
public void EatLoop()
{
animator.Play("EatLoop", 0, 0);
}
public void Ace()
{
game.wizard.Magic(this, true);
hit = true;
}
public void Miss()
{
game.wizard.Magic(this, false);
hit = true;
}
public override void OnAce()
{
Ace();
}
public IEnumerator FadeOut()
{
yield return new WaitForSeconds(Conductor.instance.secPerBeat * game.beatInterval / 2f);
Destroy(gameObject);
}
}
}