HeavenStudio/Assets/Scripts/Games/KarateMan/KarateMan.cs

125 lines
3.6 KiB
C#
Raw Normal View History

2021-12-29 06:52:48 +00:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using RhythmHeavenMania.Util;
namespace RhythmHeavenMania.Games.KarateMan
{
public class KarateMan : Minigame
{
2022-01-01 18:54:17 +00:00
public GameObject Pot, Bomb;
2021-12-30 08:26:18 +00:00
public KarateJoe KarateJoe;
2021-12-29 06:52:48 +00:00
public static KarateMan instance { get; set; }
2021-12-30 08:26:18 +00:00
public Sprite[] ObjectSprites;
2022-01-03 15:15:48 +00:00
public Sprite[] BarrelSprites;
2021-12-30 08:26:18 +00:00
public List<BGSpriteC> BGSprites;
public SpriteRenderer BGSprite;
private bool bgEnabled;
private int newBeat;
2022-01-03 22:42:43 +00:00
private float bopLength;
private float bopBeat;
[System.Serializable]
public class BGSpriteC
{
public List<Sprite> Sprites;
}
2021-12-29 06:52:48 +00:00
private void Awake()
{
instance = this;
}
private void Update()
{
2022-01-03 22:42:43 +00:00
if (Conductor.instance.songPositionInBeats > newBeat)
{
2022-01-03 22:42:43 +00:00
if (bgEnabled)
{
if (newBeat % 2 == 0)
BGSprite.sprite = BGSprites[0].Sprites[1];
else
BGSprite.sprite = BGSprites[0].Sprites[2];
2022-01-03 22:42:43 +00:00
}
2022-01-03 22:42:43 +00:00
if (Conductor.instance.songPositionInBeats >= bopBeat && Conductor.instance.songPositionInBeats < bopBeat + bopLength)
{
if (KarateJoe.anim.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1 && !KarateJoe.anim.IsInTransition(0))
KarateJoe.anim.Play("Bop", 0, 0);
print("bop");
}
2022-01-03 22:42:43 +00:00
newBeat++;
}
}
public void BGFXOn()
{
bgEnabled = true;
newBeat = Mathf.RoundToInt(Conductor.instance.songPositionInBeats);
}
public void BGFXOff()
{
bgEnabled = false;
BGSprite.sprite = BGSprites[0].Sprites[0];
}
2021-12-30 08:26:18 +00:00
public void Shoot(float beat, int type)
2021-12-29 06:52:48 +00:00
{
GameObject pot = Instantiate(Pot);
pot.transform.parent = Pot.transform.parent;
2021-12-30 08:26:18 +00:00
Pot p = pot.GetComponent<Pot>();
2021-12-29 06:52:48 +00:00
pot.SetActive(true);
2021-12-30 08:26:18 +00:00
p.startBeat = beat;
p.createBeat = beat;
p.isThrown = true;
p.type = type;
p.Sprite.GetComponent<SpriteRenderer>().sprite = ObjectSprites[type];
2021-12-29 06:52:48 +00:00
2021-12-30 08:26:18 +00:00
switch (type)
{
case 0:
Jukebox.PlayOneShotGame("karateman/objectOut");
p.hitSnd = "karateman/potHit";
break;
case 1:
Jukebox.PlayOneShotGame("karateman/lightbulbOut");
p.hitSnd = "karateman/lightbulbHit";
break;
case 2:
Jukebox.PlayOneShotGame("karateman/objectOut");
p.hitSnd = "karateman/rockHit";
break;
case 3:
Jukebox.PlayOneShotGame("karateman/objectOut");
p.hitSnd = "karateman/soccerHit";
break;
2022-01-01 18:54:17 +00:00
case 4:
p.kick = true;
Jukebox.PlayOneShotGame("karateman/barrelOutKicks");
p.hitSnd = "karateman/barrelBreak";
GameObject pks = new GameObject(); pks.AddComponent<PunchKickSound>().startBeat = beat;
pks.transform.parent = this.transform.parent;
2022-01-01 18:54:17 +00:00
break;
2021-12-30 08:26:18 +00:00
}
}
2022-01-03 22:42:43 +00:00
public void Bop(float beat, float length)
2021-12-30 08:26:18 +00:00
{
2022-01-03 22:42:43 +00:00
bopLength = length;
bopBeat = beat;
2021-12-29 06:52:48 +00:00
}
}
}