示例#1
0
        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);
            }
        }
示例#2
0
        // 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));
            }
        }