示例#1
0
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            //int type = (int)entity.attributesMap["type"].ValueUInt8;
            int  direction = (int)entity.attributesMap["direction"].ValueUInt8;
            bool fliph     = false;
            bool flipv     = false;

            if (direction == 1)
            {
                fliph = true;
            }
            var editorAnim  = e.LoadAnimation2("Grabber", d, 0, -1, fliph, flipv, false);
            var editorAnim2 = e.LoadAnimation2("Grabber", d, 1, -1, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0 && editorAnim2 != null && editorAnim2.Frames.Count != 0)
            {
                var frame  = editorAnim.Frames[e.index];
                var frame2 = editorAnim2.Frames[e.index];

                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                e.ProcessAnimation(frame2.Entry.FrameSpeed, frame2.Entry.Frames.Count, frame2.Frame.Duration);

                d.DrawBitmap(frame.Texture,
                             x + frame.Frame.CenterX - (fliph ? (frame.Frame.Width - editorAnim.Frames[0].Frame.Width) : 0),
                             y + frame.Frame.CenterY + (flipv ? (frame.Frame.Height - editorAnim.Frames[0].Frame.Height) : 0),
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
                d.DrawBitmap(frame2.Texture,
                             x + frame2.Frame.CenterX - (fliph ? (frame2.Frame.Width - 2) : 0),
                             y + frame2.Frame.CenterY + (flipv ? (frame2.Frame.Height - editorAnim2.Frames[0].Frame.Height) : 0),
                             frame2.Frame.Width, frame2.Frame.Height, false, Transparency);
            }
        }
