public DestinyUserActivity(DestinyActivity destinyActivity, DestinyActivityDefinition definition, DestinyActivityModeDefinition modeDefinition, string characterId) { /* * Download and unpack world database * /common/destiny2_content/sqlite/en/world_sql_content_7227d0c5fd50443c8dd9e2e35f353f69.content * mode maps to modeType in DestinyActivityModeDefinition (game type) * referenceId maps to hash in DestinyActivityDefinition (map) * directoryActivityHash maps to hash in DestinyActivityDefinition (playlist) * * activity definitions * https://bungie-net.github.io/multi/schema_Destiny-HistoricalStats-Definitions-DestinyActivityModeType.html#schema_Destiny-HistoricalStats-Definitions-DestinyActivityModeType */ var activityId = destinyActivity.ActivityDetails.InstanceId; var contentUrl = $"https://www.bungie.net/en/PGCR/{activityId}?character={characterId}"; var gameTypeIconUrl = $"https://www.bungie.net{modeDefinition.DisplayProperties.Icon}"; var gameType = modeDefinition.DisplayProperties.Name; var map = definition.DisplayProperties.Name; var startTime = destinyActivity.Period; var endTime = destinyActivity.Period.AddSeconds(destinyActivity.Values["activityDurationSeconds"].Basic.Value); var mapImageUrl = $"https://www.bungie.net{definition.PgcrImage}"; var placement = destinyActivity.Values["standing"].Basic.DisplayValue; var placementColour = placement == "Victory" || placement == "1" ? AdaptiveTextColor.Good : AdaptiveTextColor.Attention; var stat1Name = "Efficiency"; var stat1Value = destinyActivity.Values["efficiency"].Basic.DisplayValue; var stat2Name = "Opponents Defeated"; var stat2Value = destinyActivity.Values["opponentsDefeated"].Basic.DisplayValue; Activity = BuildActivity(activityId, contentUrl, gameTypeIconUrl, gameType, map, startTime, endTime, mapImageUrl, placementColour, placement, stat1Name, stat1Value, stat2Name, stat2Value); }
public bool DeepEquals(TrendingDetail?other) { return(other is not null && Identifier == other.Identifier && EntityType == other.EntityType && (News is not null ? News.DeepEquals(other.News) : other.News is null) && (Support is not null ? Support.DeepEquals(other.Support) : other.Support is null) && (DestinyItem is not null ? DestinyItem.DeepEquals(other.DestinyItem) : other.DestinyItem is null) && (DestinyActivity is not null ? DestinyActivity.DeepEquals(other.DestinyActivity) : other.DestinyActivity is null) && (DestinyRitual is not null ? DestinyRitual.DeepEquals(other.DestinyRitual) : other.DestinyRitual is null) && (Creation is not null ? Creation.DeepEquals(other.Creation) : other.Creation is null)); }
public void Update(TrendingDetail?other) { if (other is null) { return; } if (Identifier != other.Identifier) { Identifier = other.Identifier; OnPropertyChanged(nameof(Identifier)); } if (EntityType != other.EntityType) { EntityType = other.EntityType; OnPropertyChanged(nameof(EntityType)); } if (!News.DeepEquals(other.News)) { News.Update(other.News); OnPropertyChanged(nameof(News)); } if (!Support.DeepEquals(other.Support)) { Support.Update(other.Support); OnPropertyChanged(nameof(Support)); } if (!DestinyItem.DeepEquals(other.DestinyItem)) { DestinyItem.Update(other.DestinyItem); OnPropertyChanged(nameof(DestinyItem)); } if (!DestinyActivity.DeepEquals(other.DestinyActivity)) { DestinyActivity.Update(other.DestinyActivity); OnPropertyChanged(nameof(DestinyActivity)); } if (!DestinyRitual.DeepEquals(other.DestinyRitual)) { DestinyRitual.Update(other.DestinyRitual); OnPropertyChanged(nameof(DestinyRitual)); } if (!Creation.DeepEquals(other.Creation)) { Creation.Update(other.Creation); OnPropertyChanged(nameof(Creation)); } }