Ejemplo n.º 1
0
        public static List <QuestContent> CreateList(QuestContentProxy[] contentListProxy)
        {
            var list = new List <QuestContent>();

            if (contentListProxy == null)
            {
                Debug.LogWarning("Quest Machine: QuestContentProxy.CreateList source is null.");
                return(list);
            }
            for (int i = 0; i < contentListProxy.Length; i++)
            {
                var contentProxy = contentListProxy[i];
                if (contentProxy == null || string.IsNullOrEmpty(contentProxy.t) || string.IsNullOrEmpty(contentProxy.s))
                {
                    continue;
                }
                QuestContent content = null;
                if (string.Equals(contentProxy.t, HeadingTypeString))
                {
                    content = ScriptableObject.CreateInstance <HeadingTextQuestContent>();
                    ApplyHeadingTextQuestContentProxyData(content as HeadingTextQuestContent, contentProxy.s);
                }
                else if (string.Equals(contentProxy.t, BodyTypeString))
                {
                    content = ScriptableObject.CreateInstance <BodyTextQuestContent>();
                    ApplyBodyTextQuestContentProxyData(content as BodyTextQuestContent, contentProxy.s);
                }
                else if (string.Equals(contentProxy.t, IconTypeString))
                {
                    content = ScriptableObject.CreateInstance <IconQuestContent>();
                    ApplyIconQuestContentProxyData(content as IconQuestContent, contentProxy.s);
                }
                else if (string.Equals(contentProxy.t, ButtonTypeString))
                {
                    content = ScriptableObject.CreateInstance <ButtonQuestContent>();
                    ApplyButtonQuestContentProxyData(content as ButtonQuestContent, contentProxy.s);
                }
                else
                {
                    content = ScriptableObject.CreateInstance(RuntimeTypeUtility.GetTypeFromName(contentProxy.t)) as QuestContent;
                    if (content != null)
                    {
                        JsonUtility.FromJsonOverwrite(contentProxy.s, content);
                    }
                }
                if (content != null)
                {
                    content.OnAfterProxyDeserialization();
                    list.Add(content);
                }
            }
            return(list);
        }