private void SoundParseLoop(SoundRootNode soundRootNode) { while (tokenStream.HasMoreTokens && !AdvanceIfTokenType(StyleTokenType.BracesClose)) { ParseSoundProperty(soundRootNode); } }
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); }
private UISoundData CompileSound(SoundRootNode soundRootNode) { UISoundData data = CompileSoundProperties(soundRootNode); data.name = soundRootNode.identifier; data.styleSheetFileName = context.fileName; return(data); }
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); }
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); }