Esempio n. 1
0
            public static Information Parse(ref LibraryEditor_SpriteStudio6.Import.Setting setting,
                                            string nameFile,
                                            LibraryEditor_SpriteStudio6.Import.SSPJ.Information informationSSPJ
                                            )
            {
                const string messageLogPrefix = "Parse SSQE";
                Information  informationSSQE  = null;

                /* ".ssee" Load */
                if (false == System.IO.File.Exists(nameFile))
                {
                    LogError(messageLogPrefix, "File Not Found", nameFile, informationSSPJ);
                    goto Parse_ErrorEnd;
                }
                System.Xml.XmlDocument xmlSSQE = new System.Xml.XmlDocument();
                xmlSSQE.Load(nameFile);

                /* Check Version */
                System.Xml.XmlNode nodeRoot = xmlSSQE.FirstChild;
                nodeRoot = nodeRoot.NextSibling;
                KindVersion version = (KindVersion)(LibraryEditor_SpriteStudio6.Utility.XML.VersionGet(nodeRoot, "SpriteStudioSequencePack", (int)KindVersion.ERROR, true));

                /* MEMO: Loose version check                                                       */
                /*       If you check strictly, there are a lot of datas that can not be imported. */
                switch (version)
                {
                case KindVersion.ERROR:
                    LogError(messageLogPrefix, "Version Invalid", nameFile, informationSSPJ);
                    goto Parse_ErrorEnd;

                case KindVersion.CODE_010000:
                    /* MEMO: Read all as Ver.1.01.00. */
                    version = KindVersion.CODE_010000;
                    break;

                default:
                    if (KindVersion.TARGET_EARLIEST > version)
                    {
                        version = KindVersion.TARGET_EARLIEST;
                        if (true == setting.CheckVersion.FlagInvalidSSQE)
                        {
                            LogWarning(messageLogPrefix, "Version Too Early", nameFile, informationSSPJ);
                        }
                    }
                    else
                    {
                        version = KindVersion.TARGET_LATEST;
                        if (true == setting.CheckVersion.FlagInvalidSSQE)
                        {
                            LogWarning(messageLogPrefix, "Version Unknown", nameFile, informationSSPJ);
                        }
                    }
                    break;
                }

                /* Create Information */
                informationSSQE = new Information();
                if (null == informationSSQE)
                {
                    LogError(messageLogPrefix, "Not Enough Memory", nameFile, informationSSPJ);
                    goto Parse_ErrorEnd;
                }
                informationSSQE.CleanUp();
                informationSSQE.Version = version;

                /* Get Base-Directories */
                LibraryEditor_SpriteStudio6.Utility.File.PathSplit(out informationSSQE.NameDirectory, out informationSSQE.NameFileBody, out informationSSQE.NameFileExtension, nameFile);

                /* Decode Tags */
                System.Xml.NameTable           nodeNameSpace    = new System.Xml.NameTable();
                System.Xml.XmlNamespaceManager managerNameSpace = new System.Xml.XmlNamespaceManager(nodeNameSpace);

                //string valueText = "";
                informationSSQE.Name       = LibraryEditor_SpriteStudio6.Utility.XML.TextGetNode(nodeRoot, "name", managerNameSpace);
                informationSSQE.ExportPath = LibraryEditor_SpriteStudio6.Utility.XML.TextGetNode(nodeRoot, "exportPath", managerNameSpace);

                System.Xml.XmlNodeList nodeList = null;
                nodeList = LibraryEditor_SpriteStudio6.Utility.XML.ListGetNode(nodeRoot, "sequenceList/sequence", managerNameSpace);
                if (null == nodeList)
                {
                    informationSSPJ.TableNameSSQE = new string[0];
                }
                else
                {
                    /* MEMO: Nothing to do, now. */
                }

                List <Library_SpriteStudio6.Data.Sequence.Data> listSequence = new List <Library_SpriteStudio6.Data.Sequence.Data>();

                listSequence.Clear();
                foreach (System.Xml.XmlNode nodeSequence in nodeList)
                {
                    Library_SpriteStudio6.Data.Sequence.Data sequence = new Library_SpriteStudio6.Data.Sequence.Data();
                    sequence.Name  = LibraryEditor_SpriteStudio6.Utility.XML.TextGetNode(nodeSequence, "name", managerNameSpace);
                    sequence.Index = ValueTextToInt(LibraryEditor_SpriteStudio6.Utility.XML.TextGetNode(nodeSequence, "index", managerNameSpace));
                    sequence.Type  = ValueTextToSequenceType(LibraryEditor_SpriteStudio6.Utility.XML.TextGetNode(nodeSequence, "type", managerNameSpace));

                    System.Xml.XmlNodeList nodeListValueSequence = null;
                    nodeListValueSequence = LibraryEditor_SpriteStudio6.Utility.XML.ListGetNode(nodeSequence, "list/value", managerNameSpace);


                    List <Library_SpriteStudio6.Data.Sequence.Data.Step> listDetail = new List <Library_SpriteStudio6.Data.Sequence.Data.Step>();
                    listDetail.Clear();

                    foreach (System.Xml.XmlNode nodeValue in nodeListValueSequence)
                    {
                        Library_SpriteStudio6.Data.Sequence.Data.Step dataStep = new Library_SpriteStudio6.Data.Sequence.Data.Step();
                        dataStep.NamePackAnimation = LibraryEditor_SpriteStudio6.Utility.XML.TextGetNode(nodeValue, "refAnimePack", managerNameSpace);
                        dataStep.NameAnimation     = LibraryEditor_SpriteStudio6.Utility.XML.TextGetNode(nodeValue, "refAnime", managerNameSpace);
                        dataStep.PlayCount         = ValueTextToInt(LibraryEditor_SpriteStudio6.Utility.XML.TextGetNode(nodeValue, "repeatCount", managerNameSpace));
                        listDetail.Add(dataStep);
                    }
                    sequence.TableStep = listDetail.ToArray();
                    listSequence.Add(sequence);
                }

                informationSSQE.SequenceList = listSequence.ToArray();

                return(informationSSQE);

                Parse_ErrorEnd :;
                return(null);
            }
