예제 #1
0
    public void add(AudioSource source)
    {
        var time = (Time.time - startTime) % level.loopTime;

        var loopElement = new LoopElement(source.clip, time);

        play(loopElement);
        level.loopElements.Add(loopElement);

        var toneControl = Instantiate(toneControlPrefab, line.parent);

        toneControls.Add(toneControl);
        var button = toneControl.GetComponentInChildren <Button>();

        if (targetLevel && targetLevel.matches(loopElement))
        {
            button.image.color = Color.green;
        }
        toneControl.transform.localRotation = Quaternion.AngleAxis(360 / level.loopTime * time, Vector3.back);
        button.onClick.AddListener(() => {
            level.loopElements.Remove(loopElement);
            toneControls.Remove(toneControl);
            Destroy(toneControl);
        });
    }
예제 #2
0
        public static LoopElement Loop(this MessageElement me, string label, string from, string to, string step = "1")
        {
            var loop = new LoopElement {
                Label = label, From = from, To = to, Step = step
            };

            me?.Fields.Add(loop);
            return(loop);
        }
예제 #3
0
파일: Level.cs 프로젝트: merkisoft/LD47
    public bool matches(LoopElement loopElement)
    {
        for (int i = 0; i < loopElements.Count; i++)
        {
            if (loopElements[i].matches(loopElement, loopTime))
            {
                return(true);
            }
        }

        return(false);
    }
예제 #4
0
    private void play(LoopElement le)
    {
        var audioSource = sources[sourcesIndex++ % sources.Length];

        audioSource.clip = le.audio;
        audioSource.Play();

        if (pulsePrefab)
        {
            var instantiate = Instantiate(pulsePrefab, animationContainer);
            StartCoroutine(deletePulse(instantiate));
        }
    }
예제 #5
0
    public bool matches(LoopElement loopElement, float loopTime)
    {
        if (audio != loopElement.audio)
        {
            return(false);
        }

        var abs       = Mathf.Abs(loopElement.time - time);
        var tolerance = 0.15f;

        if (abs > loopTime - tolerance)
        {
            abs -= loopTime;
        }

        return(abs < tolerance);
    }
 public override void VisitLoopElement(LoopElement element)
 {
     Console.WriteLine("loop element: {0}",element.getText());
 }
    public override void VisitLoopElement(LoopElement element)
    {
        resultMessage += "parsing loop element"+"\n";
        loop = element.getText();
        int inc=0;
        int mode = 0;
        CharEnumerator ce = loop.GetEnumerator();
        string remloop="0";
        ce.MoveNext();
        while( inc < loop.Length)
        {
            //Console.WriteLine("Writing loop value {0}", ce.Current);

            if (ce.Current.CompareTo('(') == 0 && mode != -1)
                mode = 1;
            if (ce.Current.CompareTo(' ') == 0)
            {
                remloop = loop.Substring(inc);
                break;

            }

            if (mode == 1 && ce.Current.CompareTo('(')!=0)
            {
               loopvar = string.Concat(loopvar, ce.Current.ToString());
            }

            ce.MoveNext();
            inc++;
        }
        inc = 0;
        mode = 0;
        Console.WriteLine(" variable met in loop element:{0}",loopvar);
        resultMessage += String.Format(" variable met in loop element:{0}", loopvar)+"\n";
        Console.WriteLine(" substring left to parse:{0}", remloop);
        resultMessage += string.Format(" substring left to parse:{0}", remloop)+"\n";
        ce = remloop.GetEnumerator();
        ce.MoveNext();
        ce.MoveNext();
        string startvar="";
        string endvar="";
        while (inc < remloop.Length)
        {
            if (ce.Current.CompareTo('.') > 0 && mode == 0)
            {
                startvar += ce.Current.ToString();
            }
            else if(ce.Current.CompareTo('.')==0)
            {
                mode = 1;
            }
            else if (ce.Current.CompareTo(')') == 0)
            {
                break;
            }
            if (mode == 1 && ce.Current.CompareTo('.')!=0)
            {
                endvar += ce.Current.ToString();
            }
            ce.MoveNext();
            inc++;
        }
        Console.WriteLine("starting var of the loop is: {0}\n ending var of the loop is:{1}", startvar,endvar);
        resultMessage += string.Format("starting var of the loop is: {0}\n ending var of the loop is:{1}", startvar, endvar)+"\n";
        startloopvar = int.Parse(startvar);
        endloopvar = int.Parse(endvar);
    }
예제 #8
0
 public abstract void VisitLoopElement(LoopElement element);
예제 #9
0
 public void setLhs(LoopElement lhs)
 {
     mLhs = lhs;
 }