Пример #1
0
        public override void Render <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r)
        {
            var        back  = r.GetLayerGraphics("parallax_back");
            var        front = r.GetLayerGraphics("parallax_front");
            CameraView view  = Owner.CurrentViewport;

            foreach (Parallax parallax in WatchedComponents)
            {
                if (!parallax.Owner.Active)
                {
                    continue;
                }
                var     layer = parallax.Speed.X >= 1 ? front : back;
                Spatial sp    = parallax.Owner.Components.Get <Spatial>();

                Vector2D center = (sp.Position - view.Location);
                center.X *= parallax.Speed.X;
                center.Y *= parallax.Speed.Y;

                double width  = parallax.SourceBounds.Width * parallax.Scale;
                double height = parallax.SourceBounds.Height * parallax.Scale;

                Rectangle destination = new Rectangle(center.X, center.Y, width, height);
                destination.X -= width / 2;
                destination.Y -= height / 2;

                destination.X += layer.GetSize().Width / 2;
                destination.Y += layer.GetSize().Height / 2;

                destination.Y *= -1;

                layer.Draw(r.SpriteManager[parallax.Texture], destination.ToDrawing(), parallax.SourceBounds.ToDrawing());
            }
        }
Пример #2
0
 internal void InvokeRender <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r) => renderSystems.ForEach((s) => {
     if (Owner.Disposed)
     {
         return;
     }
     s.Render(r);
 });
Пример #3
0
        public override void Render <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r)
        {
            if (!ModalVisible)
            {
                return;
            }

            var layer = r.GetLayerGraphics("hi_res_overlay");

            System.Drawing.Rectangle sidebar = new System.Drawing.Rectangle(EditorRendering.SidebarX, 0, EditorRendering.SidebarWidth, 720);

            layer.FillRect(sidebar, Color.FromArgb(45, 45, 48));
            layer.FillRect(new System.Drawing.Rectangle(sidebar.X + EditorRendering.SidebarMargin, sidebar.Y + EditorRendering.SidebarMargin, sidebar.Width - 2 * EditorRendering.SidebarMargin, sidebar.Height - 2 * EditorRendering.SidebarMargin), Color.FromArgb(37, 37, 38));

            int x = EditorRendering.SidebarX + 2 * EditorRendering.SidebarMargin;
            int y = EditorRendering.SidebarMargin + 4;

            new TextUnit(EditorMenuSystem.CogIcon, new[] { "Top", "Right", "Bottom", "Left" }[FaceIndex] +" Face").Render(r, layer, new Point(x, y), 2);
            y += 20;

            layer.FillRect(new System.Drawing.Rectangle(x - 2 * EditorRendering.SidebarMargin, y, EditorRendering.SidebarWidth - 2 * EditorRendering.SidebarMargin, 3), Color.FromArgb(45, 45, 48));
            y += 8;

            int index = 0;

            foreach (IMemberSummary member in Members)
            {
                TextUnit label = member.Label;
                label.Color = SelectedPropertyIndex == index ? Color.CornflowerBlue : Color.White;
                label.Render(r, layer, new Point(x + 8, y), 2);
                y += 24;
                index++;
            }
        }
Пример #4
0
        private void CreateRendererControl()
        {
            _hostControl = new System.Windows.Forms.Panel
            {
                Dock      = System.Windows.Forms.DockStyle.Fill,
                BackColor = Color.Transparent,
                ForeColor = Color.Transparent,
            };
            HostControlWrapper = new WindowsFormsHost()
            {
                Child = _hostControl,
            };

            void EnsureFocus(System.Windows.Forms.Control control)
            {
                if (!control.Focused)
                {
                    control.Focus();
                }
            }

            _hostControl.MouseEnter += (sender, args) => EnsureFocus(_hostControl);
            _hostControl.MouseClick += (sender, args) => EnsureFocus(_hostControl);

            HostControlWrapper.SizeChanged += ChangeRenderSize;

            var size = new System.Drawing.Size((int)HostControlWrapper.Width, (int)HostControlWrapper.Height);

            if (size.Width < 1 || size.Height < 1)
            {
                size = new System.Drawing.Size(1, 1);
            }
            ScreenRenderer = new ScreenRenderer(_hostControl.Handle, size);
        }
Пример #5
0
        public static void DrawSpriteName(RendererDestinationData destData, Map activeMap, Enums.MapID targetMapID, ISprite sprite, Color color, string name)
        {
            int textX;
            int textY;

            int x = sprite.Location.X;
            int y = sprite.Location.Y;

            Renderers.Maps.SeamlessWorldHelper.ConvertCoordinatesToBorderless(activeMap, targetMapID, ref x, ref y);

            string adjustedName;

            if (sprite.Shiny == Enums.Coloration.Shiny)
            {
                adjustedName = $"*{name}";
            }
            else
            {
                adjustedName = name;
            }

            //if (sprite.Size == Enums.Size.Normal) {
            textX = ScreenRenderer.ToTileX(x) + sprite.Offset.X + (Constants.TILE_WIDTH / 2) - (adjustedName.Length * 7 / 2);
            textY = ScreenRenderer.ToTileY(y) + sprite.Offset.Y - (Constants.TILE_HEIGHT / 2) - /*4*/ 32;
            TextRenderer.DrawText(destData, adjustedName, color, Color.Black, textX, textY);
            //} else {
            //    textX = ScreenRenderer.ToTileX(sprite.Location.X) + sprite.Offset.X + (Constants.TILE_WIDTH / 2) - ((name.Length / 2) * 8);
            //    textY = ScreenRenderer.ToTileY(sprite.Location.Y) + sprite.Offset.Y - (Constants.TILE_HEIGHT / 2) - 48;
            //    TextRenderer.DrawText(destData, name, color, Color.Black, textX, textY);
            //}
        }
