OSDN Git Service

戦果を集計時間(2時と14時)にリセットできるようにする
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer / Config.cs
1 // Copyright (C) 2014 Kazuhiro Fujieda <fujieda@users.sourceforge.jp>\r
2 // \r
3 // This program is part of KancolleSniffer.\r
4 //\r
5 // KancolleSniffer is free software: you can redistribute it and/or modify\r
6 // it under the terms of the GNU General Public License as published by\r
7 // the Free Software Foundation, either version 3 of the License, or\r
8 // (at your option) any later version.\r
9 //\r
10 // This program is distributed in the hope that it will be useful,\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 // GNU General Public License for more details.\r
14 //\r
15 // You should have received a copy of the GNU General Public License\r
16 // along with this program; if not, see <http://www.gnu.org/licenses/>.\r
17 \r
18 using System.Collections.Generic;\r
19 using System.IO;\r
20 using System.Windows.Forms;\r
21 using Codeplex.Data;\r
22 \r
23 namespace KancolleSniffer\r
24 {\r
25     public class Config\r
26     {\r
27         private readonly string _configFileName = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "config.json");\r
28 \r
29         public bool TopMost { get; set; }\r
30         public bool FlashWindow { get; set; }\r
31         public bool ShowBaloonTip { get; set; }\r
32         public bool PlaySound { get; set; }\r
33         public int MarginShips { get; set; }\r
34         public List<int> ResetHours { get; set; }\r
35         public int SoundVolume { get; set; }\r
36         public string MissionSoundFile { get; set; }\r
37         public string NDockSoundFile { get; set; }\r
38         public string KDockSoundFile { get; set; }\r
39         public string MaxShipsSoundFile { get; set; }\r
40 \r
41         public Config()\r
42         {\r
43             FlashWindow = ShowBaloonTip = PlaySound = true;\r
44             MarginShips = 4;\r
45             ResetHours = new List<int>();\r
46             SoundVolume = 100;\r
47             var dir = Path.GetDirectoryName(Application.ExecutablePath);\r
48 // ReSharper disable AssignNullToNotNullAttribute\r
49             MissionSoundFile = Path.Combine(dir, "ensei.mp3");\r
50             NDockSoundFile = Path.Combine(dir, "nyuukyo.mp3");\r
51             KDockSoundFile = Path.Combine(dir, "kenzou.mp3");\r
52             MaxShipsSoundFile = Path.Combine(dir, "kanmusu.mp3");\r
53 // ReSharper restore AssignNullToNotNullAttribute\r
54         }\r
55 \r
56         public void Load()\r
57         {\r
58             try\r
59             {\r
60                 var config = (Config)DynamicJson.Parse(File.ReadAllText(_configFileName));\r
61                 foreach (var property in GetType().GetProperties())\r
62                     property.SetValue(this, property.GetValue(config, null), null);\r
63             }\r
64             catch (FileNotFoundException)\r
65             {\r
66             }\r
67         }\r
68 \r
69         public void Save()\r
70         {\r
71             File.WriteAllText(_configFileName, DynamicJson.Serialize(this));\r
72         }\r
73     }\r
74 }