Ejemplo n.º 1
0
        private void DrawSignatureY(CoordinateAxisY axisY, CoordinateSystemSignature signature)
        {
            int countPints = axisY.CountPoints / 2;

            float dx = signature.Font.Size,
                  dy = signature.Font.Size;

            float lineWight = graphics.ClipBounds.Height / 2;

            var positivePart = new DrawSettings(lineWight - signature.Font.Size,
                                                countPints, axisY.MaxValue, new Direction(dx, -dy));

            var negativePart = new DrawSettings(lineWight - signature.Font.Size,
                                                countPints, axisY.MinValue, new Direction(dx, dy));

            DrawSignature(positivePart, axisY, signature);
            DrawSignature(negativePart, axisY, signature);
        }
Ejemplo n.º 2
0
        //=========== DRAWING ============
        #region Drawing

        /** <summary> Constructs the default object. </summary> */
        public override bool Draw(PaletteImage p, Point position, DrawSettings drawSettings)
        {
            try {
                graphicsData.paletteImages[drawSettings.Rotation * 2 + 0].DrawWithOffset(p, position, drawSettings.Darkness, false,
                                                                                         Header.Flags.HasFlag(PathBannerFlags.Color1) ? drawSettings.Remap1 : RemapColors.None,
                                                                                         RemapColors.None,
                                                                                         RemapColors.None
                                                                                         );
                graphicsData.paletteImages[drawSettings.Rotation * 2 + 1].DrawWithOffset(p, position, drawSettings.Darkness, false,
                                                                                         Header.Flags.HasFlag(PathBannerFlags.Color1) ? drawSettings.Remap1 : RemapColors.None,
                                                                                         RemapColors.None,
                                                                                         RemapColors.None
                                                                                         );
            }
            catch (IndexOutOfRangeException) { return(false); }
            catch (ArgumentOutOfRangeException) { return(false); }
            return(true);
        }
Ejemplo n.º 3
0
 public HomeController(IMemoryCache memoryCache,
                       IAsk ask,
                       ISettings settings,
                       IParticipation participation,
                       IDraws draws,
                       IOptions <DrawSettings> drawSettings,
                       IOptions <SetupSettings> setupSettings,
                       IOptions <FeaturesSettings> featuresSettings)
 {
     _memoryCache      = memoryCache;
     _ask              = ask;
     _settings         = settings;
     _participation    = participation;
     _draws            = draws;
     _drawSettings     = drawSettings.Value;
     _setupSettings    = setupSettings.Value;
     _featuresSettings = featuresSettings.Value;
 }
Ejemplo n.º 4
0
        private void DrawSignatureX(CoordinateAxisX axisX, CoordinateSystemSignature signature)
        {
            int countPoints = axisX.CountPoints;

            float dx = signature.Font.Size,
                  dy = signature.Font.Size;

            var settings = new DrawSettings(graphics.ClipBounds.Width - (24 + signature.Font.Size),
                                            countPoints, axisX.MaxValue, new Direction(dx, dy))
            {
                StartPoint = 1,
                StartValue = 1,
                Offset     = new Offset(24, 0)
            };

            DrawSignature(settings, axisX, signature);
            DrawMarkX(settings, axisX, signature);
        }
Ejemplo n.º 5
0
        /**<summary>Draws the path pole supports.</summary>*/
        public void DrawPoleSupport(PaletteImage p, Point position, DrawSettings drawSettings)
        {
            position.Y += drawSettings.Elevation * 2;
            if (drawSettings.Slope != -1)
            {
                position.Y -= drawSettings.Elevation / 2;
            }
            int offset = 129;

            while (drawSettings.Elevation > 8)
            {
                graphicsData.paletteImages[offset + 15].DrawWithOffset(p,
                                                                       position, drawSettings.Darkness, false);
                drawSettings.Elevation -= 8;
                position.Y             += 16;
            }
            if (Header.Flags.HasFlag(FootpathFlags.PoleBase))
            {
                position.Y -= 6;
                graphicsData.paletteImages[offset + 9].DrawWithOffset(p,
                                                                      position, drawSettings.Darkness, false);
                int slopeOffset = 17;
                switch (drawSettings.Slope)
                {
                case 0: slopeOffset = 19; break;

                case 1: slopeOffset = 25; break;

                case 2: slopeOffset = 26; break;

                case 3: slopeOffset = 20; break;
                }
                graphicsData.paletteImages[offset + slopeOffset].DrawWithOffset(p,
                                                                                Point.Add(position, new Size(0, 6)), drawSettings.Darkness, false);
            }
            else
            {
                graphicsData.paletteImages[offset + 15].DrawWithOffset(p,
                                                                       position, drawSettings.Darkness, false);
            }
        }
