public void AddType(int id, EveType type) { if (!EveTypes.Any(kv => kv.Key == id)) { EveTypes.Add(id, type); } }
/// <summary> /// 消除某事件的回调 /// </summary> /// <param name="evtName"></param> /// <param name="callback"></param> public void DropEvent(EveType evtName, EventDel callback) { List <EventDel> evtList = null; if (m_listeners.TryGetValue(evtName, out evtList)) {//如果找到了这个事件的链表 evtList.Remove(callback); } }
static public EveTypeInfo GetEveTypeInfo(EveType type) { if (!allTypes.ContainsKey(type)) { allTypes[type] = new EveTypeInfo { BaseType = type } } ; return(allTypes[type]); } }
/// <summary> /// 注册事件 /// </summary> /// <param name="evtName">事件类型</param> /// <param name="callback">事件回调</param> public void RegisterEvent(EveType evtName, EventDel callback) { List <EventDel> evtList = null; //如果有这个事件类型,直接在这个类型链表上添加事件回调 if (m_listeners.TryGetValue(evtName, out evtList)) { m_listeners[evtName].Add(callback); } else {//如果没有这个事件类型,新建链表再添加事件回调 evtList = new List <EventDel>(); evtList.Add(callback); m_listeners.Add(evtName, evtList); } }
public async Task <EveType> GetEveType(int typeId) { var cacheType = cache.GetType(typeId); if (cacheType != null) { return(cacheType); } string requestUri = $"/v3/universe/types/{typeId}/"; HttpResponseMessage response = await client.GetAsync(requestUri); response.EnsureSuccessStatusCode(); using var responseStream = await response.Content.ReadAsStreamAsync(); EveType type = await JsonSerializer.DeserializeAsync <EveType>(responseStream); cache.AddType(typeId, type); return(type); }
public bool IsCarrier(EveType type) { return(type.GroupId == 547); }
public bool IsForceAuxiliary(EveType type) { return(type.GroupId == 1538); }
public bool IsDreadnought(EveType type) { return(type.GroupId == 485); }
public bool IsRorqual(EveType type) { return(type.GroupId == 883); }
public bool IsCapital(EveType type) { return(IsRorqual(type) || IsDreadnought(type) || IsForceAuxiliary(type) || IsCarrier(type)); }
public AggregateData IncrementAggregate(AggregateData data, EveType type, float value, int damage, bool kills) { if (kills) { data.KillsTotal += 1; data.ISKKilledTotal += value; data.DamageDealtTotal += damage; if (IsStructure(type.TypeId)) { data.KillsStructure += 1; data.ISKKilledStructure += value; data.DamageDealtStructure += damage; if (IsMediumStructure(type.TypeId)) { data.MediumStructureKills += 1; } else if (IsLargeStructure(type.TypeId)) { data.LargeStructureKills += 1; } else if (IsXLargeStructure(type.TypeId)) { data.XLStructureKills += 1; } } else if (IsCapital(type)) { data.KillsCapital += 1; data.ISKKilledCapital += value; data.DamageDealtCapital += damage; if (IsDreadnought(type)) { data.DreadKills += 1; } else if (IsCarrier(type)) { data.CarrierKills += 1; } else if (IsForceAuxiliary(type)) { data.FaxesKills += 1; } else if (IsRorqual(type)) { data.RorqualKills += 1; } } else if (IsPod(type.TypeId)) { data.KillsPod += 1; data.ISKKilledPod += value; data.DamageDealtPod += damage; } else { data.KillsSubCap += 1; data.ISKKilledSubCap += value; data.DamageDealtSubCap += damage; } } else { data.LossesTotal += 1; data.ISKLostTotal += value; data.DamageTakenTotal += damage; if (IsStructure(type.TypeId)) { data.LossesStructure += 1; data.ISKLostStructure += value; data.DamageTakenStructure += damage; if (IsMediumStructure(type.TypeId)) { data.MediumStructureLosses += 1; } else if (IsLargeStructure(type.TypeId)) { data.LargeStructureLosses += 1; } else if (IsXLargeStructure(type.TypeId)) { data.XLStructureLosses += 1; } } else if (IsCapital(type)) { data.LossesCapital += 1; data.ISKLostCapital += value; data.DamageTakenCapital += damage; if (IsDreadnought(type)) { data.DreadLosses += 1; } else if (IsCarrier(type)) { data.CarrierLosses += 1; } else if (IsForceAuxiliary(type)) { data.FaxesLosses += 1; } else if (IsRorqual(type)) { data.RorqualLosses += 1; } } else if (IsPod(type.TypeId)) { data.LossesPod += 1; data.ISKLostPod += value; data.DamageTakenPod += damage; } else { data.LossesSubCap += 1; data.ISKLostSubCap += value; data.DamageTakenSubCap += damage; } } return(data); }
public async Task ProcessKillmailValue(Killmail killmail, float value) { // Check wormmhole kill if (IsWormholeKill(killmail)) { EveType victimType = await eSIService.GetEveType(killmail.Victim.ShipTypeId); // Process Victim if (killmail.Victim.CorporationId != null) { _logger.LogDebug("Loss for corp: {0}", killmail.Victim.CorporationId); var corp = await GetOrCreateCorporation(killmail.Victim.CorporationId.Value); DailyAggregateCorporation victimAggregate = await GetOrCreateDailyAggregateCorporation(corp, killmail.KillmailTime.Date); MonthlyAggregateCorporation victimAggregateMonthly = await GetOrCreateMonthlyAggregateCorporation(corp, killmail.KillmailTime.Date); IncrementAggregate(victimAggregate, victimType, value, killmail.Victim.DamageTaken, false); IncrementAggregate(victimAggregateMonthly, victimType, value, killmail.Victim.DamageTaken, false); } if (killmail.Victim.AllianceId != null) { var alliance = await GetOrCreateAlliance(killmail.Victim.AllianceId.Value); DailyAggregateAlliance victimAggregate = await GetOrCreateDailyAggregateAlliance(alliance, killmail.KillmailTime.Date); MonthlyAggregateAlliance victimAggregateMonthly = await GetOrCreateMonthlyAggregateAlliance(alliance, killmail.KillmailTime.Date); IncrementAggregate(victimAggregate, victimType, value, killmail.Victim.DamageTaken, false); IncrementAggregate(victimAggregateMonthly, victimType, value, killmail.Victim.DamageTaken, false); } // Process Attackers var attackerCorporations = killmail.Attackers.Where(a => a.CorporationId != null && a.CorporationId != killmail.Victim.CorporationId).Select(a => a.CorporationId.Value).Distinct(); foreach (var corporationId in attackerCorporations) { var corp = await GetOrCreateCorporation(corporationId); _logger.LogDebug("Kill for corp: {0}", killmail.Victim.CorporationId); DailyAggregateCorporation attackerAggregate = await GetOrCreateDailyAggregateCorporation(corp, killmail.KillmailTime.Date); MonthlyAggregateCorporation monthlyAggregateCorporation = await GetOrCreateMonthlyAggregateCorporation(corp, killmail.KillmailTime.Date); IncrementAggregate(attackerAggregate, victimType, value, killmail.Attackers.Where(a => a.CorporationId == corp.Id).Sum(a => a.DamageDone), true); IncrementAggregate(monthlyAggregateCorporation, victimType, value, killmail.Attackers.Where(a => a.CorporationId == corp.Id).Sum(a => a.DamageDone), true); } var attackerAlliances = killmail.Attackers.Where(a => a.AllianceId != null && a.AllianceId != killmail.Victim.AllianceId).Select(a => a.AllianceId.Value).Distinct(); foreach (var allianceId in attackerAlliances) { var alliance = await GetOrCreateAlliance(allianceId); DailyAggregateAlliance attackerAggregate = await GetOrCreateDailyAggregateAlliance(alliance, killmail.KillmailTime.Date); MonthlyAggregateAlliance monthlyAggregateAlliance = await GetOrCreateMonthlyAggregateAlliance(alliance, killmail.KillmailTime.Date); IncrementAggregate(attackerAggregate, victimType, value, killmail.Attackers.Where(a => a.AllianceId == alliance.Id).Sum(a => a.DamageDone), true); IncrementAggregate(monthlyAggregateAlliance, victimType, value, killmail.Attackers.Where(a => a.AllianceId == alliance.Id).Sum(a => a.DamageDone), true); } await context.SaveChangesAsync(); } }
public EventArgs(EveType t) { type = t; }
/// <summary> /// 重载,参数为接收事件类型 /// </summary> /// <param name="evtType"></param> public void TriggerEvent(EveType evtType) { TriggerEvent(new EventArgs(evtType)); }
bool IEveRepository.TryGetEveTypeById(EveTypeId id, out EveType value) { throw new NotImplementedException(); }
public static EveBlueprint NewBp( int id, EveType et, int quantity, IEnumerable <(EveType Type, int Quantity)> materials)