예제 #1
0
        private void IconDownloadComplete(object sender, DownloadDataCompletedEventArgs e)
        {
            bool success = false;

            try {
                if (!e.Cancelled && e.Error == null)
                {
                    byte[] data = e.Result;
                    using (var buffer = new MemoryStream(data)) {
                        var iconTexture = Texture2D.FromStream(Main.instance.GraphicsDevice, buffer);
                        _modIcon = new UIImage(iconTexture)
                        {
                            Left = { Percent = 0f },
                            Top  = { Percent = 0f }
                        };
                        _modIconStatus = ModIconStatus.READY;
                        success        = true;
                    }
                }
            }
            catch {
                // country- wide imgur blocks, cannot load icon
            }
            if (!success)
            {
                _modIconStatus                     = ModIconStatus.APPENDED;
                _modName.Left.Pixels              -= ModIconAdjust;
                _moreInfoButton.Left.Pixels       -= ModIconAdjust;
                _updateButton.Left.Pixels         -= ModIconAdjust;
                _updateWithDepsButton.Left.Pixels -= ModIconAdjust;
            }
        }
예제 #2
0
        protected override void DrawSelf(SpriteBatch spriteBatch)
        {
            base.DrawSelf(spriteBatch);

            if (HasModIcon && _modIconStatus == ModIconStatus.UNKNOWN)
            {
                _modIconStatus = ModIconStatus.WANTED;
            }

            CalculatedStyle innerDimensions = GetInnerDimensions();
            float           leftOffset      = HasModIcon ? ModIconAdjust : 0f;
            Vector2         drawPos         = new Vector2(innerDimensions.X + 5f + leftOffset, innerDimensions.Y + 30f);

            spriteBatch.Draw(_dividerTexture, drawPos, null, Color.White, 0f, Vector2.Zero, new Vector2((innerDimensions.Width - 10f - leftOffset) / 8f, 1f), SpriteEffects.None, 0f);

            drawPos = new Vector2(innerDimensions.X + innerDimensions.Width - 125, innerDimensions.Y + 45);
            DrawTimeText(spriteBatch, drawPos);

            if (_updateButton?.IsMouseHovering == true)
            {
                tooltip = UpdateText;
            }
            else if (_updateWithDepsButton?.IsMouseHovering == true)
            {
                tooltip = UpdateWithDepsText;
            }
            else if (_moreInfoButton?.IsMouseHovering == true)
            {
                tooltip = ViewModInfoText;
            }
        }
예제 #3
0
        private void IconDownloadComplete(object sender, DownloadDataCompletedEventArgs e)
        {
            bool success = false;

            try {
                if (!e.Cancelled && e.Error == null)
                {
                    byte[] data = e.Result;
                    using (var buffer = new MemoryStream(data)) {
                        var iconTexture = Texture2D.FromStream(Main.instance.GraphicsDevice, buffer);
                        _modIcon = new UIImage(iconTexture)
                        {
                            Left = { Percent = 0f },
                            Top  = { Percent = 0f }
                        };
                        _modIconStatus = ModIconStatus.READY;
                        success        = true;
                    }
                }
            }
            catch {
                // country- wide imgur blocks, cannot load icon
            }
            if (!success)
            {
                AdjustPositioningFailedIcon();
                ModIconDownloadFailCount++;
                if (ModIconDownloadFailCount == MaxImgurFails)
                {
                    Logging.tML.Error("tModLoader has repeatedly failed to connect to imgur.com to download mod icons. If you know imgur is not accessibile in your country, you can set AvoidImgur found in congfig.json to true to avoid attempting to download mod icons in the future.");
                }
            }
        }
예제 #4
0
 private void RequestModIcon()
 {
     _modIconStatus = ModIconStatus.REQUESTED;
     using (var client = new WebClient()) {
         client.DownloadDataCompleted += IconDownloadComplete;
         client.DownloadDataAsync(new Uri(_modIconUrl));
     }
 }
예제 #5
0
 private void AdjustPositioningFailedIcon()
 {
     _modIconStatus               = ModIconStatus.APPENDED;
     _modName.Left.Pixels        -= ModIconAdjust;
     _moreInfoButton.Left.Pixels -= ModIconAdjust;
     _updateButton.Left.Pixels   -= ModIconAdjust;
     if (_updateWithDepsButton != null)
     {
         _updateWithDepsButton.Left.Pixels -= ModIconAdjust;
     }
 }
예제 #6
0
        protected override void DrawSelf(SpriteBatch spriteBatch)
        {
            base.DrawSelf(spriteBatch);

            if (HasModIcon && _modIconStatus == ModIconStatus.UNKNOWN)
            {
                _modIconStatus = ModIconStatus.WANTED;
            }

            CalculatedStyle innerDimensions = GetInnerDimensions();
            Vector2         drawPos         = new Vector2(innerDimensions.X + 5f + ModIconAdjust, innerDimensions.Y + 30f);

            spriteBatch.Draw(_dividerTexture, drawPos, null, Color.White, 0f, Vector2.Zero, new Vector2((innerDimensions.Width - 10f - ModIconAdjust) / 8f, 1f), SpriteEffects.None, 0f);

            drawPos = new Vector2(innerDimensions.X, innerDimensions.Y + 80);
            DrawTimeText(spriteBatch, drawPos);
        }
예제 #7
0
 private void IconDownloadComplete(object sender, DownloadDataCompletedEventArgs e)
 {
     try {
         byte[] data = e.Result;
         using (var buffer = new MemoryStream(data)) {
             var iconTexture = Texture2D.FromStream(Main.instance.GraphicsDevice, buffer);
             _modIcon = new UIImage(iconTexture)
             {
                 Left = { Percent = 0f },
                 Top  = { Percent = 0f }
             };
             _modIconStatus = ModIconStatus.READY;
         }
     }
     catch {
         // country- wide imgur blocks, cannot load icon
         _modIconStatus = ModIconStatus.APPENDED;
         _modName.Left.Set(5f, 0f);
         _moreInfoButton.Left.Set(0f, 0f);
     }
 }
예제 #8
0
 private void AppendModIcon()
 {
     _modIconStatus = ModIconStatus.APPENDED;
     Append(_modIcon);
 }