Пример #1
0
        void doExport()
        {
            // メニューファイル作成
            menuFile.basePath       = basePath;
            menuFile.outputPath     = outputPath;
            menuFile.allowOverwrite = allowOverride;
            menuFile.allowSamename  = allowSamename;
            // アイテム削除の反映
            menuFile.items = new List <string>();
            foreach (var key in delItems.Keys)
            {
                if (delItems[key])
                {
                    menuFile.items.Add(Params.GetDelMenu(key));
                }
            }

            // ノード消去・表示の反映
            menuFile.delNodes  = new List <string>();
            menuFile.showNodes = new List <string>();
            foreach (var key in nodes.Keys)
            {
                switch (nodes[key])
                {
                case 1:    //消去
                    menuFile.delNodes.Add(key);
                    break;

                case 2:    //表示
                    menuFile.showNodes.Add(key);
                    break;
                }
            }

            menuFile.maskItems = new List <string>();
            foreach (var key in masks.Keys)
            {
                if (masks[key])
                {
                    menuFile.maskItems.Add(key);
                }
            }
            menuFile.materials = new List <string[]>();
            menuFile.addItems  = new List <string[]>();
            if (filenameType == 1)
            {
                // プリフィクスからファイル名を設定
                menuFile.filename = Params.GetFilename(Params.FileType.menu, filenamePrefix);
                menuFile.icons    = Params.GetFilename(Params.FileType.icon, filenamePrefix);
                if (mateFiles != null)
                {
                    foreach (var mate in mateFiles)
                    {
                        if (mate.export)
                        {
                            if (mateFiles.Count() == 1)
                            {
                                mate.filename = Params.GetFilename(Params.FileType.mate, filenamePrefix);
                            }
                            else
                            {
                                mate.filename = Params.GetFilename(Params.FileType.mate, filenamePrefix, mate.matno);
                            }
                        }
                        menuFile.materials.Add(new string[] { mate.slotname, mate.matno.ToString(), mate.FilenameWithExtension });
                    }
                }
                foreach (var resource in menuFile.resources)
                {
                    switch (resource[0])
                    {
                    case MenuFile.ResourceMekureString:
                        resource[1] = Params.GetFilename(Params.FileType.mekureMenu, filenamePrefix);
                        break;

                    case MenuFile.ResourceMekureBackString:
                        resource[1] = Params.GetFilename(Params.FileType.mekureBackMenu, filenamePrefix);
                        break;

                    case MenuFile.ResourceZurashiString:
                        resource[1] = Params.GetFilename(Params.FileType.zurashiMenu, filenamePrefix);
                        break;
                    }
                }
                if (addItems != null)
                {
                    for (int i = 0; i < addItems.Count(); i++)
                    {
                        var model = addItems[i];
                        if (model.export)
                        {
                            if (addItems.Count() == 1)
                            {
                                model.filename = Params.GetFilename(Params.FileType.model, filenamePrefix);
                            }
                            else
                            {
                                model.filename = Params.GetFilename(Params.FileType.model, filenamePrefix, i);
                            }
                        }
                        string[] item;
                        switch (model.addItemType)
                        {
                        case ModelFile.AddItemType.attach:
                            item = new string[] {
                                model.FilenameWithExtension,
                                model.slotname,
                                MenuFile.AttachString,
                                model.attachSlot,
                                model.attachName
                            };
                            break;

                        case ModelFile.AddItemType.attachBone:
                            item = new string[] {
                                model.FilenameWithExtension,
                                model.slotname,
                                MenuFile.AttachBoneString,
                                model.attachName
                            };
                            break;

                        default:
                            item = new string[] {
                                model.FilenameWithExtension,
                                model.slotname
                            };
                            break;
                        }
                        menuFile.addItems.Add(item);
                    }
                }
            }
            else
            {
                // 指定したファイル名を使用する

                // マテリアル
                if (mateFiles != null)
                {
                    foreach (var mate in mateFiles)
                    {
                        menuFile.materials.Add(new string[] { mate.category, mate.matno.ToString(), mate.FilenameWithExtension });
                    }
                }

                // additem(モデル)
                if (addItems != null)
                {
                    foreach (var model in addItems)
                    {
                        menuFile.addItems.Add(new string[] { model.FilenameWithExtension, model.category });
                    }
                }
            }

            // menu書き出し
            menuFile.WriteMenu();

            // アイコン
            if (menuFile.iconFile != null)
            {
                menuFile.iconFile.basePath       = basePath;
                menuFile.iconFile.outputPath     = menuFile.outputPath;
                menuFile.iconFile.category       = menuFile.category;
                menuFile.iconFile.basename       = menuFile.basename;
                menuFile.iconFile.filename       = menuFile.icons;
                menuFile.iconFile.allowOverwrite = allowOverride;
                menuFile.iconFile.allowSamename  = allowSamename;
                menuFile.iconFile.WriteTex();
            }

            // マテリアル
            if (mateFiles != null)
            {
                foreach (var mate in mateFiles)
                {
                    if (!mate.export)
                    {
                        continue;
                    }
                    mate.basePath       = basePath;
                    mate.outputPath     = menuFile.outputPath;
                    mate.name           = mate.FilenameWithoutExtension;
                    mate.allowOverwrite = allowOverride;
                    mate.allowSamename  = allowSamename;

                    int count = 0;
                    foreach (var key in mate.texs.Keys)
                    {
                        var tex = mate.texs[key];
                        if (!tex.export || tex.texFile == null || tex.type != TexParams.TexTypeTex2d)
                        {
                            continue;
                        }
                        tex.texFile.basePath       = basePath;
                        tex.texFile.outputPath     = menuFile.outputPath;
                        tex.texFile.allowOverwrite = allowOverride;
                        tex.texFile.allowSamename  = allowSamename;

                        if (filenameType == 1)
                        {
                            if (mate.texs.Count() == 1)
                            {
                                tex.texFile.filename = Params.GetFilename(Params.FileType.tex, filenamePrefix + key);
                            }
                            else
                            {
                                tex.texFile.filename = Params.GetFilename(Params.FileType.tex, filenamePrefix + key, count);
                            }
                        }
                        tex.filename         = tex.texFile.FilenameWithoutExtension;
                        tex.texFile.category = mate.category;
                        tex.texFile.basename = mate.basename;
                        tex.texFile.WriteTex();
                        count++;
                    }

                    if (mate.pmatFile != null && mate.pmatFile.export)
                    {
                        if (filenameType == 1)
                        {
                            mate.pmatFile.basePath       = basePath;
                            mate.pmatFile.outputPath     = menuFile.outputPath;
                            mate.pmatFile.allowOverwrite = allowOverride;
                            mate.pmatFile.allowSamename  = allowSamename;
                            mate.pmatFile.filename       = Params.GetFilename(Params.FileType.pmat, mate.FilenameWithoutExtension);
                        }
                        mate.pmatFile.name = mate.pmatFile.filename;
                        mate.pmatFile.WritePmat();
                    }
                    // mate書き出し
                    mate.WriteMate();
                }
            }

            // モデル
            if (addItems != null)
            {
                foreach (var model in addItems)
                {
                    if (model.export)
                    {
                        // 対象のもののみ書き出し
                        model.basePath       = basePath;
                        model.outputPath     = menuFile.outputPath;
                        model.allowOverwrite = allowOverride;
                        model.allowSamename  = allowSamename;
                        model.WriteModel();
                    }
                }
            }
            NDebug.MessageBox("エクスポート", "エクスポート完了しました。");
        }