public IDialogueEditing CreateEditing(CDialogueEditingParams editingParams) { switch (editingParams.EditingType) { case TEditingType.Color: return(new CColorEditing()); case TEditingType.Color_Blink: return(new CColorBlinkEditing()); case TEditingType.Color_Transition: return(new CColorTransitionEditing()); case TEditingType.Color_Rainbow: return(new CColorRainbowEditing()); case TEditingType.Animation_Wave: return(new CWaveEditing()); case TEditingType.Animation_Wobble: return(new CWobbleEditing()); case TEditingType.Animation_Shake: return(new CShakeEditing()); case TEditingType.Animation_SizeTransition: return(new CSizeTransitionEditing()); default: Assert.IsTrue(false); return(null); } }
// IDialogueEditing public void Initialize(CDialogueEditingParams editingParams) { Assert.IsTrue(editingParams.EditingType == TEditingType.Animation_Wobble); _range = editingParams.Range; Dictionary <string, string> attributes = editingParams.Attributes; if (attributes.ContainsKey(DialogueEditingAttributes.Frequency1Attribute)) { Assert.IsTrue(attributes[DialogueEditingAttributes.Frequency1Attribute].ParseToFloat(out _frequency1)); } Assert.IsTrue(_frequency1 >= 0); if (attributes.ContainsKey(DialogueEditingAttributes.Frequency2Attribute)) { Assert.IsTrue(attributes[DialogueEditingAttributes.Frequency2Attribute].ParseToFloat(out _frequency2)); } Assert.IsTrue(_frequency2 >= 0); if (attributes.ContainsKey(DialogueEditingAttributes.AmplitudeAttribute)) { Assert.IsTrue(attributes[DialogueEditingAttributes.AmplitudeAttribute].ParseToFloat(out _amplitude)); } Assert.IsTrue(_amplitude >= 0); if (attributes.ContainsKey(DialogueEditingAttributes.CoverageAttribute)) { Assert.IsTrue(attributes[DialogueEditingAttributes.CoverageAttribute].ParseToEnum(ref _coverage)); } }
// IDialogueEditing public void Initialize(CDialogueEditingParams editingParams) { Assert.IsTrue(editingParams.EditingType == TEditingType.Animation_SizeTransition); _range = editingParams.Range; Dictionary <string, string> attributes = editingParams.Attributes; if (attributes.ContainsKey(DialogueEditingAttributes.SpeedAttribute)) { Assert.IsTrue(attributes[DialogueEditingAttributes.SpeedAttribute].ParseToFloat(out _speed)); } Assert.IsTrue(_speed >= 0); if (attributes.ContainsKey(DialogueEditingAttributes.SizeFromAttribute)) { Assert.IsTrue(attributes[DialogueEditingAttributes.SizeFromAttribute].ParseToFloat(out _sizeFrom)); } Assert.IsTrue(_sizeFrom >= 0); if (attributes.ContainsKey(DialogueEditingAttributes.SizeToAttribute)) { Assert.IsTrue(attributes[DialogueEditingAttributes.SizeToAttribute].ParseToFloat(out _sizeTo)); } Assert.IsTrue(_sizeTo >= 0); }
// IDialogueEditing public void Initialize(CDialogueEditingParams editingParams) { Assert.IsTrue(editingParams.EditingType == TEditingType.Color); _range = editingParams.Range; Assert.IsTrue(editingParams.Attributes.ContainsKey(DialogueEditingAttributes.ColorAttribute)); Assert.IsTrue(editingParams.Attributes[DialogueEditingAttributes.ColorAttribute].ParseToColor(out _color)); }
// IDialogueEditing public void Initialize(CDialogueEditingParams editingParams) { Assert.IsTrue(editingParams.EditingType == TEditingType.Color_Rainbow); _range = editingParams.Range; if (editingParams.Attributes.ContainsKey(DialogueEditingAttributes.FrequencyAttribute)) { Assert.IsTrue(editingParams.Attributes[DialogueEditingAttributes.FrequencyAttribute].ParseToFloat(out _frequency)); } Assert.IsTrue(_frequency >= 0); if (editingParams.Attributes.ContainsKey(DialogueEditingAttributes.LengthAttribute)) { Assert.IsTrue(editingParams.Attributes[DialogueEditingAttributes.LengthAttribute].ParseToFloat(out _length)); } Assert.IsTrue(_length >= 0); }
// Завершение записи о редактировании, заключающаяся в определении правого границы области редактирования private void finishEditingDescription(string editingDescription, string editingTypeString, string editingName, int position) { // Сначала найдём заведённую незавершённую запись о редактировании, соответствующую описанию CDialogueEditingParams closedParams = null; string closedParamsKey = ""; if (editingName.Length != 0) { closedParamsKey = "name=" + editingName; Assert.IsTrue(_formingEdits.ContainsKey(closedParamsKey), $"Closing tag has name ${ editingName }, which does't fit to any opening tag"); closedParams = _formingEdits[closedParamsKey]; } else if (_formingEdits.ContainsKey(editingDescription)) { closedParamsKey = editingDescription; closedParams = _formingEdits[editingDescription]; } else if (editingTypeString.Length != 0) { // Указали тип редактирования. Попробуем закрыть последнюю запись с соответствующим типом if (_openedEditsPerTypes.ContainsKey(editingTypeString)) { while (_openedEditsPerTypes[editingTypeString].Count > 0) { string formingParamKey = _openedEditsPerTypes[editingTypeString].Pop(); // Теоретически словарь _formingEdits может не содержать полученный ключ, ну и фиг с ним, это допустимая ситуация, // просто из словаря уже была получена и удалена запись с этим ключом, только другим способом if (_formingEdits.ContainsKey(formingParamKey)) { closedParamsKey = formingParamKey; closedParams = _formingEdits[formingParamKey]; } } } } // Дозаполняем запись, заносим куда нужно, удаляем откуда нужно Assert.IsTrue(closedParams != null && closedParamsKey.Length > 0, "Some closing tag doesn't have appropriate opening tag. Parser can't define, what to close."); closedParams.Range = new CTextRange(closedParams.Range.From, position); _foundEdits.Add(closedParams); _formingEdits.Remove(closedParamsKey); }
// Завести запись о редактировании, которая будет ожидать своего завершения при закрытии соответствующим тегом private void startEditingDescription(string editingDescription, string editingTypeString, string editingName, Dictionary <string, string> attributes, int position) { CDialogueEditingParams newParams = new CDialogueEditingParams(); // Заполняем параметры редактирования Assert.IsTrue(_stringToEditingType.ContainsKey(editingTypeString), $"Non-existing type of editing : { editingTypeString }"); newParams.EditingType = _stringToEditingType[editingTypeString]; newParams.Range = new CTextRange(position, position);// Пока заполняем так, затем изменим, когда найдётся закрывающий тег newParams.Attributes = attributes; // Подбираем, под каким ключом запомним данную запись string key = editingName.Length == 0 ? editingDescription : "name=" + editingName; Assert.IsTrue(!_formingEdits.ContainsKey(key), "Have two tags with the same name before their closing tags. This lead to ambiguity."); _formingEdits.Add(key, newParams); if (!_openedEditsPerTypes.ContainsKey(editingTypeString)) { _openedEditsPerTypes.Add(editingTypeString, new Stack <string>()); } _openedEditsPerTypes[editingTypeString].Push(key); }
// IDialogueEditing public void Initialize(CDialogueEditingParams editingParams) { Assert.IsTrue(editingParams.EditingType == TEditingType.Color_Blink); _range = editingParams.Range; if (editingParams.Attributes.ContainsKey(DialogueEditingAttributes.FrequencyAttribute)) { Assert.IsTrue(editingParams.Attributes[DialogueEditingAttributes.FrequencyAttribute].ParseToFloat(out _frequency)); } Assert.IsTrue(_frequency >= 0); if (editingParams.Attributes.ContainsKey(DialogueEditingAttributes.ColorFromAttribute)) { Assert.IsTrue(editingParams.Attributes[DialogueEditingAttributes.ColorFromAttribute].ParseToColor(out _colorFrom)); } if (editingParams.Attributes.ContainsKey(DialogueEditingAttributes.ColorToAttribute)) { Assert.IsTrue(editingParams.Attributes[DialogueEditingAttributes.ColorToAttribute].ParseToColor(out _colorTo)); } }
// IDialogueEditing public void Initialize(CDialogueEditingParams editingParams) { Assert.IsTrue(editingParams.EditingType == TEditingType.Color_Transition); _range = editingParams.Range; if (editingParams.Attributes.ContainsKey(DialogueEditingAttributes.SpeedAttribute)) { Assert.IsTrue(editingParams.Attributes[DialogueEditingAttributes.SpeedAttribute].ParseToFloat(out _transitionSpeed)); } Assert.IsTrue(_transitionSpeed >= 0); if (editingParams.Attributes.ContainsKey(DialogueEditingAttributes.ColorFromAttribute)) { Assert.IsTrue(editingParams.Attributes[DialogueEditingAttributes.ColorFromAttribute].ParseToColor(out _colorFrom)); } if (editingParams.Attributes.ContainsKey(DialogueEditingAttributes.ColorToAttribute)) { Assert.IsTrue(editingParams.Attributes[DialogueEditingAttributes.ColorToAttribute].ParseToColor(out _colorTo)); } }