예제 #1
0
        private static void DrawAchievement(SpriteBatch sb, ref Vector2 center, DrawCache ach)
        {
            float alpha = ach.Alpha;

            if (alpha > 0f)
            {
                string    title       = ach.Title;
                Vector2   center2     = center;
                Vector2   value       = Main.fontItemStack.MeasureString(title);
                float     num         = ach.Scale * 1.1f;
                Rectangle r           = Utils.CenteredRectangle(center2, (value + new Vector2(58f, 10f)) * num);
                Vector2   mouseScreen = Main.MouseScreen;
                bool      flag        = r.Contains(mouseScreen.ToPoint());
                Color     c           = flag ? (new Color(64, 109, 164) * 0.75f) : (new Color(64, 109, 164) * 0.5f);
                Utils.DrawInvBG(sb, r, c);
                float   num2   = num * 0.3f;
                Color   value2 = new Color(Main.mouseTextColor, Main.mouseTextColor, (int)Main.mouseTextColor / 5, Main.mouseTextColor);
                Vector2 vector = r.Right() - Vector2.UnitX * num * (12f + num2 * (float)ach.Frame.Width);
                sb.Draw(AchievementsTexture, vector, ach.Frame, Color.White * alpha, 0f, new Vector2(0f, ach.Frame.Height / 2), num2, SpriteEffects.None, 0f);
                sb.Draw(AchievementsTextureBorder, vector, null, Color.White * alpha, 0f, new Vector2(0f, ach.Frame.Height / 2), num2, SpriteEffects.None, 0f);
                Utils.DrawBorderString(sb, title, vector - Vector2.UnitX * 10f, value2 * alpha, num * 0.9f, 1f, 0.4f);
                if (flag)
                {
                    Main.player[Main.myPlayer].mouseInterface = true;
                    if (Main.mouseLeft && Main.mouseLeftRelease)
                    {
                        AchievementsUI.OpenAndGoto(ach.theAchievement);
                        ach.TimeLeft = 0;
                    }
                }
            }
            ach.ApplyHeight(ref center);
        }
예제 #2
0
파일: Grid.cs 프로젝트: DanCope/Orbits
        /// <summary>
        /// Compiles the grid's geometry from the given <see cref="Pen"/> and overall dimensions into a <see cref="DrawCache"/> object.
        /// </summary>
        /// <param name="pen">The <see cref="Pen"/> to render the grid's lines with.</param>
        /// <param name="left">The ledge edge of the grid.</param>
        /// <param name="top">The top edge of the grid.</param>
        /// <param name="width">The width of the grid.</param>
        /// <param name="height">The height of the grid.</param>
        /// <returns>A <see cref="DrawCache"/> with the compiled geometry.</returns>
        /// <remarks>Only the most recently compiled <see cref="DrawCache"/> is valid for any given <see cref="Grid"/>.</remarks>
        public DrawCache Compile(Pen pen, float left, float top, float width, float height)
        {
            short vIndex = 0;
            short iIndex = 0;

            float w2 = pen.Width / 2;

            for (int y = 0; y <= _rows; y++)
            {
                for (int x = 0; x <= _columns; x++)
                {
                    float px = left + (width / _columns) * x;
                    float py = top + (height / _rows) * y;

                    AddVertex(_vertexBuffer, vIndex + 0, px - w2, py - w2, pen.ColorAt(0, 0, 0));
                    AddVertex(_vertexBuffer, vIndex + 1, px + w2, py - w2, pen.ColorAt(0, 0, 0));
                    AddVertex(_vertexBuffer, vIndex + 2, px - w2, py + w2, pen.ColorAt(0, 0, 0));
                    AddVertex(_vertexBuffer, vIndex + 3, px + w2, py + w2, pen.ColorAt(0, 0, 0));

                    AddQuad(_indexBuffer, iIndex, vIndex);

                    vIndex += 4;
                    iIndex += 6;
                }
            }

            for (int y = 0; y < _rows; y++)
            {
                for (int x = 0; x <= _columns; x++)
                {
                    int baseV1 = (y * (_columns + 1) + x) * 4;
                    int baseV2 = ((y + 1) * (_columns + 1) + x) * 4;

                    AddQuad(_indexBuffer, iIndex, (short)(baseV1 + 2), (short)(baseV1 + 3), (short)(baseV2 + 0), (short)(baseV2 + 1));

                    iIndex += 6;
                }
            }

            for (int y = 0; y <= _rows; y++)
            {
                for (int x = 0; x < _columns; x++)
                {
                    int baseV1 = (y * (_columns + 1) + x) * 4;
                    int baseV2 = baseV1 + 4;

                    AddQuad(_indexBuffer, iIndex, (short)(baseV1 + 1), (short)(baseV2 + 0), (short)(baseV1 + 3), (short)(baseV2 + 2));

                    iIndex += 6;
                }
            }

            _serial[0]++;

            DrawCache cache = new DrawCache();

            cache.AddUnit(new GridCacheUnit(_vertexBuffer, _indexBuffer, pen.Brush.Texture, _serial));

            return(cache);
        }
