コード例 #1
0
                /* MEMO: Originally functions that should be defined in each information class. */
                /*       However, confusion tends to occur with mode increases.                 */
                /*       ... Compromised way.                                                   */

                /* ----------------------------------------------- Functions */
                #region Functions
                public static bool AssetNameDecideData(ref LibraryEditor_SpriteStudio6.Import.Setting setting,
                                                       LibraryEditor_SpriteStudio6.Import.SSPJ.Information informationSSPJ,
                                                       LibraryEditor_SpriteStudio6.Import.SSQE.Information informationSSQE,
                                                       string nameOutputAssetFolderBase,
                                                       Script_SpriteStudio6_DataSequence dataOverride
                                                       )
                {
                    if (null != dataOverride)
                    {                           /* Specified */
                        informationSSQE.DataSequenceSS6PU.TableName[0] = AssetDatabase.GetAssetPath(dataOverride);
                    }
                    else
                    {                           /* Default */
                        informationSSQE.DataSequenceSS6PU.TableName[0] = setting.RuleNameAssetFolder.NameGetAssetFolder(LibraryEditor_SpriteStudio6.Import.Setting.KindAsset.DATA_SEQUENCE_SS6PU, nameOutputAssetFolderBase)
                                                                         + setting.RuleNameAsset.NameGetAsset(LibraryEditor_SpriteStudio6.Import.Setting.KindAsset.DATA_SEQUENCE_SS6PU, informationSSQE.NameFileBody, informationSSPJ.NameFileBody)
                                                                         + LibraryEditor_SpriteStudio6.Import.NameExtentionScriptableObject;
                        dataOverride = AssetDatabase.LoadAssetAtPath <Script_SpriteStudio6_DataSequence>(informationSSQE.DataSequenceSS6PU.TableName[0]);
                    }

                    informationSSQE.DataSequenceSS6PU.TableData[0] = dataOverride;
                    informationSSQE.DataSequenceSS6PU.Version[0]   = (null != dataOverride) ? (int)(dataOverride.Version) : (int)Script_SpriteStudio6_DataEffect.KindVersion.SS5PU;

                    return(true);

//				AssetNameDecide_ErroeEnd:;
//					return(false);
                }
コード例 #2
0
ファイル: Batch.cs プロジェクト: comorebi-notes/neko-jinja
 internal void SettingOverwriteImport(LibraryEditor_SpriteStudio6.Import.Setting settingImport)
 {
     if (false == FlagEnableConfirmOverWrite)
     {
         settingImport.ConfirmOverWrite = LibraryEditor_SpriteStudio6.Import.Setting.GroupConfirmOverWrite.Default;                              /* All false */
     }
     if (false == FlagEnableCheckVersion)
     {
         settingImport.CheckVersion = LibraryEditor_SpriteStudio6.Import.Setting.GroupCheckVersion.Default;                              /* All false */
     }
 }
コード例 #3
0
                public static bool ConvertData(ref LibraryEditor_SpriteStudio6.Import.Setting setting,
                                               LibraryEditor_SpriteStudio6.Import.SSPJ.Information informationSSPJ,
                                               LibraryEditor_SpriteStudio6.Import.SSQE.Information informationSSQE
                                               )
                {
//					const string messageLogPrefix = "Convert (Data-Sequence)";

                    /* MEMO: Nothing to do, now.                                                                                          */
                    /*       Conversion was finished at parsing, since Sequence datas is almost same as SSQE-datas. (in Function-"Parse") */

                    return(true);

//				ConvertSS6PU_ErroeEnd:;
//					return(false);
                }
コード例 #4
0
ファイル: Batch.cs プロジェクト: comorebi-notes/neko-jinja
            private static bool ImportFile(ref Setting settingBatchImporter,
                                           ref LibraryEditor_SpriteStudio6.Import.Setting settingImport,
                                           int indexLine,
                                           string textLine
                                           )
            {
                string nameFile = string.Copy(textLine);

                nameFile = PathGetNormalizedAbsolute(textLine, NameBaseFolderData, false);

                /* Import SSPJ */
                settingImport.Mode = Mode;                      /* Overwrite */
                bool flagSuccess = LibraryEditor_SpriteStudio6.Import.Exec(ref settingImport,
                                                                           nameFile,
                                                                           LibraryEditor_SpriteStudio6.Utility.File.NamePathRootAsset + NameBaseFolderAsset,                                                                                    /* Caution that absolute path in Assets (start at "/") */
                                                                           true
                                                                           );

                /* Clean up memory (Garbage-Collection) */
                System.GC.Collect();

                return(flagSuccess);
            }