Пример #6
0
        public static void DrawSpriteName(RendererDestinationData destData, Map activeMap, Enums.MapID targetMapID, ISprite sprite, Color color, string name)
        {
            int textX;
            int textY;

            //gets location of sprite to draw on top of (name will be on top of these coords)
            int x = sprite.Location.X;
            int y = sprite.Location.Y;

            Renderers.Maps.SeamlessWorldHelper.ConvertCoordinatesToBorderless(activeMap, targetMapID, ref x, ref y);

            //if (sprite.Size == Enums.Size.Normal) {
            textX = ScreenRenderer.ToTileX(x) + sprite.Offset.X + (Constants.TILE_WIDTH / 2) - (name.Length * 7 / 2);
            textY = ScreenRenderer.ToTileY(y) + sprite.Offset.Y - (Constants.TILE_HEIGHT / 2) - /*4*/ 32;
            TextRenderer.DrawText(destData, name, color, Color.Black, textX, textY);


            //TEST CODE
            Bitmap  bitmap       = (Bitmap)Image.FromFile(@"C:\Users\Frosty\Desktop\PJOFiles\Client\build\Skins\Main Theme\General\Badges\Moderator.png");
            Surface sheetSurface = new Surface(bitmap);

            sheetSurface.Transparent = true;

            int emblemX = ScreenRenderer.ToTileX(x) + sprite.Offset.X + (Constants.TILE_WIDTH / 2) + (name.Length * 7 / 2) + 5;

            Point point = new Point(emblemX, textY + 3);

            destData.Blit(sheetSurface, point);
        }
Пример #7
0
        private static void DrawStaffIcon(RendererDestinationData destData, Map activeMap, Enums.MapID targetMapID, IPlayer player)
        {
            if (player.Rank != Enums.Rank.Normal && player.Rank != Enums.Rank.Owner)
            {
                int x = player.Location.X;
                int y = player.Location.Y;
                Maps.SeamlessWorldHelper.ConvertCoordinatesToBorderless(activeMap, targetMapID, ref x, ref y);
                Bitmap bitmap;
                try
                {
                    bitmap = (Bitmap)Image.FromFile(@".\Skins\Main Theme\General\Badges\" + player.Rank + ".png");
                }
                catch (System.IO.FileNotFoundException e)
                {
                    bitmap = null;
                }


                int badgeX = ScreenRenderer.ToTileX(x) + player.Offset.X + 3
                             + (Constants.TILE_WIDTH / 2)
                             - (player.Name.Length * 7 / 2)
                             - (bitmap.Width);
                int badgeY = ScreenRenderer.ToTileY(y) + player.Offset.Y - (Constants.TILE_HEIGHT / 2) - 31;

                if (bitmap != null)
                {
                    Surface sheetSurface = new Surface(bitmap);
                    sheetSurface.Transparent = true;

                    Point point = new Point(badgeX, badgeY + 3);
                    destData.Blit(sheetSurface, point);
                }
            }
        }
Пример #8
0
        public override void Render <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r)
        {
            foreach (CounterVariableComponent counter in WatchedComponents.Where(c => c is CounterVariableComponent))
            {
                if (counter.DoRender)
                {
                    Renderable renderable = counter.Owner.Components.Get <Renderable>();
                    if (renderable == null)
                    {
                        continue;
                    }
                    if (renderable.Sprites.Count == 0)
                    {
                        renderable.Sprites.Add(new Sprite("lab_objects", new Rectangle(-4, -8, 8, 16), new Rectangle(0, 400, 8, 16)));
                        renderable.Sprites.Add(new Sprite("lab_objects", new Rectangle(-4, -8, 8, 16), new Rectangle(8, 400, 8, 16)));
                    }

                    if (renderable.Sprites.Count >= 2)
                    {
                        if (counter.EndValue - counter.StartValue == 0)
                        {
                            continue;
                        }
                        float percent = (float)(counter.Value - counter.StartValue) / (counter.EndValue - counter.StartValue);
                        int   height  = (int)Math.Round(percent * 12) + 2;

                        renderable.Sprites[1].Destination.Height = height;
                        renderable.Sprites[1].Source.Y           = 400 + 16 - height;
                        renderable.Sprites[1].Source.Height      = height;
                    }
                }
            }
        }
Пример #9
0
        public void Render <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r, DirectGraphicsContext <TSurface, TSource> layer, Point destination, int fontScale = 1)
        {
            var font = r.SpriteManager["font"];

            byte[] asciiBytes = Encoding.ASCII.GetBytes(Text);

            int destX = destination.X;

            if (Icon != null)
            {
                Rectangle iconDestination = new Rectangle(Icon.Destination);
                iconDestination.X += destination.X;
                iconDestination.Y += destination.Y;
                layer.Draw(r.SpriteManager[Icon.Texture], iconDestination.ToDrawing(), Icon.Source != Rectangle.Empty ? Icon.Source.ToDrawing() : (System.Drawing.Rectangle?)null);

                destX += (int)iconDestination.Width + 4;
            }

            foreach (byte c in asciiBytes)
            {
                int srcX = (c % 16) * 8;
                int srcY = (c / 16) * 8;

                layer.Draw(font, new System.Drawing.Rectangle(destX, destination.Y, 8 * fontScale, 8 * fontScale), new System.Drawing.Rectangle(srcX, srcY, 8, 8), new DrawInfo()
                {
                    Color = Color
                });
                destX += char_sizes[c] * fontScale;
            }
        }
