private void loadProjectile(LevelObjectProjectile projectile)
        {
            ClearMainArea();

            objectFrameworkArea.Data.MainPanel.AddControl(new TextArea(25, 25, "Name= ") {Color = "black"});
            TextBox fm = null;
            objectFrameworkArea.Data.MainPanel.AddControl(fm = new TextBox(100, 5, 290, 25, projectile.Name) {Color = "rgb(50,150,50)", Click = (p) => { projectile.Name = fm.Text; }});
            Button b = null;
            objectFrameworkArea.Data.MainPanel.AddControl(b = new Button(40, 160, 70, 25, "XFlip") {
                                                                                                           Color = "rgb(50,150,50)",
                                                                                                           Click = (p) => { projectile.Xflip = b.Toggled; }
                                                                                                   });
            b.Toggle = true;
            b.Toggled = projectile.Xflip;

            Button c = null;
            objectFrameworkArea.Data.MainPanel.AddControl(c = new Button(115, 160, 70, 25, "YFlip") {
                                                                                                            Color = "rgb(50,150,50)",
                                                                                                            Click = (p) => { projectile.Yflip = c.Toggled; }
                                                                                                    });
            c.Toggle = true;
            c.Toggled = projectile.Yflip;

            HScrollBox jd;
            objectFrameworkArea.Data.MainPanel.AddControl(jd = new HScrollBox(20, 35, 70, 4, 112) {BackColor = "rgb(50,60,127)"});
            jd.Controls = new List<Element>();
            for (var i = 0; i < objectFrameworkArea.Data.ObjectFramework.Assets.Count; i++) {
                ImageButton<LevelObjectAsset> bd = new ImageButton<LevelObjectAsset>(null, 0, 0, 0, 0);
                bd.Text = ( (Func<string>) ( () => { return bd.Data.Name; } ) );
                bd.OnDraw = (canvas, x, y) => {
                                if (bd.Data.Frames.Count == 0) return;
                                bd.Data.Frames[0].DrawSimple(canvas, new Point(x, y), bd.Width, bd.Height - 15, projectile.Xflip, projectile.Yflip);
                            };
                bd.Click = (p) => {
                               for (var j = 0; j < jd.Controls.Count; j++) {
                                   if (jd.Controls[j] == bd) {
                                       if (projectile.AssetIndex == j)
                                           bd.Toggled = true;

                                       projectile.AssetIndex = j;
                                       continue;
                                   }
                                   ( (ImageButton) jd.Controls[j] ).Toggled = false;
                               }
                           };

                jd.AddControl(bd);
                bd.Toggle = true;
                bd.Data = objectFrameworkArea.Data.ObjectFramework.Assets[i];
                if (projectile.AssetIndex == i)
                    bd.Toggled = true;
            }
        }
示例#2
0
        public static LevelObject ExtendObject(LevelObjectData d)
        {
            LevelObject obj = new LevelObject(d.Key)
            {
                CollideScript = d.CollideScript,
                HurtScript = d.HurtScript,
                InitScript = d.InitScript,
                TickScript = d.TickScript
            };
            obj.Description = d.Description;
            //d.oldKey = name;
            obj.Assets = new List<LevelObjectAsset>();

            for (int i = 0; i < d.Assets.Count; i++)
            {
                var asset = d.Assets[i];
                var levelObjectAsset = new LevelObjectAsset(asset.Name)
                {
                    Name = asset.Name,
                };
                levelObjectAsset.Frames = new List<LevelObjectAssetFrame>();
                for (int index = 0; index < asset.Frames.Count; index++)
                {
                    var fr = asset.Frames[index];

                    levelObjectAsset.Frames[index] = new LevelObjectAssetFrame(fr.Name)
                    {
                        OffsetX = fr.OffsetX,
                        Width = fr.Width,
                        TransparentColor = fr.TransparentColor,
                        Height = fr.Height,
                        OffsetY = fr.OffsetY,
                        HurtSonicMap = fr.HurtSonicMap,
                        CollisionMap = fr.CollisionMap,
                        ColorMap = fr.ColorMap,
                        Palette = fr.Palette,
                    };
                }
                obj.Assets[i] = levelObjectAsset;
            }
            obj.Pieces = new List<LevelObjectPiece>();

            for (int index = 0; index < d.Pieces.Count; index++)
            {
                var piece = d.Pieces[index];
                obj.Pieces[index] = piece;
            }
            obj.PieceLayouts = new List<LevelObjectPieceLayout>();
            for (int index = 0; index < d.PieceLayouts.Count; index++)
            {
                var pl = d.PieceLayouts[index];
                obj.PieceLayouts[index] = new LevelObjectPieceLayout(pl.Name)
                {
                    Height = pl.Height,
                    Width = pl.Width
                };

                obj.PieceLayouts[index].Pieces = new List<LevelObjectPieceLayoutPiece>();
                for (int i = 0; i < d.PieceLayouts[index].Pieces.Count; i++)
                {
                    obj.PieceLayouts[index].Pieces[i] = d.PieceLayouts[index].Pieces[i];
                }
            }
            obj.Projectiles = new List<LevelObjectProjectile>();
            for (int index = 0; index < d.Projectiles.Count; index++)
            {
                var proj = d.Projectiles[index];
                proj = new LevelObjectProjectile(proj.Name)
                {
                    X = proj.X,
                    Y = proj.Y,
                    Xsp = proj.Xsp,
                    Ysp = proj.Ysp,
                    Xflip = proj.Xflip,
                    Yflip = proj.Yflip,
                    AssetIndex = proj.AssetIndex,
                    FrameIndex = proj.FrameIndex,
                };
                obj.Projectiles[index] = proj;
            }
            return obj;
        }