Ejemplo n.º 6
0
        //=========== DRAWING ============
        #region Drawing

        /** <summary> Constructs the default object. </summary> */
        public override bool Draw(PaletteImage p, Point position, DrawSettings drawSettings)
        {
            try {
                bool flat      = Header.Flags.HasFlag(WallFlags.Flat);
                bool twoSides  = Header.Flags.HasFlag(WallFlags.TwoSides);
                bool door      = Header.Flags.HasFlag(WallFlags.Door);
                bool glass     = Header.Flags.HasFlag(WallFlags.Glass);
                bool animation = ((Header.Effects >> 4) & 0x1) == 0x1;

                int offset        = (2 + (!flat ? 4 : 0)) * (twoSides ? 2 : 1) * (door ? 2 : 1);
                int slopeRotation = (drawSettings.Rotation % (twoSides ? 4 : 2)) * (door ? 2 : 1);
                if (drawSettings.Slope >= 0 && !flat)
                {
                    if (drawSettings.Slope % 2 != drawSettings.Rotation % 2)
                    {
                        if (drawSettings.Slope >= 2)
                        {
                            slopeRotation = (7 - drawSettings.Slope) * (door ? 2 : 1);
                        }
                        else
                        {
                            slopeRotation = (3 - drawSettings.Slope) * (door ? 2 : 1);
                        }
                    }
                }

                DrawFrame(p, position, drawSettings, slopeRotation + drawSettings.Frame * offset, false);
                if (door)
                {
                    DrawFrame(p, position, drawSettings, slopeRotation + 1 + drawSettings.Frame * offset, false);
                }
                if (glass)
                {
                    DrawFrame(p, position, drawSettings, offset + slopeRotation + drawSettings.Frame * offset, true);
                }
            }
            catch (IndexOutOfRangeException) { return(false); }
            catch (ArgumentOutOfRangeException) { return(false); }
            return(true);
        }
Ejemplo n.º 7
0
        /**<summary>Draws the elevated path.</summary>*/
        public void DrawElevatedPath(PaletteImage p, Point position, DrawSettings drawSettings, int rotation, uint pathConnections)
        {
            if (drawSettings.Elevation == 0)
            {
                return;
            }

            int offset     = 109;
            int connection = 0;

            if (PathSpriteIndexes.ContainsKey(pathConnections & 0xF))
            {
                connection = PathSpriteIndexes[pathConnections & 0xF];
            }

            if (drawSettings.Slope == -1)
            {
                if (Header.Flags.HasFlag(FootpathFlags.PoleSupports))
                {
                    graphicsData.paletteImages[offset + connection].DrawWithOffset(p, position, drawSettings.Darkness, false);
                }
                else
                {
                    offset = 158;
                    graphicsData.paletteImages[offset + ((rotation + 1) % 2)].DrawWithOffset(p, position, drawSettings.Darkness, false);
                }
            }
            else
            {
                if (Header.Flags.HasFlag(FootpathFlags.PoleSupports))
                {
                    graphicsData.paletteImages[offset + 16 + (drawSettings.Slope + 3) % 4].DrawWithOffset(p, position, drawSettings.Darkness, false);
                }
                else
                {
                    offset = 158;
                    graphicsData.paletteImages[offset + 2 + (drawSettings.Slope + 3) % 4].DrawWithOffset(p, position, drawSettings.Darkness, false);
                }
            }
        }
Ejemplo n.º 8
0
        /**<summary>Draws all 4 parts of the path in order.</summary>*/
        public void DrawPathParts(PaletteImage p, Point position, DrawSettings drawSettings, bool[,] connections)
        {
            int[] indexes = { 7, 3, 0, 6, -1, 4, 2, 1, 5 };
            int   slope   = drawSettings.Slope;

            for (int type = 0; type < 4; type++)
            {
                for (int i = 0; i < indexes.Length; i++)
                {
                    if (indexes[i] == -1)
                    {
                        drawSettings.Slope = slope;
                        switch (type)
                        {
                        case 0: DrawSupports(p, position, drawSettings, Math.Max(0, slope), drawSettings.PathConnections); break;

                        case 1: DrawElevatedPath(p, position, drawSettings, Math.Max(0, slope), drawSettings.PathConnections); break;

                        case 2: DrawPath(p, position, drawSettings, drawSettings.PathConnections); break;

                        case 3: DrawRailing(p, position, drawSettings, drawSettings.PathConnections); break;
                        }
                        drawSettings.Slope = -1;
                    }
                    else if ((drawSettings.PathConnections & (1 << indexes[i])) != 0)
                    {
                        switch (type)
                        {
                        case 0: DrawSupports(p, GetConnectionPoint(position, indexes[i], slope), drawSettings, Math.Max(0, slope), ConvertConnections(connections, indexes[i])); break;

                        case 1: DrawElevatedPath(p, GetConnectionPoint(position, indexes[i], slope), drawSettings, Math.Max(0, slope), ConvertConnections(connections, indexes[i])); break;

                        case 2: DrawPath(p, GetConnectionPoint(position, indexes[i], slope), drawSettings, ConvertConnections(connections, indexes[i])); break;

                        case 3: DrawRailing(p, GetConnectionPoint(position, indexes[i], slope), drawSettings, ConvertConnections(connections, indexes[i])); break;
                        }
                    }
                }
            }
        }
Ejemplo n.º 9
0
        //=========== DRAWING ============
        #region Drawing

        /** <summary> Constructs the default object. </summary> */
        public override bool Draw(PaletteImage p, Point position, DrawSettings drawSettings)
        {
            try {
                int xoffset = ((drawSettings.Rotation == 1 || drawSettings.Rotation == 2) ? -32 : 32);
                int yoffset = ((drawSettings.Rotation == 2 || drawSettings.Rotation == 3) ? -16 : 16);
                if (drawSettings.Rotation >= 2)
                {
                    xoffset *= -1; yoffset *= -1;
                }
                int sideFrame = (drawSettings.Rotation < 2 ? 0 : 1);

                graphicsData.paletteImages[drawSettings.Rotation * 3 + 1 + sideFrame].DrawWithOffset(p,
                                                                                                     Point.Add(position, new Size(-xoffset, -yoffset)), drawSettings.Darkness, false);
                graphicsData.paletteImages[drawSettings.Rotation * 3 + 0].DrawWithOffset(p,
                                                                                         position, drawSettings.Darkness, false);
                graphicsData.paletteImages[drawSettings.Rotation * 3 + 2 - sideFrame].DrawWithOffset(p,
                                                                                                     Point.Add(position, new Size(xoffset, yoffset)), drawSettings.Darkness, false);
            }
            catch (IndexOutOfRangeException) { return(false); }
            catch (ArgumentOutOfRangeException) { return(false); }
            return(true);
        }
