mirror of
https://github.com/RHeavenStudioPlus/HeavenStudioPlus.git
synced 2024-11-10 19:55:09 +00:00
ebeea121ed
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
99 lines
2.7 KiB
C#
99 lines
2.7 KiB
C#
using DG.Tweening;
|
|
using NaughtyBezierCurves;
|
|
using HeavenStudio.Util;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace HeavenStudio.Games
|
|
{
|
|
using Scripts_BlueBear;
|
|
public class BlueBear : Minigame
|
|
{
|
|
[Header("Animators")]
|
|
public Animator headAndBodyAnim; // Head and body
|
|
public Animator bagsAnim; // Both bags sprite
|
|
public Animator donutBagAnim; // Individual donut bag
|
|
public Animator cakeBagAnim; // Individual cake bag
|
|
|
|
[Header("References")]
|
|
public GameObject donutBase;
|
|
public GameObject cakeBase;
|
|
public Transform foodHolder;
|
|
public GameObject individualBagHolder;
|
|
|
|
[Header("Curves")]
|
|
public BezierCurve3D donutCurve;
|
|
public BezierCurve3D cakeCurve;
|
|
|
|
private bool squashing;
|
|
|
|
public static BlueBear instance;
|
|
|
|
private void Awake()
|
|
{
|
|
instance = this;
|
|
headAndBodyAnim.SetBool("ShouldOpenMouth", foodHolder.childCount != 0);
|
|
|
|
if (PlayerInput.GetAnyDirectionDown())
|
|
{
|
|
headAndBodyAnim.Play("BiteL", 0, 0);
|
|
}
|
|
else if (PlayerInput.Pressed())
|
|
{
|
|
headAndBodyAnim.Play("BiteR", 0, 0);
|
|
}
|
|
}
|
|
|
|
private void LateUpdate()
|
|
{
|
|
if (squashing)
|
|
{
|
|
var dState = donutBagAnim.GetCurrentAnimatorStateInfo(0);
|
|
var cState = cakeBagAnim.GetCurrentAnimatorStateInfo(0);
|
|
|
|
bool noDonutSquash = dState.IsName("DonutIdle");
|
|
bool noCakeSquash = cState.IsName("CakeIdle");
|
|
|
|
if (noDonutSquash && noCakeSquash)
|
|
{
|
|
squashing = false;
|
|
bagsAnim.Play("Idle", 0, 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void SpawnTreat(float beat, bool isCake)
|
|
{
|
|
var objectToSpawn = isCake ? cakeBase : donutBase;
|
|
var newTreat = GameObject.Instantiate(objectToSpawn, foodHolder);
|
|
|
|
var treatComp = newTreat.GetComponent<Treat>();
|
|
treatComp.startBeat = beat;
|
|
treatComp.curve = isCake ? cakeCurve : donutCurve;
|
|
|
|
newTreat.SetActive(true);
|
|
|
|
Jukebox.PlayOneShotGame(isCake ? "blueBear/cake" : "blueBear/donut");
|
|
|
|
SquashBag(isCake);
|
|
}
|
|
|
|
public void SquashBag(bool isCake)
|
|
{
|
|
squashing = true;
|
|
bagsAnim.Play("Squashing", 0, 0);
|
|
|
|
individualBagHolder.SetActive(true);
|
|
|
|
if (isCake)
|
|
{
|
|
cakeBagAnim.Play("CakeSquash", 0, 0);
|
|
}
|
|
else
|
|
{
|
|
donutBagAnim.Play("DonutSquash", 0, 0);
|
|
}
|
|
}
|
|
}
|
|
}
|