예제 #1
0
파일: Background.cs 프로젝트: lytedev/wrack
        public override void Draw(GameTime gameTime)
        {
            for (int i = 0; i < Children.Count; i++)
            {
                Children[i].Draw(gameTime);
            }

            if (!DrawMe && Parent != null) return;

            int ysize = (int)Size.Y;
            int frameOffset = Frame * ysize;
            Rectangle src = new Rectangle(0, frameOffset, Texture.Width, ysize);
            Vector2Rectangle dest = new Vector2Rectangle(GetDrawPosition() + Padding, (Parent.Size * Parent.Scale) - (Padding * 2));
            Graphics.TileTexture(Texture, src, dest.GetRect(), Scale, Parent.Origin, Overlay, 0);
        }
예제 #2
0
파일: Border.cs 프로젝트: lytedev/wrack
        public override void Draw(GameTime gameTime)
        {
            for (int i = 0; i < Children.Count; i++)
            {
                Children[i].Draw(gameTime);
            }

            if (!DrawMe && Parent != null) return;

            float diff = Size.X / 3;
            float sxdiff = diff * Scale.X;
            float sydiff = diff * Scale.Y;
            int frameOffset = (int)(Frame * (diff * 3));

            Vector2 sdiff = new Vector2(sxdiff, sydiff);
            Vector2 scale = Parent.Scale * Scale;

            Vector2 pos = Utilities.FloorVector(GetDrawPosition());
            Vector2 es = Parent.Size * Parent.Scale;

            int xi = (int)(sxdiff);
            int yi = (int)(sydiff);

            Vector2 midSize = new Vector2((int)(es.X - (sxdiff * 2)), (int)(es.Y - (sydiff * 2)));
            Vector2 usmidSize = new Vector2((int)(es.X - (diff * 2)), (int)(es.Y - (diff * 2)));
            int xpx = (int)(midSize.X);
            int ypx = (int)(midSize.Y);
            int usxpx = (int)(usmidSize.X);
            int usypx = (int)(usmidSize.Y);

            Vector2Rectangle te = new Vector2Rectangle(diff, frameOffset, diff, diff);
            Vector2Rectangle le = new Vector2Rectangle(0, diff + frameOffset, diff, diff);
            Vector2Rectangle be = new Vector2Rectangle(diff, (diff * 2) + frameOffset, diff, diff);
            Vector2Rectangle re = new Vector2Rectangle((diff * 2), diff + frameOffset, diff, diff);
            Vector2Rectangle mid = new Vector2Rectangle(diff, diff + frameOffset, diff, diff);

            if (!Pattern)
            {
                float btsc = (Parent.Size.X - (diff * 2)) / (diff) / Scale.X;
                Vector2 btscale = new Vector2(btsc, 1);

                float lrsc = (Parent.Size.Y - (diff * 2)) / (diff) / Scale.Y;
                Vector2 lrscale = new Vector2(1, lrsc);

                // Scaled
                Graphics.Draw(Texture,
                    pos + new Vector2(diff, diff),
                    Scale * (lrscale * btscale),
                    Parent.Origin,
                    mid.GetRect(),
                    Overlay,
                    Parent.Rotation,
                    Effects,
                    0);

                Graphics.Draw(Texture,
                    pos + te.Position,
                    Scale * btscale,
                    Parent.Origin,
                    te.GetRect(),
                    Overlay,
                    Parent.Rotation,
                    Effects,
                    0);

                // TODO: Fix
                Graphics.Draw(Texture,
                    pos + (es * Vector2.UnitY) + (new Vector2((diff / 2), -diff) * Scale),
                    Scale * btscale,
                    Parent.Origin,
                    be.GetRect(),
                    Color.Red,
                    Parent.Rotation,
                    Effects,
                    0);

                Graphics.Draw(Texture,
                    pos + le.Position,
                    Scale * lrscale,
                    Parent.Origin,
                    le.GetRect(),
                    Overlay,
                    Parent.Rotation,
                    Effects,
                    0);

                // TODO: Fix
                Graphics.Draw(Texture,
                    pos + (es * Vector2.UnitX) + (new Vector2(-diff, (diff / 2)) * Scale),
                    Scale * lrscale,
                    Parent.Origin,
                    re.GetRect(),
                    Color.Red,
                    Parent.Rotation,
                    Effects,
                    0);
            }
            else
            {
                Vector2 os = new Vector2(sxdiff, sydiff);
                Vector2Rectangle dest = new Vector2Rectangle(GetDrawPosition() + os, (Parent.Size) - (os * 2));
                Graphics.TileTexture(Texture,
                    mid.GetRect(),
                    dest.GetRect(),
                    Scale,
                    Parent.Origin,
                    Overlay,
                    Parent.Rotation);

                os = new Vector2(0, sydiff);
                dest = new Vector2Rectangle(GetDrawPosition() + os, (Parent.Size) - (os * 2));
                dest.Size.X = sxdiff;
                Graphics.TileTexture(Texture,
                    le.GetRect(),
                    dest.GetRect(),
                    Scale,
                    Parent.Origin,
                    Overlay,
                    Parent.Rotation);

                os = new Vector2(Parent.Size.X - sxdiff, sydiff);
                dest = new Vector2Rectangle(GetDrawPosition() + os, (Parent.Size) - (os * 2));
                dest.Size.X = sxdiff;
                Graphics.TileTexture(Texture,
                    re.GetRect(),
                    dest.GetRect(),
                    Scale,
                    Parent.Origin,
                    Overlay,
                    Parent.Rotation);

                os = new Vector2(sxdiff, 0);
                dest = new Vector2Rectangle(GetDrawPosition() + os, (Parent.Size) - (os * 2));
                dest.Size.Y = sydiff;
                Graphics.TileTexture(Texture,
                    te.GetRect(),
                    dest.GetRect(),
                    Scale,
                    Parent.Origin,
                    Overlay,
                    Parent.Rotation);

                os = new Vector2(sxdiff, Parent.Size.Y - sydiff);
                dest = new Vector2Rectangle(GetDrawPosition() + os, (Parent.Size) - (os * 2));
                dest.Size.Y = sydiff;
                Graphics.TileTexture(Texture,
                    be.GetRect(),
                    dest.GetRect(),
                    Scale,
                    Parent.Origin,
                    Overlay,
                    Parent.Rotation);
            }

            Vector2Rectangle tlc = new Vector2Rectangle(0, frameOffset, diff, diff);
            Vector2Rectangle trc = new Vector2Rectangle((diff * 2), frameOffset, diff, diff);
            Vector2Rectangle blc = new Vector2Rectangle(0, (diff * 2) + frameOffset, diff, diff);
            Vector2Rectangle brc = new Vector2Rectangle((diff * 2), (diff * 2) + frameOffset, diff, diff);

            Graphics.Draw(Texture,
                pos,
                Scale,
                Parent.Origin,
                tlc.GetRect(),
                Overlay,
                Parent.Rotation,
                Effects,
                0);

            Graphics.Draw(Texture,
                pos + (es * Vector2.UnitX) - (new Vector2(diff, 0) * Scale),
                Scale,
                Parent.Origin,
                trc.GetRect(),
                Overlay,
                Parent.Rotation,
                Effects,
                0);

            Graphics.Draw(Texture,
                pos + (es * Vector2.UnitY) - (new Vector2(0, diff) * Scale),
                Scale,
                Parent.Origin,
                blc.GetRect(),
                Overlay,
                Parent.Rotation,
                Effects,
                0);

            Graphics.Draw(Texture,
                pos + es - (new Vector2(diff, diff) * Scale),
                Scale,
                Parent.Origin,
                brc.GetRect(),
                Overlay,
                Parent.Rotation,
                Effects,
                0);

            Vector2Rectangle vrect = new Vector2Rectangle(pos, es);
            /*Rectangle rect = vrect.GetRect();
            SpriteFont font = Graphics.DefaultFont;
            string str = "HEY!";
            Vector2 tpos = Graphics.GetAlignedPosition(font, str, rect, TextAlign.MiddleCenter);
            Graphics.DrawStringWithOutline(Graphics.DefaultFont, "HEY!", tpos, Color.White, Color.Black, 1);*/

            // Graphics.DrawRectangleOutline(vrect, Color.Red);
        }