internal FleetManager()
{
ApiService.Subscribe("api_req_hensei/change", r =>
{
var rFleet = Table[int.Parse(r.Parameters["api_id"])];
var rIndex = int.Parse(r.Parameters["api_ship_idx"]);
if (rIndex == -1)
{
rFleet.RemoveAllExceptFlagship();
rFleet.Update();
return;
}
var rShipID = int.Parse(r.Parameters["api_ship_id"]);
if (rShipID == -1)
{
rFleet.Remove(rIndex);
rFleet.Update();
return;
}
var rShip = KanColleGame.Current.Port.Ships[rShipID];
var rOriginalFleet = rShip.OwnerFleet;
var rOriginalIndex = rOriginalFleet?.Ships.IndexOf(rShip);
if (rOriginalFleet == rFleet)
rOriginalFleet.Swap(rIndex, rOriginalIndex.Value);
else
{
var rOriginalShip = rFleet.Organize(rIndex, rShip);
if (rOriginalIndex.HasValue)
{
rOriginalFleet.Organize(rOriginalIndex.Value, rOriginalShip);
rShip.OwnerFleet = rFleet;
}
}
if ((rFleet.State & FleetState.AnchorageRepair) == FleetState.AnchorageRepair)
rFleet.AnchorageRepair.Reset();
rFleet.Update();
rOriginalFleet?.Update();
});
ApiService.Subscribe("api_get_member/deck", r => Update(r.GetData<RawFleet[]>()));
ApiService.Subscribe("api_req_hensei/preset_select", r =>
{
var rFleet = Table[int.Parse(r.Parameters["api_deck_id"])];
foreach (var rShip in rFleet.Ships)
rShip.OwnerFleet = null;
rFleet.Update(r.GetData<RawFleet>());
});
ApiService.Subscribe("api_req_map/start", _ => Update());
}