Beispiel #1
0
    public bool SetExtProperty(int x, int y, StageElement ele)
    {
        if (ele == StageElement.None)
        {
            return(false);
        }

        if (ele != StageElement.Target)
        {
            Debug.LogError(string.Format("unknown ExtProperty element({0},{1},{2})", x, y, (int)ele));
            return(false);
        }

        int key = GetKey(x, y);

        if (key == -1)
        {
            Debug.LogError(string.Format("specified position is out of the map! ({0},{1})", x, y));
            return(false);
        }

        if (!_data.ContainsKey(key))
        {
            _data.Add(key, new StageNode());
        }

        if (_data[key].ext_property != ele)
        {
            _data[key].ext_property = ele;
            return(true);
        }

        return(false);
    }
Beispiel #2
0
    public bool LoadXML(string filename)
    {
        try
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(filename);

            XmlElement root = doc.DocumentElement;
            _max_xcount = Convert.ToInt32(root.GetAttribute("max_xcount"));
            _max_ycount = Convert.ToInt32(root.GetAttribute("max_ycount"));

            foreach (XmlElement node in root.ChildNodes)
            {
                int          x            = Convert.ToInt32(node.GetAttribute("x"));
                int          y            = Convert.ToInt32(node.GetAttribute("y"));
                StageElement ground       = (StageElement)Convert.ToInt32(node.GetAttribute("ground"));
                StageElement entity       = (StageElement)Convert.ToInt32(node.GetAttribute("entity"));
                StageElement ext_property = (StageElement)Convert.ToInt32(node.GetAttribute("ext_property"));
                SetGround(x, y, ground);
                SetEntity(x, y, entity);
                SetExtProperty(x, y, ext_property);
            }
        }
        catch (XmlException e)
        {
            Debug.LogError(e);
            return(false);
        }

        return(true);
    }
        internal static string Serialize(AICanvas canvas)
        {
            var root = new StageElement(
                ElementName.Canvas,
                SerializationMaster.Stage(ElementName.Offset, canvas.offset),
                SerializationMaster.ToStageValue(ElementName.Zoom, canvas.zoom));

            var views   = canvas.views;
            int svCount = views.Count;

            for (int i = 0; i < svCount; i++)
            {
                var          view = views[i];
                StageElement viewElement;

                if (view is SelectorView)
                {
                    viewElement = WriteSelectorView((SelectorView)view);
                }
                else if (view is AILinkView)
                {
                    viewElement = WriteAILinkView((AILinkView)view);
                }
                else
                {
                    throw new NotImplementedException("The view type has not been implemented for serialization.");
                }

                root.Add(viewElement);
            }

            return(SerializationMaster.Serialize(root));
        }