Esempio n. 2
0
    private bool StepProgress()
    {
        /* Next play data determination */
        int indexStep = IndexStep;

        Library_SpriteStudio6.Data.Sequence.Data.Step dataStep = DataStep[indexStep];
        if (null != FunctionDecodeStep)
        {
            int indexStepNext = FunctionDecodeStep(ref dataStep, this, indexStep);
            if (0 <= indexStepNext)
            {                   /* Jump Step */
                indexStep = indexStepNext;
                dataStep  = DataStep[indexStep];
            }
            else
            {                   /* Not Jump */
                if (false == dataStep.IsValid)
                {               /* Stop Playing */
                    if (null != ScriptRoot)
                    {
                        ScriptRoot.AnimationStop(-1);
                    }
                    return(true);
                }
            }
        }

        /* Renew Animation-Object */
        /* MEMO: Different Animation-Packs have different structure of parts. */
        /*       So in that case, need to re-instantiate Animation-Object.    */
        if (null == DataProject)
        {
            return(false);
        }
        int indexPackAnimation = DataProject.IndexGetPackAnimation(dataStep.NamePackAnimation);

        if (0 > indexPackAnimation)
        {
            return(false);
        }
        Script_SpriteStudio6_DataAnimation dataAnimation = DataProject.DataAnimation[indexPackAnimation];
        bool flagRootRenew = false;

        if (null != ScriptRoot)
        {               /* Exist Animation-Object */
            if (dataAnimation != ScriptRoot.DataAnimation)
            {           /* Different Animation-Pack */
                        /* Destroy current Animation-Object */
                Destroy(GameObjectRoot);
                flagRootRenew = true;
            }
        }
        else
        {               /* Now No Animation-Object */
            flagRootRenew = true;
        }
        if (true == flagRootRenew)
        {
            /* Instantiate Animation-Object */
            GameObjectRoot = Library_SpriteStudio6.Utility.Asset.PrefabInstantiate((GameObject)DataProject.PrefabAnimation[indexPackAnimation],
                                                                                   null,
                                                                                   transform.gameObject,
                                                                                   false
                                                                                   );
            if (null == GameObjectRoot)
            {
                return(false);
            }
            ScriptRoot = GameObjectRoot.GetComponent <Script_SpriteStudio6_Root>();
            ScriptRoot.FunctionPlayEnd = CallBackFunctionPlayEnd;
        }

        /* Play Animation */
        if (null == ScriptRoot)
        {
            return(false);
        }
        ScriptRoot.AnimationStop(-1);

        int indexAnimation = ScriptRoot.IndexGetAnimation(dataStep.NameAnimation);

        if (0 > indexAnimation)
        {
            return(false);
        }
        return(ScriptRoot.AnimationPlay(-1, indexAnimation, dataStep.PlayCount));
    }