Пример #10
0
        public override void Render <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r)
        {
            if (!ModalActive)
            {
                return;
            }

            var layer = r.GetLayerGraphics("hi_res_overlay");

            if (Label != null)
            {
                TextUnit label = new TextUnit(Label);
                label.Render(r, layer, new Point(80 - 18, 500 - 18 - 30 - 30), 3);
            }

            TextUnit textDisplay = new TextUnit(Display);

            layer.FillRect(new System.Drawing.Rectangle(80 - 18, 500 - 18 - 30 - 7, 40 * 13 - 4, 36 - 3), Color.FromArgb(27, 27, 28));
            textDisplay.Render(r, layer, new Point(80 - 18 + 4, 500 - 18 - 30), 3);

            if (CaretBlinkingProgress <= CaretBlinkingPeriod / 2)
            {
                int caretX = 80 - 18 + new TextUnit(Display.Substring(0, CaretIndex)).GetSize(3).Width + 6;
                layer.FillRect(new System.Drawing.Rectangle(caretX, 500 - 18 - 30, 2, 24), Color.White);
            }

            foreach (GUIButton button in Pad)
            {
                button.Render(r, layer, new Vector2D(80, 500));
            }
        }
Пример #11
0
        public static void DrawSpriteHPBar(RendererDestinationData destData, ISprite sprite, int hp, int maxHP)
        {
            int x = 0;
            int y = 0;

            x = ScreenRenderer.ToTileX(sprite.Location.X) + sprite.Offset.X;
            y = ScreenRenderer.ToTileY(sprite.Location.Y) + sprite.Offset.Y;
            //if (sprite == ScreenRenderer.Camera.FocusedSprite) {
            //    x = ScreenRenderer.NewX;
            //    y = ScreenRenderer.NewY;
            //} else {

            //}

            //if (MaxInfo.SpriteSize == 0) {
            //    Box hpBox = new SdlDotNet.Graphics.Primitives.Box(new Point(x, y + 32), new Point(x + 50, y + 36));
            //    destSurf.Draw(hpBox, Color.Black, false, true);
            //    if (maxHP < 1) {
            //        hpBox = new SdlDotNet.Graphics.Primitives.Box(new Point(x, y + 32), new Point(x + ((hp / 100) / ((maxHP + 1) / 100) * 50), y + 36));
            //    } else {
            //        hpBox = new SdlDotNet.Graphics.Primitives.Box(new Point(x, y + 32), new Point(x + ((hp / 100) / (maxHP / 100) * 50), y + 36));
            //    }
            //    destSurf.Draw(hpBox, Color.LightGreen, false, true);
            //} else {
            Box hpBox = new SdlDotNet.Graphics.Primitives.Box(new Point(destData.Location.X + x, destData.Location.Y + y + 36), new Point(destData.Location.X + x + 32, destData.Location.Y + y + 40));

            destData.Draw(hpBox, Color.Black, false, true);
            if (maxHP > 0)
            {
                hpBox = new SdlDotNet.Graphics.Primitives.Box(new Point(destData.Location.X + x + 1, destData.Location.Y + y + 37), new Point(Convert.ToInt32(destData.Location.X + x + (Logic.MathFunctions.CalculatePercent(hp, maxHP) * 0.01) * 31), destData.Location.Y + y + 39));
            }
            destData.Draw(hpBox, Color.LightGreen, false, true);
            //}
        }
Пример #12
0
        public override void Render <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r)
        {
            var layer = r.GetLayerGraphics("hi_res_overlay");

            layer.Clear(Color.FromArgb(31, 24, 51));

            System.Drawing.Size layerSize = layer.GetSize();

            var logo = r.SpriteManager["logo"];

            System.Drawing.Size logoSize = r.GraphicsContext.GetSize(logo);
            logoSize.Width  *= 4;
            logoSize.Height *= 4;

            layer.Draw(logo, new System.Drawing.Rectangle(layerSize.Width / 2 - logoSize.Width / 2, layerSize.Height / 2 - logoSize.Height / 2, logoSize.Width, logoSize.Height));

            if (Delay <= 0)
            {
                TextUnit text = new TextUnit(new Sprite("x_icons", new Rectangle(0, -4, 9 * 4, 9 * 4), new Rectangle(0, 0, 9, 9))
                {
                    Modifiers = Sprite.Mod_InputType
                }, " Start", Color.FromArgb(182, 203, 207));

                System.Drawing.Size textSize = text.GetSize(4);
                text.Render(r, layer, new Point(layerSize.Width / 2 - textSize.Width / 2, layerSize.Height / 2 + logoSize.Height / 2 + 32), 4);
            }
        }
Пример #13
0
        public override void Render <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r)
        {
            var layer = r.GetLayerGraphics("hi_res_overlay");

            foreach (Health health in WatchedComponents)
            {
                if (!health.Owner.Active)
                {
                    continue;
                }
                if (!health.DoShowHealth)
                {
                    continue;
                }
                if (!health.HealthBarVisible)
                {
                    continue;
                }
                Transform sp = health.Owner.Components.Get <Transform>();

                int width  = 50;
                int height = 5;

                if (sp != null)
                {
                    System.Drawing.Point destination = Renderable.ToScreenCoordinates(sp.Position + health.HealthBarOffset, layer.GetSize());
                    layer.FillRect(new System.Drawing.Rectangle(destination.X - width / 2, destination.Y + height / 2, width, height), System.Drawing.Color.FromArgb(201, 48, 56));
                    layer.FillRect(new System.Drawing.Rectangle(destination.X - width / 2, destination.Y + height / 2, width * health.CurrentHealth / health.MaxHealth, height), System.Drawing.Color.FromArgb(81, 196, 63));
                }
            }
        }