Beispiel #4
0
    public bool SetGround(int x, int y, StageElement ele)
    {
        if (ele == StageElement.None)
        {
            return(false);
        }

        if (ele != StageElement.Floor && ele != StageElement.Wall)
        {
            Debug.LogError(string.Format("unknown ground element({0},{1},{2})", x, y, (int)ele));
            return(false);
        }

        int key = GetKey(x, y);

        if (key == -1)
        {
            Debug.LogError(string.Format("specified position is out of the map! ({0},{1})", x, y));
            return(false);
        }

        if (!_data.ContainsKey(key))
        {
            _data.Add(key, new StageNode());
        }

        if (_data[key].ground != ele)
        {
            _data[key].ground = ele;
            return(true);
        }

        return(false);
    }
        private static StageElement WriteSelectorView(SelectorView sv)
        {
            var sve = new StageElement(
                ElementName.SelectorView,
                SerializationMaster.Stage(ElementName.ViewArea, sv.viewArea));

            sve.AddTextValue(ElementName.Name, sv.name);
            sve.AddTextValue(ElementName.Description, sv.description);

            var qualifierViews = sv.qualifierViews;
            int qvCount        = qualifierViews.Count;

            for (int i = 0; i < qvCount; i++)
            {
                var qv = WriteQualifierView(qualifierViews[i]);

                sve.Add(qv);
            }

            var defQv = WriteQualifierView(sv.defaultQualifierView);

            sve.Add(defQv);

            return(sve);
        }
        private static ActionView ReadActionView(StageElement ave, QualifierView parent)
        {
            var connectorType = ave.AttributeValueOrDefault <string>(AttributeName.ConnectorType, null);

            ActionView av;

            if (connectorType == ConnectorType.Selector)
            {
                av = new SelectorActionView();
            }
            else if (connectorType == ConnectorType.AILink)
            {
                av = new AILinkActionView();
            }
            else if (connectorType == ConnectorType.Composite)
            {
                av = new CompositeActionView();
            }
            else
            {
                av = new ActionView();
            }

            av.name        = ave.ValueOrDefault <string>(ElementName.Name, null);
            av.description = ave.ValueOrDefault <string>(ElementName.Description, null);
            av.parent      = parent;

            return(av);
        }
        private static void DeserializeAction(StageElement aiElement, StageElement viewElement, AIUI targetUI)
        {
            var parent = targetUI.currentQualifier;

            if (parent == null)
            {
                EditorUtility.DisplayDialog("Invalid Action", "You must select a Qualifier before pasting an Action.", "Ok");
            }
            else if (parent.actionView != null)
            {
                if (!EditorUtility.DisplayDialog("Confirm Replace", "The selected Qualifier already has an action, do you wish to replace it?", "Yes", "No"))
                {
                    return;
                }
            }

            var requiresInit = new List <IInitializeAfterDeserialization>();

            var actionView = ReadActionView(viewElement, parent);
            var action     = SerializationMaster.Unstage <IAction>(aiElement, requiresInit);

            actionView.action = action;

            //Do the post deserialize initialization here
            if (requiresInit.Count == 1)
            {
                requiresInit[0].Initialize(targetUI.ai);
            }

            targetUI.SetAction(actionView, parent);
            parent.PruneBrokenConnections();
        }
        private static SelectorView ReadSelectorView(StageElement sve, AIUI parent)
        {
            var sv = new SelectorView
            {
                name        = sve.ValueOrDefault <string>(ElementName.Name),
                description = sve.ValueOrDefault <string>(ElementName.Description),
                viewArea    = sve.ValueOrDefault <Rect>(ElementName.ViewArea),
                parent      = parent
            };

            var defQv = sve.Element(ElementName.DefaultQualifier);

            sv.defaultQualifierView = defQv != null?ReadQualifierView(defQv, sv) : new QualifierView
            {
                parent = sv
            };

            var qualifierViews = sve.Elements(ElementName.QualifierView);

            foreach (var qve in qualifierViews)
            {
                var qv = ReadQualifierView(qve, sv);
                sv.qualifierViews.Add(qv);
            }

            return(sv);
        }
 public static StageElement createStageElement(StageGroup group, Form_Main form_MainT)
 {
     form_Main = form_MainT;
     element = new StageElement(group);
     SmallDialog_Stage dialog = new SmallDialog_Stage("新建场景",true);
     dialog.ShowDialog();
     return element;
 }
        public static StageElement createStageElement(StageGroup group, Form_Main form_MainT)
        {
            form_Main = form_MainT;
            element   = new StageElement(group);
            SmallDialog_Stage dialog = new SmallDialog_Stage("新建场景", true);

            dialog.ShowDialog();
            return(element);
        }
 /// <summary>
 /// get the stage text
 /// </summary>
 /// <returns>text</returns>
 public string GetStage()
 {
     StageElement.Wait(2);
     if (Driver.GetType() == typeof(DummyDriver))
     {
         StageElement.Text = FakeText;
     }
     return(StageElement.Text);
 }
        private void ParseElement(string name)
        {
            StageElement stageElement = new StageElement(name);

            if (this._curRoot != null)
            {
                this._curRoot.Add(stageElement);
            }
            this._curRoot = stageElement;
            while (this._idx < this._length)
            {
                char chr = this._s[this._idx];
                if (chr > ' ')
                {
                    if (chr == ',')
                    {
                        goto Label0;
                    }
                    if (chr == '}')
                    {
                        this._curRoot = this._curRoot.parent ?? this._curRoot;
                        return;
                    }
                }
                else
                {
                    switch (chr)
                    {
                    case '\t':
                    case '\n':
                    case '\f':
                    case '\r':
                    {
                        goto Label0;
                    }

                    case '\v':
                    {
                        break;
                    }

                    default:
                    {
                        if (chr == ' ')
                        {
                            goto Label0;
                        }
                        break;
                    }
                    }
                }
                this.ParseItem();
Label0:
                this._idx++;
            }
        }
        public string Serialize(StageItem item, bool pretty)
        {
            StageElement stageElement = item as StageElement;

            if (stageElement == null)
            {
                throw new ArgumentException("Only StageElements can serve as the root of a serialized graph.");
            }
            return((new StagedToJson(pretty)).Serialize(stageElement));
        }
