HeavenStudioPlus/Assets/Scripts/Games/SpaceSoccer/SpaceSoccer.cs

105 lines
3.7 KiB
C#
Raw Normal View History

2022-01-24 02:15:23 +00:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
2022-03-14 14:21:05 +00:00
using HeavenStudio.Util;
2022-01-24 02:15:23 +00:00
2022-03-14 14:21:05 +00:00
namespace HeavenStudio.Games
2022-01-24 02:15:23 +00:00
{
2022-03-12 04:10:13 +00:00
using Scripts_SpaceSoccer;
2022-01-24 02:15:23 +00:00
public class SpaceSoccer : Minigame
{
[Header("Components")]
[SerializeField] private GameObject ballRef;
[SerializeField] private List<Kicker> kickers;
2022-01-30 23:40:12 +00:00
[SerializeField] private GameObject Background;
[SerializeField] private Sprite[] backgroundSprite;
2022-01-24 02:15:23 +00:00
[Header("Properties")]
2022-02-26 23:38:27 +00:00
[SerializeField] private bool ballDispensed; //unused
2022-01-24 02:15:23 +00:00
public static SpaceSoccer instance { get; private set; }
private void Awake()
{
instance = this;
}
2022-01-30 23:40:12 +00:00
private void Start()
{
/*for (int x = 0; x < Random.Range(9, 12); x++)
2022-01-30 23:40:12 +00:00
{
for (int y = 0; y < Random.Range(6, 9); y++)
{
GameObject test = new GameObject("test");
test.transform.parent = Background.transform;
test.AddComponent<SpriteRenderer>().sprite = backgroundSprite[Random.Range(0, 2)];
test.GetComponent<SpriteRenderer>().sortingOrder = -50;
test.transform.localPosition = new Vector3(Random.Range(-15f, 15f), Random.Range(-15f, 15f));
test.transform.localScale = new Vector3(0.52f, 0.52f);
}
}*/
2022-01-30 23:40:12 +00:00
}
2022-01-24 02:15:23 +00:00
private void Update()
{
2022-01-24 02:15:23 +00:00
}
public override void OnGameSwitch(float beat)
{
foreach(Beatmap.Entity entity in GameManager.instance.Beatmap.entities)
{
if(entity.beat > beat) //the list is sorted based on the beat of the entity, so this should work fine.
{
break;
}
if(entity.datamodel != "spaceSoccer/ball dispense" || entity.beat + entity.length <= beat) //check for dispenses that happen right before the switch
{
continue;
}
Dispense(entity.beat, false);
break;
}
}
public void Dispense(float beat, bool playSound = true)
2022-01-24 02:15:23 +00:00
{
ballDispensed = true;
for (int i = 0; i < kickers.Count; i++)
{
Kicker kicker = kickers[i];
if (i == 0) kicker.player = true;
if (kicker.ball != null) return;
2022-01-24 02:15:23 +00:00
GameObject ball = Instantiate(ballRef, transform);
ball.SetActive(true);
Ball ball_ = ball.GetComponent<Ball>();
ball_.Init(kicker, beat);
if (kicker.player && playSound)
{
DispenseSound(beat);
}
}
2022-01-24 02:15:23 +00:00
}
public static void DispenseSound(float beat)
{
MultiSound.Play(new MultiSound.Sound[]
{
new MultiSound.Sound("spaceSoccer/dispenseNoise", beat),
2022-03-13 01:13:10 +00:00
new MultiSound.Sound("spaceSoccer/dispenseTumble1", beat),
new MultiSound.Sound("spaceSoccer/dispenseTumble2", beat + 0.25f),
new MultiSound.Sound("spaceSoccer/dispenseTumble2B",beat + 0.25f),
new MultiSound.Sound("spaceSoccer/dispenseTumble3", beat + 0.75f),
new MultiSound.Sound("spaceSoccer/dispenseTumble4", beat + 1f),
new MultiSound.Sound("spaceSoccer/dispenseTumble5", beat + 1.25f),
new MultiSound.Sound("spaceSoccer/dispenseTumble6", beat + 1.5f),
new MultiSound.Sound("spaceSoccer/dispenseTumble6B",beat + 1.75f),
}, forcePlay:true);
}
2022-01-24 02:15:23 +00:00
}
}