eye barelies, consecutive c&rs

we're so close!
This commit is contained in:
AstrlJelly 2024-02-12 22:11:50 -05:00
parent 56ac82c753
commit fe6d213aac
3 changed files with 36 additions and 32 deletions

View file

@ -1,6 +1,7 @@
using System.Collections;
using System.Collections.Generic;
using System;
using UnityEngine;
using HeavenStudio.Util;
@ -10,14 +11,15 @@ namespace HeavenStudio.Games.Scripts_SlotMonster
public class SlotButton : MonoBehaviour
{
public bool pressed;
// public double timing;
public Color color; // used to ease between button colors and button flash colors! wow
public Animator anim;
public SpriteRenderer[] srs;
public bool flashing;
private bool flashing;
const int FLASH_FRAMES = 4;
public int currentFrame;
private int currentFrame;
private SlotMonster game;

View file

@ -1,13 +1,12 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using HeavenStudio.Util;
using HeavenStudio.InputSystem;
using Jukebox;
using System.Linq;
using System.ComponentModel;
namespace HeavenStudio.Games.Loaders
{
@ -156,32 +155,43 @@ namespace HeavenStudio.Games
// make sure the current button is always between 0 and 2 (buttons 1-3)
private int GetCurrentButton() => Array.FindIndex(buttons, button => !button.pressed);
private bool HitButton(bool isHit = false) // returns true if it's the last one
private bool HitButton(bool isHit = false, int timing = 0) // returns true if it's the last one
{
int thisButton = GetCurrentButton();
if (thisButton == -1) return false;
bool lastButton = thisButton == maxButtons - 1;
string hitSfx = "slotMonster/stop_" + (lastButton && isHit ? "hit" : (thisButton + 1));
bool isLast = thisButton == maxButtons - 1;
string hitSfx = "slotMonster/stop_" + (isLast && isHit ? "hit" : (thisButton + 1));
SoundByte.PlayOneShotGame(hitSfx, forcePlay: true);
for (int i = thisButton; i < (lastButton ? 3 : thisButton + 1); i++)
for (int i = thisButton; i < (isLast ? 3 : thisButton + 1); i++)
{
buttons[thisButton].Press();
if (eyeAnims[thisButton].IsPlayingAnimationNames("Spin")) {
int eyeSprite = currentEyeSprite;
string anim = "EyeItem";
if (!isHit) {
do {
eyeSprite = UnityEngine.Random.Range(1, 10);
} while (eyeSprite == currentEyeSprite);
eyeSprite = UnityEngine.Random.Range(0, 9);
} while (eyeSprite == (currentEyeSprite - 1));
anim += eyeSprite + 1;
} else {
if (timing == 1) {
eyeSprite = (eyeSprite + 1) % 9;
}
anim += eyeSprite + 1;
if (timing != 0) {
// string += lol
anim += "Barely";
}
}
Debug.Log("EyeItem" + eyeSprite);
eyeAnims[thisButton].Play("EyeItem" + eyeSprite, 0, 0);
Debug.Log(anim);
eyeAnims[thisButton].Play(anim, 0, 0);
}
}
if (lastButton) {
if (isLast) {
if (rollingSound != null) rollingSound.Stop();
}
currentButton++;
return lastButton && isHit;
return isLast && isHit;
}
public void StartInterval(double beat, float length, bool autoPass, int eyeSprite, double gameSwitchBeat)
@ -200,8 +210,11 @@ namespace HeavenStudio.Games
for (int i = 0; i < maxButtons; i++) // limit to 3 actions
{
buttons[i].anim.Play("PopUp", 0, 0);
buttons[i].pressed = false;
eyeAnims[i].Play("Idle", 0, 1);
int whichSlot = i;
RiqEntity slot = slotActions[whichSlot];
// buttons[i].timing = slot.beat;
if (slot.beat < gameSwitchBeat) continue;
string sfx = "";
if (slot["drum"] == (int)DrumTypes.Default) {
@ -250,9 +263,8 @@ namespace HeavenStudio.Games
buttons[whichSlot].TryFlash();
}));
// Debug.Log("input scheduled at : " + (beat + length + slotBeat - startBeat));
PlayerActionEvent input = ScheduleInput(beat, slotBeat - startBeat + length, InputAction_BasicPress, ButtonHit, null, null);
// input.IsHittable = () => {
// input.IsHittable = () => { // ugh this breaks the input check
// int currentButton = GetCurrentButton();
// return currentButton == whichSlot && !buttonsPressed[whichSlot];
// };
@ -262,7 +274,12 @@ namespace HeavenStudio.Games
private void ButtonHit(PlayerActionEvent caller, float state)
{
bool isWin = HitButton(true);
int timing = state switch {
>= 1f => -1,
<= -1f => 1,
_ => 0,
};
bool isWin = HitButton(true, timing);
if (isWin) {
if (rollingSound != null) rollingSound.Stop();
smAnim.DoScaledAnimationAsync("Win", 0.5f);
@ -270,11 +287,6 @@ namespace HeavenStudio.Games
if (state is >= 1f or <= -1f) SoundByte.PlayOneShot("nearMiss");
}
// private void ButtonMiss(PlayerActionEvent caller)
// {
//
// }
public void ButtonColor(Color[] colors, Color flashColor)
{
for (int i = 0; i < buttons.Length; i++) {

View file

@ -433,16 +433,6 @@ namespace HeavenStudio
Debug.LogWarning("Game loader NtrSlotMonsterLoader failed!");
}
game = NtrSlotMonsterLoader.AddGame(eventCaller);
if (game != null)
{
eventCaller.minigames.Add(game.name, game);
}
else
{
Debug.LogWarning("Game loader NtrSlotMonsterLoader failed!");
}
game = AgbGhostLoader.AddGame(eventCaller);
if (game != null)
{