Beispiel #14
0
        private void WriteElement(StageElement element)
        {
            bool separate = false;

            _json.WriteElementStart();

            foreach (var a in element.Attributes())
            {
                if (separate)
                {
                    _json.WriteSeparator();
                }
                else
                {
                    separate = true;
                }

                _json.WriteAttributeLabel(a);
                _json.WriteValue(a);
            }

            foreach (var item in element.Items())
            {
                if (separate)
                {
                    _json.WriteSeparator();
                }
                else
                {
                    separate = true;
                }

                _json.WriteLabel(item);

                if (item is StageValue)
                {
                    _json.WriteValue((StageValue)item);
                }
                else if (item is StageElement)
                {
                    WriteElement((StageElement)item);
                }
                else if (item is StageList)
                {
                    WriteList((StageList)item);
                }
                else if (item is StageNull)
                {
                    _json.WriteNull((StageNull)item);
                }
            }

            _json.WriteElementEnd();
        }
 //设置地图单元
 public static void configMapElement(StageElement elementT, Form_Main form_MainT)
 {
     form_Main = form_MainT;
     if (elementT == null)
     {
         Console.WriteLine("error in configMapElement");
         return;
     }
     element = elementT;
     SmallDialog_Stage dialog = new SmallDialog_Stage("设置场景",false);
     dialog.ShowDialog();
 }
        private static StageElement WriteAILinkView(AILinkView lv)
        {
            var lve = new StageElement(
                ElementName.AILinkView,
                SerializationMaster.Stage(ElementName.ViewArea, lv.viewArea),
                SerializationMaster.ToStageAttribute(AttributeName.Id, lv.aiId));

            lve.AddTextValue(ElementName.Name, lv.name);
            lve.AddTextValue(ElementName.Description, lv.description);

            return(lve);
        }
        public StageItem StageValue(string name, object value)
        {
            Keyframe[]   keyframeArray = ((AnimationCurve)value).keys;
            StageElement stageElement  = new StageElement(name);

            for (int i = 0; i < (int)keyframeArray.Length; i++)
            {
                Keyframe keyframe = keyframeArray[i];
                stageElement.Add(new StageElement("key", new StageItem[] { SerializationMaster.ToStageAttribute("time", keyframe.time), SerializationMaster.ToStageAttribute("value", keyframe.@value), SerializationMaster.ToStageAttribute("inTangent", keyframe.inTangent), SerializationMaster.ToStageAttribute("outTangent", keyframe.outTangent), SerializationMaster.ToStageAttribute("tangentMode", keyframe.tangentMode) }));
            }
            return(stageElement);
        }
Beispiel #18
0
            FoundryHandle BuildStageElement(StageElement stageElement)
            {
                var blockInstanceHandle      = stageElement.BlockInstance;
                var customizationPointHandle = stageElement.CustomizationPoint;
                var stageElementInternal     = new TemplatePassStageElementInternal()
                {
                    m_BlockInstanceHandle      = blockInstanceHandle.handle,
                    m_CustomizationPointHandle = customizationPointHandle.handle,
                };

                return(container.AddTemplatePassStageElementInternal(stageElementInternal));
            }