Ejemplo n.º 10
0
        /** <summ
         *
         #endregion
         * //=========== DRAWING ============
         #region Drawing
         *
         * /** <summary> Constructs the default object. </summary> */
        public override bool Draw(PaletteImage p, Point position, DrawSettings drawSettings)
        {
            try {
                WaterSprites[2].DrawWithOffset(p, Point.Add(position, new Size(0, 0)), drawSettings.Darkness, false);
                WaterSprites[3].DrawWithOffset(p, Point.Add(position, new Size(2, 0)), drawSettings.Darkness, false);
                WaterSprites[4].DrawWithOffset(p, Point.Add(position, new Size(-2, 0)), drawSettings.Darkness, false);
                WaterSprites[3].DrawWithOffset(p, Point.Add(position, new Size(-30, 16)), drawSettings.Darkness, false);
                WaterSprites[4].DrawWithOffset(p, Point.Add(position, new Size(30, 16)), drawSettings.Darkness, false);

                WaterSprites[0].DrawWithOffset(p, Point.Add(position, new Size(0, -15)), drawSettings.Darkness, true);
                WaterSprites[1].DrawWithOffset(p, Point.Add(position, new Size(0, -15)), drawSettings.Darkness, false);

                /*g.DrawImage(PreviewImage, position.X - 32, position.Y - 16);
                 * for (int i = 0; i < 5; i++)
                 *      Water.WaterPalette.Colors[230 + i] = graphicsData.Palettes[1].Colors[(i * 3 + frame) % 15];
                 * for (int i = 0; i < 5; i++)
                 *      Water.WaterPalette.Colors[235 + i] = graphicsData.Palettes[4].Colors[(i * 3 + frame) % 15];
                 * Water.WaterSparkle.Draw(g, position.X + 11 - 32, position.Y + 2 - 16, Water.WaterPalette, -1, -1, -1);*/
            }
            catch (IndexOutOfRangeException) { return(false); }
            catch (ArgumentOutOfRangeException) { return(false); }
            return(true);
        }
Ejemplo n.º 11
0
        /**<summary>Gets the palette to draw the object with.</summary>*/
        public override Palette GetPalette(DrawSettings drawSettings)
        {
            Palette palette = new Palette(255);

            for (int i = 0; i < 255; i++)
            {
                if (i >= 190 && i < 202)
                {
                    palette.Colors[i] = graphicsData.palettes[0].Colors[i - 10];
                }
                else
                {
                    palette.Colors[i] = Palette.DefaultPalette.Colors[i];
                }
            }
            for (int i = 0; i < 5; i++)
            {
                palette.Colors[230 + i] = graphicsData.palettes[1 + drawSettings.Darkness].Colors[(i * 3 + drawSettings.Frame) % 15];
                palette.Colors[235 + i] = graphicsData.palettes[4 + drawSettings.Darkness].Colors[(i * 3 + drawSettings.Frame) % 15];
            }

            return(palette);
        }
Ejemplo n.º 12
0
        /**<summary>Draws the path supports.</summary>*/
        public void DrawSupports(PaletteImage p, Point position, DrawSettings drawSettings, int rotation, uint pathConnections)
        {
            if (drawSettings.Elevation == 0)
            {
                return;
            }

            int connection = 0;

            if (PathSpriteIndexes.ContainsKey(pathConnections & 0xF))
            {
                connection = PathSpriteIndexes[pathConnections & 0xF];
            }
            if (Header.Flags.HasFlag(FootpathFlags.PoleSupports))
            {
                if (CheckConnections(pathConnections, "#######0"))
                {
                    DrawPoleSupport(p, Point.Add(position, new Size(12, -6)), drawSettings);
                }
                if (CheckConnections(pathConnections, "####0###"))
                {
                    DrawPoleSupport(p, Point.Add(position, new Size(-12, -6)), drawSettings);
                }
                if (CheckConnections(pathConnections, "######0#"))
                {
                    DrawPoleSupport(p, Point.Add(position, new Size(12, 6)), drawSettings);
                }
                if (CheckConnections(pathConnections, "#####0##"))
                {
                    DrawPoleSupport(p, Point.Add(position, new Size(-12, 6)), drawSettings);
                }
            }
            else
            {
                DrawScaffoldSupport(p, Point.Add(position, new Size(-12, 6)), drawSettings, rotation);
            }
        }
