//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
            {
                bool blnIsPush = false;
                int intMode = 0;

                //オブジェクト変数をインスタンス化します。
                w = new Helper();

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

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

                //背景に文字列を描画する
                w.SpriteText("背景", "スプライト反転テスト スペースキーを押してください" + Environment.NewLine + "ESCキーを押すと終了します", 32, 32, "MS ゴシック", 16, FontStyle.Bold, Brushes.Black);

                //若葉スプライトを作成する
                w.SpriteCreate("若葉", MyGame1.Properties.Resources.wakaba, Helper.TransparentColor.Red);
                w.SpritePosition("若葉", 0, 192, 112);
                w.SpriteShow("若葉");

                do
                {
                    if (w.KeyPush(Helper.KeyCodes.CodeSpace) & (!blnIsPush))
                    {

                        blnIsPush = true;

                        switch (intMode)
                        {
                            case 0:
                                w.SpriteReverse("若葉", Helper.Reverse.Horizon);
                                intMode += 1;
                                break;
                            case 1:
                                w.SpriteReverse("若葉", Helper.Reverse.Horizon);
                                intMode += 1;
                                break;
                            case 2:
                                w.SpriteReverse("若葉", Helper.Reverse.Vertical);
                                intMode += 1;
                                break;
                            case 3:
                                w.SpriteReverse("若葉", Helper.Reverse.Vertical);
                                intMode += 1;
                                break;
                            case 4:
                                intMode = 0;
                                blnIsPush = false;
                                break;
                        }
                    }

                    if (!w.KeyPush(Helper.KeyCodes.CodeSpace))
                    {
                        blnIsPush = false;
                    }

                    w.ScreenRefresh(true);
                }
                while (!w.WindowClosing & !w.KeyPush(Helper.KeyCodes.CodeEscape));
            
            }
            catch (Exception ex)
            {
                //エラーメッセージを表示します。
                MessageBox.Show(ex.Message + ex.StackTrace);
            }

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