Пример #14
0
        public ScreenRendererPackageFile(ScreenRenderer screenRenderer)
        {
            this.Name = $"{Path}/{LayoutExtension.GetPageName(screenRenderer.Model)}.xml";

            List <IRenderer> childrens = RendererTreeHelper
                                         .FindChildrens <IRenderer>(screenRenderer)
                                         .ToList();

            childrens.Insert(0, screenRenderer);

            this.Model = new ObjectContainer <RendererSurface>()
            {
                Items = childrens
                        .Select(c => new RendererSurface()
                {
                    Guid     = c.Model.Guid,
                    Metadata = c.Metadata,
                    Location = new Point(
                        Canvas.GetLeft(c.Element),
                        Canvas.GetTop(c.Element))
                }).ToList()
            };

            base.CreateStream();
        }
Пример #15
0
        public static void DrawStatus(RendererDestinationData destData, Map activeMap, Enums.MapID targetMapID, ISprite sprite, int emoteIndex, int emoteFrame, Point offset)
        {
            int x, y;
            int width  = Constants.TILE_WIDTH;
            int height = Constants.TILE_HEIGHT;


            Rectangle rec      = new Rectangle();
            Point     dstPoint = new Point();

            rec.X      = emoteFrame * width;
            rec.Width  = width;
            rec.Y      = 0;
            rec.Height = height;

            x = sprite.Location.X; // * Const.PIC_X + sx + player.XOffset;
            y = sprite.Location.Y; // * Const.PIC_Y + sx + player.YOffset;

            Maps.SeamlessWorldHelper.ConvertCoordinatesToBorderless(activeMap, targetMapID, ref x, ref y);

            dstPoint.X = ScreenRenderer.ToTileX(x) + sprite.Offset.X + offset.X;
            dstPoint.Y = ScreenRenderer.ToTileY(y) + sprite.Offset.Y + offset.Y; // - (Constants.TILE_HEIGHT / 2);



            destData.Blit(Graphics.GraphicsManager.GetEmoteSheet(emoteIndex).Sheet, dstPoint, rec);
        }
Пример #16
0
        public override void Render <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r)
        {
            var layer = r.GetLayerGraphics("hud");

            layer.Draw(r.SpriteManager["menu_bg"], new System.Drawing.Rectangle(new Point(0, 0), layer.GetSize()));

            r.GetLayerGraphics("hi_res_overlay").Draw(r.SpriteManager["logo"], new System.Drawing.Rectangle(648, 128, 480, 152));

            int destY = 100;
            int index = 0;

            foreach (string label in OptionLabels)
            {
                TextUnit text;
                if (index == SelectedIndex)
                {
                    text = new TextUnit(new Sprite("gui", new EntityComponentSystem.Util.Rectangle(0, 0, 8, 8), new EntityComponentSystem.Util.Rectangle(0, 0, 8, 8)), label, Color.Coral);
                }
                else
                {
                    text = new TextUnit(label, Color.White);
                }
                text.Render(r, layer, new Point(8, destY));
                destY += 12;
                index++;
            }
        }
Пример #17
0
        public static void DrawMapItem(RendererDestinationData destData, Map map, Enums.MapID targetMapID, int itemSlot)
        {
            Item item = ItemHelper.Items[map.MapItems[itemSlot].Num];

            Rectangle cropRect = new Rectangle((item.Pic - (item.Pic / 6) * 6) * Constants.TILE_WIDTH,
                                               (item.Pic / 6) * Constants.TILE_HEIGHT, Constants.TILE_WIDTH, Constants.TILE_HEIGHT);

            int itemX = map.MapItems[itemSlot].X;
            int itemY = map.MapItems[itemSlot].Y;

            Renderers.Maps.SeamlessWorldHelper.ConvertCoordinatesToBorderless(map, targetMapID, ref itemX, ref itemY);
            Point dstPoint = new Point(ScreenRenderer.ToScreenX(itemX * Constants.TILE_WIDTH),
                                       ScreenRenderer.ToScreenY(itemY * Constants.TILE_HEIGHT));

            //Surface itemSurface = new Surface(32,32);
            //itemSurface.Blit(Graphics.GraphicsManager.Items, cropRect);

            //if (darkness != null && !darkness.Disposed) {
            //    Point darknessPoint = new Point(darkness.Buffer.Width / 2 + dstPoint.X - darkness.Focus.X, darkness.Buffer.Height / 2 + dstPoint.Y - darkness.Focus.Y);
            //    Surface darknessSurface = new Surface(32, 32);
            //    darknessSurface.Blit(darkness.Buffer, new Point(0, 0), new Rectangle(darknessPoint, new Size(Constants.TILE_WIDTH, Constants.TILE_HEIGHT)));

            //}
            //destData.Blit(itemSurface, dstPoint);
            destData.Blit(Graphics.GraphicsManager.Items, dstPoint, cropRect);
        }