コード例 #5
0
                public static bool AssetCreateData(ref LibraryEditor_SpriteStudio6.Import.Setting setting,
                                                   LibraryEditor_SpriteStudio6.Import.SSPJ.Information informationSSPJ,
                                                   LibraryEditor_SpriteStudio6.Import.SSQE.Information informationSSQE
                                                   )
                {
//					const string messageLogPrefix = "Create Asset(Data-Sequence)";

                    Script_SpriteStudio6_DataSequence dataSequence = informationSSQE.DataSequenceSS6PU.TableData[0];

                    if (null == dataSequence)
                    {
                        dataSequence = ScriptableObject.CreateInstance <Script_SpriteStudio6_DataSequence>();
                        AssetDatabase.CreateAsset(dataSequence, informationSSQE.DataSequenceSS6PU.TableName[0]);
                        informationSSQE.DataSequenceSS6PU.TableData[0] = dataSequence;
                    }

                    dataSequence.Version     = Script_SpriteStudio6_DataSequence.KindVersion.SUPPORT_LATEST;
                    dataSequence.Name        = string.Copy(informationSSQE.NameFileBody);
                    dataSequence.DataProject = informationSSPJ.DataProjectSS6PU.TableData[0];

                    if (null == informationSSQE.SequenceList)
                    {
                        dataSequence.TableSequence = new Library_SpriteStudio6.Data.Sequence.Data[0];
                    }
                    else
                    {
                        dataSequence.TableSequence = informationSSQE.SequenceList;
                    }

                    EditorUtility.SetDirty(dataSequence);
                    AssetDatabase.SaveAssets();

                    return(true);

//				AssetCreateData_ErrorEnd:;
//					return(false);
                }
