OSDN Git Service

Merge branch 'feature/37178_プロジェクトとソリューションファイルの英語化' into develop
[dtxmania/dtxmania.git] / DTXMania / コード / スコア、曲 / CBoxDef.cs
diff --git a/DTXMania/コード/スコア、曲/CBoxDef.cs b/DTXMania/コード/スコア、曲/CBoxDef.cs
new file mode 100644 (file)
index 0000000..5aae25f
--- /dev/null
@@ -0,0 +1,157 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Drawing;
+
+namespace DTXMania
+{
+       public class CBoxDef
+       {
+               // プロパティ
+
+               public string Artist;
+               public Color Color;
+               public string Comment;
+               public string Genre;
+               public int GoodRange;
+               public int GreatRange;
+               public int PerfectRange;
+               public int PoorRange;
+               public string Preimage;
+               public string Premovie;
+               public string Presound;
+               public string Title;
+               public string SkinPath;     // ""ならユーザー指定スキン、さもなくばbox.def指定スキン。
+
+               // コンストラクタ
+
+               public CBoxDef()
+               {
+                       this.Title = "";
+                       this.Artist = "";
+                       this.Comment = "BOX に移動します。";
+                       this.Genre = "";
+                       this.Preimage = "";
+                       this.Premovie = "";
+                       this.Presound = "";
+                       this.Color = ColorTranslator.FromHtml("White");
+                       this.PerfectRange = -1;
+                       this.GreatRange = -1;
+                       this.GoodRange = -1;
+                       this.PoorRange = -1;
+                       this.SkinPath = "";
+               }
+               public CBoxDef(string boxdefファイル名)
+                               : this()
+               {
+                       this.t読み込み(boxdefファイル名);
+               }
+
+
+               // メソッド
+
+               public void t読み込み(string boxdefファイル名)
+               {
+                       StreamReader reader = new StreamReader(boxdefファイル名, Encoding.GetEncoding("Shift_JIS"));
+                       string str = null;
+                       while ((str = reader.ReadLine()) != null)
+                       {
+                               if (str.Length != 0)
+                               {
+                                       try
+                                       {
+                                               char[] ignoreCharsWoColon = new char[] { ' ', '\t' };
+
+                                               str = str.TrimStart(ignoreCharsWoColon);
+                                               if ((str[0] == '#') && (str[0] != ';'))
+                                               {
+                                                       if (str.IndexOf(';') != -1)
+                                                       {
+                                                               str = str.Substring(0, str.IndexOf(';'));
+                                                       }
+
+                                                       char[] ignoreChars = new char[] { ':', ' ', '\t' };
+
+                                                       if (str.StartsWith("#TITLE", StringComparison.OrdinalIgnoreCase))
+                                                       {
+                                                               this.Title = str.Substring(6).Trim(ignoreChars);
+                                                       }
+                                                       else if (str.StartsWith("#ARTIST", StringComparison.OrdinalIgnoreCase))
+                                                       {
+                                                               this.Artist = str.Substring(7).Trim(ignoreChars);
+                                                       }
+                                                       else if (str.StartsWith("#COMMENT", StringComparison.OrdinalIgnoreCase))
+                                                       {
+                                                               this.Comment = str.Substring(8).Trim(ignoreChars);
+                                                       }
+                                                       else if (str.StartsWith("#GENRE", StringComparison.OrdinalIgnoreCase))
+                                                       {
+                                                               this.Genre = str.Substring(6).Trim(ignoreChars);
+                                                       }
+                                                       else if (str.StartsWith("#PREVIEW", StringComparison.OrdinalIgnoreCase))
+                                                       {
+                                                               this.Presound = str.Substring(8).Trim(ignoreChars);
+                                                       }
+                                                       else if (str.StartsWith("#PREIMAGE", StringComparison.OrdinalIgnoreCase))
+                                                       {
+                                                               this.Preimage = str.Substring(9).Trim(ignoreChars);
+                                                       }
+                                                       else if (str.StartsWith("#PREMOVIE", StringComparison.OrdinalIgnoreCase))
+                                                       {
+                                                               this.Premovie = str.Substring(9).Trim(ignoreChars);
+                                                       }
+                                                       else if (str.StartsWith("#SKINPATH100", StringComparison.OrdinalIgnoreCase))
+                                                       {
+                                                               this.SkinPath = str.Substring(12).Trim(ignoreChars);
+
+                                                       }
+                                                       else if (str.StartsWith("#FONTCOLOR", StringComparison.OrdinalIgnoreCase))
+                                                       {
+                                                               this.Color = ColorTranslator.FromHtml(str.Substring(10).Trim(ignoreChars));
+                                                       }
+                                                       else if (str.StartsWith("#PERFECTRANGE", StringComparison.OrdinalIgnoreCase))
+                                                       {
+                                                               int range = 0;
+                                                               if (int.TryParse(str.Substring(13).Trim(ignoreChars), out range) && (range >= 0))
+                                                               {
+                                                                       this.PerfectRange = range;
+                                                               }
+                                                       }
+                                                       else if (str.StartsWith("#GREATRANGE", StringComparison.OrdinalIgnoreCase))
+                                                       {
+                                                               int range = 0;
+                                                               if (int.TryParse(str.Substring(11).Trim(ignoreChars), out range) && (range >= 0))
+                                                               {
+                                                                       this.GreatRange = range;
+                                                               }
+                                                       }
+                                                       else if (str.StartsWith("#GOODRANGE", StringComparison.OrdinalIgnoreCase))
+                                                       {
+                                                               int range = 0;
+                                                               if (int.TryParse(str.Substring(10).Trim(ignoreChars), out range) && (range >= 0))
+                                                               {
+                                                                       this.GoodRange = range;
+                                                               }
+                                                       }
+                                                       else if (str.StartsWith("#POORRANGE", StringComparison.OrdinalIgnoreCase))
+                                                       {
+                                                               int range = 0;
+                                                               if (int.TryParse(str.Substring(10).Trim(ignoreChars), out range) && (range >= 0))
+                                                               {
+                                                                       this.PoorRange = range;
+                                                               }
+                                                       }
+                                               }
+                                               continue;
+                                       }
+                                       catch
+                                       {
+                                               continue;
+                                       }
+                               }
+                       }
+                       reader.Close();
+               }
+       }
+}