Пример #1
0
        public static async void ClientInvitationAccept(string clanTag)
        {
            if (NewbieProtectionSystem.ClientIsNewbie)
            {
                NewbieProtectionSystem.ClientNotifyNewbieCannotPerformAction(null);
                return;
            }

            if (ClientCheckIsUnderJoinCooldown(showErrorNotification: true))
            {
                return;
            }

            var timeRemains = await Instance.CallServer(
                _ => _.ServerRemote_GetCooldownRemainsToJoinReturnToFaction(clanTag));

            if (timeRemains > 0)
            {
                var factionEmblem =
                    await ClientFactionEmblemTextureProvider.GetEmblemTextureAsync(clanTag, useCache : true);

                NotificationSystem.ClientShowNotification(
                    title: CoreStrings.Faction_ErrorUnderJoinCooldown,
                    // TODO: consider using a separate text constant here
                    message: string.Format(CoreStrings.ShieldProtection_CooldownRemains_Format,
                                           ClientTimeFormatHelper.FormatTimeDuration(timeRemains)),
                    NotificationColor.Bad,
                    icon: factionEmblem);
                return;
            }

            DialogWindow.ShowDialog(
                title: CoreStrings.Faction_Join,
                text: string.Format(CoreStrings.Faction_DialogJoinConfirmation_Message_Format,
                                    @$ "\[{clanTag}\]")
Пример #2
0
        public static Brush GetEmblemTextureBrush(string clanTag)
        {
            if (string.IsNullOrEmpty(clanTag))
            {
                return(Brushes.Magenta);
            }

            if (CacheTextureBrushes.TryGetValue(clanTag, out var weakReferenceTextureBrush) &&
                weakReferenceTextureBrush.TryGetTarget(out var textureBrush))
            {
                return(textureBrush);
            }

            if (ClientFactionEmblemDataCache.TryGetValue(clanTag, out var emblem))
            {
                var texture = ClientFactionEmblemTextureProvider.GetEmblemTexture(emblem, useCache: true);
                textureBrush = Api.Client.UI.GetTextureBrush(texture);
                CacheTextureBrushes[clanTag] = new WeakReference <TextureBrush>(textureBrush);
                return(textureBrush);
            }

            // create placeholder texture brush, load the emblem async, and insert loaded emblem in the texture
            textureBrush = Api.Client.UI.CreateTextureBrush();
            CacheTextureBrushes[clanTag] = new WeakReference <TextureBrush>(textureBrush);
            LoadEmblemTextureAsync(clanTag, textureBrush);
            return(textureBrush);
        }
Пример #3
0
        private static async void LoadEmblemTextureAsync(string clanTag, TextureBrush textureBrush)
        {
            var emblem = await ClientFactionEmblemDataCache.GetFactionEmblemAsync(clanTag);

            var texture = ClientFactionEmblemTextureProvider.GetEmblemTexture(emblem, useCache: true);

            Api.Client.UI.SetTextureBrushResource(textureBrush, texture);
        }