return result;\r
}\r
\r
- private enum CombatType\r
- {\r
- AtOnce,\r
- ByTurn,\r
- Support,\r
- Aircraft,\r
- AirBase,\r
- Friend\r
- }\r
-\r
- private class Phase\r
- {\r
- public string Api { get; }\r
- public CombatType Type { get; }\r
- public string Name { get; }\r
-\r
- public Phase(string api, CombatType type, string name = "")\r
- {\r
- Api = api;\r
- Type = type;\r
- Name = name;\r
- }\r
- }\r
-\r
private void CalcDamage(dynamic json)\r
{\r
AirBattleResults.Clear();\r
- var phases = new[]\r
+ foreach (KeyValuePair<string, dynamic> kv in json)\r
{\r
- new Phase("air_base_injection", CombatType.Aircraft, "AB噴式"),\r
- new Phase("injection_kouku", CombatType.Aircraft, "噴式"),\r
- new Phase("air_base_attack", CombatType.AirBase),\r
- new Phase("n_support_info", CombatType.Support),\r
- new Phase("n_hougeki1", CombatType.ByTurn),\r
- new Phase("n_hougeki2", CombatType.ByTurn),\r
- new Phase("kouku", CombatType.Aircraft, "航空戦"),\r
- new Phase("kouku2", CombatType.Aircraft, "航空戦2"),\r
- new Phase("support_info", CombatType.Support),\r
- new Phase("opening_taisen", CombatType.ByTurn),\r
- new Phase("opening_atack", CombatType.AtOnce),\r
- new Phase("friendly_battle", CombatType.Friend),\r
- new Phase("hougeki", CombatType.ByTurn),\r
- new Phase("hougeki1", CombatType.ByTurn),\r
- new Phase("hougeki2", CombatType.ByTurn),\r
- new Phase("hougeki3", CombatType.ByTurn),\r
- new Phase("raigeki", CombatType.AtOnce)\r
- };\r
- foreach (var phase in phases)\r
- CalcDamageByType(json, phase);\r
- }\r
-\r
- private void CalcDamageByType(dynamic json, Phase phase)\r
- {\r
- var api = "api_" + phase.Api;\r
- if (!json.IsDefined(api) || json[api] == null)\r
- return;\r
- switch (phase.Type)\r
- {\r
- case CombatType.AtOnce:\r
- CalcDamageAtOnce(json[api]);\r
- break;\r
- case CombatType.ByTurn:\r
- CalcDamageByTurn(json[api]);\r
- break;\r
- case CombatType.Support:\r
- CalcSupportDamage(json[api]);\r
- break;\r
- case CombatType.Aircraft:\r
- AddAirBattleResult(json[api], phase.Name);\r
- CalcKoukuDamage(json[api]);\r
- break;\r
- case CombatType.AirBase:\r
- CalcAirBaseAttackDamage(json[api]);\r
- break;\r
- case CombatType.Friend:\r
- CalcFriendAttackDamage(json[api]);\r
- break;\r
+ if (kv.Value == null)\r
+ continue;\r
+ switch (kv.Key)\r
+ {\r
+ case "api_air_base_injection":\r
+ AddAirBattleResult(kv.Value, "AB噴式");\r
+ CalcKoukuDamage(kv.Value);\r
+ break;\r
+ case "api_injection_kouku":\r
+ AddAirBattleResult(kv.Value, "噴式");\r
+ CalcKoukuDamage(kv.Value);\r
+ break;\r
+ case "api_air_base_attack":\r
+ CalcAirBaseAttackDamage(kv.Value);\r
+ break;\r
+ case "api_n_support_info":\r
+ CalcSupportDamage(kv.Value);\r
+ break;\r
+ case "api_n_hougeki1":\r
+ CalcDamageByTurn(kv.Value);\r
+ break;\r
+ case "api_n_hougeki2":\r
+ CalcDamageByTurn(kv.Value);\r
+ break;\r
+ case "api_kouku":\r
+ AddAirBattleResult(kv.Value, "航空戦");\r
+ CalcKoukuDamage(kv.Value);\r
+ break;\r
+ case "api_kouku2":\r
+ AddAirBattleResult(kv.Value, "航空戦2");\r
+ CalcKoukuDamage(kv.Value);\r
+ break;\r
+ case "api_support_info":\r
+ CalcSupportDamage(kv.Value);\r
+ break;\r
+ case "api_opening_taisen":\r
+ CalcDamageByTurn(kv.Value);\r
+ break;\r
+ case "api_opening_atack":\r
+ CalcDamageAtOnce(kv.Value);\r
+ break;\r
+ case "api_friendly_battle":\r
+ CalcFriendAttackDamage(kv.Value);\r
+ break;\r
+ case "api_hougeki":\r
+ CalcDamageByTurn(kv.Value);\r
+ break;\r
+ case "api_hougeki1":\r
+ CalcDamageByTurn(kv.Value);\r
+ break;\r
+ case "api_hougeki2":\r
+ CalcDamageByTurn(kv.Value);\r
+ break;\r
+ case "api_hougeki3":\r
+ CalcDamageByTurn(kv.Value);\r
+ break;\r
+ case "api_raigeki":\r
+ CalcDamageAtOnce(kv.Value);\r
+ break;\r
+ }\r
}\r
}\r
\r
/// <summary>\r
/// テスト専用\r
/// </summary>\r
- public void InjectResultStatus(ShipStatus[] main, ShipStatus[] guard, ShipStatus[] enemy, ShipStatus[] enemyGuard)\r
+ public void InjectResultStatus(ShipStatus[] main, ShipStatus[] guard, ShipStatus[] enemy,\r
+ ShipStatus[] enemyGuard)\r
{\r
Result = new BattleResult\r
{\r
- Friend = new BattleResult.Combined { Main = main, Guard = guard},\r
+ Friend = new BattleResult.Combined {Main = main, Guard = guard},\r
Enemy = new BattleResult.Combined {Main = enemy, Guard = enemyGuard}\r
};\r
}\r