Пример #18
0
        public override void Render <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r)
        {
            /*var bg = r.GetLayerGraphics("background");
             * bg.Clear(System.Drawing.Color.FromArgb(32, 255, 0, 255));
             * bg.Complete();*/

            var layer = r.GetLayerGraphics("level");

            CameraView view = Owner.CurrentViewport;

            WatchedComponents = WatchedComponents.OrderBy(c => ((LevelRenderable)c).ZOrder).ToList();

            foreach (LevelRenderable tile in WatchedComponents)
            {
                if (!tile.Owner.Active)
                {
                    continue;
                }
                if (tile.Owner.Components.Has <DamageFlashing>() && tile.Owner.Components.Get <Health>() is Health health && ((int)(health.InvincibilityTimer / 6) % 2) != 0)
                {
                    continue;
                }
                if (tile.Owner.Components.Get <Renderable>() is Renderable renderable)
                {
                    Renderable.Render(layer, view, r, renderable.Sprites, renderable.Owner.Components.Get <Spatial>());
                }
            }
        }
Пример #19
0
        public override void Render <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r)
        {
            if (Owner.Controller.Paused)
            {
                return;
            }
            foreach (AnimationComponent c in WatchedComponents)
            {
                Renderable renderable = c.Owner.Components.Get <Renderable>();
                if (renderable == null)
                {
                    continue;
                }

                foreach (AnimatedSprite anim in c.Animations)
                {
                    if (anim.SpriteIndex >= 0 && anim.SpriteIndex < renderable.Sprites.Count)
                    {
                        if (anim.FrameProgress >= 0)
                        {
                            renderable.Sprites[anim.SpriteIndex].Source = anim.Frame + (anim.Step * anim.CurrentFrame);
                        }
                        else
                        {
                            renderable.Sprites[anim.SpriteIndex].Source = new Rectangle(-1, -1, 0, 0);
                        }
                    }
                }
            }
        }
Пример #20
0
 public void Draw <TSurface, TSource>(ScreenRenderer <TSurface, TSource> screenRenderer)
 {
     if (ResolutionChanged)
     {
         screenRenderer.UpdateLayers(RenderingUnit);
         ResolutionChanged = false;
     }
     RenderingUnit.Draw(screenRenderer);
 }
Пример #21
0
        public override void Render <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r)
        {
            var layer = r.GetLayerGraphics("hi_res_overlay");

            System.Drawing.Rectangle sidebar = new System.Drawing.Rectangle(SidebarX, 0, SidebarWidth, 720);
            layer.FillRect(sidebar, Color.FromArgb(45, 45, 48));
            layer.FillRect(new System.Drawing.Rectangle(sidebar.X + SidebarMargin, sidebar.Y + SidebarMargin, sidebar.Width - 2 * SidebarMargin, sidebar.Height - 2 * SidebarMargin), Color.FromArgb(37, 37, 38));
            //layer.Draw(r.SpriteManager["pixel"], new System.Drawing.Rectangle(1280 * 4 / 5, 0, 1280 / 10, 720), info: new DrawInfo() { Mode = DrawMode.Normal, Color = Color.Black });
        }
Пример #22
0
        private void ChangeRenderSize(object sender, SizeChangedEventArgs args)
        {
            var size = new System.Drawing.Size((int)args.NewSize.Width, (int)args.NewSize.Height);

            if (size.Width < 1 || size.Height < 1)
            {
                size = new System.Drawing.Size(1, 1);
            }
            ScreenRenderer.UpdateHostHandle(_hostControl.Handle, size);
        }
Пример #23
0
        public override void Render <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r)
        {
            if (!ModalActive)
            {
                return;
            }
            if (Dirty)
            {
                bool negative = Display.StartsWith("-");
                if (negative)
                {
                    Display = Display.Substring(1);
                }

                if (Display.Length == 0)
                {
                    Display  = "0";
                    negative = false;
                }

                int i;
                for (i = 0; i < Display.Length; i++)
                {
                    if (Display[i] == '0' && i + 1 < Display.Length && Display[i + 1] != '.')
                    {
                        continue;
                    }
                    else
                    {
                        break;
                    }
                }
                Display = (negative ? "-" : "") + Display.Substring(i);

                Dirty = false;
            }

            var layer = r.GetLayerGraphics("hi_res_overlay");

            if (Label != null)
            {
                TextUnit label = new TextUnit(Label);
                label.Render(r, layer, new Point(80 - 18, 500 - 18 - 30 - 30), 3);
            }

            TextUnit numberDisplay = new TextUnit(Display);

            layer.FillRect(new System.Drawing.Rectangle(80 - 18, 500 - 18 - 30 - 7, 40 * 3 - 4, 36 - 3), Color.FromArgb(27, 27, 28));
            numberDisplay.Render(r, layer, new Point(80 - 18 + 4, 500 - 18 - 30), 3);

            foreach (GUIButton button in Pad)
            {
                button.Render(r, layer, new Vector2D(80, 500));
            }
        }
