1 // Copyright (C) 2015 Kazuhiro Fujieda <fujieda@users.osdn.me>
\r
3 // Licensed under the Apache License, Version 2.0 (the "License");
\r
4 // you may not use this file except in compliance with the License.
\r
5 // You may obtain a copy of the License at
\r
7 // http://www.apache.org/licenses/LICENSE-2.0
\r
9 // Unless required by applicable law or agreed to in writing, software
\r
10 // distributed under the License is distributed on an "AS IS" BASIS,
\r
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
12 // See the License for the specific language governing permissions and
\r
13 // limitations under the License.
\r
16 using System.Collections.Generic;
\r
20 namespace KancolleSniffer.Model
\r
22 public class AdditionalData
\r
24 private static readonly string EnemySlotFile =
\r
25 Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "EnemySlot.csv");
\r
27 private Dictionary<int, int[]> _maxEq;
\r
29 public void LoadEnemySlot()
\r
33 _maxEq = File.ReadLines(EnemySlotFile)
\r
34 .Select(line => line.Split(',').Select(s => int.TryParse(s, out var num) ? num : 0))
\r
35 .ToDictionary(nums => nums.First(), nums => nums.Skip(1).ToArray());
\r
42 public int[] EnemySlot(int id) =>
\r
43 _maxEq != null ? _maxEq.TryGetValue(id, out var slot) ? slot : null : null;
\r
45 private const string TpFileName = "TP.csv";
\r
47 private static readonly string TpFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, TpFileName);
\r
49 private Dictionary<int, double> _tpSpec;
\r
51 public void LoadTpSpec()
\r
55 _tpSpec = File.ReadAllLines(TpFile)
\r
56 .Select(line => line.Split(','))
\r
57 .ToDictionary(f => int.Parse(f[0]), f => double.Parse(f[2]));
\r
62 catch (Exception ex)
\r
64 throw new Exception(TpFileName + "が壊れています。", ex);
\r
68 public double ItemTp(int id) =>
\r
69 _tpSpec != null ? _tpSpec.TryGetValue(id, out var tp) ? tp : -1 : -1;
\r
71 private static readonly string NumEquipsFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "NumEquips.csv");
\r
73 private Dictionary<int, int> _numEquips = new Dictionary<int, int>();
\r
75 public bool UseNumEquipsFile { get; set; } = true;
\r
77 public void LoadNumEquips()
\r
81 if (!UseNumEquipsFile)
\r
83 _numEquips = File.ReadLines(NumEquipsFile)
\r
84 .Select(line => line.Split(','))
\r
85 .ToDictionary(f => int.Parse(f[0]), f => int.Parse(f[2]));
\r
92 public int NumEquips(int id) => _numEquips.TryGetValue(id, out var num) ? num : -1;
\r
94 public void RecordNumEquips(int id, string name, int numEquips)
\r
96 _numEquips[id] = numEquips;
\r
97 if (UseNumEquipsFile)
\r
98 File.AppendAllText(NumEquipsFile, $"{id},{name},{numEquips}\r\n");
\r