Beispiel #19
0
        private void WriteElement(StageElement element)
        {
            bool flag = false;

            this._json.WriteElementStart();
            foreach (StageAttribute stageAttribute in element.Attributes())
            {
                if (!flag)
                {
                    flag = true;
                }
                else
                {
                    this._json.WriteSeparator();
                }
                this._json.WriteAttributeLabel(stageAttribute);
                this._json.WriteValue(stageAttribute);
            }
            foreach (StageItem stageItem in element.Items())
            {
                if (!flag)
                {
                    flag = true;
                }
                else
                {
                    this._json.WriteSeparator();
                }
                this._json.WriteLabel(stageItem);
                if (stageItem is StageValue)
                {
                    this._json.WriteValue((StageValue)stageItem);
                }
                else if (stageItem is StageElement)
                {
                    this.WriteElement((StageElement)stageItem);
                }
                else if (!(stageItem is StageList))
                {
                    if (!(stageItem is StageNull))
                    {
                        continue;
                    }
                    this._json.WriteNull((StageNull)stageItem);
                }
                else
                {
                    this.WriteList((StageList)stageItem);
                }
            }
            this._json.WriteElementEnd();
        }
        private static AILinkView ReadAILinkView(StageElement lve, AIUI parent)
        {
            var lv = new AILinkView
            {
                name        = lve.ValueOrDefault <string>(ElementName.Name),
                description = lve.ValueOrDefault <string>(ElementName.Description),
                viewArea    = lve.ValueOrDefault <Rect>(ElementName.ViewArea),
                aiId        = lve.AttributeValue <Guid>(AttributeName.Id),
                parent      = parent
            };

            return(lv);
        }
        //设置地图单元
        public static void configMapElement(StageElement elementT, Form_Main form_MainT)
        {
            form_Main = form_MainT;
            if (elementT == null)
            {
                Console.WriteLine("error in configMapElement");
                return;
            }
            element = elementT;
            SmallDialog_Stage dialog = new SmallDialog_Stage("设置场景", false);

            dialog.ShowDialog();
        }
        internal static string Serialize(IList <TopLevelView> items)
        {
            var aiPart = new StageElement(ElementName.AIPart);
            var uiPart = new StageElement(ElementName.UIPart);
            var root   = new StageElement(ElementName.ViewSnippet, aiPart, uiPart);

            root.AddTextAttribute(AttributeName.SnippetType, ElementName.ViewSnippet);

            var referencePos = new Vector2(float.MaxValue, float.MaxValue);

            for (int i = 0; i < items.Count; i++)
            {
                var view = items[i];

                var selectorView = view as SelectorView;
                if (selectorView != null)
                {
                    var item = selectorView.selector;

                    var aiItem = SerializationMaster.Stage(typeof(Selector).Name, item);
                    aiPart.Add(aiItem);

                    var viewItem = WriteSelectorView(selectorView);
                    uiPart.Add(viewItem);

                    //Even though reid also happens on paste we have to do it here as well, otherwise copying linked selectors will fail.
                    item.RegenerateId();
                }

                var linkView = view as AILinkView;
                if (linkView != null)
                {
                    var viewItem = WriteAILinkView(linkView);
                    uiPart.Add(viewItem);
                }

                if (view.viewArea.xMin < referencePos.x)
                {
                    referencePos.x = view.viewArea.xMin;
                }

                if (view.viewArea.yMin < referencePos.y)
                {
                    referencePos.y = view.viewArea.yMin;
                }
            }

            uiPart.AddValue(ElementName.ReferencePosition, referencePos);

            return(SerializationMaster.Serialize(root));
        }
        public object UnstageValue(StageItem item, Type targetType)
        {
            StageElement[] array            = ((StageList)item).Elements().ToArray <StageElement>();
            Type[]         genericArguments = targetType.GetGenericArguments();
            Type           type             = genericArguments[0];
            Type           type1            = genericArguments[1];
            IDictionary    dictionaries     = Activator.CreateInstance(targetType, new object[] { (int)array.Length }) as IDictionary;

            for (int i = 0; i < (int)array.Length; i++)
            {
                StageElement stageElement = array[i];
                object       obj          = SerializationMaster.Unstage(stageElement.Item("key"), type);
                object       obj1         = SerializationMaster.Unstage(stageElement.Item("value"), type1);
                dictionaries.Add(obj, obj1);
            }
            return(dictionaries);
        }
        internal static string Serialize(QualifierView qualifier)
        {
            var aiPart = new StageElement(ElementName.AIPart);
            var uiPart = new StageElement(ElementName.UIPart);
            var root   = new StageElement(ElementName.QualifierSnippet, aiPart, uiPart);

            root.AddTextAttribute(AttributeName.SnippetType, ElementName.QualifierSnippet);

            var aiItem = SerializationMaster.Stage(ElementName.Qualifier, qualifier.qualifier);

            aiPart.Add(aiItem);

            var viewItem = WriteQualifierView(qualifier);

            uiPart.Add(viewItem);

            return(SerializationMaster.Serialize(root));
        }
        private static StageElement WriteQualifierView(QualifierView qv)
        {
            var name = qv.isDefault ? ElementName.DefaultQualifier : ElementName.QualifierView;
            var qve  = new StageElement(name);

            qve.AddTextValue(ElementName.Name, qv.name);
            qve.AddTextValue(ElementName.Description, qv.description);

            var av = qv.actionView;

            if (av != null)
            {
                var ae = WriteActionView(av);
                qve.Add(ae);
            }

            return(qve);
        }
