コード例 #1
0
ファイル: StyleParser.cs プロジェクト: veboys/UIForia
 private void SoundParseLoop(SoundRootNode soundRootNode)
 {
     while (tokenStream.HasMoreTokens && !AdvanceIfTokenType(StyleTokenType.BracesClose))
     {
         ParseSoundProperty(soundRootNode);
     }
 }
コード例 #2
0
        private UISoundData CompileSoundProperties(SoundRootNode soundRootNode)
        {
            UISoundData soundData = new UISoundData();

            // set defaults
            soundData.duration   = new UITimeMeasurement(1, UITimeMeasurementUnit.Percentage);
            soundData.pitch      = 1;
            soundData.iterations = 1;
            soundData.tempo      = 1;

            for (int i = 0; i < soundRootNode.children.Count; i++)
            {
                StyleASTNode property = soundRootNode.children[i];
                if (property is SoundPropertyNode soundPropertyNode)
                {
                    StyleASTNode value = soundPropertyNode.value;
                    switch (soundPropertyNode.name.ToLower())
                    {
                    case "asset":
                        soundData.asset = StylePropertyMappers.MapString(value, context);
                        break;

                    case "duration":
                        soundData.duration = StylePropertyMappers.MapUITimeMeasurement(value, context);
                        break;

                    case "iterations":
                        soundData.iterations = (int)StylePropertyMappers.MapNumberOrInfinite(value, context);
                        break;

                    case "pitch":
                        soundData.pitch = StylePropertyMappers.MapNumber(value, context);
                        break;

                    case "pitchrange":
                        soundData.pitchRange = StylePropertyMappers.MapFloatRange(value, context);
                        break;

                    case "tempo":
                        soundData.tempo = StylePropertyMappers.MapNumber(value, context);
                        break;

                    case "volume":
                        soundData.volume = StylePropertyMappers.MapNumber(value, context);
                        break;

                    case "mixergroup":
                        soundData.mixerGroup = StylePropertyMappers.MapString(value, context);
                        break;
                    }
                }
                else
                {
                    throw new CompileException(property, "Expected a sound property.");
                }
            }

            return(soundData);
        }
コード例 #3
0
        private UISoundData CompileSound(SoundRootNode soundRootNode)
        {
            UISoundData data = CompileSoundProperties(soundRootNode);

            data.name = soundRootNode.identifier;
            data.styleSheetFileName = context.fileName;
            return(data);
        }
コード例 #4
0
ファイル: StyleParser.cs プロジェクト: veboys/UIForia
        private void ParseSound()
        {
            StyleToken    soundNameToken = tokenStream.Current;
            SoundRootNode soundRootNode  = StyleASTNodeFactory.SoundRootNode(soundNameToken);

            soundRootNode.WithLocation(soundNameToken);
            tokenStream.Advance();
            AssertTokenTypeAndAdvance(StyleTokenType.BracesOpen);
            SoundParseLoop(soundRootNode);
            nodes.Add(soundRootNode);
        }
コード例 #5
0
ファイル: StyleParser.cs プロジェクト: veboys/UIForia
        private void ParseSoundProperty(SoundRootNode soundRootNode)
        {
            string propertyName = AssertTokenTypeAndAdvance(StyleTokenType.Identifier);

            AssertTokenTypeAndAdvance(StyleTokenType.EqualSign);
            StyleToken variableToken = tokenStream.Current;

            SoundPropertyNode propertyNode = StyleASTNodeFactory.SoundPropertyNode(propertyName, ParsePropertyValue());

            propertyNode.WithLocation(variableToken);

            soundRootNode.AddChildNode(propertyNode);
            AssertTokenTypeAndAdvance(StyleTokenType.EndStatement);
        }