Exemplo n.º 1
0
        private static void AddFromNode_Level(TyMod tymod, XmlNode node)
        {
            string  directory = null, name = null;
            TyLevel level;

            try { directory = node.Attributes.GetNamedItem("directory").Value; } catch (Exception e) { Program.Log(tymod.ToString(), "Invalid directory attribute for level import \"" + node.OuterXml + "\"", e); return; }
            try { name = node.Attributes.GetNamedItem("name").Value; } catch (Exception e) { Program.Log(tymod.ToString(), "Invalid name attribute for level import \"" + node.OuterXml + "\"", e); return; }

            level = new TyLevel(Path.Combine(Program.ModDirectory, directory), name, tymod.ModVersion, tymod.Authors);
            foreach (XmlNode child in node.ChildNodes)
            {
                if (child.Name == "translation")
                {
                    foreach (XmlNode grandchild in child.ChildNodes)
                    {
                        try
                        {
                            level.LanguageNames[grandchild.Name.ToLower()] = grandchild.GetFirstTextChild();
                            if (level.LanguageNames[grandchild.Name.ToLower()] == null)
                            {
                                Program.Log(tymod.ToString(), "Invalid " + grandchild.Name + " translation for level import \"" + node.OuterXml + "\"");
                            }
                        }
                        catch (Exception e) { Program.Log(tymod.ToString(), "Invalid " + grandchild.Name ?? String.Empty + " translation for level import \"" + node.OuterXml + "\"", e); }
                    }
                }
                else if (child.Name == "portal")
                {
                    foreach (XmlNode grandchild in child.ChildNodes)
                    {
                        try
                        {
                            switch (grandchild.Name.ToLower())
                            {
                            case "x":
                                level.X = float.Parse(grandchild.GetFirstTextChild());
                                break;

                            case "y":
                                level.Y = float.Parse(grandchild.GetFirstTextChild());
                                break;

                            case "z":
                                level.Z = float.Parse(grandchild.GetFirstTextChild());
                                break;
                            }
                        }
                        catch (Exception e) { Program.Log(tymod.ToString(), "Invalid directory attribute for level import \"" + node.OuterXml + "\"", e); return; }
                    }
                }
            }

            // Add to list of levels
            tymod.Levels.Add(level);
        }
Exemplo n.º 2
0
        public static void ApplyLevel(string levelID, TyLevel level)
        {
            string inFile;

            // Copy necessary file to output dir
            if (File.Exists(inFile = Path.Combine(level.InputPath, "%l_Icon.dds")))
            {
                File.Copy(inFile, Path.Combine(Program.OutDirectory, levelID + "_Icon.dds"));
            }
            if (File.Exists(inFile = Path.Combine(level.InputPath, "fe_000_map_%l_00.dds")))
            {
                File.Copy(inFile, Path.Combine(Program.OutDirectory, "fe_000_map_" + levelID + "_00.dds"));
            }
            if (File.Exists(inFile = Path.Combine(level.InputPath, "fe_005_loadingscrn_%l.dds")))
            {
                File.Copy(inFile, Path.Combine(Program.OutDirectory, "fe_005_loadingscrn_" + levelID + ".dds"));
            }
            if (File.Exists(inFile = Path.Combine(level.InputPath, "%l.lv2")))
            {
                File.Copy(inFile, Path.Combine(Program.OutDirectory, levelID + ".lv2"));
            }
            if (File.Exists(inFile = Path.Combine(level.InputPath, "SFX_%l.ini")))
            {
                File.Copy(inFile, Path.Combine(Program.OutDirectory, "SFX_" + levelID + ".ini"));
            }
            if (File.Exists(inFile = Path.Combine(level.InputPath, "VOX_%l_EN.ini")))
            {
                File.Copy(inFile, Path.Combine(Program.OutDirectory, "VOX_" + levelID + "_EN.ini"));
            }
            if (File.Exists(inFile = Path.Combine(level.InputPath, "VOX_%l_DE.ini")))
            {
                File.Copy(inFile, Path.Combine(Program.OutDirectory, "VOX_" + levelID + "_DE.ini"));
            }
            if (File.Exists(inFile = Path.Combine(level.InputPath, "VOX_%l_ES.ini")))
            {
                File.Copy(inFile, Path.Combine(Program.OutDirectory, "VOX_" + levelID + "_ES.ini"));
            }
            if (File.Exists(inFile = Path.Combine(level.InputPath, "VOX_%l_IT.ini")))
            {
                File.Copy(inFile, Path.Combine(Program.OutDirectory, "VOX_" + levelID + "_IT.ini"));
            }
            if (File.Exists(inFile = Path.Combine(level.InputPath, "VOX_%l_FR.ini")))
            {
                File.Copy(inFile, Path.Combine(Program.OutDirectory, "VOX_" + levelID + "_FR.ini"));
            }

            //ApplyLevel_Directory(levelID, level, level.InputPath, Program.OutDirectory);
        }
Exemplo n.º 3
0
        private static void ApplyLevel_Directory(string levelID, TyLevel level, string directory, string outputDir)
        {
            DirectoryInfo di;
            FileInfo      fi;
            string        outfile;

            if (!Directory.Exists(outputDir))
            {
                Directory.CreateDirectory(outputDir);
            }

            foreach (string path in Directory.EnumerateDirectories(directory, "*", SearchOption.TopDirectoryOnly))
            {
                di = new DirectoryInfo(path);
                ApplyLevel_Directory(levelID, level, path, Path.Combine(outputDir, di.Name));
            }

            foreach (string file in Directory.EnumerateFiles(directory, "*", SearchOption.TopDirectoryOnly))
            {
                fi      = new FileInfo(file);
                outfile = Path.Combine(outputDir, fi.Name.Replace("%l", levelID));

                switch (fi.Extension.ToLower())
                {
                case ".lv2":
                case ".ini":
                    // For these file types, we support replacing %s with the level ID
                    File.WriteAllText(outfile, File.ReadAllText(file).Replace("%l", levelID));
                    break;

                default:
                    File.Copy(file, outfile);
                    break;
                }
            }
        }