HeavenStudio/Assets/Scripts/Games/WizardsWaltz/Wizard.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

79 lines
2.1 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HeavenStudio.Util;
namespace HeavenStudio.Games.Scripts_WizardsWaltz
{
public class Wizard : MonoBehaviour
{
public Animator animator;
public GameObject shadow;
private float newBeat = 0;
private int beats = 0;
private WizardsWaltz game;
private float songPos;
public void Init()
{
game = WizardsWaltz.instance;
}
void Update()
{
songPos = Conductor.instance.songPositionInBeats - game.wizardBeatOffset;
var am = game.beatInterval / 2f;
var x = Mathf.Sin(Mathf.PI * songPos / am) * 6;
var y = Mathf.Cos(Mathf.PI * songPos / am);
var scale = 1 - Mathf.Cos(Mathf.PI * songPos / am) * 0.35f;
transform.position = new Vector3(x, 3f - y * 0.5f, 0);
shadow.transform.position = new Vector3(x, -3f + y * 1.5f, 0);
var xscale = scale;
if (y > 0) xscale *= -1;
transform.localScale = new Vector3(xscale, scale, 1);
shadow.transform.localScale = new Vector3(scale, scale, 1);
}
private void LateUpdate()
{
if (PlayerInput.Pressed(true))
{
animator.Play("Magic", 0, 0);
Jukebox.PlayOneShotGame("wizardsWaltz/wand");
}
}
public void Idle()
{
animator.Play("Idle", 0, 0);
}
public void Magic(Plant plant, bool hit)
{
animator.Play("Magic", 0, 0);
if(plant == null)
{
// TODO: Play empty A press sound
return;
}
if (hit)
{
Jukebox.PlayOneShotGame("wizardsWaltz/grow");
plant.Bloom();
game.girl.Happy();
}
else
{
Jukebox.PlayOneShot("miss");
plant.Eat();
game.girl.Sad();
}
}
}
}