private void Updated(string apiname, dynamic data)
{
Func<int, Color> getColorFromEventKind = (int kind) =>
{
switch (kind)
{
case 0:
case 1:
default: //昼夜戦・その他
return Utility.Configuration.Config.UI.ForeColor;
case 2:
case 3: //夜戦・夜昼戦
return Utility.Configuration.Config.UI.Compass_ColorTextEventKind3;
case 4: //航空戦
case 6: //長距離空襲戦
return Utility.Configuration.Config.UI.Compass_ColorTextEventKind6;
case 5: // 敵連合
return Utility.Configuration.Config.UI.Compass_ColorTextEventKind5;
case 7: // 夜昼戦(対連合艦隊)
return Utility.Configuration.Config.UI.Compass_ColorTextEventKind3;
}
};
if (apiname == "api_port/port")
{
BasePanel.Visible = false;
}
else if (apiname == "api_req_member/get_practice_enemyinfo")
{
TextMapArea.Text = "演习";
TextDestination.Text = string.Format("{0} {1}", data.api_nickname, Constants.GetAdmiralRank((int)data.api_rank));
TextDestination.Font = Utility.Configuration.Config.UI.JapFont;
TextDestination.ImageAlign = ContentAlignment.MiddleCenter;
TextDestination.ImageIndex = -1;
ToolTipInfo.SetToolTip(TextDestination, null);
TextEventKind.Text = data.api_cmt;
TextEventKind.ForeColor = getColorFromEventKind(0);
TextEventKind.ImageAlign = ContentAlignment.MiddleCenter;
TextEventKind.ImageIndex = -1;
TextEventKind.Font = Utility.Configuration.Config.UI.JapFont;
ToolTipInfo.SetToolTip(TextEventKind, null);
TextEventDetail.Text = string.Format("Lv. {0} / {1} exp.", data.api_level, data.api_experience[0]);
TextEventDetail.Font = Utility.Configuration.Config.UI.JapFont;
TextEventDetail.ImageAlign = ContentAlignment.MiddleCenter;
TextEventDetail.ImageIndex = -1;
ToolTipInfo.SetToolTip(TextEventDetail, null);
TextEnemyFleetName.Text = data.api_deckname;
TextEnemyFleetName.Font = Utility.Configuration.Config.UI.JapFont;
}
else
{
CompassData compass = KCDatabase.Instance.Battle.Compass;
BasePanel.SuspendLayout();
PanelEnemyFleet.Visible = false;
PanelEnemyCandidate.Visible = false;
_enemyFleetCandidate = null;
_enemyFleetCandidateIndex = -1;
TextMapArea.Text = string.Format("出击海域 : {0}-{1}{2}", compass.MapAreaID, compass.MapInfoID,
compass.MapInfo.EventDifficulty > 0 ? " [" + Constants.GetDifficulty(compass.MapInfo.EventDifficulty, compass.MapAreaID) + "]" : "");
{
var mapinfo = compass.MapInfo;
if (mapinfo.IsCleared)
{
ToolTipInfo.SetToolTip(TextMapArea, null);
}
else if (mapinfo.RequiredDefeatedCount != -1)
{
ToolTipInfo.SetToolTip(TextMapArea, string.Format("击破 : {0} / {1} 次", mapinfo.CurrentDefeatedCount, mapinfo.RequiredDefeatedCount));
}
else if (mapinfo.MapHPMax > 0)
{
int current = compass.MapHPCurrent > 0 ? compass.MapHPCurrent : mapinfo.MapHPCurrent;
int max = compass.MapHPMax > 0 ? compass.MapHPMax : mapinfo.MapHPMax;
ToolTipInfo.SetToolTip(TextMapArea, string.Format("{0}: {1} / {2}", mapinfo.GaugeType == 3 ? "TP" : "HP", current, max));
}
else
{
ToolTipInfo.SetToolTip(TextMapArea, null);
}
}
TextDestination.Text = string.Format("下一航路 : {0}{1}", compass.Destination, (compass.IsEndPoint ? " ( 终点 )" : ""));
TextDestination.Font = Utility.Configuration.Config.UI.MainFont;
if (compass.LaunchedRecon != 0)
{
TextDestination.ImageAlign = ContentAlignment.MiddleRight;
TextDestination.ImageIndex = (int)ResourceManager.EquipmentContent.Seaplane;
string tiptext;
switch (compass.CommentID)
{
case 1:
tiptext = "发现敌舰队!";
break;
case 2:
tiptext = "发现攻击目标!";
break;
case 3:
tiptext = "針路哨戒!";
break;
default:
tiptext = "索敌机离舰!";
break;
}
ToolTipInfo.SetToolTip(TextDestination, tiptext);
}
else
{
TextDestination.ImageAlign = ContentAlignment.MiddleCenter;
TextDestination.ImageIndex = -1;
ToolTipInfo.SetToolTip(TextDestination, null);
}
//とりあえずリセット
TextEventDetail.ImageAlign = ContentAlignment.MiddleCenter;
TextEventDetail.ImageIndex = -1;
ToolTipInfo.SetToolTip(TextEventDetail, null);
TextEventKind.ForeColor = getColorFromEventKind(0);
{
string eventkind = Constants.GetMapEventID(compass.EventID);
switch (compass.EventID)
{
case 0: //初期位置
case 1: //不明
TextEventDetail.Text = "どうしてこうなった";
break;
case 2: //資源
case 8: //船団護衛成功
TextEventDetail.Text = GetMaterialInfo(compass);
TextEventDetail.Font = Utility.Configuration.Config.UI.MainFont;
break;
case 3: //渦潮
{
int materialmax = KCDatabase.Instance.Fleet.Fleets.Values
.Where(f => f != null && f.IsInSortie)
.SelectMany(f => f.MembersWithoutEscaped)
.Max(s =>
{
if (s == null) return 0;
switch (compass.WhirlpoolItemID)
{
case 1:
return s.Fuel;
case 2:
return s.Ammo;
default:
return 0;
}
});
TextEventDetail.Text = string.Format("{0} x {1} ({2:p0})",
Constants.GetMaterialName(compass.WhirlpoolItemID),
compass.WhirlpoolItemAmount,
(double)compass.WhirlpoolItemAmount / Math.Max(materialmax, 1));
TextEventDetail.Font = Utility.Configuration.Config.UI.MainFont;
}
break;
case 4: //通常戦闘
if (compass.EventKind >= 2)
{
eventkind += "/" + Constants.GetMapEventKind(compass.EventKind);
TextEventKind.ForeColor = getColorFromEventKind(compass.EventKind);
}
UpdateEnemyFleet();
break;
case 5: //ボス戦闘
TextEventKind.ForeColor = Utility.Configuration.Config.UI.Color_Red;
if (compass.EventKind >= 2)
{
eventkind += "/" + Constants.GetMapEventKind(compass.EventKind);
}
UpdateEnemyFleet();
break;
case 6: //気のせいだった
switch (compass.EventKind)
{
case 0: //気のせいだった
default:
break;
case 1:
eventkind = "不见敌影";
break;
case 2:
eventkind = "能动分歧";
break;
case 3:
eventkind = "平稳的海面";
break;
case 4:
eventkind = "平稳的海峡";
break;
case 5:
eventkind = "需要提高警惕";
break;
case 6:
eventkind = "安静的海洋";
break;
case 7:
eventkind = "游击部队进击中";
break;
case 8:
eventkind = "对潜警戒进击中";
break;
case 9:
eventkind = "栗田舰队突入";
break;
}
if (compass.RouteChoices != null) {
TextEventDetail.Text = string.Join("/", compass.RouteChoices);
TextEventDetail.Font = Utility.Configuration.Config.UI.MainFont;
} else {
TextEventDetail.Text = "";
}
break;
case 7: //航空戦or航空偵察
TextEventKind.ForeColor = getColorFromEventKind(compass.EventKind);
switch (compass.EventKind)
{
case 0: //航空偵察
eventkind = "航空侦察";
switch (compass.AirReconnaissanceResult)
{
case 0:
default:
TextEventDetail.Text = "失败";
TextEventDetail.Font = Utility.Configuration.Config.UI.MainFont;
break;
case 1:
TextEventDetail.Text = "成功";
TextEventDetail.Font = Utility.Configuration.Config.UI.MainFont;
break;
case 2:
TextEventDetail.Text = "大成功";
TextEventDetail.Font = Utility.Configuration.Config.UI.MainFont;
break;
}
switch (compass.AirReconnaissancePlane)
{
case 0:
default:
TextEventDetail.ImageAlign = ContentAlignment.MiddleCenter;
TextEventDetail.ImageIndex = -1;
break;
case 1:
TextEventDetail.ImageAlign = ContentAlignment.MiddleLeft;
TextEventDetail.ImageIndex = (int)ResourceManager.EquipmentContent.FlyingBoat;
break;
case 2:
TextEventDetail.ImageAlign = ContentAlignment.MiddleLeft;
TextEventDetail.ImageIndex = (int)ResourceManager.EquipmentContent.Seaplane;
break;
}
if (compass.GetItems.Any())
{
TextEventDetail.Text += " " + GetMaterialInfo(compass);
TextEventDetail.Font = Utility.Configuration.Config.UI.MainFont;
}
break;
case 4: //航空戦
default:
UpdateEnemyFleet();
break;
}
break;
case 9: //揚陸地点
TextEventDetail.Text = "";
break;
default:
TextEventDetail.Text = "";
break;
}
TextEventKind.Text = eventkind;
TextEventKind.Font = Utility.Configuration.Config.UI.MainFont;
}
if (compass.HasAirRaid)
{
TextEventKind.ImageAlign = ContentAlignment.MiddleRight;
TextEventKind.ImageIndex = (int)ResourceManager.EquipmentContent.CarrierBasedBomber;
ToolTipInfo.SetToolTip(TextEventKind, "空袭 - " + Constants.GetAirRaidDamage(compass.AirRaidDamageKind));
}
else
{
TextEventKind.ImageAlign = ContentAlignment.MiddleCenter;
TextEventKind.ImageIndex = -1;
ToolTipInfo.SetToolTip(TextEventKind, null);
}
BasePanel.ResumeLayout();
BasePanel.Visible = true;
}
}