Ejemplo n.º 13
0
        //=========== DRAWING ============
        #region Drawing

        /**<summary>Draws the path railing.</summary>*/
        public void DrawRailing(PaletteImage p, Point position, DrawSettings drawSettings, uint pathConnections)
        {
            int offset     = (drawSettings.Queue ? 51 : 0);
            int connection = 0;

            if (PathSpriteIndexes.ContainsKey(pathConnections) && !(drawSettings.Elevation > 0 && !Header.Flags.HasFlag(FootpathFlags.OverlayPath)))
            {
                connection = PathSpriteIndexes[pathConnections];
            }
            else if (PathSpriteIndexes.ContainsKey(pathConnections & 0xF))
            {
                pathConnections &= 0xF;
                connection       = PathSpriteIndexes[pathConnections & 0xF];
            }

            if (drawSettings.Slope == -1)
            {
                if (drawSettings.Queue)
                {
                    offset = 87;
                }
                else if (drawSettings.Elevation > 0)
                {
                    offset = 73;
                }

                // Even offset additions are SW to NE direction railings
                // Odd offset additions are NW to SE direction railings
                // Offset additions 0-1 are no-ending railings
                // Offset additions 2-3 are South-ending railings
                // Offset additions 4-5 are North-ending railings
                // Outside corners use ending railings at the corner
                if (drawSettings.Queue || drawSettings.Elevation > 0)
                {
                    // Draw ending railings
                    if (CheckConnections(pathConnections, "####0#10"))                       // NE N-ending
                    {
                        graphicsData.paletteImages[offset + 4].DrawWithOffset(p, Point.Add(position, new Size(-4, 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "####1#00"))                       // NE S-ending
                    {
                        graphicsData.paletteImages[offset + 2].DrawWithOffset(p, Point.Add(position, new Size(-4, 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "####01#0"))                       // NW N-ending
                    {
                        graphicsData.paletteImages[offset + 5].DrawWithOffset(p, Point.Add(position, new Size(4, 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "####00#1"))                       // NW S-ending
                    {
                        graphicsData.paletteImages[offset + 3].DrawWithOffset(p, Point.Add(position, new Size(4, 2)), drawSettings.Darkness, false);
                    }

                    if (CheckConnections(pathConnections, "#####100"))                       // SE N-ending
                    {
                        graphicsData.paletteImages[offset + 5].DrawWithOffset(p, Point.Add(position, new Size(32 - 4, 16 - 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "#####001"))                       // SE S-ending
                    {
                        graphicsData.paletteImages[offset + 3].DrawWithOffset(p, Point.Add(position, new Size(32 - 4, 16 - 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "####001#"))                       // SW N-ending
                    {
                        graphicsData.paletteImages[offset + 4].DrawWithOffset(p, Point.Add(position, new Size(-32 + 4, 16 - 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "####100#"))                       // SW S-ending
                    {
                        graphicsData.paletteImages[offset + 2].DrawWithOffset(p, Point.Add(position, new Size(-32 + 4, 16 - 2)), drawSettings.Darkness, false);
                    }

                    // Draw no-ending railings
                    if (CheckConnections(pathConnections, "####01#1"))                       // NW
                    {
                        graphicsData.paletteImages[offset + 1].DrawWithOffset(p, Point.Add(position, new Size(4, 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "#####101"))                       // SE
                    {
                        graphicsData.paletteImages[offset + 1].DrawWithOffset(p, Point.Add(position, new Size(32 - 4, 16 - 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "####1#10"))                       // NE
                    {
                        graphicsData.paletteImages[offset + 0].DrawWithOffset(p, Point.Add(position, new Size(-4, 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "####101#"))                       // SW
                    {
                        graphicsData.paletteImages[offset + 0].DrawWithOffset(p, Point.Add(position, new Size(-32 + 4, 16 - 2)), drawSettings.Darkness, false);
                    }

                    // Draw inside corner railings
                    if (CheckConnections(pathConnections, "###0##11"))                       // E
                    {
                        graphicsData.paletteImages[offset + 11].DrawWithOffset(p, position, drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "##0##11#"))                       // S
                    {
                        graphicsData.paletteImages[offset + 12].DrawWithOffset(p, position, drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "#0##11##"))                       // W
                    {
                        graphicsData.paletteImages[offset + 13].DrawWithOffset(p, position, drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "0###1##1"))                       // N
                    {
                        graphicsData.paletteImages[offset + 10].DrawWithOffset(p, position, drawSettings.Darkness, false);
                    }
                }
            }
            else
            {
                if (drawSettings.Queue)
                {
                    offset = 87;
                }
                else
                {
                    offset = 73;
                }

                switch (drawSettings.Slope)
                {
                case 0:
                    graphicsData.paletteImages[offset + 6].DrawWithOffset(p, Point.Add(position, new Size(-4, 2)), drawSettings.Darkness, false);
                    graphicsData.paletteImages[offset + 6].DrawWithOffset(p, Point.Add(position, new Size(-32 + 4, 16 - 2)), drawSettings.Darkness, false);
                    break;

                case 1:
                    graphicsData.paletteImages[offset + 8].DrawWithOffset(p, Point.Add(position, new Size(4, 2)), drawSettings.Darkness, false);
                    graphicsData.paletteImages[offset + 8].DrawWithOffset(p, Point.Add(position, new Size(32 - 4, 16 - 2)), drawSettings.Darkness, false);
                    break;

                case 2:
                    graphicsData.paletteImages[offset + 7].DrawWithOffset(p, Point.Add(position, new Size(-4, 2)), drawSettings.Darkness, false);
                    graphicsData.paletteImages[offset + 7].DrawWithOffset(p, Point.Add(position, new Size(-32 + 4, 16 - 2)), drawSettings.Darkness, false);
                    break;

                case 3:
                    graphicsData.paletteImages[offset + 9].DrawWithOffset(p, Point.Add(position, new Size(4, 2)), drawSettings.Darkness, false);
                    graphicsData.paletteImages[offset + 9].DrawWithOffset(p, Point.Add(position, new Size(32 - 4, 16 - 2)), drawSettings.Darkness, false);
                    break;
                }
            }
        }
Ejemplo n.º 14
0
 /**<summary>Draws the object data in the dialog.</summary>*/
 public override bool DrawDialog(PaletteImage p, Point position, Size dialogSize, DrawSettings drawSettings)
 {
     try {
         position = Point.Add(position, new Size(dialogSize.Width / 2, dialogSize.Height / 2));
         graphicsData.paletteImages[drawSettings.Rotation * 2 + 0].DrawWithOffset(p, position, drawSettings.Darkness, false,
                                                                                  Header.Flags.HasFlag(PathBannerFlags.Color1) ? drawSettings.Remap1 : RemapColors.None,
                                                                                  RemapColors.None,
                                                                                  RemapColors.None
                                                                                  );
         graphicsData.paletteImages[drawSettings.Rotation * 2 + 1].DrawWithOffset(p, position, drawSettings.Darkness, false,
                                                                                  Header.Flags.HasFlag(PathBannerFlags.Color1) ? drawSettings.Remap1 : RemapColors.None,
                                                                                  RemapColors.None,
                                                                                  RemapColors.None
                                                                                  );
     }
     catch (IndexOutOfRangeException) { return(false); }
     catch (ArgumentOutOfRangeException) { return(false); }
     return(true);
 }
Ejemplo n.º 15
0
        /**<summary>Draws the object data in the dialog.</summary>*/
        public override bool DrawDialog(PaletteImage p, Point position, Size dialogSize, DrawSettings drawSettings)
        {
            try {
                position = Point.Add(position, new Size(dialogSize.Width / 2, dialogSize.Height / 2));
                WaterSprites[2].DrawWithOffset(p, Point.Add(position, new Size(0, 0)), drawSettings.Darkness, false);
                WaterSprites[3].DrawWithOffset(p, Point.Add(position, new Size(2, 0)), drawSettings.Darkness, false);
                WaterSprites[4].DrawWithOffset(p, Point.Add(position, new Size(-2, 0)), drawSettings.Darkness, false);
                WaterSprites[3].DrawWithOffset(p, Point.Add(position, new Size(-30, 16)), drawSettings.Darkness, false);
                WaterSprites[4].DrawWithOffset(p, Point.Add(position, new Size(30, 16)), drawSettings.Darkness, false);

                WaterSprites[0].DrawWithOffset(p, Point.Add(position, new Size(0, -15)), drawSettings.Darkness, true);
                WaterSprites[1].DrawWithOffset(p, Point.Add(position, new Size(0, -15)), drawSettings.Darkness, false);
            }
            catch (IndexOutOfRangeException) { return(false); }
            catch (ArgumentOutOfRangeException) { return(false); }
            return(true);
        }
Ejemplo n.º 16
0
 /**<summary>Draws the object data in the dialog.</summary>*/
 public override bool DrawDialog(PaletteImage p, Point position, Size dialogSize, DrawSettings drawSettings)
 {
     try {
         position = Point.Add(position, new Size(dialogSize.Width / 2, dialogSize.Height / 2));
         graphicsData.paletteImages[71].Draw(p, Point.Add(position, new Size(-4 - 44, -16)), 0, false);
         graphicsData.paletteImages[72].Draw(p, Point.Add(position, new Size(4, -16)), 0, false);
     }
     catch (IndexOutOfRangeException) { return(false); }
     catch (ArgumentOutOfRangeException) { return(false); }
     return(true);
 }
Ejemplo n.º 17
0
 private void AddGun(string subType, DrawSettings settings)
 {
     drawSettings.Add(new MyDefinitionId(typeof(MyObjectBuilder_PhysicalGunObject), subType), settings);
 }
Ejemplo n.º 18
0
        //=========== DRAWING ============
        #region Drawing

        /**<summary>Constructs the default object.</summary>*/
        public override bool Draw(PaletteImage p, Point position, DrawSettings drawSettings)
        {
            try {
                if (Header.RideCategory == RideCategories.Stall)
                {
                    graphicsData.paletteImages[3 + drawSettings.Rotation].DrawWithOffset(p, position, drawSettings.Darkness, false,
                                                                                         drawSettings.Remap1, RemapColors.None, RemapColors.None
                                                                                         );
                    if ((drawSettings.Rotation == 0 || drawSettings.Rotation == 3) && (Header.TrackType == TrackTypes.Restroom || Header.TrackType == TrackTypes.FirstAid))
                    {
                        graphicsData.paletteImages[3 + 4 + drawSettings.Rotation / 3].DrawWithOffset(p, position, drawSettings.Darkness, false,
                                                                                                     drawSettings.Remap1,
                                                                                                     RemapColors.None,
                                                                                                     RemapColors.None
                                                                                                     );
                    }
                }
                else
                {
                    int nextCarOffset = 0;
                    for (int i = 0; i <= (int)drawSettings.CurrentCar; i++)
                    {
                        CarHeader car = Header.CarTypeList[i];
                        int       C   = 0;                         // Offset for this car
                        int       R   = car.LastRotationFrame + 1; // number of rotation frames
                        int       F   = 1;                         // Number of frames per rotation
                        int       P   = car.RiderSprites;          // number of rider sprites
                        int       A   = 1;                         // number of animation frames
                        if (car.IsAnimated)
                        {
                            A = 4;
                        }
                        if (car.Flags.HasFlag(CarFlags.Spinning))
                        {
                            if (car.Flags.HasFlag(CarFlags.SpinningIndependantWheels))
                            {
                                F *= (car.LastRotationFrame + 1);
                            }
                        }
                        if (car.Flags.HasFlag(CarFlags.Swinging))
                        {
                            int swingingFrames = 5;
                            if (car.Flags.HasFlag(CarFlags.SwingingMoreFrames))
                            {
                                swingingFrames += 2;
                            }
                            if (car.Flags.HasFlag(CarFlags.SwingingSlide))
                            {
                                swingingFrames += 2;
                            }
                            if (car.Flags.HasFlag(CarFlags.SwingingTilting))
                            {
                                swingingFrames -= 2;
                            }
                            F *= swingingFrames;
                        }
                        if (car.SpecialFrames != 0)
                        {
                            F *= car.SpecialFrames;
                        }

                        if (i == (int)drawSettings.CurrentCar)
                        {
                            graphicsData.paletteImages[3 + nextCarOffset + drawSettings.Rotation * F * A + drawSettings.Frame].DrawWithOffset(p,
                                                                                                                                              position, drawSettings.Darkness, false,
                                                                                                                                              drawSettings.Remap1,
                                                                                                                                              (car.Flags.HasFlag(CarFlags.Remap2) ? drawSettings.Remap2 : RemapColors.None),
                                                                                                                                              (!car.Flags.HasFlag(CarFlags.NoRemap3) ? drawSettings.Remap3 : RemapColors.None));
                        }
                        else
                        {
                            if (car.SpriteFlags.HasFlag(CarSpriteFlags.Flat))
                            {
                                C += (R * F);
                            }
                            if (car.SpriteFlags.HasFlag(CarSpriteFlags.GentleSlopes))
                            {
                                C += ((4 * F) * 2) + ((R * F) * 2);
                            }
                            if (car.SpriteFlags.HasFlag(CarSpriteFlags.SteepSlopes))
                            {
                                C += ((8 * F) * 2) + ((R * F) * 2);
                            }
                            if (car.SpriteFlags.HasFlag(CarSpriteFlags.VerticalSlopes))
                            {
                                C += ((4 * F) * 2) + ((R * F) * 2) + (((4 * F) * 2) * 5) + (4 * F);
                            }
                            if (car.SpriteFlags.HasFlag(CarSpriteFlags.DiagonalSlopes))
                            {
                                C += ((4 * F) * 2) + ((4 * F) * 2) + ((4 * F) * 2);
                            }
                            if (car.SpriteFlags.HasFlag(CarSpriteFlags.FlatBanked))
                            {
                                C += ((8 * F) * 2) + ((R * F) * 2);
                            }
                            if (car.SpriteFlags.HasFlag(CarSpriteFlags.InlineTwists))
                            {
                                C += ((4 * F) * 10);
                            }
                            if (car.SpriteFlags.HasFlag(CarSpriteFlags.FlatToGentleSlopeBankedTransitions))
                            {
                                C += ((R * F) * 4);
                            }
                            if (car.SpriteFlags.HasFlag(CarSpriteFlags.DiagonalGentleSlopeBankedTransitions))
                            {
                                C += ((4 * F) * 4);
                            }
                            if (car.SpriteFlags.HasFlag(CarSpriteFlags.GentleSlopeBankedTransitions))
                            {
                                C += ((4 * F) * 4);
                            }
                            if (car.SpriteFlags.HasFlag(CarSpriteFlags.GentleSlopeBankedTurns))
                            {
                                C += ((R * F) * 4);
                            }
                            if (car.SpriteFlags.HasFlag(CarSpriteFlags.FlatToGentleSlopeWhileBankedTransitions))
                            {
                                C += ((4 * F) * 4);
                            }
                            if (car.SpriteFlags.HasFlag(CarSpriteFlags.Corkscrews))
                            {
                                C += ((4 * F) * 20);
                            }
                            if (car.SpriteFlags.HasFlag(CarSpriteFlags.RestraintAnimation))
                            {
                                C += ((4 * F) * 3);
                            }

                            C             *= (P + 1 * A);
                            nextCarOffset += C;
                        }
                    }
                }
            }
            catch (IndexOutOfRangeException) { return(false); }
            catch (ArgumentOutOfRangeException) { return(false); }
            return(true);
        }
Ejemplo n.º 19
0
        //=========== DRAWING ============
        #region Drawing

        /**<summary>Draws the object as it is in game.</summary>*/
        public virtual bool Draw(PaletteImage p, Point position, DrawSettings drawSettings)
        {
            return(false);
        }
Ejemplo n.º 20
0
 /**<summary>Gets the palette to draw the object with.</summary>*/
 public override Palette GetPalette(DrawSettings drawSettings)
 {
     return(Palette.SceneryGroupPalette);
 }
Ejemplo n.º 21
0
 /**<summary>Draws the object data in the dialog.</summary>*/
 public override bool DrawDialog(PaletteImage p, Point position, Size dialogSize, DrawSettings drawSettings)
 {
     return(true);
 }
Ejemplo n.º 22
0
        //=========== DRAWING ============
        #region Drawing

        /**<summary>Constructs the default object.</summary>*/
        public override bool Draw(PaletteImage p, Point position, DrawSettings drawSettings)
        {
            return(true);
        }
Ejemplo n.º 23
0
 /** <summary> Draws the object data in the dialog. </summary> */
 public override bool DrawDialog(PaletteImage p, Point position, Size dialogSize, DrawSettings drawSettings)
 {
     try {
         position = Point.Add(position, new Size(dialogSize.Width / 2, dialogSize.Height / 2));
         graphicsData.paletteImages[drawSettings.Frame].Draw(p, Point.Add(position, new Size(-16, -14)), 0, false, RemapColors.SeaGreen);
     }
     catch (IndexOutOfRangeException) { return(false); }
     catch (ArgumentOutOfRangeException) { return(false); }
     return(true);
 }
Ejemplo n.º 24
0
 /**<summary>Draws the object as it is in the dialog.</summary>*/
 public virtual bool DrawDialog(PaletteImage p, Point position, Size dialogSize, DrawSettings drawSettings)
 {
     return(false);
 }
Ejemplo n.º 25
0
        private void DrawFrame(PaletteImage p, Point position, DrawSettings drawSettings, int frame, bool glass)
        {
            Size offset = Size.Empty;

            if (drawSettings.Slope >= 2)
            {
                drawSettings.Rotation = (drawSettings.Rotation + 2) % 4;
            }
            if (drawSettings.Slope != -1 && !Header.Flags.HasFlag(WallFlags.Flat))
            {
                if (drawSettings.Slope == drawSettings.Rotation)
                {
                    if (drawSettings.Slope < 2)
                    {
                        offset.Height = -16;
                    }
                }
                else if (drawSettings.Slope % 2 != drawSettings.Rotation % 2)
                {
                    switch (drawSettings.Slope)
                    {
                    case 0: if (drawSettings.Rotation == 3)
                        {
                            offset.Width = -32; offset.Height = 16;
                        }
                        break;

                    case 1: if (drawSettings.Rotation == 2)
                        {
                            offset.Width = 32; offset.Height = 16;
                        }
                        break;

                    case 2: if (drawSettings.Rotation == 1)
                        {
                            offset.Width = -32; offset.Height = 16;
                        }
                        break;

                    case 3: if (drawSettings.Rotation == 0)
                        {
                            offset.Width = 32; offset.Height = 16;
                        }
                        break;
                    }
                }
                else
                {
                    if (drawSettings.Slope < 2)
                    {
                        offset.Height = 16;
                    }
                    offset.Width = (drawSettings.Slope % 2 == 0 ? 32 : -32);
                }
            }
            else if (drawSettings.Rotation == 2)
            {
                offset.Width = 32; offset.Height = 16;
            }
            else if (drawSettings.Rotation == 3)
            {
                offset.Width = -32; offset.Height = 16;
            }

            graphicsData.paletteImages[frame].DrawWithOffset(p, Point.Add(position, offset), drawSettings.Darkness, glass,
                                                             (Header.Flags.HasFlag(WallFlags.Remap1) || Header.Flags.HasFlag(WallFlags.Remap2) || Header.Flags.HasFlag(WallFlags.Remap3)) ? drawSettings.Remap1 : (glass ? drawSettings.Remap1 : RemapColors.None),
                                                             (Header.Flags.HasFlag(WallFlags.Remap2) || Header.Flags.HasFlag(WallFlags.Remap3)) ? (glass ? drawSettings.Remap1 : drawSettings.Remap2) : (glass ? drawSettings.Remap1 : RemapColors.None),
                                                             Header.Flags.HasFlag(WallFlags.Remap3) ? (glass ? drawSettings.Remap1 : drawSettings.Remap3) : (glass ? drawSettings.Remap1 : RemapColors.None)
                                                             );
        }
Ejemplo n.º 26
0
 public DrawData(IMyEntity ent, DrawSettings settings)
 {
     Entity   = ent;
     Settings = settings;
 }
Ejemplo n.º 27
0
        //=========== DRAWING ============
        #region Drawing

        /** <summary> Draws the path railing. </summary> */
        public void DrawRailing(PaletteImage p, Point position, DrawSettings drawSettings, uint pathConnections)
        {
            int offset     = (drawSettings.Queue ? 51 : 0);
            int connection = 0;

            if (Pathing.PathSpriteIndexes.ContainsKey(pathConnections) && !(drawSettings.Elevation > 0 && !Header.Flags.HasFlag(PathingFlags.OverlayPath)))
            {
                connection = Pathing.PathSpriteIndexes[pathConnections];
            }
            else if (Pathing.PathSpriteIndexes.ContainsKey(pathConnections & 0xF))
            {
                pathConnections &= 0xF;
                connection       = Pathing.PathSpriteIndexes[pathConnections & 0xF];
            }

            if (drawSettings.Slope == -1)
            {
                if (drawSettings.Queue)
                {
                    offset = 87;
                }
                else if (drawSettings.Elevation > 0)
                {
                    offset = 73;
                }

                if (drawSettings.Queue || drawSettings.Elevation > 0)
                {
                    if (CheckConnections(pathConnections, "####00#1"))
                    {
                        graphicsData.paletteImages[offset + 3].DrawWithOffset(p, Point.Add(position, new Size(4, 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "#####001"))
                    {
                        graphicsData.paletteImages[offset + 3].DrawWithOffset(p, Point.Add(position, new Size(32 - 4, 16 - 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "####0#10"))
                    {
                        graphicsData.paletteImages[offset + 4].DrawWithOffset(p, Point.Add(position, new Size(-4, 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "####001#"))
                    {
                        graphicsData.paletteImages[offset + 4].DrawWithOffset(p, Point.Add(position, new Size(-32 + 4, 16 - 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "#####100"))
                    {
                        graphicsData.paletteImages[offset + 5].DrawWithOffset(p, Point.Add(position, new Size(32 - 4, 16 - 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "####01#0"))
                    {
                        graphicsData.paletteImages[offset + 5].DrawWithOffset(p, Point.Add(position, new Size(4, 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "####100#"))
                    {
                        graphicsData.paletteImages[offset + 2].DrawWithOffset(p, Point.Add(position, new Size(-32 + 4, 16 - 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "####1#00"))
                    {
                        graphicsData.paletteImages[offset + 2].DrawWithOffset(p, Point.Add(position, new Size(-4, 2)), drawSettings.Darkness, false);
                    }

                    if (CheckConnections(pathConnections, "####01#1"))
                    {
                        graphicsData.paletteImages[offset + 1].DrawWithOffset(p, Point.Add(position, new Size(4, 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "#####101"))
                    {
                        graphicsData.paletteImages[offset + 1].DrawWithOffset(p, Point.Add(position, new Size(32 - 4, 16 - 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "####1#10"))
                    {
                        graphicsData.paletteImages[offset + 0].DrawWithOffset(p, Point.Add(position, new Size(-4, 2)), drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "####101#"))
                    {
                        graphicsData.paletteImages[offset + 0].DrawWithOffset(p, Point.Add(position, new Size(-32 + 4, 16 - 2)), drawSettings.Darkness, false);
                    }

                    if (CheckConnections(pathConnections, "###0##11"))
                    {
                        graphicsData.paletteImages[offset + 11].DrawWithOffset(p, position, drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "##0##11#"))
                    {
                        graphicsData.paletteImages[offset + 12].DrawWithOffset(p, position, drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "#0##11##"))
                    {
                        graphicsData.paletteImages[offset + 13].DrawWithOffset(p, position, drawSettings.Darkness, false);
                    }
                    if (CheckConnections(pathConnections, "0###1##1"))
                    {
                        graphicsData.paletteImages[offset + 10].DrawWithOffset(p, position, drawSettings.Darkness, false);
                    }
                }
            }
            else
            {
                if (drawSettings.Queue)
                {
                    offset = 87;
                }
                else
                {
                    offset = 73;
                }

                switch (drawSettings.Slope)
                {
                case 0:
                    graphicsData.paletteImages[offset + 6].DrawWithOffset(p, Point.Add(position, new Size(-4, 2)), drawSettings.Darkness, false);
                    graphicsData.paletteImages[offset + 6].DrawWithOffset(p, Point.Add(position, new Size(-32 + 4, 16 - 2)), drawSettings.Darkness, false);
                    break;

                case 1:
                    graphicsData.paletteImages[offset + 8].DrawWithOffset(p, Point.Add(position, new Size(4, 2)), drawSettings.Darkness, false);
                    graphicsData.paletteImages[offset + 8].DrawWithOffset(p, Point.Add(position, new Size(32 - 4, 16 - 2)), drawSettings.Darkness, false);
                    break;

                case 2:
                    graphicsData.paletteImages[offset + 7].DrawWithOffset(p, Point.Add(position, new Size(-4, 2)), drawSettings.Darkness, false);
                    graphicsData.paletteImages[offset + 7].DrawWithOffset(p, Point.Add(position, new Size(-32 + 4, 16 - 2)), drawSettings.Darkness, false);
                    break;

                case 3:
                    graphicsData.paletteImages[offset + 9].DrawWithOffset(p, Point.Add(position, new Size(4, 2)), drawSettings.Darkness, false);
                    graphicsData.paletteImages[offset + 9].DrawWithOffset(p, Point.Add(position, new Size(32 - 4, 16 - 2)), drawSettings.Darkness, false);
                    break;
                }
            }
        }
Ejemplo n.º 28
0
        /** <summary> Draws the object data in the dialog. </summary> */
        public override bool DrawDialog(PaletteImage p, Point position, Size dialogSize, DrawSettings drawSettings)
        {
            try {
                position = Point.Add(position, new Size(dialogSize.Width / 2, dialogSize.Height / 2));
                bool fullSquare  = Header.Flags.HasFlag(SmallSceneryFlags.FullSquare);
                bool drawDialog2 = Header.Flags.HasFlag(SmallSceneryFlags.DrawDialogTwo);
                bool glass       = Header.Flags.HasFlag(SmallSceneryFlags.Glass);

                DrawDialogFrame(p, position, drawSettings, drawSettings.Rotation, false);
                if (drawDialog2)
                {
                    DrawDialogFrame(p, position, drawSettings, 4 + drawSettings.Rotation, false);
                }
                else if (glass)
                {
                    DrawDialogFrame(p, position, drawSettings, 4 + drawSettings.Rotation, true);
                }
            }
            catch (IndexOutOfRangeException) { return(false); }
            catch (ArgumentOutOfRangeException) { return(false); }
            return(true);
        }
Ejemplo n.º 29
0
 /**<summary>Draws the object data in the dialog.</summary>*/
 public override bool DrawDialog(PaletteImage p, Point position, Size dialogSize, DrawSettings drawSettings)
 {
     try {
         graphicsData.paletteImages[Header.PreviewIndex].Draw(p, position, drawSettings.Darkness, false);
     }
     catch (IndexOutOfRangeException) { return(false); }
     catch (ArgumentOutOfRangeException) { return(false); }
     return(true);
 }
Ejemplo n.º 30
0
        /** <summary> Draws the object data in the dialog. </summary> */
        public override bool DrawDialog(PaletteImage p, Point position, Size dialogSize, DrawSettings drawSettings)
        {
            try {
                bool flat     = Header.Flags.HasFlag(WallFlags.Flat);
                bool twoSides = Header.Flags.HasFlag(WallFlags.TwoSides);
                bool door     = Header.Flags.HasFlag(WallFlags.Door);
                bool glass    = Header.Flags.HasFlag(WallFlags.Glass);

                int offset = (2 + (!flat ? 4 : 0)) * (twoSides ? 2 : 1) * (door ? 2 : 1);

                DrawDialogFrame(p, Point.Add(position, new Size(dialogSize.Width / 2, dialogSize.Height / 2)), drawSettings, 0, false);
                if (door)
                {
                    DrawDialogFrame(p, Point.Add(position, new Size(dialogSize.Width / 2, dialogSize.Height / 2)), drawSettings, 1, false);
                }
                if (glass)
                {
                    DrawDialogFrame(p, Point.Add(position, new Size(dialogSize.Width / 2, dialogSize.Height / 2)), drawSettings, offset, true);
                }
            }
            catch (IndexOutOfRangeException) { return(false); }
            catch (ArgumentOutOfRangeException) { return(false); }
            return(true);
        }