Пример #24
0
        private void DrawSlot <TSurface, TSource>(int index, int y, ScreenRenderer <TSurface, TSource> r, LayerGraphics <TSurface, TSource> layer)
        {
            Color a = Color.FromArgb(104, 113, 122);
            Color b = Color.FromArgb(43, 46, 66);

            if (SelectedIndex == index)
            {
                Color temp = a;
                a = b;
                b = temp;
            }

            System.Drawing.Rectangle bounds = new System.Drawing.Rectangle(128, y, layer.GetSize().Width - 256, 96);

            layer.FillRect(bounds, (SelectedIndex == index) ? Color.FromArgb(65, 72, 89) : Color.FromArgb(31, 24, 51));
            layer.FillRect(new System.Drawing.Rectangle(bounds.X, bounds.Y, bounds.Width, 4), a);
            layer.FillRect(new System.Drawing.Rectangle(bounds.X, bounds.Y, 4, bounds.Height), a);
            layer.FillRect(new System.Drawing.Rectangle(bounds.X, bounds.Y + bounds.Height - 4, bounds.Width, 4), b);
            layer.FillRect(new System.Drawing.Rectangle(bounds.X + bounds.Width - 4, bounds.Y, 4, bounds.Height), b);

            GameData slot = Slots[index];

            string text = "File " + (index + 1);

            if (slot == null && SelectedIndex == index)
            {
                text += "    -    Create";
            }

            List <Sprite> icons = new List <Sprite>();

            new TextUnit(text).Render(r, layer, new Point(bounds.X + bounds.Height, y + 24), 3);
            if (slot != null)
            {
                layer.Draw(r.SpriteManager["gui"], new System.Drawing.Rectangle(bounds.X, bounds.Y, bounds.Height, bounds.Height), new System.Drawing.Rectangle(0, 76, 32, 32));
                if (slot.HasWoofer)
                {
                    icons.Add(new Sprite("gui", new Rectangle(0, 0, 21, 21), new Rectangle(0, slot.MaxEnergy > 100 ? 34 : 13, 21, 21)));
                }
                if (slot.MaxHealth > 4)
                {
                    icons.Add(new Sprite("gui", new Rectangle(0, 0, 19, 21), new Rectangle(0, 55, 19, 21)));
                }
            }

            int iconX = bounds.X + bounds.Height;
            int iconY = y + 56;

            foreach (Sprite sprite in icons)
            {
                layer.Draw(r.SpriteManager[sprite.Texture], new System.Drawing.Rectangle(iconX + (int)sprite.Destination.X, iconY + (int)sprite.Destination.Y, (int)sprite.Destination.Width, (int)sprite.Destination.Height), sprite.Source != Rectangle.Empty ? sprite.Source.ToDrawing() : (System.Drawing.Rectangle?)null);
                iconX += 24;
            }
        }
Пример #25
0
        public override void Render <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r)
        {
            if (!ModalVisible)
            {
                return;
            }
            SelectedIndex = Math.Max(-1, Math.Min(SelectedIndex, Owner.Entities.Count - 1));
            StartOffset   = Math.Max(-1, Math.Min(StartOffset, Owner.Entities.Count - 1));
            var layer = r.GetLayerGraphics("hi_res_overlay");

            int y = 14;
            int x = EditorRendering.SidebarX + EditorRendering.SidebarMargin + 4;

            List <Entity> entities = Owner.Entities.ToList();
            int           index    = StartOffset;

            for (; index < entities.Count; index++)
            {
                if (index == -1)
                {
                    GUIButton button = new GUIButton(new Vector2D(x - 4 + EditorRendering.SidebarMargin, y), "Add Entity", new EntityComponentSystem.Util.Rectangle(0, 0, EditorRendering.SidebarWidth - 4 * EditorRendering.SidebarMargin, 24))
                    {
                        TextSize = 2
                    };
                    button.Highlighted = SelectedIndex == -1;
                    button.Render(r, layer, Vector2D.Empty);

                    y += 24 + 8;
                }
                else
                {
                    Entity entity = entities[index];
                    if (index == SelectedIndex)
                    {
                        layer.FillRect(new System.Drawing.Rectangle(x - 4, y, EditorRendering.SidebarWidth - 2 * EditorRendering.SidebarMargin, 20), ModalActive ? Color.CornflowerBlue : Color.FromArgb(63, 63, 70));
                    }
                    TextUnit label = new TextUnit(entity.Name);
                    label.Render <TSurface, TSource>(r, layer, new Point(x, y + 2), 2);
                    y += 20;
                    if (y > 720 - 16)
                    {
                        break;
                    }
                }
            }
            AmountVisible = index - StartOffset - 1;

            if (RemoveTimer > 0 && SelectedIndex >= 0)
            {
                TextUnit            removingLabel = new TextUnit("Removing " + entities[SelectedIndex].Name + new string('.', RemoveTimer / 25));
                System.Drawing.Size labelSize     = removingLabel.GetSize(3);
                removingLabel.Render(r, layer, new Point(EditorRendering.SidebarX - labelSize.Width, layer.GetSize().Height - labelSize.Height), 3);
            }
        }
Пример #26
0
        public override void Render <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r)
        {
            if (!ModalActive)
            {
                return;
            }
            var layer = r.GetLayerGraphics("hi_res_overlay");

            new TextUnit("Coordinate Edit Mode").Render(r, layer, new System.Drawing.Point(8, 8), 3);
            new TextUnit($"X: {CursorSystem.CursorPos.X}, Y: {CursorSystem.CursorPos.Y}").Render(r, layer, new System.Drawing.Point(8, 36), 2);
        }
Пример #27
0
 public override void Render <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r)
 {
     /*r.BeginRenderingSection(false);
      *
      * Surface textSurface = font.Render($"{Framerate} fps", Color.Yellow);
      * r.View.Blit(textSurface, new Point(0, 0));
      * textSurface.Dispose();
      * //g.DrawString(, new Font("Consolas", 12), new SolidBrush(Color.Yellow), 0, 0);
      *
      * r.EndRenderingSection();*/
 }
Пример #28
0
        public override void Render <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r)
        {
            var layer = r.GetLayerGraphics("level");

            foreach (TilingGenerator gen in WatchedComponents)
            {
                if (gen.Preview)
                {
                    Renderable.Render(layer, Owner.CurrentViewport, r, gen.Sprites, gen.Owner.Components.Get <Spatial>());
                }
            }
        }
        public override void Render <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r)
        {
            if (!ModalActive)
            {
                return;
            }

            var layer = r.GetLayerGraphics("hi_res_overlay");

            new TextUnit("Activation Link Edit Mode").Render(r, layer, new System.Drawing.Point(8, 8), 3);
            new TextUnit(new[] { "Create", "Remove", "Single" }[Mode], Mode == Remove ? Color.Red : Color.White).Render(r, layer, new System.Drawing.Point(8, 36), 2);
        }
