diff --git a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs index b8359ec..932a78e 100644 --- a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs @@ -573,6 +573,11 @@ namespace Filtration.Parser.Services switch (matches.Value) { + case "DisableDropSound": + { + blockItems.Add(new DisableDropSoundBlockItem()); + break; + } case "PlayAlertSound": { var match = Regex.Match(trimmedLine, @"\s+(\S+) (\d+)"); @@ -587,6 +592,20 @@ namespace Filtration.Parser.Services blockItems.Add(blockItem); break; } + case "PlayAlertSoundPositional": + { + var match = Regex.Match(trimmedLine, @"\s+(\S+) (\d+)"); + if (!match.Success) break; + var blockItem = new PositionalSoundBlockItem(match.Groups[1].Value, Convert.ToInt16(match.Groups[2].Value)); + if(_masterComponentCollection != null && !string.IsNullOrWhiteSpace(blockComment)) + { + ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.AlertSound, + blockComment, blockItem.Value, blockItem.SecondValue); + blockItem.ThemeComponent = themeComponent; + } + blockItems.Add(blockItem); + break; + } case "SetTextColor": { var result = Regex.Matches(trimmedLine, @"([\w\s]*)"); @@ -643,6 +662,56 @@ namespace Filtration.Parser.Services blockItems.Add(blockItem); break; } + case "MinimapIcon": + { + // TODO: Get size, color, shape values programmatically + var match = Regex.Match(trimmedLine, + @"\S+\s+(0|1|2)\s+(Red|Green|Blue|Brown|White|Yellow)\s+(Circle|Diamond|Hexagon|Square|Star|Triangle)\s*([#]?)(.*)", + RegexOptions.IgnoreCase); + + if (match.Success) + { + var blockItemValue = new MapIconBlockItem + { + Size = (IconSize)short.Parse(match.Groups[1].Value), + Color = EnumHelper.GetEnumValueFromDescription(match.Groups[2].Value), + Shape = EnumHelper.GetEnumValueFromDescription(match.Groups[3].Value) + }; + + blockItems.Add(blockItemValue); + } + break; + } + case "PlayEffect": + { + // TODO: Get colors programmatically + var match = Regex.Match(trimmedLine, @"\S+\s+(Red|Green|Blue|Brown|White|Yellow)\s*(Temp)?", RegexOptions.IgnoreCase); + + if (match.Success) + { + var blockItemValue = new PlayEffectBlockItem + { + Color = EnumHelper.GetEnumValueFromDescription(match.Groups[1].Value), + Temporary = match.Groups[2].Value.Trim().ToLower() == "temp" + }; + blockItems.Add(blockItemValue); + } + break; + } + case "CustomAlertSound": + { + var match = Regex.Match(trimmedLine, @"\S+\s+""([^\*\<\>\?|]+)"""); + + if (match.Success) + { + var blockItemValue = new CustomSoundBlockItem + { + Value = match.Groups[1].Value + }; + blockItems.Add(blockItemValue); + } + break; + } } } }