コード例 #1
0
ファイル: ProjectSerializer.cs プロジェクト: nadar71/Krea
        //---------------------------------------------------------------------------------------------------------------------------------------------------------
        //----------------------------------------------------------------------- OBJECT ----------------------------------------------------------------------------
        //---------------------------------------------------------------------------------------------------------------------------------------------------------
        public static void importObject(Form1 mainForm, string filename, BackgroundWorker worker)
        {
            CoronaLayer layerParent = mainForm.getElementTreeView().LayerSelected;
            if (layerParent != null)
            {
                string projectPath = layerParent.SceneParent.projectParent.ProjectPath;
                worker.ReportProgress(10);
                FileStream fs = File.OpenRead(filename);
                if (fs.Length > 0)
                {
                    MemoryStream ms = new MemoryStream();
                    ms.SetLength(fs.Length);

                    fs.Read(ms.GetBuffer(), 0, (int)ms.Length);
                    worker.ReportProgress(30);
                    CoronaObject obj = (CoronaObject)SerializerHelper.DeSerializeBinary(ms);
                    fs.Close();
                    ms.Close();
                    worker.ReportProgress(50);
                    if (obj != null)
                    {
                        obj.LayerParent = layerParent;
                        obj.DisplayObject.Name = layerParent.SceneParent.projectParent.IncrementObjectName(obj.DisplayObject.Name);
                        //Ajouter l'entité ay layer
                        layerParent.CoronaObjects.Add(obj);

                        string currentDir = Path.GetDirectoryName(filename);
                        if (Directory.Exists(currentDir + "\\Images"))
                        {
                            string[] files = Directory.GetFiles(currentDir + "\\Images");
                            for (int i = 0; i < files.Length; i++)
                            {
                                string fileNameOnly = Path.GetFileName(files[i]);
                                File.Copy(files[i],
                                     projectPath + "\\Resources\\Images\\" + fileNameOnly, true);
                            }
                        }

                        if (Directory.Exists(currentDir + "\\SpriteSheets"))
                        {
                            string[] sheetDirectories = Directory.GetDirectories(currentDir + "\\SpriteSheets");
                            for (int i = 0; i < sheetDirectories.Length; i++)
                            {
                                string finalDirectoryDestNameOnly = Path.GetFileName(sheetDirectories[i]);
                                if (!Directory.Exists(projectPath + "\\Resources\\SpriteSheets\\" + finalDirectoryDestNameOnly))
                                {
                                    Directory.CreateDirectory(projectPath + "\\Resources\\SpriteSheets\\" + finalDirectoryDestNameOnly);
                                }

                                string[] files = Directory.GetFiles(sheetDirectories[i]);
                                for (int j = 0; j < files.Length; j++)
                                {
                                    string fileNameOnly = Path.GetFileName(files[j]);
                                    File.Copy(files[j],
                                         projectPath + "\\Resources\\SpriteSheets\\" + finalDirectoryDestNameOnly + "\\" + fileNameOnly, true);
                                }

                            }
                        }

                        mainForm.sceneEditorView1.GraphicsContentManager.UpdateSpriteContent(obj, 1, System.Drawing.Point.Empty);
                        worker.ReportProgress(90);
                        mainForm.sceneEditorView1.GraphicsContentManager.CleanProjectBitmaps();

                        obj.objectAttachedToGenerator = null;

                    }
                    else
                    {
                        MessageBox.Show("Error during object importation!\n The file seems to be corrupted!", "Object Importation Failed", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        mainForm.currentWorkerAction = "NONE";
                    }

                }
            }
        }
コード例 #2
0
ファイル: ProjectSerializer.cs プロジェクト: nadar71/Krea
        //---------------------------------------------------------------------------------------------------------------------------------------------------------
        //----------------------------------------------------------------------- LAYER ----------------------------------------------------------------------------
        //---------------------------------------------------------------------------------------------------------------------------------------------------------
        public static void importLayer(Form1 mainForm, string filename, BackgroundWorker worker)
        {
            Scene sceneParent = mainForm.getElementTreeView().SceneSelected;
            if (sceneParent != null)
            {
                string directoryName = Path.GetDirectoryName(filename);

                worker.ReportProgress(10);
                FileStream fs = File.OpenRead(filename);
                if (fs.Length > 0)
                {
                    MemoryStream ms = new MemoryStream();
                    ms.SetLength(fs.Length);

                    fs.Read(ms.GetBuffer(), 0, (int)ms.Length);
                    worker.ReportProgress(30);
                    CoronaLayer layer = (CoronaLayer)SerializerHelper.DeSerializeBinary(ms);
                    fs.Close();
                    ms.Close();
                    worker.ReportProgress(50);
                    if (layer != null)
                    {
                        layer.SceneParent = sceneParent;
                        //Ajouter la scene au projet
                        sceneParent.Layers.Add(layer);

                        layer.Name = sceneParent.projectParent.IncrementObjectName(layer.Name);

                        string oldMapName = "";
                        if (layer.TilesMap != null)
                        {
                            oldMapName = layer.TilesMap.TilesMapName;
                            layer.TilesMap.TilesMapName = sceneParent.projectParent.IncrementObjectName(layer.TilesMap.TilesMapName);
                        }

                        for (int i = 0; i < layer.CoronaObjects.Count; i++)
                        {
                            CoronaObject obj = layer.CoronaObjects[i];
                            if (obj.isEntity == false)
                            {
                                obj.DisplayObject.Name = sceneParent.projectParent.IncrementObjectName(obj.DisplayObject.Name);
                            }
                            else
                            {
                                obj.Entity.Name = sceneParent.projectParent.IncrementObjectName(obj.Entity.Name);
                                for (int j = 0; j < obj.Entity.CoronaObjects.Count; j++)
                                {
                                    obj.Entity.CoronaObjects[j].DisplayObject.Name = sceneParent.projectParent.IncrementObjectName(obj.Entity.CoronaObjects[j].DisplayObject.Name);
                                }
                            }
                        }

                        //Traiter les fichiers necessaires aux tilesmap
                        worker.ReportProgress(60);
                        int prog = 60;

                        if (Directory.Exists(directoryName + "\\Images"))
                        {
                            if (!Directory.Exists(sceneParent.projectParent.ProjectPath + "\\Resources\\Images"))
                                Directory.CreateDirectory(sceneParent.projectParent.ProjectPath + "\\Resources\\Images");

                            string[] files = Directory.GetFiles(directoryName + "\\Images");
                            for (int i = 0; i < files.Length; i++)
                            {
                                string fileNameOnly = Path.GetFileName(files[i]);
                                File.Copy(files[i], sceneParent.projectParent.ProjectPath + "\\Resources\\Images\\" + fileNameOnly, true);
                            }
                        }

                        if (Directory.Exists(directoryName + "\\SpriteSheets"))
                        {
                            if (!Directory.Exists(sceneParent.projectParent.ProjectPath + "\\Resources\\SpriteSheets"))
                                Directory.CreateDirectory(sceneParent.projectParent.ProjectPath + "\\Resources\\SpriteSheets");

                            string[] directories = Directory.GetDirectories(directoryName + "\\SpriteSheets");
                            for (int i = 0; i < directories.Length; i++)
                            {
                                string directoryNameOnly = Path.GetFileName(directories[i]);

                                if (!Directory.Exists(sceneParent.projectParent.ProjectPath + "\\Resources\\SpriteSheets\\" + directoryNameOnly))
                                    Directory.CreateDirectory(sceneParent.projectParent.ProjectPath + "\\Resources\\SpriteSheets\\" + directoryNameOnly);

                                string[] files = Directory.GetFiles(directories[i]);
                                for (int j = 0; j < files.Length; j++)
                                {
                                    string fileNameOnly = Path.GetFileName(files[j]);
                                    File.Copy(files[j], sceneParent.projectParent.ProjectPath + "\\Resources\\SpriteSheets\\" +
                                        directoryNameOnly + "\\" + fileNameOnly, true);
                                }
                            }

                        }

                        if (Directory.Exists(directoryName + "\\TileMaps") && layer.TilesMap!=null)
                        {
                            if (!Directory.Exists(sceneParent.projectParent.ProjectPath + "\\Resources\\TileMaps\\"+layer.TilesMap.TilesMapName))
                                Directory.CreateDirectory(sceneParent.projectParent.ProjectPath + "\\Resources\\TileMaps\\"+layer.TilesMap.TilesMapName);

                            string[] directories = Directory.GetDirectories(directoryName + "\\TileMaps");
                            for (int i = 0; i < directories.Length; i++)
                            {
                                string directoryNameOnly = Path.GetFileName(directories[i]);

                                string[] files = Directory.GetFiles(directories[i]);
                                for (int j = 0; j < files.Length; j++)
                                {
                                    string fileNameOnly = Path.GetFileName(files[j]);
                                    File.Copy(files[j], sceneParent.projectParent.ProjectPath + "\\Resources\\TileMaps\\" +
                                        layer.TilesMap.TilesMapName + "\\" + fileNameOnly, true);
                                }
                            }

                            //Copy all JSON Config files of the tile map
                            string[] jsonFiles = Directory.GetFiles(directoryName,"*.json");
                            for (int j = 0; j < jsonFiles.Length; j++)
                            {
                                string fileNameOnly = Path.GetFileName(jsonFiles[j]);
                                string newFileName = sceneParent.projectParent.SourceFolderPath + "\\" + fileNameOnly.Replace(oldMapName,layer.TilesMap.TilesMapName);
                                File.Copy(jsonFiles[j], newFileName, true);
                            }
                        }

                        if (layer.TilesMap != null)
                        {
                            worker.ReportProgress(prog + 5);

                            layer.TilesMap.reloadMapContent(sceneParent.projectParent.SourceFolderPath);

                        }

                        for (int i = 0; i < layer.CoronaObjects.Count; i++)
                        {
                            CoronaObject obj = layer.CoronaObjects[i];
                            mainForm.sceneEditorView1.GraphicsContentManager.UpdateSpriteContent(obj, 1, System.Drawing.Point.Empty);
                        }

                        for (int i = 0; i < layer.Controls.Count; i++)
                        {
                            Corona_Classes.Controls.CoronaControl obj = layer.Controls[i];
                            mainForm.sceneEditorView1.GraphicsContentManager.UpdateSpriteContent(obj, 1, System.Drawing.Point.Empty);
                        }

                        mainForm.sceneEditorView1.GraphicsContentManager.CleanProjectBitmaps();
                        worker.ReportProgress(90);

                    }
                    else
                    {
                        MessageBox.Show("Error during layer importation!\n The file seems to be corrupted!", "Layer Importation Failed", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        mainForm.currentWorkerAction = "NONE";
                    }

                }
            }
        }