//usingディレクティブで名前空間の参照を簡単にします。
using System;
using System.Drawing;
using System.Windows.Forms;
using Wakaba;

namespace Game
{
    class Game
    {
        //オブジェクト変数を宣言します。
        private static Helper w;

        [STAThread]
        static void Main(string[] args)
        {
            try
            {
                //オブジェクト変数をインスタンス化します。
                w = new Helper();

                //若葉ヘルパーを初期化します。
                w.Initialize();

                //背景用スプライトを設定する
                w.SpriteCreate("背景用", SpriteLock.Properties.Resources.wall, Helper.TransparentColor.None);
                w.SpritePosition("背景用", 1, 0, 0);
                w.SpriteShow("背景用");

                //描画用スプライトを設定する
                w.SpriteCreate("描画用", 640, 480);
                w.SpritePosition("描画用", 0, 0, 0);
                w.SpriteShow("描画用");

                //ウィンドウを閉じるまで画面を更新します。
                do
                {
                    //乱数のシード値を設定します。
                    Random objRnd = new Random(DateTime.Now.Millisecond);

                    //スプライトをロックしてビットマップオブジェクトを取得します。
                    Bitmap objBmp = w.SpriteLock("描画用");
                    Graphics objGrp = Graphics.FromImage(objBmp);

                    //GDI+で線をランダムに描画します。
                    for (int i = 0; i < 50; i++)
                    {
                        Pen objPen = new Pen(Color.FromArgb(objRnd.Next(256), objRnd.Next(256), objRnd.Next(256)), 4);
                        objGrp.DrawLine(objPen, objRnd.Next(640), objRnd.Next(480), objRnd.Next(640), objRnd.Next(480));
                        objPen.Dispose();
                    }

                    objGrp.Dispose();
                    //スプライトをアンロックします。
                    w.SpriteUnlock("描画用", ref objBmp);

                    //スプライトを回転させます。
                    for (byte j = 0; j < 255; j++)
                    {
                        if (w.WindowClosing) break;
                        w.SpriteRotation("描画用", j);
                        w.SpriteTransparent("描画用", (byte)(255 - j));
                        w.ScreenRefresh(true);
                    }

                    //スプライトを透明で塗りつぶします。
                    w.SpriteFillColor("描画用");

                } while (!w.WindowClosing);

            }
            catch (Exception ex)
            {
                //若葉ヘルパーのエラーメッセージを表示します。
                MessageBox.Show(ex.Message + ex.StackTrace);
            }

            //若葉ヘルパーのオブジェクトを破棄します。
            w.Dispose();
        }
    }
}