using System;
using System.Collections.Generic;
using System.Text;

using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;
using System.Drawing;

namespace DirectX_BallExample
{
    // ミサイルの集合を示すクラス
    class BombCollection
    {
        // DirectXのデバイスオブジェクト
        private Device device;
        // ミサイルサイズ
        private Size bombsize;

        // 画面サイズ
        private int maxwidth, maxheight;

        // ミサイルのテクスチャ
        private Texture texture;

        // ミサイルのコレクション
        List<Bomb> bombs = new List<Bomb>();

        public BombCollection(Device device, int maxwidth, int maxheight)
        {
            this.device = device;
            this.maxwidth = maxwidth;
            this.maxheight = maxheight;

            // テクスチャを作る
            Bitmap bmp = DirectX_BallExample.Properties.Resources.bomb;
            // 白を透明色に
            bmp.MakeTransparent(Color.White);
            bombsize = bmp.Size;

            texture = Texture.FromBitmap(
                device, bmp,
                Usage.None, Pool.Managed);
        }

        public void AddBomb(Point p)
        {
            // ミサイルを追加する
            bombs.Add(new Bomb(p.X, p.Y - bombsize.Height));
        }

        public void MoveBomb()
        {
            // ミサイルを動かす
            List<Bomb> removelist = new List<Bomb>();
            foreach (Bomb bomb in bombs)
            {
                bomb.Y -= 10;
                if (bomb.Y < 0)
                {
                    removelist.Add(bomb);
                }
            }
            // 範囲から消えたものを削除
            foreach (Bomb bomb in removelist)
            {
                bombs.Remove(bomb);
            }
        }

        public void DrawBomb(Sprite sprite)
        {
            // スプライトにミサイルを書き込む
            foreach (Bomb bomb in bombs)
            {
                sprite.Draw2D(texture, new Point(0, 0), 0,
                    new Point(bomb.X, bomb.Y), Color.White);
            }
        }
          
    }
    // ミサイルを示すクラス
    class Bomb
    {
        private int x, y;

        public Bomb(int x, int y)
        {
            this.x = x;
            this.y = y;
        }

        public int X
        {
            get { return x; }
            set { this.x = value; }
        }

        public int Y
        {
            get { return y; }
            set { this.y = value; }
        }
    }
}
