public static LevelBackgroundGF CreateLevelBackground(GraphicsDevice device, GravitiForceLevel gfl, ContentManager content)
        {
            LevelBackgroundGF result = new LevelBackgroundGF();
            result.gfl = gfl;

            texture = content.Load<Texture2D>(@"gfx/Alien.bmap");

            /*
            result.declaration = new VertexDeclaration(device, VertexPositionTexture.VertexElements);

            //                 result.texture =  TextureLoader.FromFile(
            //                device,
            //                Path.Combine(DirectorySettings.MediaDir, textureFilename),
            //                D3DX.Default, D3DX.Default, D3DX.Default, 0, Format.Unknown,
            //                Pool.Managed, Filter.Triangle,
            //                Filter.Triangle, 0);

            Bitmap levelBitmap = gfl.GetBitmap();
            MemoryStream ms = new MemoryStream();
            levelBitmap = new Bitmap(levelBitmap);
            levelBitmap.Save(ms,System.Drawing.Imaging.ImageFormat.Bmp);;
            //levelBitmap.Save(@"c:\test.bmp",System.Drawing.Imaging.ImageFormat.Bmp);;
            ms.Position = 0;
            result.texture = Texture2D.FromFile(device, ms);

            //result.texture = content.Load<Texture2D>(@"test");
            //result.vertexes = VertexBuffer.CreateGeneric<Direct3D.CustomVertex.PositionTextured>(device,
            //    4, Usage.WriteOnly, Direct3D.CustomVertex.PositionTextured.Format, Pool.Managed, null);

            result.bounds = new Rectangle(0, 0, levelBitmap.Width, levelBitmap.Height);

            //result.vertexes.

            VertexPositionTexture[] pt = new VertexPositionTexture[4];
            result.vertexes = pt;
            pt[0].Position = new Vector3(result.bounds.Left, result.bounds.Top, 0);
            pt[1].Position = new Vector3(result.bounds.Right, result.bounds.Top, 0);
            pt[2].Position = new Vector3(result.bounds.Right, result.bounds.Bottom, 0);
            pt[3].Position = new Vector3(result.bounds.Left, result.bounds.Bottom, 0);

            pt[0].TextureCoordinate = new Vector2(0, 1);
            pt[1].TextureCoordinate = new Vector2(1, 1);
            pt[2].TextureCoordinate = new Vector2(1, 0);
            pt[3].TextureCoordinate = new Vector2(0, 0);

            result.levelWidth = levelBitmap.Width;
            */

            return result;
        }
        public static GravitiForceLevel ReadGravitiForceLevelFile(string fileName)
        {
            GravitiForceLevel gfl = new GravitiForceLevel();

            gfl.FileName = fileName;
            gfl.Name = gfl.FileName.Substring(2, gfl.FileName.LastIndexOf('.') - 2).Replace("~3f", "?");
            gfl.type = GetTypeOfLevel(gfl.FileName.Substring(0, 2));

            byte[] inBuffer;
            Assembly assembly = Assembly.GetCallingAssembly();
            using(Stream stream = assembly.GetManifestResourceStream(levelPath + "." + fileName))
            {
                inBuffer = new byte[stream.Length];
                stream.Read(inBuffer, 0, inBuffer.Length);
            }
            gfl.LevelData = gfl.Decrypt(inBuffer);

            gfl.playerBase = new Point[2];
            gfl.playerBase[0] = new Point(gfl.LevelData[94]  * 256 + gfl.LevelData[95],  gfl.LevelData[98]  * 256 + gfl.LevelData[99]);
            gfl.playerBase[1] = new Point(gfl.LevelData[102] * 256 + gfl.LevelData[103], gfl.LevelData[106] * 256 + gfl.LevelData[107]);

            return gfl;
        }
 private void levelTreeView_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
 {
     GravitiForceLevel gfl = null;
     TreeNode typeNode = levelTreeView.SelectedNode;
     if(typeNode != null)
     {
         gfl = typeNode.Tag as GravitiForceLevel;
     }
     if(gfl != null)
     {
         levelPictureBox.Image = gfl.GetBitmap();
         Settings.Current.FileName = gfl.FileName;
     }
 }
        public void OnResetDevice(object sender, EventArgs e)
        {
            Device dev = (Device)sender;
            gfl = null;

            playerShips = new ObjectShip[Settings.Current.Players.Length];

            if((levelTreeView.SelectedNode != null) && (levelTreeView.SelectedNode.Tag is GravitiForceLevel))
            {
                gfl = (GravitiForceLevel)levelTreeView.SelectedNode.Tag;
                levelBackground = LevelBackgroundGF.CreateLevelBackground(dev, gfl);

                shipBase = new ShipBase[2];
                shipBase[0] = new ShipBase(new Vector3((float)(gfl.playerBase[0].X - 104), (float)(997f - gfl.playerBase[0].Y), 0f));
                shipBase[1] = new ShipBase(new Vector3((float)(gfl.playerBase[1].X - 104), (float)(997f - gfl.playerBase[1].Y), 0f));

                for(int i = 0; i < playerShips.Length; i++)
                {
                    playerShips[i] = ObjectShip.CreateShip(dev);

                    playerShips[i].Position = shipBase[i].Position;
                }
                bullerBuffer = new BulletBuffer(dev);
            }
            else
            {
                //levelBackground = LevelBackgroundTest.CreateLevelBackground(dev);
            }
            lastTime = Environment.TickCount;

            deviceLost = false;
        }