示例#2
0
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            bool fliph       = false;
            bool flipv       = false;
            var  editorAnim  = e.LoadAnimation2("FBZFan", d, 0, 0, fliph, flipv, false);
            var  editorAnim2 = e.LoadAnimation2("FBZFan", d, 1, -1, fliph, flipv, false);
            var  editorAnim3 = e.LoadAnimation2("FBZFan", d, 2, -1, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0 && editorAnim2 != null && editorAnim.Frames.Count != 0 && editorAnim3 != null && editorAnim.Frames.Count != 0)
            {
                var frame  = editorAnim.Frames[0];
                var frame2 = editorAnim2.Frames[e.index];
                var frame3 = editorAnim3.Frames[e.index];
                // e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                e.ProcessAnimation(frame2.Entry.FrameSpeed, frame2.Entry.Frames.Count, frame2.Frame.Duration);
                e.ProcessAnimation(frame3.Entry.FrameSpeed, frame3.Entry.Frames.Count, frame3.Frame.Duration);

                d.DrawBitmap(frame.Texture,
                             x + frame.Frame.CenterX + (fliph ? (frame.Frame.Width - editorAnim.Frames[0].Frame.Width * 2) : 0),
                             y + frame.Frame.CenterY + (flipv ? (frame.Frame.Height - editorAnim.Frames[0].Frame.Height) : 0),
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
                d.DrawBitmap(frame2.Texture,
                             x + frame2.Frame.CenterX + (fliph ? (frame2.Frame.Width - editorAnim2.Frames[0].Frame.Width * 2) : 0),
                             y + frame2.Frame.CenterY + (flipv ? (frame2.Frame.Height - editorAnim2.Frames[0].Frame.Height) : 0),
                             frame2.Frame.Width, frame2.Frame.Height, false, Transparency);
                d.DrawBitmap(frame3.Texture,
                             x + frame3.Frame.CenterX + (fliph ? (frame3.Frame.Width - editorAnim3.Frames[0].Frame.Width * 2) : 0),
                             y + frame3.Frame.CenterY + (flipv ? (frame3.Frame.Height - editorAnim3.Frames[0].Frame.Height) : 0),
                             frame3.Frame.Width, frame3.Frame.Height, false, Transparency);
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            var type         = entity.attributesMap["type"].ValueVar;
            var widthPixels  = (int)(entity.attributesMap["size"].ValuePosition.X.High);
            var heightPixels = (int)(entity.attributesMap["size"].ValuePosition.Y.High);
            var width        = (int)widthPixels / 16 - 1;
            var height       = (int)heightPixels / 16 - 1;

            var editorAnim = e.LoadAnimation2("EditorAssets", d, 1, 1 + (int)type * 2, false, false, false);

            if (width != -1 && height != -1)
            {
                // draw inside
                // TODO this is really heavy on resources, so maybe switch to just drawing a rectangle??
                for (int i = 0; i <= height; i++)
                {
                    editorAnim = e.LoadAnimation2("EditorAssets", d, 1, 1 + (int)type * 2, false, false, false);
                    if (editorAnim != null && editorAnim.Frames.Count != 0)
                    {
                        var frame = editorAnim.Frames[e.index];
                        e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                        bool wEven = width % 2 == 0;
                        bool hEven = height % 2 == 0;
                        for (int j = 0; j <= width; j++)
                        {
                            d.DrawBitmap(frame.Texture,
                                         (((width + 1) * 16) - widthPixels) / 2 + (x + (wEven ? frame.Frame.CenterX : -frame.Frame.Width) + (-width / 2 + j) * frame.Frame.Width),
                                         y + (hEven ? frame.Frame.CenterY : -frame.Frame.Height) + (-height / 2 + i) * frame.Frame.Height,
                                         frame.Frame.Width, frame.Frame.Height, false, Transparency);
                        }
                    }
                }

                // draw top and botton
                for (int i = 0; i < 2; i++)
                {
                    bool bottom = !((i & 1) > 0);

                    editorAnim = e.LoadAnimation2("EditorAssets", d, 1, (bottom ? 1 : 0) + (int)type * 2, false, false, false);
                    if (editorAnim != null && editorAnim.Frames.Count != 0)
                    {
                        var frame = editorAnim.Frames[e.index];
                        e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                        bool wEven = width % 2 == 0;
                        bool hEven = height % 2 == 0;
                        for (int j = 0; j <= width; j++)
                        {
                            d.DrawBitmap(frame.Texture,
                                         (((width + 1) * 16) - widthPixels) / 2 + (x + (wEven ? frame.Frame.CenterX : -frame.Frame.Width) + (-width / 2 + j) * frame.Frame.Width),
                                         (y + heightPixels / (bottom ? 2 : -2) - (bottom ? frame.Frame.Height : 0)),
                                         frame.Frame.Width, frame.Frame.Height, false, Transparency);
                        }
                    }
                }
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            const int LeftDist   = 1,
                      LeftPlane  = 2,
                      RightDist  = 4,
                      RightPlane = 8;

            var flags = (int)entity.attributesMap["flags"].ValueVar;
            var size  = (int)(entity.attributesMap["size"].ValueVar) - 1;
            var angle = entity.attributesMap["angle"].ValueInt32;

            int frameDist  = (flags & LeftDist) > 0 ? 1 : 0;
            int framePlane = (flags & LeftPlane) > 0 ? 2 : 0;
            var editorAnim = e.LoadAnimation2("PlaneSwitch", d, 0, frameDist + framePlane, false, false, false);

            const int pivotOffsetX = -8, pivotOffsetY = 0;
            const int drawOffsetX = 0, drawOffsetY = -8;

            if (editorAnim != null && editorAnim.Frames.Count != 0)
            {
                var frame = editorAnim.Frames[e.index];
                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                bool hEven = size % 2 == 0;
                for (int yy = 0; yy <= size; ++yy)
                {
                    int[] drawCoords = RotatePoints(
                        x - frame.Frame.Width,
                        (y + (hEven ? frame.Frame.CenterY : -frame.Frame.Height) + (-size / 2 + yy) * frame.Frame.Height),
                        x + pivotOffsetX, y + pivotOffsetY, angle);

                    d.DrawBitmap(frame.Texture, drawCoords[0] + drawOffsetX, drawCoords[1] + drawOffsetY, frame.Frame.Width, frame.Frame.Height, false, Transparency);
                }
            }

            frameDist  = (flags & RightDist) > 0 ? 1 : 0;
            framePlane = (flags & RightPlane) > 0 ? 2 : 0;
            editorAnim = e.LoadAnimation2("PlaneSwitch", d, 0, frameDist + framePlane, false, false, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0)
            {
                var frame = editorAnim.Frames[e.index];
                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                bool hEven = size % 2 == 0;
                for (int yy = 0; yy <= size; ++yy)
                {
                    int[] drawCoords = RotatePoints(
                        x,
                        (y + (hEven ? frame.Frame.CenterY : -frame.Frame.Height) + (-size / 2 + yy) * frame.Frame.Height),
                        x + pivotOffsetX, y + pivotOffsetY, angle);

                    d.DrawBitmap(frame.Texture, drawCoords[0] + drawOffsetX, drawCoords[1] + drawOffsetY, frame.Frame.Width, frame.Frame.Height, false, Transparency);
                }
            }
        }
示例#5
0
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            var editorAnim = e.LoadAnimation2("EditorIcons", d, 0, 5, false, false, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0)
            {
                var frame = editorAnim.Frames[e.index];
                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                d.DrawBitmap(frame.Texture, x + frame.Frame.CenterX, y + frame.Frame.CenterY,
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
            }
            var widthPixels  = (int)(entity.attributesMap["size"].ValuePosition.X.High) * 2;
            var heightPixels = (int)(entity.attributesMap["size"].ValuePosition.Y.High) * 2;
            var width        = (int)widthPixels / 16;
            var height       = (int)heightPixels / 16;

            var editorAnim2 = e.LoadAnimation2("EditorAssets", d, 0, 0, false, false, false);

            if (width != 0 && height != 0)
            {
                int x1 = x + widthPixels / -2;
                int x2 = x + widthPixels / 2 - 1;
                int y1 = y + heightPixels / -2;
                int y2 = y + heightPixels / 2 - 1;


                d.DrawLine(x1, y1, x1, y2, SystemColors.White);
                d.DrawLine(x1, y1, x2, y1, SystemColors.White);
                d.DrawLine(x2, y2, x1, y2, SystemColors.White);
                d.DrawLine(x2, y2, x2, y1, SystemColors.White);

                // draw corners
                for (int i = 0; i < 4; i++)
                {
                    bool right  = (i & 1) > 0;
                    bool bottom = (i & 2) > 0;

                    editorAnim = e.LoadAnimation2("EditorAssets", d, 0, 0, right, bottom, false);
                    if (editorAnim != null && editorAnim.Frames.Count != 0)
                    {
                        var frame = editorAnim.Frames[e.index];
                        e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                        d.DrawBitmap(frame.Texture,
                                     (x + widthPixels / (right ? 2 : -2)) - (right ? frame.Frame.Width : 0),
                                     (y + heightPixels / (bottom ? 2 : -2) - (bottom ? frame.Frame.Height : 0)),
                                     frame.Frame.Width, frame.Frame.Height, false, Transparency);
                    }
                }
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            int  animID   = (int)entity.attributesMap["type"].ValueVar;
            var  flipFlag = entity.attributesMap["flipFlag"].ValueVar;
            bool fliph    = false;
            bool flipv    = false;

            // Handle springs being flipped in both planes
            // Down
            if ((flipFlag & 0x02) == 0x02)
            {
                flipv = true;
            }
            // Left
            if ((flipFlag & 0x01) == 0x01)
            {
                fliph = true;
            }

            var editorAnim = e.LoadAnimation2("Springs", d, animID % 6, -1, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0 && animID >= 0)
            {
                var frame = editorAnim.Frames[e.index];

                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);

                d.DrawBitmap(frame.Texture,
                             x + frame.Frame.CenterX - (fliph ? (frame.Frame.Width - editorAnim.Frames[0].Frame.Width) : 0),
                             y + frame.Frame.CenterY + (flipv ? (frame.Frame.Height - editorAnim.Frames[0].Frame.Height) : 0),
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            int  type  = (int)entity.attributesMap["type"].ValueUInt8;
            bool fliph = false;
            bool flipv = false;
            int  animID;

            if (type == 1)
            {
                animID = 1;
            }
            else
            {
                animID = 0;
            }
            var editorAnim = e.LoadAnimation2("Turntable", d, animID, -1, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0 && animID >= 0)
            {
                var frame = editorAnim.Frames[e.index];

                e.ProcessAnimation(1, 14, 2);

                d.DrawBitmap(frame.Texture,
                             x + frame.Frame.CenterX - (fliph ? (frame.Frame.Width - editorAnim.Frames[0].Frame.Width) : 0),
                             y + frame.Frame.CenterY + (flipv ? (frame.Frame.Height - editorAnim.Frames[0].Frame.Height) : 0),
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            bool fliph   = false;
            bool flipv   = false;
            int  type    = (int)entity.attributesMap["type"].ValueVar;
            int  frameID = 0;

            if (type == 2)
            {
                frameID = 3;
            }
            if (type == 1)
            {
                frameID = 1;
            }
            var editorAnim = e.LoadAnimation2("Missile", d, frameID, -1, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0)
            {
                var frame = editorAnim.Frames[e.index];
                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);

                d.DrawBitmap(frame.Texture,
                             x + frame.Frame.CenterX + (fliph ? (frame.Frame.Width - editorAnim.Frames[0].Frame.Width * 2) : 0),
                             y + frame.Frame.CenterY + (flipv ? (frame.Frame.Height - editorAnim.Frames[0].Frame.Height) : 0),
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
            }
        }
示例#9
0
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            int  direction = (int)entity.attributesMap["direction"].ValueUInt8;
            bool hasSaw    = entity.attributesMap["hasSaw"].ValueBool;
            bool fliph     = false;
            bool flipv     = false;
            int  animID;

            if (direction == 2)
            {
                if (hasSaw)
                {
                    animID = 4;
                }
                else
                {
                    animID = 3;
                }
            }
            else if (direction == 3)
            {
                fliph = true;
                if (hasSaw)
                {
                    animID = 4;
                }
                else
                {
                    animID = 3;
                }
            }
            else
            {
                if (hasSaw)
                {
                    animID = 1;
                }
                else
                {
                    animID = 0;
                }
            }
            if (direction == 1)
            {
                flipv = true;
            }
            var editorAnim = e.LoadAnimation2("JuggleSaw", d, animID, -1, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0 && animID >= 0)
            {
                var frame = editorAnim.Frames[e.index];

                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);

                d.DrawBitmap(frame.Texture,
                             x + frame.Frame.CenterX - (fliph ? (frame.Frame.Width - editorAnim.Frames[0].Frame.Width + (hasSaw ? (38) : 16)) : 0),
                             y + frame.Frame.CenterY + (flipv ? (frame.Frame.Height - editorAnim.Frames[0].Frame.Height + (hasSaw ? (37) : 15)) : 0),
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            var  width      = (int)(entity.attributesMap["width"].ValueUInt8);
            var  height     = (int)(entity.attributesMap["height"].ValueUInt8);
            bool breakClimb = entity.attributesMap["breakClimb"].ValueBool;
            int  type;

            if (breakClimb)
            {
                type = 9;
            }
            else
            {
                type = 6;
            }
            var editorAnim = e.LoadAnimation2("ItemBox", d, 2, type, false, false, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0)
            {
                var frame = editorAnim.Frames[e.index];
                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                bool wEven = width % 2 == 0;
                bool hEven = height % 2 == 0;
                for (int xx = 0; xx <= width; ++xx)
                {
                    for (int yy = 0; yy <= height; ++yy)
                    {
                        d.DrawBitmap(frame.Texture,
                                     x + (wEven ? frame.Frame.CenterX : -frame.Frame.Width) + (-width / 2 + xx) * frame.Frame.Width,
                                     y + (hEven ? frame.Frame.CenterY : -frame.Frame.Height) + (-height / 2 + yy) * frame.Frame.Height,
                                     frame.Frame.Width, frame.Frame.Height, false, Transparency);
                    }
                }
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            bool fliph      = false;
            bool flipv      = false;
            int  size       = (int)entity.attributesMap["size"].ValueVar;
            var  editorAnim = e.LoadAnimation2("Platform", d, 0, size + 3, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0)
            {
                var frame = editorAnim.Frames[e.index];

                d.DrawBitmap(frame.Texture,
                             x + frame.Frame.CenterX - (fliph ? (frame.Frame.Width - editorAnim.Frames[0].Frame.Width) : 0),
                             y + frame.Frame.CenterY + (flipv ? (frame.Frame.Height - editorAnim.Frames[0].Frame.Height) : 0),
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
            }
            bool knux   = entity.attributesMap["onlyKnux"].ValueBool;
            bool mighty = entity.attributesMap.ContainsKey("onlyMighty") && entity.attributesMap["onlyMighty"].ValueBool;

            // draw Knuckles icon
            if (knux)
            {
                editorAnim = e.LoadAnimation2("HUD", d, 2, 2, false, false, false);
                if (editorAnim != null && editorAnim.Frames.Count != 0)
                {
                    var frame = editorAnim.Frames[e.index];
                    e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                    d.DrawBitmap(frame.Texture, x - frame.Frame.Width / (mighty ? 1 : 2), y - frame.Frame.Height / 2, frame.Frame.Width, frame.Frame.Height, false, Transparency);
                }
            }

            // draw Mighty icon
            if (mighty)
            {
                editorAnim = e.LoadAnimation2("HUD", d, 2, 3, false, false, false);
                if (editorAnim != null && editorAnim.Frames.Count != 0)
                {
                    var frame = editorAnim.Frames[e.index];
                    e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                    d.DrawBitmap(frame.Texture, x - (knux ? 0 : frame.Frame.Width / 2), y - frame.Frame.Height / 2, frame.Frame.Width, frame.Frame.Height, false, Transparency);
                }
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            bool fliph       = false;
            bool flipv       = false;
            var  editorAnim  = e.LoadAnimation2("Tubinaut", d, 0, 0, fliph, flipv, false);
            var  editorAnim2 = e.LoadAnimation2("Tubinaut", d, 8, -1, fliph, flipv, false);
            var  editorAnim3 = e.LoadAnimation2("Tubinaut", d, 1, 0, fliph, flipv, false);
            var  editorAnim4 = e.LoadAnimation2("Tubinaut", d, 2, 8, fliph, flipv, false);
            var  editorAnim5 = e.LoadAnimation2("Tubinaut", d, 3, 12, fliph, flipv, false);
            var  editorAnim6 = e.LoadAnimation2("Tubinaut", d, 0, 1, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0 && editorAnim2 != null && editorAnim2.Frames.Count != 0 && editorAnim3 != null && editorAnim3.Frames.Count != 0 && editorAnim4 != null && editorAnim4.Frames.Count != 0 && editorAnim5 != null && editorAnim5.Frames.Count != 0 && editorAnim6 != null && editorAnim6.Frames.Count != 0)
            {
                var frame  = editorAnim.Frames[0];
                var frame2 = editorAnim2.Frames[e.index];
                var frame3 = editorAnim4.Frames[0];
                var frame4 = editorAnim3.Frames[0];
                var frame5 = editorAnim5.Frames[0];
                var frame6 = editorAnim6.Frames[0];

                e.ProcessAnimation(frame2.Entry.FrameSpeed, frame2.Entry.Frames.Count, frame2.Frame.Duration);

                if (Editor.Instance.ShowAnimations.Checked == true && Properties.EditorState.Default.annimationsChecked)
                {
                    d.DrawBitmap(frame6.Texture,
                                 x + frame6.Frame.CenterX - (fliph ? (frame6.Frame.Width - editorAnim6.Frames[0].Frame.Width) : 0),
                                 y + frame6.Frame.CenterY + (flipv ? (frame6.Frame.Height - editorAnim6.Frames[0].Frame.Height) : 0),
                                 frame6.Frame.Width, frame6.Frame.Height, false, Transparency);
                    d.DrawBitmap(frame2.Texture,
                                 x + frame2.Frame.CenterX - (fliph ? (frame2.Frame.Width - editorAnim2.Frames[0].Frame.Width) : 0),
                                 y + frame2.Frame.CenterY + (flipv ? (frame2.Frame.Height - editorAnim2.Frames[0].Frame.Height) : 0),
                                 frame2.Frame.Width, frame2.Frame.Height, false, Transparency);
                }
                else
                {
                    d.DrawBitmap(frame.Texture,
                                 x + frame.Frame.CenterX - (fliph ? (frame.Frame.Width - editorAnim.Frames[0].Frame.Width) : 0),
                                 y + frame.Frame.CenterY + (flipv ? (frame.Frame.Height - editorAnim.Frames[0].Frame.Height) : 0),
                                 frame.Frame.Width, frame.Frame.Height, false, Transparency);
                    d.DrawBitmap(frame3.Texture,
                                 x + 16 + frame3.Frame.CenterX - (fliph ? (frame3.Frame.Width - editorAnim3.Frames[0].Frame.Width) : 0),
                                 y + 16 + frame3.Frame.CenterY + (flipv ? (frame3.Frame.Height - editorAnim3.Frames[0].Frame.Height) : 0),
                                 frame3.Frame.Width, frame3.Frame.Height, false, Transparency);
                    d.DrawBitmap(frame4.Texture,
                                 x - 16 + frame4.Frame.CenterX - (fliph ? (frame4.Frame.Width - editorAnim4.Frames[0].Frame.Width) : 0),
                                 y + 16 + frame4.Frame.CenterY + (flipv ? (frame4.Frame.Height - editorAnim4.Frames[0].Frame.Height) : 0),
                                 frame4.Frame.Width, frame4.Frame.Height, false, Transparency);
                    d.DrawBitmap(frame5.Texture,
                                 x + frame5.Frame.CenterX - (fliph ? (frame5.Frame.Width - editorAnim5.Frames[0].Frame.Width) : 0),
                                 y - 24 + frame5.Frame.CenterY + (flipv ? (frame5.Frame.Height - editorAnim5.Frames[0].Frame.Height) : 0),
                                 frame5.Frame.Width, frame5.Frame.Height, false, Transparency);
                }
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            int  type      = (int)entity.attributesMap["type"].ValueVar;
            int  direction = (int)entity.attributesMap["direction"].ValueUInt8;
            bool fliph     = false;
            bool flipv     = false;
            int  animID    = 0;

            switch (type)
            {
            case 0:
                animID = 0;
                break;

            case 1:
                animID = 1;
                break;

            case 2:
                animID = 2;
                break;

            case 3:
                animID = 3;
                break;
            }
            switch (direction)
            {
            case 0:
                break;

            case 1:
                flipv = true;
                break;

            default:
                break;
            }

            var editorAnim = e.LoadAnimation2("TwistingDoor", d, animID, -1, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0 && animID >= 0)
            {
                var frame = editorAnim.Frames[e.index];

                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);

                d.DrawBitmap(frame.Texture,
                             x + frame.Frame.CenterX - (fliph ? (frame.Frame.Width - editorAnim.Frames[0].Frame.Width + 10) : 0),
                             y + frame.Frame.CenterY + (flipv ? (frame.Frame.Height - editorAnim.Frames[0].Frame.Height + 10) : 0),
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            var editorAnim = e.LoadAnimation2("EditorIcons", d, 0, 0, false, false, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0)
            {
                var frame = editorAnim.Frames[e.index];
                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                d.DrawBitmap(frame.Texture, x + frame.Frame.CenterX, y + frame.Frame.CenterY,
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            var length     = (int)(entity.attributesMap["length"].ValueUInt32);
            var editorAnim = e.LoadAnimation2("WaterGush", d, 0, -1, false, false, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0)
            {
                var frame = editorAnim.Frames[e.index];
                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                for (int i = -length + 1; i <= 0; ++i)
                {
                    d.DrawBitmap(frame.Texture, x + frame.Frame.CenterX, y + frame.Frame.CenterY + i * frame.Frame.Height,
                                 frame.Frame.Width, frame.Frame.Height, false, Transparency);
                }
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            var type       = entity.attributesMap["type"].ValueUInt8;
            var editorAnim = e.LoadAnimation2("Decoration", d, type, -1, false, false, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0)
            {
                if (e.index >= editorAnim.Frames.Count)
                {
                    e.index = 0;
                }
                var frame = editorAnim.Frames[e.index];
                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                d.DrawBitmap(frame.Texture, x + frame.Frame.CenterX, y + frame.Frame.CenterY,
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
            }
        }
示例#17
0
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            var editorAnim = e.LoadAnimation2("SignPost", d, 0, -1, false, false, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0)
            {
                var frame = editorAnim.Frames[e.index];
                e.ProcessAnimation(1, frame.Entry.Frames.Count, frame.Frame.Duration);
                d.DrawBitmap(frame.Texture, x + frame.Frame.CenterX, y + frame.Frame.CenterY,
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
            }
            if (Properties.Settings.Default.UsePrePlusOffsets)
            {
                editorAnim = e.LoadAnimation2("SignPost", d, 4, -1, false, false, false);
                if (editorAnim != null && editorAnim.Frames.Count != 0)
                {
                    for (int i = 0; i < editorAnim.Frames.Count; ++i)
                    {
                        if (i == 1)
                        {
                            continue;
                        }
                        var frame = editorAnim.Frames[i];
                        d.DrawBitmap(frame.Texture, x + frame.Frame.CenterX, y + frame.Frame.CenterY,
                                     frame.Frame.Width, frame.Frame.Height, false, Transparency);
                    }
                }
            }
            else
            {
                editorAnim = e.LoadAnimation2("SignPost", d, 6, -1, false, false, false);
                if (editorAnim != null && editorAnim.Frames.Count != 0)
                {
                    for (int i = 0; i < editorAnim.Frames.Count; ++i)
                    {
                        if (i == 1)
                        {
                            continue;
                        }
                        var frame = editorAnim.Frames[i];
                        d.DrawBitmap(frame.Texture, x + frame.Frame.CenterX, y + frame.Frame.CenterY,
                                     frame.Frame.Width, frame.Frame.Height, false, Transparency);
                    }
                }
            }
        }
示例#18
0
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            int  type      = (int)entity.attributesMap["type"].ValueUInt8;
            int  direction = (int)entity.attributesMap["direction"].ValueUInt8;
            bool charge    = entity.attributesMap["charge"].ValueBool;
            bool fliph     = false;
            bool flipv     = false;
            int  animID;

            if (type == 1)
            {
                if (charge == true)
                {
                    animID = 3;
                }
                else
                {
                    animID = 1;
                }
            }
            else
            {
                animID = 0;
            }
            if (direction == 1)
            {
                fliph = true;
            }
            if (direction == 1)
            {
                fliph = true;
            }
            var editorAnim = e.LoadAnimation2("Chopper", d, animID, -1, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0 && animID >= 0)
            {
                var frame = editorAnim.Frames[e.index];

                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);

                d.DrawBitmap(frame.Texture,
                             x + frame.Frame.CenterX - (fliph ? (frame.Frame.Width - editorAnim.Frames[0].Frame.Width) : 0),
                             y + frame.Frame.CenterY + (flipv ? (frame.Frame.Height - editorAnim.Frames[0].Frame.Height) : 0),
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            bool fliph      = false;
            bool flipv      = false;
            var  editorAnim = e.LoadAnimation("SuperSpecialRing", d, 0, -1, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0)
            {
                var frame = editorAnim.Frames[e.index];

                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);

                d.DrawBitmap(frame.Texture,
                             x + frame.Frame.CenterX - (fliph ? (frame.Frame.Width - editorAnim.Frames[0].Frame.Width) : 0),
                             y + frame.Frame.CenterY + (flipv ? (frame.Frame.Height - editorAnim.Frames[0].Frame.Height) : 0),
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
            }
        }
        public void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            bool fliph           = false;
            bool flipv           = false;
            var  editorAnimGlass = e.LoadAnimation2("SchrodingersCapsule", d, 2, -1, fliph, flipv, false);

            if (editorAnimGlass != null && editorAnimGlass.Frames.Count != 0)
            {
                var glassFrame = editorAnimGlass.Frames[e.index];

                e.ProcessAnimation(glassFrame.Entry.FrameSpeed, glassFrame.Entry.Frames.Count, glassFrame.Frame.Duration);

                d.DrawBitmap(glassFrame.Texture,
                             x + glassFrame.Frame.CenterX - (fliph ? (glassFrame.Frame.Width - editorAnimGlass.Frames[0].Frame.Width) : 0),
                             y + glassFrame.Frame.CenterY + (flipv ? (glassFrame.Frame.Height - editorAnimGlass.Frames[0].Frame.Height) : 0),
                             glassFrame.Frame.Width, glassFrame.Frame.Height, false, 50);
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            int  type  = (int)entity.attributesMap["type"].ValueVar;
            bool fliph = false;
            bool flipv = false;
            int  animID;
            int  frameID;

            if (type == 2)
            {
                animID  = 2;
                frameID = -1;
            }
            else
            {
                animID  = 0;
                frameID = 0;
            }
            var editorAnim  = e.LoadAnimation2("CableWarp", d, animID, frameID, fliph, flipv, false);
            var editorAnim2 = e.LoadAnimation2("PlaneSwitch", d, 0, 5, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0 && animID >= 0 && editorAnim2 != null && editorAnim2.Frames.Count != 0)
            {
                var frame  = editorAnim.Frames[e.index];
                var frame2 = editorAnim2.Frames[0];

                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);

                if (type != 2)
                {
                    d.DrawBitmap(frame.Texture,
                                 x + frame.Frame.CenterX - (fliph ? (frame.Frame.Width - editorAnim.Frames[0].Frame.Width) : 0),
                                 y + frame.Frame.CenterY + (flipv ? (frame.Frame.Height - editorAnim.Frames[0].Frame.Height) : 0),
                                 frame.Frame.Width, frame.Frame.Height, false, Transparency);
                }
                else
                {
                    d.DrawBitmap(frame2.Texture,
                                 x + frame2.Frame.CenterX - (fliph ? (frame2.Frame.Width - editorAnim2.Frames[0].Frame.Width) : 0),
                                 y + frame2.Frame.CenterY + (flipv ? (frame2.Frame.Height - editorAnim2.Frames[0].Frame.Height) : 0),
                                 frame2.Frame.Width, frame2.Frame.Height, false, Transparency);
                }
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            int  frameType  = (int)entity.attributesMap["frame"].ValueUInt8;
            bool fliph      = false;
            bool flipv      = false;
            var  editorAnim = e.LoadAnimation2("SpikeLog", d, 0, -1, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0)
            {
                var frame = editorAnim.Frames[e.index];

                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration, frameType * 4);

                d.DrawBitmap(frame.Texture,
                             x + frame.Frame.CenterX - (fliph ? (frame.Frame.Width - editorAnim.Frames[0].Frame.Width) : 0),
                             y + frame.Frame.CenterY + (flipv ? (frame.Frame.Height - editorAnim.Frames[0].Frame.Height) : 0),
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
            }
        }
示例#23
0
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            var size      = (int)(entity.attributesMap["size"].ValueVar) - 1;
            int angle     = 0;
            var direction = (int)entity.attributesMap["direction"].ValueUInt8;

            switch (direction)
            {
            case 1:
                angle = 64;
                break;

            case 2:
                angle = 128;
                break;

            case 3:
                angle = 192;
                break;
            }

            var editorAnim = e.LoadAnimation2("PlaneSwitch", d, 0, 4, true, false, false);

            const int pivotOffsetX = -8, pivotOffsetY = 0;
            const int drawOffsetX = 0, drawOffsetY = -8;

            if (editorAnim != null && editorAnim.Frames.Count != 0)
            {
                var frame = editorAnim.Frames[e.index];
                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                bool hEven = size % 2 == 0;
                for (int yy = 0; yy <= size; ++yy)
                {
                    int[] drawCoords = RotatePoints(
                        x - frame.Frame.Width / 2,
                        (y + (hEven ? frame.Frame.CenterY : -frame.Frame.Height) + (-size / 2 + yy) * frame.Frame.Height),
                        x + pivotOffsetX, y + pivotOffsetY, angle);

                    d.DrawBitmap(frame.Texture, drawCoords[0] + drawOffsetX, drawCoords[1] + drawOffsetY, frame.Frame.Width, frame.Frame.Height, false, Transparency);
                }
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            bool fliph   = false;
            bool flipv   = false;
            int  dir     = entity.attributesMap["dir"].ValueUInt8;
            int  frameID = 0;

            switch (dir)
            {
            case 1:
                fliph   = true;
                frameID = 4;
                break;
            }
            var editorAnim  = e.LoadAnimation2("IceBomba", d, 0, 0, fliph, flipv, false);
            var editorAnim2 = e.LoadAnimation2("IceBomba", d, 1, -1, fliph, flipv, false);
            var editorAnim3 = e.LoadAnimation2("IceBomba", d, 2, frameID, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0 && editorAnim2 != null && editorAnim2.Frames.Count != 0 && editorAnim3 != null && editorAnim3.Frames.Count != 0)
            {
                var frame  = editorAnim.Frames[0];
                var frame2 = editorAnim2.Frames[e.index];
                var frame3 = editorAnim3.Frames[0];

                e.ProcessAnimation(frame2.Entry.FrameSpeed, frame2.Entry.Frames.Count, frame2.Frame.Duration);

                d.DrawBitmap(frame3.Texture,
                             x - 5 + frame.Frame.CenterX - (fliph ? 6 : 0),
                             y + 10 + (flipv ? 0 : 0),
                             frame3.Frame.Width, frame3.Frame.Height, false, Transparency);
                d.DrawBitmap(frame.Texture,
                             x + frame.Frame.CenterX,
                             y + frame.Frame.CenterY,
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
                d.DrawBitmap(frame2.Texture,
                             x + frame2.Frame.CenterX - (fliph ? 6 : 0),
                             y + frame2.Frame.CenterY,
                             frame2.Frame.Width, frame2.Frame.Height, false, Transparency);
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            int  length     = (int)entity.attributesMap["length"].ValueVar;
            int  angle      = (int)entity.attributesMap["angle"].ValueVar;
            bool fliph      = false;
            bool flipv      = false;
            var  editorAnim = e.LoadAnimation2("PaperRoller", d, 0, -1, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0)
            {
                var   frame         = editorAnim.Frames[e.index];
                int[] newPos        = RotatePoints(x - (length / 2), y, x, y, -angle);
                int[] newPos2       = RotatePoints(x + (length / 2), y, x, y, -angle);
                int[] newPosAngle   = RotatePoints(newPos[0] - 23, newPos[1], newPos[0], newPos[1], -angle + 64);
                int[] newPosAngle2  = RotatePoints(newPos[0] + 24, newPos[1], newPos[0], newPos[1], -angle + 64);
                int[] newPos2Angle  = RotatePoints(newPos2[0] - 23, newPos2[1], newPos2[0], newPos2[1], -angle + 64);
                int[] newPos2Angle2 = RotatePoints(newPos2[0] + 24, newPos2[1], newPos2[0], newPos2[1], -angle + 64);

                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);


                d.DrawBitmap(frame.Texture,
                             newPos[0] + frame.Frame.CenterX - (fliph ? (frame.Frame.Width - editorAnim.Frames[0].Frame.Width) : 0),
                             newPos[1] + frame.Frame.CenterY + (flipv ? (frame.Frame.Height - editorAnim.Frames[0].Frame.Height) : 0),
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);

                d.DrawBitmap(frame.Texture,
                             newPos2[0] + frame.Frame.CenterX - (fliph ? (frame.Frame.Width - editorAnim.Frames[0].Frame.Width) : 0),
                             newPos2[1] + frame.Frame.CenterY + (flipv ? (frame.Frame.Height - editorAnim.Frames[0].Frame.Height) : 0),
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);

                if (length >= 1)
                {
                    d.DrawLine(newPosAngle[0], newPosAngle[1], newPos2Angle[0], newPos2Angle[1], System.Drawing.Color.LightGray);
                    d.DrawLine(newPosAngle2[0], newPosAngle2[1], newPos2Angle2[0], newPos2Angle2[1], System.Drawing.Color.LightGray);
                }
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            //int type = (int)entity.attributesMap["type"].ValueUInt8;
            //int direction = (int)entity.attributesMap["direction"].ValueUInt8;
            bool fliph       = false;
            bool flipv       = false;
            var  editorAnim  = e.LoadAnimation2("RockemSockem", d, 0, -1, fliph, flipv, false);
            var  editorAnim2 = e.LoadAnimation2("RockemSockem", d, 1, -1, fliph, flipv, false);
            var  editorAnim3 = e.LoadAnimation2("RockemSockem", d, 2, -1, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0 && editorAnim2 != null && editorAnim2.Frames.Count != 0 && editorAnim3 != null && editorAnim3.Frames.Count != 0)
            {
                var frame  = editorAnim.Frames[0];
                var frame2 = editorAnim2.Frames[0];
                var frame3 = editorAnim3.Frames[e.index];

                e.ProcessAnimation(frame3.Entry.FrameSpeed, frame3.Entry.Frames.Count, frame3.Frame.Duration);

                d.DrawBitmap(frame.Texture,
                             x + frame.Frame.CenterX - (fliph ? (frame.Frame.Width - editorAnim.Frames[0].Frame.Width) : 0),
                             y + frame.Frame.CenterY + (flipv ? (frame.Frame.Height - editorAnim.Frames[0].Frame.Height) : 0),
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);

                for (int i = 0; i < 6; i++)
                {
                    d.DrawBitmap(frame2.Texture,
                                 x + frame2.Frame.CenterX - (fliph ? (frame2.Frame.Width - editorAnim2.Frames[0].Frame.Width) : 0),
                                 y - 8 - (i * 4) + frame2.Frame.CenterY + (flipv ? (frame2.Frame.Height - editorAnim2.Frames[0].Frame.Height) : 0),
                                 frame2.Frame.Width, frame2.Frame.Height, false, Transparency);
                }
                d.DrawBitmap(frame3.Texture,
                             x + frame3.Frame.CenterX - (fliph ? (frame3.Frame.Width - editorAnim3.Frames[0].Frame.Width) : 0),
                             y - 44 + frame3.Frame.CenterY + (flipv ? (frame3.Frame.Height - editorAnim3.Frames[0].Frame.Height) : 0),
                             frame3.Frame.Width, frame3.Frame.Height, false, Transparency);
            }
        }
示例#27
0
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            int  direction = (int)entity.attributesMap["direction"].ValueUInt8;
            bool fliph     = false;
            bool flipv     = false;

            if (direction == 1)
            {
                fliph = true;
            }
            var editorAnim = e.LoadAnimation2("Platform", d, 1, 4, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0)
            {
                var frame = editorAnim.Frames[0];

                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);

                d.DrawBitmap(frame.Texture,
                             x + frame.Frame.CenterX,
                             y + frame.Frame.CenterY,
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            //int type = (int)entity.attributesMap["type"].ValueUInt8;
            int  size        = (int)entity.attributesMap["size"].ValueVar;
            bool fliph       = false;
            bool flipv       = false;
            var  editorAnim  = e.LoadAnimation2("DirectorChair", d, 1, 0, fliph, flipv, false);
            var  editorAnim2 = e.LoadAnimation2("DirectorChair", d, 1, 1, fliph, flipv, false);
            var  editorAnim3 = e.LoadAnimation2("DirectorChair", d, 1, 2, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0 && editorAnim2 != null && editorAnim2.Frames.Count != 0 && editorAnim3 != null && editorAnim3.Frames.Count != 0)
            {
                var frame  = editorAnim.Frames[e.index];
                var frame2 = editorAnim2.Frames[e.index];
                var frame3 = editorAnim3.Frames[e.index];

                e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);

                d.DrawBitmap(frame.Texture,
                             x + frame.Frame.CenterX - (fliph ? (frame.Frame.Width - editorAnim.Frames[0].Frame.Width) : 0),
                             y + frame.Frame.CenterY + (flipv ? (frame.Frame.Height - editorAnim.Frames[0].Frame.Height) : 0),
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
                d.DrawBitmap(frame.Texture,
                             x + frame.Frame.CenterX - (fliph ? (frame.Frame.Width - editorAnim.Frames[0].Frame.Width) : 0),
                             y - (size * 5 + 8) + frame.Frame.CenterY + (flipv ? (frame.Frame.Height - editorAnim.Frames[0].Frame.Height) : 0),
                             frame.Frame.Width, frame.Frame.Height, false, Transparency);
                d.DrawBitmap(frame2.Texture,
                             x + frame2.Frame.CenterX - (fliph ? (frame2.Frame.Width - editorAnim2.Frames[0].Frame.Width) : 0),
                             y - (size * 5 + 8) + frame2.Frame.CenterY + (flipv ? (frame2.Frame.Height - editorAnim2.Frames[0].Frame.Height) : 0),
                             frame2.Frame.Width, frame2.Frame.Height, false, Transparency);
                d.DrawBitmap(frame3.Texture,
                             x + frame3.Frame.CenterX - (fliph ? (frame3.Frame.Width - editorAnim3.Frames[0].Frame.Width) : 0),
                             y - (size * 5 + 8) + frame3.Frame.CenterY + (flipv ? (frame3.Frame.Height - editorAnim3.Frames[0].Frame.Height) : 0),
                             frame3.Frame.Width, frame3.Frame.Height, false, Transparency);
            }
        }
示例#29
0
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            int  type        = (int)entity.attributesMap["type"].ValueVar;
            int  moveType    = (int)entity.attributesMap["moveType"].ValueVar;
            int  angle       = (int)entity.attributesMap["angle"].ValueInt32;
            bool fliph       = false;
            bool flipv       = false;
            int  amplitudeX  = (int)entity.attributesMap["amplitude"].ValuePosition.X.High;
            int  amplitudeY  = (int)entity.attributesMap["amplitude"].ValuePosition.Y.High;
            int  angleStateX = 0;
            int  angleStateY = 0;
            int  animID;

            switch (type)
            {
            case 0:
                animID = 0;
                break;

            case 1:
                animID = 1;
                break;

            case 2:
                animID = 2;
                break;

            default:
                animID = 0;
                break;
            }



            var editorAnim = e.LoadAnimation2("Ring", d, animID, -1, fliph, flipv, false);

            if (editorAnim != null && editorAnim.Frames.Count != 0 && animID >= 0)
            {
                var frame = editorAnim.Frames[0];
                if (moveType != 2)
                {
                    e.ProcessMovingPlatform(angle);
                    angle = e.angle;
                }
                if (type != 2)
                {
                    frame = editorAnim.Frames[e.index];
                    e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                }
                if ((amplitudeX != 0 || amplitudeY != 0))
                {
                    double xd        = x;
                    double yd        = y;
                    double x2        = x + amplitudeX - amplitudeX / 3.7;
                    double y2        = y + amplitudeY - amplitudeY / 3.7;
                    double radius    = Math.Pow(x2 - xd, 2) + Math.Pow(y2 - yd, 2);
                    int    radiusInt = (int)Math.Sqrt(radius);
                    int    newX      = (int)(radiusInt * Math.Cos(Math.PI * angle / 128));
                    int    newY      = (int)(radiusInt * Math.Sin(Math.PI * angle / 128));
                    d.DrawBitmap(frame.Texture, (x + newX) + frame.Frame.CenterX, (y - newY) + frame.Frame.CenterY,
                                 frame.Frame.Width, frame.Frame.Height, false, Transparency);
                }
                else
                {
                    d.DrawBitmap(frame.Texture,
                                 x + frame.Frame.CenterX + (angleStateX),
                                 y + frame.Frame.CenterY - (angleStateY),
                                 frame.Frame.Width, frame.Frame.Height, false, Transparency);
                }
            }
        }
        public override void Draw(DevicePanel d, SceneEntity entity, EditorEntity e, int x, int y, int Transparency)
        {
            var widthPixels  = (int)(entity.attributesMap["size"].ValuePosition.X.High);
            var heightPixels = (int)(entity.attributesMap["size"].ValuePosition.Y.High);
            var width        = (int)widthPixels / 16;
            var height       = (int)heightPixels / 16;

            var editorAnim = e.LoadAnimation2("EditorAssets", d, 0, 0, false, false, false);

            if (width != 0 && height != 0)
            {
                // draw corners
                for (int i = 0; i < 4; i++)
                {
                    bool right  = (i & 1) > 0;
                    bool bottom = (i & 2) > 0;

                    editorAnim = e.LoadAnimation2("EditorAssets", d, 0, 0, right, bottom, false);
                    if (editorAnim != null && editorAnim.Frames.Count != 0)
                    {
                        var frame = editorAnim.Frames[e.index];
                        e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                        d.DrawBitmap(frame.Texture,
                                     (x + widthPixels / (right ? 2 : -2)) - (right ? frame.Frame.Width : 0),
                                     (y + heightPixels / (bottom ? 2 : -2) - (bottom ? frame.Frame.Height : 0)),
                                     frame.Frame.Width, frame.Frame.Height, false, Transparency);
                    }
                }

                // draw top and bottom
                for (int i = 0; i < 2; i++)
                {
                    bool bottom = (i & 1) > 0;

                    editorAnim = e.LoadAnimation2("EditorAssets", d, 0, 1, false, bottom, false);
                    if (editorAnim != null && editorAnim.Frames.Count != 0)
                    {
                        var frame = editorAnim.Frames[e.index];
                        e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                        bool wEven = width % 2 == 0;
                        for (int j = 1; j < width; j++)
                        {
                            d.DrawBitmap(frame.Texture,
                                         (x + (wEven ? frame.Frame.CenterX : -frame.Frame.Width) + (-width / 2 + j) * frame.Frame.Width),
                                         (y + heightPixels / (bottom ? 2 : -2) - (bottom ? frame.Frame.Height : 0)),
                                         frame.Frame.Width, frame.Frame.Height, false, Transparency);
                        }
                    }
                }

                // draw sides
                for (int i = 0; i < 2; i++)
                {
                    bool right = (i & 1) > 0;

                    editorAnim = e.LoadAnimation2("EditorAssets", d, 0, 2, right, false, false);
                    if (editorAnim != null && editorAnim.Frames.Count != 0)
                    {
                        var frame = editorAnim.Frames[e.index];
                        e.ProcessAnimation(frame.Entry.FrameSpeed, frame.Entry.Frames.Count, frame.Frame.Duration);
                        bool hEven = height % 2 == 0;
                        for (int j = 1; j < height; j++)
                        {
                            d.DrawBitmap(frame.Texture,
                                         (x + widthPixels / (right ? 2 : -2)) - (right ? frame.Frame.Width : 0),
                                         (y + (hEven ? frame.Frame.CenterY : -frame.Frame.Height) + (-height / 2 + j) * frame.Frame.Height),
                                         frame.Frame.Width, frame.Frame.Height, false, Transparency);
                        }
                    }
                }
            }
        }