Beispiel #26
0
        /// <summary>
        /// Stages the value.
        /// </summary>
        /// <param name="name">The name to give the resulting <see cref="StageItem" />.</param>
        /// <param name="value">The value to stage</param>
        /// <returns>
        /// The element containing the staged value.
        /// </returns>
        public StageItem StageValue(string name, object value)
        {
            var dic         = value as IDictionary;
            var count       = dic.Count;
            var listElement = new StageList(name);

            foreach (var key in dic.Keys)
            {
                var item = new StageElement(
                    string.Empty,
                    SerializationMaster.Stage("key", key),
                    SerializationMaster.Stage("value", dic[key]));

                listElement.Add(item);
            }

            return(listElement);
        }
        private static QualifierView ReadQualifierView(StageElement qve, SelectorView parent)
        {
            var qv = new QualifierView
            {
                name        = qve.ValueOrDefault <string>(ElementName.Name, null),
                description = qve.ValueOrDefault <string>(ElementName.Description, null),
                parent      = parent
            };

            var ave = qve.Element(ElementName.ActionView);

            if (ave != null)
            {
                qv.actionView = ReadActionView(ave, qv);
            }

            return(qv);
        }
        internal static string Serialize(ActionView action)
        {
            var aiPart = new StageElement(ElementName.AIPart);
            var uiPart = new StageElement(ElementName.UIPart);
            var root   = new StageElement(ElementName.ActionSnippet, aiPart, uiPart);

            root.AddTextAttribute(AttributeName.SnippetType, ElementName.ActionSnippet);

            var aiItem = SerializationMaster.Stage(ElementName.Action, action.action);

            aiPart.Add(aiItem);

            var viewItem = WriteActionView(action);

            uiPart.Add(viewItem);

            return(SerializationMaster.Serialize(root));
        }
Beispiel #29
0
        private void ParseElement(string name)
        {
            var el = new StageElement(name);

            if (_curRoot != null)
            {
                _curRoot.Add(el);
            }

            _curRoot = el;

            for (; _idx < _length; _idx++)
            {
                var c = _s[_idx];
                switch (c)
                {
                case ',':
                case ' ':
                case '\t':
                case '\n':
                case '\r':
                case '\f':
                {
                    /* Skip white space and item separator */
                    break;
                }

                case '}':
                {
                    _curRoot = _curRoot.parent ?? _curRoot;
                    return;
                }

                default:
                {
                    ParseItem();
                    break;
                }
                }
            }
        }
        private static StageElement WriteActionView(ActionView av)
        {
            var ae = new StageElement(ElementName.ActionView);

            ae.AddTextValue(ElementName.Name, av.name);
            ae.AddTextValue(ElementName.Description, av.description);

            if (av is SelectorActionView)
            {
                ae.AddAttribute(AttributeName.ConnectorType, ConnectorType.Selector);
            }
            else if (av is AILinkActionView)
            {
                ae.AddAttribute(AttributeName.ConnectorType, ConnectorType.AILink);
            }
            else if (av is CompositeActionView)
            {
                ae.AddAttribute(AttributeName.ConnectorType, ConnectorType.Composite);
            }

            return(ae);
        }
        /// <summary>
        /// Stages the value.
        /// </summary>
        /// <param name="name">The name to give the resulting <see cref="StageItem" />.</param>
        /// <param name="value">The value to stage</param>
        /// <returns>
        /// The element containing the staged value.
        /// </returns>
        public StageItem StageValue(string name, object value)
        {
            var val  = (AnimationCurve)value;
            var keys = val.keys;

            var curveElement = new StageElement(name);

            for (int i = 0; i < keys.Length; i++)
            {
                var key  = keys[i];
                var item = new StageElement(
                    "key",
                    SerializationMaster.ToStageAttribute("time", key.time),
                    SerializationMaster.ToStageAttribute("value", key.value),
                    SerializationMaster.ToStageAttribute("inTangent", key.inTangent),
                    SerializationMaster.ToStageAttribute("outTangent", key.outTangent),
                    SerializationMaster.ToStageAttribute("tangentMode", key.tangentMode));

                curveElement.Add(item);
            }

            return(curveElement);
        }
        private static void DeserializeQualifier(StageElement aiElement, StageElement viewElement, AIUI targetUI)
        {
            var parent = targetUI.currentSelector;

            if (parent == null)
            {
                EditorUtility.DisplayDialog("Invalid Action", "You must select a Selector before pasting a Qualifier.", "Ok");
            }

            var requiresInit = new List <IInitializeAfterDeserialization>();

            var qualifierView = ReadQualifierView(viewElement, parent);
            var qualifier     = SerializationMaster.Unstage <IQualifier>(aiElement, requiresInit);

            qualifierView.Reconnect(qualifier);

            //Do the post deserialize initialization here
            if (requiresInit.Count == 1)
            {
                requiresInit[0].Initialize(targetUI.ai);
            }

            qualifierView.PruneBrokenConnections();

            if (qualifierView.isDefault)
            {
                if (EditorUtility.DisplayDialog("Confirm Replacement", "Do you wish to replace the current Default Qualifier?", "Yes", "No"))
                {
                    targetUI.ReplaceDefaultQualifier(qualifierView, parent);
                }
            }
            else
            {
                targetUI.AddQualifier(qualifierView, parent);
            }
        }