コード例 #1
0
    public void Play(bool loop, bool ignoreInfinite = false)
    {
        keyboard.Mute();
        m_PatternLoop = data.FindLoopPoint( );

        if (loop)
        {
            m_Loops = m_PlayLoops;
            if (ignoreInfinite)
            {
                m_Loops = System.Math.Max(m_PatternLoop == 0 ? 0 : 1, m_Loops);
            }
        }
        else
        {
            m_Loops = 0;
        }

        m_StartSample    = psg.currentSample;
        m_CurrentPattern = data.currentPattern;
        m_CurrentLine    = 0;
        m_Counter        = 10000;
        view.SetSelection(0);
        m_LastLineTick       = Time.time;
        m_IsPlaying          = true;
        m_IsStopping         = false;
        m_PatternBreakTarget = -1;

        view.SetSelection(view.selectedLine);
    }
コード例 #2
0
 void Start()
 {
     for (int i = 0; i < dataEntries.Length; i++)
     {
         int index = i;
         dataEntries [i].onClick.AddListener(() => {
             if (!view.playback.isPlaying)
             {
                 view.SetSelection(line, channel, index, false);
             }
         });
         dataEntries[i].GetComponent <BoxSelectable>().row = this;
     }
 }
コード例 #3
0
    private void ApplyEvent(FiniteStack <HistoryEvent> apply)
    {
        if (apply.count <= 0)
        {
            return;
        }

        HistoryEvent next = apply.Pop();

        next.Restore(data.songData);
        data.currentPattern = next.pattern;
        view.UpdatePatternData();
        Debug.Log("Next line is " + next.position.line);
        view.SetSelection(next.position);
    }
コード例 #4
0
    // Update is called once per frame
    void Update()
    {
        if (ExclusiveFocus.hasFocus)
        {
            return;
        }

        if (!playback.isPlaying)
        {
            if (Input.GetKeyDown(KeyCode.Home))
            {
                patternView.SetSelection(0);
            }
            if (Input.GetKeyDown(KeyCode.End))
            {
                patternView.SetSelection(songData.patternLength - 1);
            }

            if (Input.GetKeyDown(KeyCode.DownArrow))
            {
                DoShortcut(KeyCode.DownArrow, () => { patternView.MoveVertical(1); });
            }
            if (Input.GetKeyDown(KeyCode.UpArrow))
            {
                DoShortcut(KeyCode.UpArrow, () => { patternView.MoveVertical(-1); });
            }
        }

        if (Input.GetKeyDown(KeyCode.LeftArrow))
        {
            DoShortcut(KeyCode.LeftArrow, () => { patternView.MoveHorizontal(-1); });
        }
        if (Input.GetKeyDown(KeyCode.RightArrow))
        {
            DoShortcut(KeyCode.RightArrow, () => { patternView.MoveHorizontal(1); });
        }

        if (ModifierDown())
        {
            if (Input.GetKeyDown(KeyCode.C))
            {
                CopySelection();
            }
            if (Input.GetKeyDown(KeyCode.V))
            {
                PasteSelection();
            }
            if (Input.GetKeyDown(KeyCode.X))
            {
                CopySelection();
                DeleteSelection();
            }

            if (Input.GetKeyDown(KeyCode.Z))
            {
                history.Undo();
            }

            if (Input.GetKeyDown(KeyCode.F1))
            {
                Transpose(-1);
            }
            if (Input.GetKeyDown(KeyCode.F2))
            {
                Transpose(1);
            }
            if (Input.GetKeyDown(KeyCode.F3))
            {
                Transpose(-12);
            }
            if (Input.GetKeyDown(KeyCode.F4))
            {
                Transpose(12);
            }

            if (Input.GetKeyDown(KeyCode.A))
            {
                SelectAll( );
            }

            if (Input.GetKeyDown(KeyCode.S))
            {
                fileManagement.SaveFile(false);
            }
        }

        if (patternView.recording)
        {
            if (Input.GetKeyDown(KeyCode.Delete))
            {
                DoShortcut(KeyCode.Delete, DeleteSelection);
            }

            if (Input.GetKeyDown(KeyCode.Backspace))
            {
                DoShortcut(KeyCode.Backspace, Erase);
            }

            if (Input.GetKeyDown(KeyCode.Insert))
            {
                DoShortcut(KeyCode.Insert, Insert);
            }
        }

        if (!ModifierDown())
        {
            for (int i = (int)KeyCode.F1; i <= (int)KeyCode.F8; i++)
            {
                if (Input.GetKeyDown((KeyCode)i))
                {
                    controls.octave.value = i - (int)KeyCode.F1 + 1;
                }
            }
        }
    }