Пример #30
0
        public override void Render <TSurface, TSource>(ScreenRenderer <TSurface, TSource> r)
        {
            if (!ModalVisible)
            {
                return;
            }

            var layer = r.GetLayerGraphics("hi_res_overlay");

            new TextUnit("Collision Edit Mode").Render(r, layer, new System.Drawing.Point(8, 8), 3);
            new TextUnit(new[] { "Edit", "Tweak Faces", "Create", "Delete" }[Mode], Mode == Delete ? Color.Red : Color.White).Render(r, layer, new System.Drawing.Point(8, 36), 2);
        }
Пример #31
0
        public Car(World world, Texture2D texture, Color Color, RandomTrack _randomTrack, int _index, PlayerIndex _carIndex)
            : base(world, texture, new Vector2(65.0f, 40.0f), Color, new Vector2(130.0f,80.0f))
        {
            vibrationTimer = 0.0f;
            mustVibrate = false;

            carIndex = _carIndex;

            hasNeverStarted = true;

            powerupDurationSpeed = powerupDuration / 2.7f;
            startBlinkingFromSpeed = startBlinkingFrom / 2.7f;
            powerupDurationCurrent = powerupDuration;
            startBlinkingFromCurrent = startBlinkingFrom;

            isInsideMucus=false;

            index = _index;

            message = new PopupMessage(this);

            isActive = true;

            this.randomTrack = _randomTrack;
            projectedPosition = new Vector2();

            mForceVector = new Vector2();
            mDirection = new Vector2();
            mForce = 1.0f;

            mTrailPoints = 0;
            mTrailVertices = new Vertices();
            mTrailPositions = new Vector2[mMaximumTrailPoints];

            mDummyTexture = new Texture2D(GameServices.GetService<GraphicsDevice>(), 1, 1);
            mDummyTexture.SetData(new Color[] { Color.White });
            mColor = Color;

            bullet = new Bullet(world, this,mDummyTexture);
            bulletIsShot = false;

            _compound.LinearDamping = 1;
            _compound.AngularDamping = 1;

            hasBoost = false;
            boostFrames = 0;

            for (int i = 0; i < trailVertices.Count(); i++) trailVertices[i].Color = mColor;

            for (int i = 0; i < burnoutsVertices.Count(); i++) burnoutsVertices[i].Color = Color.Black;

            newWVert = new Vector3(-0.1f);
            newEVert = new Vector3(-0.1f);
            oldWVert = new Vector3(-0.1f);
            oldEVert = new Vector3(-0.1f);

            texNW = new Vector2(0, 0);
            texNE = new Vector2(1, 0);
            texOW = new Vector2(0, 1);
            texOE = new Vector2(1, 1);

            newWVertBurnoutRight = new Vector3(-0.1f);
            newEVertBurnoutRight = new Vector3(-0.1f);
            oldWVertBurnoutRight = new Vector3(-0.1f);
            oldEVertBurnoutRight = new Vector3(-0.1f);

            newWVertBurnoutLeft = new Vector3(-0.1f);
            newEVertBurnoutLeft = new Vector3(-0.1f);
            oldWVertBurnoutLeft = new Vector3(-0.1f);
            oldEVertBurnoutLeft = new Vector3(-0.1f);

            newWVertBurnoutRightFront = new Vector3(-0.1f);
            newEVertBurnoutRightFront = new Vector3(-0.1f);
            oldWVertBurnoutRightFront = new Vector3(-0.1f);
            oldEVertBurnoutRightFront = new Vector3(-0.1f);

            newWVertBurnoutLeftFront = new Vector3(-0.1f);
            newEVertBurnoutLeftFront = new Vector3(-0.1f);
            oldWVertBurnoutLeftFront = new Vector3(-0.1f);
            oldEVertBurnoutLeftFront = new Vector3(-0.1f);

            score = 27;

            driftValue = 0;
            maxBoostFrames = -1;

            currentAcc = acc;
            currentMaxVel = maxVel;

            burnoutCounter = 0;

            freeToSwap = true;

            //register collision
            _compound.OnCollision += body_OnCollision;

            messageImagePos = ConvertUnits.ToDisplayUnits( _compound.Position);// +new Vector2(1, 1));

            painters = new List<Painter>();
            for (int i = 0; i < paintersCount; i++)
            {
                Painter newPainter=new Painter(seed);
                painters.Add(newPainter);
            }

            _graphicsDevice = GameServices.GetService<GraphicsDeviceManager>();
            _camera = GameServices.GetService<Camera>();
            _soundManager = GameServices.GetService<SoundManager>();

            loopBurnout = false;
            updateCounter=0;
            updateOrthogonalVelocityCounter = 0;

            _compound.CollisionCategories = Category.Cat20;

            ContentManager cm = GameServices.GetService<ContentManager>();

            powerupsTextures[0] = null;
            powerupsTextures[1] = cm.Load<Texture2D>("Images/powerups/powerup-ali");
            powerupsTextures[2] = cm.Load<Texture2D>("Images/powerups/powerup-fuoco");
            powerupsTextures[3] = null;
            powerupsTextures[4] = cm.Load<Texture2D>("Images/powerups/powerup-paracadute");
            powerupsTextures[5] = null;
            powerupsTextures[6] = cm.Load<Texture2D>("Images/powerups/powerup-freccia");

            powerupGlowTexture = cm.Load<Texture2D>("Images/powerups/glow");
            gloatingTexture = cm.Load<Texture2D>("Images/powerups/glow");

            screenRenderer = GameServices.GetService<ScreenRenderer>();

            isVisible = true;
        }
