Ejemplo n.º 1
0
 int FetchNotePlayMode(HitEvent nextHitObject)
 {
     if (timingIndex < timingPointsList.Count && nextHitObject.getOffset() >= timingPointsList[timingIndex].getOffset())
     {
         return(timingPointsList[timingIndex].getPlaymode());
     }
     else if (timingIndex < timingPointsList.Count && nextHitObject.getOffset() < timingPointsList[timingIndex].getOffset())
     {
         return(timingPointsList[timingIndex - 1].getPlaymode());
     }
     else
     {
         return(0); // Default to "step" mode if neither apply
     }
 }
Ejemplo n.º 2
0
 public bool InStartHoldHitWindow(HitEvent currentNote, double _localCurrentOffset)
 {
     if (_localCurrentOffset >= currentNote.getOffset() - greatHitWindow && _localCurrentOffset <= currentNote.getOffset() + okHitWindow)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Ejemplo n.º 3
0
 bool InGoodHitWindow(HitEvent currentNote, double _localCurrentOffset)
 {
     if (_localCurrentOffset >= currentNote.getOffset() - goodHitWindow && _localCurrentOffset <= currentNote.getOffset() + goodHitWindow)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Ejemplo n.º 4
0
 public bool MissedHitWindow(HitEvent currentNote, double _localCurrentOffset)
 {
     if (_localCurrentOffset > currentNote.getOffset() + okHitWindow)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Ejemplo n.º 5
0
 void spawnStepNote(GameObject ring, Transform spawner, HitEvent hitObject, KeyCode key)
 {
     if (hitObject.IsHold())
     {
         int offsetDiff = hitObject.getEndOffset() - hitObject.getOffset();
         StopCoroutine(spawnStepHold(ring, spawner, hitObject, offsetDiff, key));
         StartCoroutine(spawnStepHold(ring, spawner, hitObject, offsetDiff, key));
     }
     else
     {
         var currentRing = Instantiate(ring, spawner.position, spawner.rotation);
         currentRing.transform.SetParent(noteHolder.transform);
         currentRing.transform.localScale = ring.transform.localScale;
         if (hitObject.IsMine())
         {
             currentRing.AddComponent <Mine>().Initialize(spawner.position, hitbox.transform.position, hitObject.getOffset(), scrollDelay, key, hitObject);
         }
         else
         {
             currentRing.AddComponent <Ring>().Initialize(spawner.position, hitbox.transform.position, hitObject.getOffset(), scrollDelay, key, hitObject);
         }
     }
 }
Ejemplo n.º 6
0
    void spawnMemoryNote(GameObject ring, Transform spawner, HitEvent hitObject, KeyCode key)
    {
        if (MemoryNoteManager.Instance.currentMemorySequence.Count > 0)
        {
            HitEvent memNote     = MemoryNoteManager.Instance.currentMemorySequence.Dequeue();
            var      currentRing = Instantiate(ring, spawner.localPosition, Quaternion.identity);
            currentRing.transform.SetParent(diamondHolder.transform, false);
            hitObject.setPlayMode(FetchNotePlayMode(hitObject));
            currentRing.GetComponent <DiamondRing>().Initialize(diamondHitbox.transform.localScale, hitObject.getOffset(), scrollDelay, hitObject);
            if (hitObject.getColorIntArray().Length == 4)
            {
                colorIntArray = hitObject.getColorIntArray();
            }
            int intKey = Array.IndexOf(colorIntArray, memNote.getKey());
            switch (intKey)
            {
            case 0:       // LEFT
                currentRing.GetComponent <DiamondRing>().keyCode = keyLeft;
                break;

            case 1:      // DOWN
                currentRing.GetComponent <DiamondRing>().keyCode = keyDown;
                break;

            case 2:      // UP
                currentRing.GetComponent <DiamondRing>().keyCode = keyUp;
                break;

            case 3:      // RIGHT
                currentRing.GetComponent <DiamondRing>().keyCode = keyRight;
                break;

            default:
                break;
            }
        }
    }
Ejemplo n.º 7
0
    IEnumerator spawnStepHold(GameObject ring, Transform spawner, HitEvent hitObject, int offsetDiff, KeyCode key)
    {
        GameObject startHold = Instantiate(ring, spawner.position, spawner.rotation);

        startHold.transform.SetParent(noteHolder.transform);
        startHold.transform.localScale = ring.transform.localScale;
        startHold.AddComponent <StartHold>();

        GameObject midHold = Instantiate(midRing, spawner.position, spawner.rotation);

        midHold.transform.SetParent(noteHolder.transform);
        midHold.AddComponent <MidHold>();

        GameObject endHold = Instantiate(ring, spawner.position, spawner.rotation);

        endHold.transform.SetParent(noteHolder.transform);
        endHold.transform.localScale = ring.transform.localScale;

        startHold.GetComponent <StartHold>().Initialize(spawner.position, hitbox.transform.position, hitObject.getOffset(), scrollDelay, key, midHold, endHold, noteHolder, hitObject);
        midHold.GetComponent <MidHold>().Initialize(spawner.position, hitbox.transform.position, hitObject.getOffset(), scrollDelay, key, startHold, endHold, hitObject);

        yield return(new WaitForSecondsRealtime(offsetDiff / 1000f));

        endHold.AddComponent <EndHold>();
        endHold.GetComponent <EndHold>().Initialize(spawner.position, hitbox.transform.position, hitObject.getEndOffset(), scrollDelay, key, startHold, midHold, hitObject);
    }
Ejemplo n.º 8
0
    void FetchCurrentNote()
    {
        while (index < hitEventsList.Count)
        {
            //gets latest timing points
            offsetTime = (AudioSettings.dspTime - startTime) * 1000 + scrollDelay;

            //Debug.Log("OFFSET TIME: " + offsetTime);
            if (timingIndex < timingPointsList.Count && offsetTime >= timingPointsList[timingIndex].getOffset())
            {
                scrollDelay = delayHandler.GetComponent <DelayHandler>().UpdateBPM(timingPointsList[timingIndex].getMsPerBeat());
                if (timingPointsList[timingIndex].getPlaymode() == 0) // step
                {
                    baseScore          = noteBaseScore;
                    memoryMode         = false;
                    invertedMemoryMode = false;
                }
                else
                {
                    baseScore          = memoryBaseScore;
                    memoryMode         = timingPointsList[timingIndex].getPlaymode() == 1 ? true : false;
                    invertedMemoryMode = timingPointsList[timingIndex].getPlaymode() == -1 ? true : false;
                }
                timingIndex++;
            }

            noteOffsetTime  = (AudioSettings.dspTime - startTime) * 1000;
            noteOffsetTime += scrollDelay;
            HitEvent hitObject = hitEventsList[index];

            if (noteOffsetTime >= hitObject.getOffset())
            {
                //Debug.Log("Note " + hitObject.getOffset() + " Spawn time: " + offsetTime + "\nNote offset: " + noteOffsetTime);
                if ((hitObject.IsNote() || hitObject.IsHold()) && !noteFlag)
                {
                    spawnNotes(hitObject);
                }
                noteFlag = true;
                if (hitObject.isFlashYellow() || hitObject.isFlashGreen() || hitObject.isFlashRed() || hitObject.isFlashBlue())
                {
                    HitEvent memoryNote = new HitEvent();
                    memoryNote.setSequenceStart(isSequenceStart);
                    if (hitObject.isFlashYellow())
                    {
                        StartCoroutine(FlashMemoryPrompt("yellow", hitObject.IsflashBlack()));
                        memoryNote.setKey("0");
                        memorySequence.Enqueue(memoryNote);
                    }
                    if (hitObject.isFlashGreen())
                    {
                        StartCoroutine(FlashMemoryPrompt("green", hitObject.IsflashBlack()));
                        memoryNote.setKey("1");
                        memorySequence.Enqueue(memoryNote);
                    }
                    if (hitObject.isFlashRed())
                    {
                        StartCoroutine(FlashMemoryPrompt("red", hitObject.IsflashBlack()));
                        memoryNote.setKey("2");
                        memorySequence.Enqueue(memoryNote);
                    }
                    if (hitObject.isFlashBlue())
                    {
                        StartCoroutine(FlashMemoryPrompt("blue", hitObject.IsflashBlack()));
                        memoryNote.setKey("3");
                        memorySequence.Enqueue(memoryNote);
                    }
                    isSequenceStart = false;
                }
                else
                {
                    isSequenceStart = true;
                }


                if (index + 1 < hitEventsList.Count)
                {
                    HitEvent nextHitObject = hitEventsList[index + 1];
                    int      nextHitMode   = FetchNotePlayMode(nextHitObject);
                    // Check if the next note is a memory input corresponding to the start of memory sequence
                    if (memorySequence.Count > 0)
                    {
                        if (nextHitMode != 0 && nextHitObject.IsNote() && memorySequence.Peek().isSequenceStart())
                        {
                            StopCoroutine(HandleMemoryStart(nextHitObject, nextHitMode));
                            StartCoroutine(HandleMemoryStart(nextHitObject, nextHitMode));
                        }
                    }
                    StopCoroutine(HandleMemorySprites(hitObject, FetchNotePlayMode(hitObject)));
                    StartCoroutine(HandleMemorySprites(hitObject, FetchNotePlayMode(hitObject)));
                }
            }
            else // if next hit object doesn't need to be spawned now
            {
                break;
            }

            noteFlag = false;
            index++;
        }
    }