Пример #1
0
 private void cStructsToolStripMenuItem_Click(object sender, EventArgs e)
 {
     using (SaveFileDialog sd = new SaveFileDialog() { DefaultExt = "c", Filter = "C Files|*.c" })
         if (sd.ShowDialog(this) == DialogResult.OK)
         {
             LandTableFormat fmt = LevelData.geo.Format;
             switch (fmt)
             {
                 case LandTableFormat.SA1:
                 case LandTableFormat.SADX:
                     using (StructExportDialog ed = new StructExportDialog() { Format = LevelData.geo.Format })
                         if (ed.ShowDialog(this) == DialogResult.OK)
                             fmt = ed.Format;
                         else
                             return;
                     break;
             }
             List<string> labels = new List<string>() { LevelData.geo.Name };
             System.Text.StringBuilder result = new System.Text.StringBuilder("/* Sonic Adventure ");
             switch (fmt)
             {
                 case LandTableFormat.SA1:
                     result.Append("1");
                     break;
                 case LandTableFormat.SADX:
                     result.Append("DX");
                     break;
                 case LandTableFormat.SA2:
                     result.Append("2");
                     break;
             }
             result.AppendLine(" LandTable");
             result.AppendLine(" * ");
             result.AppendLine(" * Generated by SALVL");
             result.AppendLine(" * ");
             if (!string.IsNullOrEmpty(LevelData.geo.Description))
             {
                 result.Append(" * Description: ");
                 result.AppendLine(LevelData.geo.Description);
                 result.AppendLine(" * ");
             }
             if (!string.IsNullOrEmpty(LevelData.geo.Author))
             {
                 result.Append(" * Author: ");
                 result.AppendLine(LevelData.geo.Author);
                 result.AppendLine(" * ");
             }
             result.AppendLine(" */");
             result.AppendLine();
             string[] texnames = null;
             if (LevelData.leveltexs != null)
             {
                 texnames = new string[LevelData.TextureBitmaps[LevelData.leveltexs].Length];
                 for (int i = 0; i < LevelData.TextureBitmaps[LevelData.leveltexs].Length; i++)
                     texnames[i] = string.Format("{0}TexName_{1}", LevelData.leveltexs,
                         LevelData.TextureBitmaps[LevelData.leveltexs][i].Name);
                 result.AppendFormat("enum {0}TexName", LevelData.leveltexs);
                 result.AppendLine();
                 result.AppendLine("{");
                 result.AppendLine("\t" + string.Join("," + Environment.NewLine + "\t", texnames));
                 result.AppendLine("};");
                 result.AppendLine();
             }
             result.Append(LevelData.geo.ToStructVariables(fmt, labels, texnames));
             File.WriteAllText(sd.FileName, result.ToString());
         }
 }
Пример #2
0
        private void cStructsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            using (SaveFileDialog sd = new SaveFileDialog()
            {
                DefaultExt = "c", Filter = "C Files|*.c"
            })
                if (sd.ShowDialog(this) == DialogResult.OK)
                {
                    LandTableFormat fmt = LevelData.geo.Format;
                    switch (fmt)
                    {
                    case LandTableFormat.SA1:
                    case LandTableFormat.SADX:
                        using (StructExportDialog ed = new StructExportDialog()
                        {
                            Format = LevelData.geo.Format
                        })
                            if (ed.ShowDialog(this) == DialogResult.OK)
                            {
                                fmt = ed.Format;
                            }
                            else
                            {
                                return;
                            }
                        break;
                    }
                    List <string> labels = new List <string>()
                    {
                        LevelData.geo.Name
                    };
                    using (StreamWriter sw = File.CreateText(sd.FileName))
                    {
                        sw.Write("/* Sonic Adventure ");
                        switch (fmt)
                        {
                        case LandTableFormat.SA1:
                            sw.Write("1");
                            break;

                        case LandTableFormat.SADX:
                            sw.Write("DX");
                            break;

                        case LandTableFormat.SA2:
                            sw.Write("2");
                            break;
                        }
                        sw.WriteLine(" LandTable");
                        sw.WriteLine(" * ");
                        sw.WriteLine(" * Generated by SALVL");
                        sw.WriteLine(" * ");
                        if (!string.IsNullOrEmpty(LevelData.geo.Description))
                        {
                            sw.Write(" * Description: ");
                            sw.WriteLine(LevelData.geo.Description);
                            sw.WriteLine(" * ");
                        }
                        if (!string.IsNullOrEmpty(LevelData.geo.Author))
                        {
                            sw.Write(" * Author: ");
                            sw.WriteLine(LevelData.geo.Author);
                            sw.WriteLine(" * ");
                        }
                        sw.WriteLine(" */");
                        sw.WriteLine();
                        string[] texnames = null;
                        if (LevelData.leveltexs != null)
                        {
                            texnames = new string[LevelData.TextureBitmaps[LevelData.leveltexs].Length];
                            for (int i = 0; i < LevelData.TextureBitmaps[LevelData.leveltexs].Length; i++)
                            {
                                texnames[i] = string.Format("{0}TexName_{1}", LevelData.leveltexs,
                                                            LevelData.TextureBitmaps[LevelData.leveltexs][i].Name);
                            }
                            sw.Write("enum {0}TexName", LevelData.leveltexs);
                            sw.WriteLine();
                            sw.WriteLine("{");
                            sw.WriteLine("\t" + string.Join("," + Environment.NewLine + "\t", texnames));
                            sw.WriteLine("};");
                            sw.WriteLine();
                        }
                        LevelData.geo.ToStructVariables(sw, fmt, labels, texnames);
                    }
                }
        }