Пример #32
0
        public override void LoadContent()
        {
            // We add to the GameServices objects that we want to be able to use accross different classes
            // without having to pass them explicitly every time.
            GraphicsDevice = GameServices.GetService<GraphicsDevice>();
            Content = GameServices.GetService<ContentManager>();
            graphics = GameServices.GetService<GraphicsDeviceManager>();
            soundManager = GameServices.GetService<SoundManager>();

            ScreenManager.AddScreen(RankScreen, null, false);
            ScreenManager.AddScreen(PauseScreen, null, false);

            world = new World(new Vector2(0, 0));
            GameServices.AddService<World>(world);

            this.world.ContactManager.PostSolve += new PostSolveDelegate(PostSolve);

            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // Create a new track
            randomRaceTrack = RandomTrack.createTrack();

            randomRaceTrack.polygonList = polygonsList;

            int[] crucialPoints = { 300, 600, 1000 };
            Logic = new GameLogic(crucialPoints, randomRaceTrack.curvePointsMiddle.Count);

            randomRaceTrack.gameLogic = Logic;
            Logic.DidFinishLap += randomRaceTrack.ResetStickyNotes;

            mySneezesManager.randomTrack = randomRaceTrack;

            LoadPaperEffect();

            screenRenderer = new ScreenRenderer();
            GameServices.AddService<ScreenRenderer>(screenRenderer);
            Logic.DidEliminateCar += screenRenderer.setSadToPlayer;
            Logic.DidFinishLap += screenRenderer.setLap;

            for (int i = 0; i < 4; i++)
            {
                Car aCar = new Car(world, Content.Load<Texture2D>("Images/small_car"), Color.White, randomRaceTrack, i, playerIndexes[i]);
                Cars.Add(aCar);
            }

            assetCreator = new AssetCreator(graphics.GraphicsDevice);
            assetCreator.LoadContent(this.Content);

            defaultViewport = GraphicsDevice.Viewport;

            isFullHd=(ScreenManager.preferredHeight!=720);

            // Single screen mode only
            cameraFollowing = new Camera(defaultViewport, Vector2.Zero, new Vector2(defaultViewport.Width / 2, defaultViewport.Height / 2), 0.0f, Cars.Count, isFullHd);
            //ZOOM:

            //low res:
            //0.95 for 2 players
            //0.93 for 3 players
            //0.91 for 4 players

            //high res:
            //0.95 for 4 players

            GameServices.AddService<Camera>(cameraFollowing);

            mySneezesManager.camera = cameraFollowing;

            //generate starting positions and angles
            int startingPoint = 0;
               // positionCars(startingPoint);

            _debugView = new DebugViewXNA(world);
            _debugView.AppendFlags(FarseerPhysics.DebugViewFlags.Shape);
            _debugView.AppendFlags(FarseerPhysics.DebugViewFlags.DebugPanel);
            _debugView.AppendFlags(FarseerPhysics.DebugViewFlags.PerformanceGraph);
            _debugView.AppendFlags(FarseerPhysics.DebugViewFlags.Joint);
            _debugView.AppendFlags(FarseerPhysics.DebugViewFlags.ContactPoints);
            _debugView.AppendFlags(FarseerPhysics.DebugViewFlags.ContactNormals);
            _debugView.AppendFlags(FarseerPhysics.DebugViewFlags.Controllers);
            _debugView.AppendFlags(FarseerPhysics.DebugViewFlags.CenterOfMass);
            _debugView.AppendFlags(FarseerPhysics.DebugViewFlags.AABB);
            _debugView.DefaultShapeColor = Color.White;
            _debugView.SleepingShapeColor = Color.LightGray;
            _debugView.LoadContent(GraphicsDevice, Content);

            basicVert = new VertexPositionColorTexture[maxNumberOfTriangles];
            for (int i = 0; i < maxNumberOfTriangles; i++) basicVert[i].TextureCoordinate = new Vector2(-1);

            verticesBorders = new VertexPositionColorTexture[randomRaceTrack.curvePointsInternal.Count];

            fluid = new Fluid();
            fluid.Init();

            currentPoses = new Vector2[4];
            prevPoses = new Vector2[4];

            currentMousePos = new Vector2(100);
            prevMousePos = new Vector2(0);

            quad = new QuadRenderComponent(ScreenManager.Game, cameraFollowing, ScreenManager.GraphicsDevice.Viewport.Width, ScreenManager.GraphicsDevice.Viewport.Height);
            ScreenManager.Game.Components.Add(quad);

            fluidUpdateThread = new Thread(this.UpdateFluid);
            fluidUpdateThread.Start();

            mySneezesManager.fluid = fluid;

            fluidEffect = Content.Load<Effect>("Shaders/FluidEffect");
            fluidEffect.Parameters["random"].SetValue(randomTex);

            texInk = new Texture2D(graphics.GraphicsDevice,
                fluid.m_w, fluid.m_h, true,
                SurfaceFormat.Color);
            buffer = new RenderTarget2D(GraphicsDevice, ScreenManager.GraphicsDevice.Viewport.Width, ScreenManager.GraphicsDevice.Viewport.Height, true,
                SurfaceFormat.Color, GraphicsDevice.PresentationParameters.DepthStencilFormat);

            //gaussian = new GaussianBlur(ScreenManager.Game);
        }