internal ExperienceRecords(SQLiteConnection rpConnection) : base(rpConnection)
{
DisposableObjects.Add(ApiService.Subscribe("api_port/port", r =>
{
var rPort = KanColleGame.Current.Port;
var rAdmiral = rPort.Admiral;
if (r_Admiral != rAdmiral.Experience)
{
r_Admiral = rAdmiral.Experience;
InsertAdmiralRecord(r.Timestamp, rAdmiral.Experience);
}
var rShips = new List<Ship>(25);
foreach (var rShip in rPort.Ships.Values.Where(rpShip => rpShip.Experience > 0))
{
int rOldExperience;
if (!r_Ships.TryGetValue(rShip.ID, out rOldExperience))
r_Ships.Add(rShip.ID, rShip.Experience);
else
r_Ships[rShip.ID] = rShip.Experience;
if (rOldExperience != rShip.Experience)
rShips.Add(rShip);
}
if (rShips.Count > 0)
InsertShipExperience(r.Timestamp, rShips);
}));
}