partial void Merge(CompetitiveMap entity, CompetitiveMapDTO dto, object state) { var scores = dto.Scores; if (scores != null && scores.Length == 3) { entity.Scores = this.scoreboardConverter.Convert(scores, dto); } var objectives = dto.Objectives; if (objectives != null) { var values = new List <MatchObjective>(objectives.Count); values.AddRange(objectives.Select(objective => this.objectiveConverter.Convert(objective, dto))); entity.Objectives = values; } var bonuses = dto.Bonuses; if (bonuses != null) { var values = new List <MapBonus>(bonuses.Count); values.AddRange(bonuses.Select(bonus => this.mapBonusConverter.Convert(bonus, dto))); entity.Bonuses = values; } }
partial void Merge(CompetitiveMap entity, CompetitiveMapDTO dto, object state) { entity.Id = dto.Id; entity.Type = dto.Type; var scores = dto.Scores; if (scores != null) { entity.Scores = this.scoreboardConverter.Convert(scores, dto); } var deaths = dto.Deaths; if (deaths != null) { entity.Deaths = this.scoreboardConverter.Convert(deaths, dto); } var kills = dto.Kills; if (kills != null) { entity.Kills = this.scoreboardConverter.Convert(kills, dto); } var objectives = dto.Objectives; if (objectives != null) { var values = new List <MatchObjective>(objectives.Count); values.AddRange(objectives.Select(objective => this.objectiveConverter.Convert(objective, dto))); entity.Objectives = values; } var bonuses = dto.Bonuses; if (bonuses != null) { var values = new List <MapBonus>(bonuses.Count); values.AddRange(bonuses.Select(bonus => this.mapBonusConverter.Convert(bonus, dto))); entity.Bonuses = values; } }
/// <summary> /// Retrieves a list of the objectives in the given match and map /// </summary> /// <param name="matchId">The match's ID</param> /// <param name="mapId">The map's ID</param> public IEnumerable <WvWObjective> GetMapObjectives(string matchId, WvWMap map) { List <WvWObjective> objectives = new List <WvWObjective>(); try { var matchDetails = this.service.GetMatchDetails(matchId); if (matchDetails != null) { CompetitiveMap mapDetails = null; switch (map) { case WvWMap.BlueBorderlands: mapDetails = matchDetails.Maps.FirstOrDefault(m => m is BlueBorderlands); break; case WvWMap.GreenBorderlands: mapDetails = matchDetails.Maps.FirstOrDefault(m => m is GreenBorderlands); break; case WvWMap.RedBorderlands: mapDetails = matchDetails.Maps.FirstOrDefault(m => m is RedBorderlands); break; case WvWMap.EternalBattlegrounds: mapDetails = matchDetails.Maps.FirstOrDefault(m => m is EternalBattlegrounds); break; default: break; } if (mapDetails != null) { foreach (var objective in mapDetails.Objectives) { var objData = new WvWObjective(); objData.ID = objective.ObjectiveId; objData.MatchId = matchId; objData.Map = map; objData.GuildOwner = objective.OwnerGuildId; var objDetails = this.ObjectivesTable.Objectives.FirstOrDefault(obj => obj.ID == objData.ID); if (objDetails != null) { objData.Type = objDetails.Type; objData.Name = objDetails.Name; objData.FullName = objDetails.FullName; objData.Location = objDetails.Location; objData.MapLocation = objDetails.MapLocation; objData.Points = objDetails.Points; } switch (objective.Owner) { case TeamColor.Blue: objData.WorldOwner = WorldColor.Blue; break; case TeamColor.Green: objData.WorldOwner = WorldColor.Green; break; case TeamColor.Red: objData.WorldOwner = WorldColor.Red; break; default: objData.WorldOwner = WorldColor.None; break; } objectives.Add(objData); } } } } catch (Exception ex) { // Don't crash if something goes wrong (like if WvW is resetting) logger.Error(ex); } return(objectives); }
/// <summary> /// Retrieves a list of the objectives in the given match and map /// </summary> /// <param name="matchId">The match's ID</param> /// <param name="mapId">The map's ID</param> public IEnumerable <WvWObjective> GetMapObjectives(string matchId, WvWMap map) { List <WvWObjective> objectives = new List <WvWObjective>(); try { var matchDetails = this.matchService.Find(new Matchup { MatchId = matchId }); if (matchDetails != null) { CompetitiveMap mapDetails = null; switch (map) { case WvWMap.BlueBorderlands: mapDetails = matchDetails.Maps.FirstOrDefault(m => m is BlueBorderlands); break; case WvWMap.GreenBorderlands: mapDetails = matchDetails.Maps.FirstOrDefault(m => m is GreenBorderlands); break; case WvWMap.RedDesertBorderlands: case WvWMap.RedAplineBorderlands: mapDetails = matchDetails.Maps.FirstOrDefault(m => m is RedBorderlands); break; case WvWMap.EternalBattlegrounds: mapDetails = matchDetails.Maps.FirstOrDefault(m => m is EternalBattlegrounds); break; default: break; } if (mapDetails != null) { foreach (var objective in mapDetails.Objectives) { var objData = new WvWObjective(); objData.ID = new WvWObjectiveId(objective.ObjectiveId, map); objData.MatchId = matchId; objData.Map = map; objData.GuildOwner = objective.OwnerGuildId; var objDetails = this.ObjectivesTable.Objectives.FirstOrDefault(obj => obj.ID == objData.ID); if (objDetails != null) { objData.Type = objDetails.Type; objData.Name = this.objectiveNamesProvider.GetString(objData.ID, WvWObjectiveNameEnum.Short); objData.FullName = this.objectiveNamesProvider.GetString(objData.ID, WvWObjectiveNameEnum.Full); objData.Location = this.objectiveNamesProvider.GetString(objData.ID, WvWObjectiveNameEnum.Cardinal); objData.MapLocation = objDetails.MapLocation; } switch (objData.Type) { case ObjectiveType.Castle: objData.Points = 12; break; case ObjectiveType.Keep: objData.Points = 8; break; case ObjectiveType.Tower: objData.Points = 4; break; case ObjectiveType.Camp: objData.Points = 2; break; default: break; } switch (objective.Owner) { case TeamColor.Blue: objData.WorldOwner = WorldColor.Blue; break; case TeamColor.Green: objData.WorldOwner = WorldColor.Green; break; case TeamColor.Red: objData.WorldOwner = WorldColor.Red; break; default: objData.WorldOwner = WorldColor.None; break; } objectives.Add(objData); } } } } catch (Exception ex) { // Don't crash if something goes wrong (like if WvW is resetting) logger.Error(ex); } return(objectives); }