示例#1
0
        public static void SerializeToFile(string path, GMResource resource, ConfigTree.Node config)
        {
            if (path == null)
            {
                throw new ArgumentNullException(nameof(path));
            }

            resource.Project.Configs.Active = config;           // HACK PLEASE AVERT YOUR EYES
            var model = resource.Serialize();

            resource.Project.Configs.Active = config.Parent;    // HACK PLEASE AVERT YOUR EYES ONCE MORE
            var parentModel = resource.Serialize();

            var builder = new StringBuilder();

            builder.AppendFormat(Version.ToString(3));
            builder.Append(MetadataSep);
            builder.Append(resource.Id.ToString("D"));
            builder.Append(MetadataSep);

            // TODO Serialize sub-models with deltas
            builder.Append(resource.Id.ToString("D"));
            builder.Append(DataPairSep);
            builder.Append(SerializeModel(model, parentModel));

            var contents = builder.ToString();

            File.WriteAllText(path, contents, Encoding.UTF8);
        }
        /// <summary>
        /// Gestione evento per la modifica dinamica della mappatura di una risorsa PowerMES
        /// verso una risorsa MES
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void GammaMesRepeater_QueryForAlternateCommandTargetResource(object sender, GammaMesResourceProcessingEventArgs e)
        {
            /*
             * la mappatura tra risorse PowerMES e MES è statica e stabilita
             * in fase di configurazione.
             * E' però possibile modificare la mappatura dinamicamente per ogni chiamata
             * al web service di MES.
             * e.Command permette di sapere qual è il comando per cui è stato invocato l'evento
             *
             */

            if (e.Resource.Name == "NOME_RISORSA_PWMES")
            {
                //NB: idDepartment, idCenter, idMachine da prendere su TS MES
                var result = new GMResource(e.GammaMachine.CompanyCode,
                                            12, string.Empty, string.Empty,
                                            35, string.Empty, string.Empty,
                                            77, string.Empty, string.Empty);

                e.UpdatedGammaResource = result;
            }
        }
示例#3
0
        /// <summary>
        /// Reads a Game Maker Studio project file
        /// </summary>
        private void ReadProjectGMS(string file)
        {
            // Set version
            GameMakerVersion = GMVersionType.GameMakerStudio;

            // Path with project file removed
            string folder = file.Remove(file.LastIndexOf("\\"));

            // Set up resource directory strings
            Dictionary <GMResourceType, string> directories = new Dictionary <GMResourceType, string>();

            directories.Add(GMResourceType.Assets, file);
            directories.Add(GMResourceType.DataFiles, file);
            directories.Add(GMResourceType.Configs, file);
            directories.Add(GMResourceType.Constants, file);
            directories.Add(GMResourceType.Hash, file);
            directories.Add(GMResourceType.Backgrounds, folder + "\\" + "background");
            directories.Add(GMResourceType.Objects, folder + "\\" + "objects");
            directories.Add(GMResourceType.Rooms, folder + "\\" + "rooms");
            directories.Add(GMResourceType.Sprites, folder + "\\" + "sprites");
            directories.Add(GMResourceType.Sounds, folder + "\\" + "sound");
            directories.Add(GMResourceType.TimeLines, folder + "\\" + "timelines");
            directories.Add(GMResourceType.Shaders, folder + "\\" + "shaders");
            directories.Add(GMResourceType.Scripts, folder + "\\" + "scripts");
            directories.Add(GMResourceType.Paths, folder + "\\" + "paths");

            // Resource load index
            int index = 0;

            // Iterate through directories
            foreach (KeyValuePair <GMResourceType, string> item in directories)
            {
                // Increment directory index
                index++;

                // If the directory does not exist, continue
                if (Path.GetExtension(item.Value) != ".gmx" && !Directory.Exists(item.Value))
                {
                    continue;
                }

                // Progress changed
                ProgressChanged("Reading " + item.Key.ToString() + "...", index, directories.Count);

                // Load data based on resource type
                switch (item.Key)
                {
                case GMResourceType.Hash: Settings.Hash = ReadHashGMX(item.Value); break;

                case GMResourceType.Assets: ProjectTree = GMNode.ReadTreeGMX(item.Value); Assets = (List <string>)ProjectTree.Tag; break;

                case GMResourceType.DataFiles: DataFiles = GMDataFile.ReadDataFilesGMX(item.Value, out LastDataFileId); break;

                case GMResourceType.Sprites: Sprites = GMSprite.ReadSpritesGMX(item.Value, ref Assets); break;

                //case GMResourceType.Configs: Settings.Configs = GMSettings.GetConfigsGMX(item.Value); break;
                //case GMResourceType.Constants: Settings.Constants = GMSettings.ReadConstantsGMX(item.Value); break;
                case GMResourceType.Backgrounds: Backgrounds = GMBackground.ReadBackgroundsGMX(item.Value, ref Assets); break;

                case GMResourceType.Objects: Objects = GMObject.ReadObjectsGMX(item.Value, ref Assets); break;

                case GMResourceType.Rooms: Rooms = GMRoom.ReadRoomsGMX(item.Value, ref Assets, out LastTileId); break;
                    //case GMResourceType.TimeLines: Timelines = GMTimeline.ReadTimelinesGMX(item.Value, Assets); break;
                    //case GMResourceType.Sounds: Sounds = GMSound.ReadSoundsGMX(item.Value, ref Assets); break;
                    //case GMResourceType.Shaders: Shaders = GMShader.ReadShadersGMX(item.Value, ref Assets); break;
                    //case GMResourceType.Scripts: Scripts = GMScript.ReadScriptsGMX(item.Value, ref Assets); break;
                    //case GMResourceType.Paths: Paths = GMPath.ReadPathsGMX(item.Value, ref Assets); break;
                    //case GMResourceType.TimeLines: Timelines = GMTimeline.ReadTimelinesGMX(item.Value, Assets); break;
                }
            }

            // Retrieve tutorial data
            foreach (GMNode node in ProjectTree.Nodes)
            {
                // If the node is the tutorial state node and it has the nodes we're looking for
                if (node.ResourceType == GMResourceType.TutorialState && node.Nodes != null && node.Nodes.Length == 3)
                {
                    Settings.IsTutorial   = node.Nodes[0].Nodes == null ? Settings.IsTutorial : GMResource.GMXBool(node.Nodes[0].Nodes[0].Name, true);
                    Settings.TutorialName = node.Nodes[1].Nodes == null ? Settings.TutorialName : GMResource.GMXString(node.Nodes[1].Nodes[0].FilePath, "");
                    Settings.TutorialPage = node.Nodes[2].Nodes == null ? Settings.TutorialPage : GMResource.GMXInt(node.Nodes[2].Nodes[0].Name, 0);
                }
            }

            // Progress event
            ProgressChanged("Finished Reading Project.", index, directories.Count);
        }