예제 #3
0
        public override void OnEnter()
        {
            var penWidth = 6.0f;
            Pen pen      = new Pen(new Microsoft.Xna.Framework.Color(Microsoft.Xna.Framework.Color.Blue, 92), penWidth);

            var bounds = VisibleBoundsWorldspace;
            var size   = bounds.Size;
            var width  = size.Width - penWidth;
            var height = size.Height - penWidth;

            //_cache = new Grid(12, 10).Compile(pen, 3, 3, 30 * 12, 30 * 10);
            _cache = new Grid(12, 10).Compile(pen, penWidth / 2, penWidth / 2, width, height);

            base.OnEnter();
        }
예제 #4
0
        /// <summary>
        /// Compiles the grid's geometry from the given <see cref="Pen"/> and overall dimensions into a <see cref="DrawCache"/> object.
        /// </summary>
        /// <param name="pen">The <see cref="Pen"/> to render the grid's lines with.</param>
        /// <param name="left">The ledge edge of the grid.</param>
        /// <param name="top">The top edge of the grid.</param>
        /// <param name="width">The width of the grid.</param>
        /// <param name="height">The height of the grid.</param>
        /// <returns>A <see cref="DrawCache"/> with the compiled geometry.</returns>
        /// <remarks>Only the most recently compiled <see cref="DrawCache"/> is valid for any given <see cref="Grid"/>.</remarks>
        public DrawCache Compile (Pen pen, float left, float top, float width, float height)
        {
            short vIndex = 0;
            short iIndex = 0;

            float w2 = pen.Width / 2;

            for (int y = 0; y <= _rows; y++) {
                for (int x = 0; x <= _columns; x++) {
                    float px = left + (width / _columns) * x;
                    float py = top + (height / _rows) * y;

                    AddVertex(_vertexBuffer, vIndex + 0, px - w2, py - w2, pen.ColorAt(0, 0, 0));
                    AddVertex(_vertexBuffer, vIndex + 1, px + w2, py - w2, pen.ColorAt(0, 0, 0));
                    AddVertex(_vertexBuffer, vIndex + 2, px - w2, py + w2, pen.ColorAt(0, 0, 0));
                    AddVertex(_vertexBuffer, vIndex + 3, px + w2, py + w2, pen.ColorAt(0, 0, 0));

                    AddQuad(_indexBuffer, iIndex, vIndex);

                    vIndex += 4;
                    iIndex += 6;
                }
            }

            for (int y = 0; y < _rows; y++) {
                for (int x = 0; x <= _columns; x++) {
                    int baseV1 = (y * (_columns + 1) + x) * 4;
                    int baseV2 = ((y + 1) * (_columns + 1) + x) * 4;

                    AddQuad(_indexBuffer, iIndex, (short)(baseV1 + 2), (short)(baseV1 + 3), (short)(baseV2 + 0), (short)(baseV2 + 1));

                    iIndex += 6;
                }
            }

            for (int y = 0; y <= _rows; y++) {
                for (int x = 0; x < _columns; x++) {
                    int baseV1 = (y * (_columns + 1) + x) * 4;
                    int baseV2 = baseV1 + 4;

                    AddQuad(_indexBuffer, iIndex, (short)(baseV1 + 1), (short)(baseV2 + 0), (short)(baseV1 + 3), (short)(baseV2 + 2));

                    iIndex += 6;
                }
            }

            _serial[0]++;

            DrawCache cache = new DrawCache();
            cache.AddUnit(new GridCacheUnit(_vertexBuffer, _indexBuffer, pen.Brush.Texture, _serial));

            return cache;
        }
예제 #5
0
        public override void Setup(GraphicsDevice device)
        {
            Pen pen = new Pen(new Color(Color.Blue, 92), 6);

            _cache = new Grid(12, 10).Compile(pen, 30, 30, 30 * 12, 30 * 10);
        }