コード例 #6
0
            /* ----------------------------------------------- Functions */
            #region Functions
            public static Information Parse(ref LibraryEditor_SpriteStudio6.Import.Setting setting,
                                            string nameFile
                                            )
            {
                const string messageLogPrefix         = "Parse SignaleSetting";
                Information  informationSignalSetting = null;

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

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

                switch (version)
                {
                case KindVersion.ERROR:
                    LogError(messageLogPrefix, "Version Invalid", nameFile);
                    goto Parse_ErrorEnd;

                case KindVersion.CODE_000100:
                case KindVersion.CODE_010000:
                    break;

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

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

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

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

                string valueText = "";

                /* Get Command Setting */
                System.Xml.XmlNodeList listNode = LibraryEditor_SpriteStudio6.Utility.XML.ListGetNode(nodeRoot, "commands/value", managerNameSpace);
                if (null == listNode)
                {
                    LogError(messageLogPrefix, "\"command/value\"-Node Not Found", nameFile);
                    goto Parse_ErrorEnd;
                }
                Information.Command command = null;
                foreach (System.Xml.XmlNode nodeCommand in listNode)
                {
                    command = new Information.Command();
                    if (null == command)
                    {
                        LogError(messageLogPrefix, "Not Enough Memory (Command WorkArea)", nameFile);
                        goto Parse_ErrorEnd;
                    }
                    command.BootUp();

                    valueText  = LibraryEditor_SpriteStudio6.Utility.XML.TextGetNode(nodeCommand, "id", managerNameSpace);
                    command.ID = valueText.Trim();
                    if (true == string.IsNullOrEmpty(command.ID))
                    {
                        LogError(messageLogPrefix, "Command-ID Invelid (Empty)", nameFile);
                        goto Parse_ErrorEnd;
                    }

                    /* MEMO: "Name" is not decoded because only needed on SS6. */

                    valueText       = LibraryEditor_SpriteStudio6.Utility.XML.TextGetNode(nodeCommand, "valueId", managerNameSpace);
                    command.IDValue = valueText.Trim();
                    /* MEMO: "IDValue" allows the empty. (means "No values") */

                    /* Add Command */
                    informationSignalSetting.TableCommand.Add(command.ID, command);
                }

                /* Get Value Setting */
                listNode = LibraryEditor_SpriteStudio6.Utility.XML.ListGetNode(nodeRoot, "values/value", managerNameSpace);
                if (null == listNode)
                {
                    LogError(messageLogPrefix, "\"values/value\"-Node Not Found", nameFile);
                    goto Parse_ErrorEnd;
                }
                Information.Value           value          = null;
                Information.Value.Parameter parameterValue = null;
                System.Xml.XmlNodeList      listNodeParam  = null;
                foreach (System.Xml.XmlNode nodeValue in listNode)
                {
                    value = new Information.Value();
                    if (null == value)
                    {
                        LogError(messageLogPrefix, "Not Enough Memory (Value WorkArea)", nameFile);
                        goto Parse_ErrorEnd;
                    }
                    value.BootUp();

                    valueText = LibraryEditor_SpriteStudio6.Utility.XML.TextGetNode(nodeValue, "id", managerNameSpace);
                    value.ID  = valueText.Trim();
                    if (true == string.IsNullOrEmpty(value.ID))
                    {
                        LogError(messageLogPrefix, "Value-ID Invelid (Empty)", nameFile);
                        goto Parse_ErrorEnd;
                    }

                    listNodeParam = LibraryEditor_SpriteStudio6.Utility.XML.ListGetNode(nodeValue, "params/value", managerNameSpace);
                    if (null == listNodeParam)
                    {
                        LogError(messageLogPrefix, "\"values/value/params/value\"-Node Not Found", nameFile);
                        goto Parse_ErrorEnd;
                    }
                    foreach (System.Xml.XmlNode nodeParameterValue in listNodeParam)
                    {
                        parameterValue = new Information.Value.Parameter();
                        if (null == parameterValue)
                        {
                            LogError(messageLogPrefix, "Not Enough Memory (Value's parameter WorkArea)", nameFile);
                            goto Parse_ErrorEnd;
                        }
                        parameterValue.CleanUp();

                        valueText         = LibraryEditor_SpriteStudio6.Utility.XML.TextGetNode(nodeParameterValue, "id", managerNameSpace);
                        parameterValue.ID = valueText.Trim();
                        if (true == string.IsNullOrEmpty(parameterValue.ID))
                        {
                            LogError(messageLogPrefix, "Value's Parameter-ID Invelid (Empty)", nameFile);
                            goto Parse_ErrorEnd;
                        }

                        /* MEMO: "Name" is not decoded because only needed on SS6. */

                        valueText           = LibraryEditor_SpriteStudio6.Utility.XML.TextGetNode(nodeParameterValue, "type", managerNameSpace);
                        valueText           = valueText.Trim();
                        parameterValue.Type = TypeGetParameterValue(valueText);
                        if (Library_SpriteStudio6.Data.Animation.Attribute.Signal.Command.Parameter.KindType.ERROR == parameterValue.Type)
                        {
                            LogError(messageLogPrefix, "Value's Param Type \"" + valueText + "\" Invelid (Enpty)", nameFile);
                            goto Parse_ErrorEnd;
                        }

                        valueText             = LibraryEditor_SpriteStudio6.Utility.XML.TextGetNode(nodeParameterValue, "listId", managerNameSpace);
                        parameterValue.IDList = valueText.Trim();
                        /* MEMO: "IDList" allows the empty. (means "No Index-List") */

                        /* Add Parameter */
                        value.TableParameter.Add(parameterValue.ID, parameterValue);
                    }

                    /* Add Value */
                    informationSignalSetting.TableValue.Add(value.ID, value);
                }

                /* Get List Setting */
                listNode = LibraryEditor_SpriteStudio6.Utility.XML.ListGetNode(nodeRoot, "lists/value", managerNameSpace);
                if (null == listNode)
                {
                    LogError(messageLogPrefix, "\"lists/value\"-Node Not Found", nameFile);
                    goto Parse_ErrorEnd;
                }
                Information.ListIndex      listIndex        = null;
                Information.ListIndex.Item itemListIndex    = null;
                System.Xml.XmlNodeList     listNodeItemList = null;
                foreach (System.Xml.XmlNode nodeList in listNode)
                {
                    listIndex = new Information.ListIndex();
                    if (null == listIndex)
                    {
                        LogError(messageLogPrefix, "Not Enough Memory (ListIndex WorkArea)", nameFile);
                        goto Parse_ErrorEnd;
                    }
                    listIndex.BootUp();

                    valueText    = LibraryEditor_SpriteStudio6.Utility.XML.TextGetNode(nodeList, "id", managerNameSpace);
                    listIndex.ID = valueText.Trim();
                    if (true == string.IsNullOrEmpty(listIndex.ID))
                    {
                        LogError(messageLogPrefix, "ListIndex-ID Invelid (Empty)", nameFile);
                        goto Parse_ErrorEnd;
                    }

                    listNodeItemList = LibraryEditor_SpriteStudio6.Utility.XML.ListGetNode(nodeList, "items/value", managerNameSpace);
                    if (null == listNodeItemList)
                    {
                        LogError(messageLogPrefix, "\"values/value/params/value\"-Node Not Found", nameFile);
                        goto Parse_ErrorEnd;
                    }
                    foreach (System.Xml.XmlNode nodeItemListIndex in listNodeItemList)
                    {
                        itemListIndex = new Information.ListIndex.Item();
                        if (null == itemListIndex)
                        {
                            LogError(messageLogPrefix, "Not Enough Memory (ListIndex's item WorkArea)", nameFile);
                            goto Parse_ErrorEnd;
                        }
                        itemListIndex.CleanUp();

                        valueText        = LibraryEditor_SpriteStudio6.Utility.XML.TextGetNode(nodeItemListIndex, "id", managerNameSpace);
                        itemListIndex.ID = valueText.Trim();
                        if (true == string.IsNullOrEmpty(itemListIndex.ID))
                        {
                            LogError(messageLogPrefix, "ListIndex Item-ID Invelid (Empty)", nameFile);
                            goto Parse_ErrorEnd;
                        }

                        /* MEMO: Decode the name in case of "ListIndex" (just in case). */
                        valueText          = LibraryEditor_SpriteStudio6.Utility.XML.TextGetNode(nodeItemListIndex, "name", managerNameSpace);
                        itemListIndex.Name = valueText.Trim();
                        /* MEMO: "Name" allows the empty, now. */

                        /* Add Parameter */
                        listIndex.TableItem.Add(itemListIndex.ID, itemListIndex);
                    }

                    /* Add List */
                    informationSignalSetting.TableListIndex.Add(listIndex.ID, listIndex);
                }

                /* Check Link(Relational)-ID */
                {
                    string idCheck;

                    foreach (KeyValuePair <string, Information.Command> pair in informationSignalSetting.TableCommand)
                    {
                        idCheck = pair.Value.IDValue;
                        if (false == string.IsNullOrEmpty(idCheck))
                        {
                            if (false == informationSignalSetting.TableValue.ContainsKey(idCheck))
                            {
                                LogError(messageLogPrefix,
                                         "Missing Link Value-ID(" + idCheck + ") in Command-ID(" + pair.Key + ")",
                                         nameFile
                                         );
                                goto Parse_ErrorEnd;
                            }
                        }
                    }

                    foreach (KeyValuePair <string, Information.Value> pair in informationSignalSetting.TableValue)
                    {
                        foreach (KeyValuePair <string, Information.Value.Parameter> pairParameter in informationSignalSetting.TableValue[pair.Key].TableParameter)
                        {
                            idCheck = pairParameter.Value.IDList;
                            if (false == string.IsNullOrEmpty(idCheck))
                            {
                                if (false == informationSignalSetting.TableListIndex.ContainsKey(idCheck))
                                {
                                    LogError(messageLogPrefix,
                                             "Missing Link List-ID(" + idCheck + ") in Value-ID(" + pair.Key + ", " + pairParameter.Key + ")",
                                             nameFile
                                             );
                                    goto Parse_ErrorEnd;
                                }
                            }
                        }
                    }
                }

                return(informationSignalSetting);

Parse_ErrorEnd:
                if (null != informationSignalSetting)
                {
                    informationSignalSetting.CleanUp();
                }
                return(null);
            }
コード例 #7
0
ファイル: Batch.cs プロジェクト: comorebi-notes/neko-jinja
            /* ----------------------------------------------- Functions */
            #region Functions
            public static bool Exec(ref Setting settingBatchImporter,
                                    ref LibraryEditor_SpriteStudio6.Import.Setting settingImportInitial,
                                    string nameFileList,                                                /* Full-Path */
                                    string nameFileLog                                                  /* Full-Path */
                                    )
            {
//				const string messageLogPrefix = "Batch-Importer";

                if (true == string.IsNullOrEmpty(nameFileList))
                {
                    return(false);
                }

                /* Copy Setting (for Overwriting) */
                LibraryEditor_SpriteStudio6.Import.Setting settingImport = settingImportInitial;

                /* Get BaseDirectory (External File) */
#if false
                /* MEMO: Base directory is asset's directory when specify relative path in ListFile. */
//				string nameDirectoryBaseExternal = LibraryEditor_SpriteStudio6.Utility.File.NamePathRootNative;
#else
                /* MEMO: Base directory is ListFile's directory when specify relative path in ListFile. */
                string nameFile;
                string nameExternal;
                LibraryEditor_SpriteStudio6.Utility.File.PathSplit(out NameFolderBaseExternal, out nameFile, out nameExternal, nameFileList);
#endif
                NameFolderBaseExternal = PathNormalizeDelimiter(NameFolderBaseExternal, true);

                NameFolderRootAsset = "/";
                NameFolderRootAsset = PathNormalizeDelimiter(NameFolderRootAsset, true);

                NameBaseFolderSetting = string.Copy(NameFolderBaseExternal);
                NameBaseFolderAsset   = string.Copy(NameFolderRootAsset);
                NameBaseFolderData    = string.Copy(NameFolderBaseExternal);

                /* Set Log-File */
                System.IO.StreamWriter streamLog = null;
                if (false == string.IsNullOrEmpty(nameFileLog))
                {
                    streamLog = new System.IO.StreamWriter(nameFileLog, false, System.Text.Encoding.Default);                           /* Overwrite */
                }
                LibraryEditor_SpriteStudio6.Utility.Log.StreamExternal = streamLog;

                /* Open List-File */
                System.IO.StreamReader streamList = new System.IO.StreamReader(nameFileList, System.Text.Encoding.Default);

                /* Log Date */
                System.DateTimeOffset dateTime = System.DateTimeOffset.Now;
                LibraryEditor_SpriteStudio6.Utility.Log.Message("[Date imported] " + dateTime.ToString(), true, false);                                                   /* External-File only */
                LibraryEditor_SpriteStudio6.Utility.Log.Message("[In charge] " + System.Environment.MachineName + " (" + System.Environment.UserName + ")", true, false); /* External-File only */

                /* Decode List-File (1 Line) */
                Mode = LibraryEditor_SpriteStudio6.Import.Setting.KindMode.SS6PU;
                int    indexLine     = 0;
                string textLine      = "";
                string textLineValid = "";
                bool   flagValid;
                while (0 <= streamList.Peek())
                {
                    /* Read & Trim 1-Line */
                    flagValid = true;
                    textLine  = streamList.ReadLine();
                    indexLine++;
                    switch (LibraryEditor_SpriteStudio6.Utility.ExternalText.TypeGetLine(out textLineValid, textLine))
                    {
                    case LibraryEditor_SpriteStudio6.Utility.ExternalText.KindType.COMMAND:
                        /* Setting Command */
                        flagValid = DecodeCommand(ref settingBatchImporter, ref settingImport, indexLine, textLineValid);
                        break;

                    case LibraryEditor_SpriteStudio6.Utility.ExternalText.KindType.NORMAL:
                        /* File-Name to import */
                        flagValid = ImportFile(ref settingBatchImporter, ref settingImport, indexLine, textLineValid);
                        break;

                    case LibraryEditor_SpriteStudio6.Utility.ExternalText.KindType.IGNORE:
                        /* Remarks */
                        flagValid = true;
                        break;

                    default:
                        LogError("Syntax Error [" + textLine + "]", indexLine);
                        flagValid = false;
                        break;
                    }

                    /* Check Stopping-Processing */
                    if ((false == flagValid) && (false == settingBatchImporter.FlagNotBreakOnError))
                    {
                        return(false);
                    }
                }

                /* Close List-File */
                if (null != streamList)
                {
                    streamList.Close();
                    streamList = null;
                }

                /* Close Log-File */
                if (null != streamLog)
                {
                    streamLog.Close();
                    streamLog = null;
                }
                LibraryEditor_SpriteStudio6.Utility.Log.StreamExternal = null;

                return(true);
            }
コード例 #8
0
ファイル: Batch.cs プロジェクト: comorebi-notes/neko-jinja
            private static bool DecodeCommand(ref Setting settingBatchImporter,
                                              ref LibraryEditor_SpriteStudio6.Import.Setting settingImport,
                                              int indexLine,
                                              string textLine
                                              )
            {
                /* Check Text */
                string[] textSplit = LibraryEditor_SpriteStudio6.Utility.ExternalText.LineDecodeCommand(textLine);
                if (null == textSplit)
                {
                    LogError("Command Line empty [" + textLine + "]", indexLine);
                    return(false);
                }

                /* Decode Command */
                int countArgument = textSplit.Length;

                switch (textSplit[0])
                {
                case TextKeyNameBaseFolderSetting:
                    if (1 >= countArgument)
                    {                                   /* Set default */
                        NameBaseFolderSetting = string.Copy(NameFolderBaseExternal);
                    }
                    else
                    {
                        NameBaseFolderSetting = PathGetNormalizedAbsolute(textSplit[1], NameBaseFolderSetting, true);
                        if (null == NameBaseFolderSetting)
                        {                                       /* Error */
                            LogError("Path contains illegal characters. [" + textSplit[1] + "]", indexLine);
                            NameBaseFolderSetting = string.Copy(NameFolderBaseExternal);
                            return(false);
                        }
                    }
                    return(true);

                case TextKeyNameBaseFolderAsset:
                    if (1 >= countArgument)
                    {                                   /* Set default */
                        NameBaseFolderAsset = string.Copy(NameFolderRootAsset);
                    }
                    else
                    {
                        NameBaseFolderAsset = PathGetNormalizedAbsolute(textSplit[1], NameBaseFolderAsset, true);
                        if (null == NameBaseFolderAsset)
                        {                                       /* Error */
                            LogError("Path contains illegal characters. [" + textSplit[1] + "]", indexLine);
                            NameBaseFolderAsset = string.Copy(NameFolderRootAsset);
                            return(false);
                        }
                    }
                    return(true);

                case TextKeyNameBaseFolderData:
                    if (1 >= countArgument)
                    {                                   /* Set default */
                        NameBaseFolderAsset = string.Copy(NameFolderBaseExternal);
                    }
                    else
                    {
                        NameBaseFolderData = PathGetNormalizedAbsolute(textSplit[1], NameBaseFolderData, true);
                        if (null == NameBaseFolderData)
                        {                                       /* Error */
                            LogError("Path contains illegal characters. [" + textSplit[1] + "]", indexLine);
                            NameBaseFolderData = string.Copy(NameFolderBaseExternal);
                            return(false);
                        }
                    }
                    return(true);

                case TextKeyNameBaseSettingFile:
                {
                    string nameSettingFile = PathGetNormalizedAbsolute(textSplit[1], NameBaseFolderSetting, false);
                    if (true == settingImport.ImportFile(nameSettingFile))
                    {
                        /* MEMO: Overwrite only when decoding is successful. */
                        settingBatchImporter.SettingOverwriteImport(settingImport);
                    }
                    else
                    {                                           /* Error */
                        LogError("Setting File Not Found [" + textSplit[1] + "]", indexLine);
                        return(false);
                    }
                }
                    return(true);

                case LibraryEditor_SpriteStudio6.Import.Setting.TextKeyMode:
                {
                    LibraryEditor_SpriteStudio6.Import.Setting.KindMode mode = LibraryEditor_SpriteStudio6.Import.Setting.ImportCommonMode(textSplit[1]);
                    if (LibraryEditor_SpriteStudio6.Import.Setting.KindMode.SS6PU <= mode)
                    {                                           /* Valid */
                        Mode = mode;
                    }
                    else
                    {                                           /* Invalid */
                        LogError("Invalid Import-Mode [" + textSplit[1] + "]", indexLine);
                        return(false);
                    }
                }
                    return(true);

                default:
                    break;
                }

                /* MEMO: Interpret as change of individual setting of Importer when not command dedicated to Batch-Importer. */
                /* MEMO: When individual setting change, not overwrite with Batch-Importer setting. */
                if (false == settingImport.Import(textLine))
                {
                    LogError("Unknown Command [" + textLine + "]", indexLine);
                    return(false);
                }

                return(true);
            }
コード例 #9
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);
            }