-- 課題 しゃがみ攻撃とJ6A

----------------------------------------------------------------------------------------------------------
-- モーション値：ボタン操作マッピング
----------------------------------------------------------------------------------------------------------
ACT_UP = 0
ACT_DOWN = 1
ACT_LEFT = 2
ACT_RIGHT = 3
ACT_A = 4
ACT_B = 5
ACT_C = 6
ACT_D = 7
ACT_AB = 8
ACT_BC = 9
ACT_DOWNLEFT = 10
ACT_DOWNRIGHT = 11
ACT_UPLEFT = 12
ACT_UPRIGHT = 13

----------------------------------------------------------------------------------------------------------
-- 被ダメ学習によるガード操作時に連打で回避結界にならないようにするためのwait
----------------------------------------------------------------------------------------------------------
DAMAGE_GUARD_WAIT=15;

----------------------------------------------------------------------------------------------------------
-- ★重要★ グローバル変数 motionMapping はこのメソッドの下に定義されてます ★★
--	⇒いろいろあって 202_action_selector.luaに移動
----------------------------------------------------------------------------------------------------------
-- モーションマッピング初期化 
-- 行動関数は匿名関数( function() 〜 end )で登録。
-- ｷｬｰｲｸｻｰﾝ等に代表される変則飛翔には未対応・・・のはず。
--
--	覚書
--		disableWait		:true action実行後wait()しない。, false action実行後wait()する。
--		disableKeyReset	:true action実行後key_reset()しない。, false action実行後key_reset()する。
--		waitCutMyFrame	:true カットする, false カットしない。
----------------------------------------------------------------------------------------------------------
function getInitializedMotionMapping()

	local motionMap = MotionMap.new();
	
	-- 基本行動
	motionMap:putNewMotion(0, "棒立ち", 		function() key_reset(); end,					false, false, false);
	--motionMap:putNewMotion(1, "しゃがみ始",		function() key_reset(); key_on(ACT_DOWN); end,	false, true, false);
	motionMap:putNewMotion(2, "しゃがみ中",		function() key_reset(); key_on(ACT_DOWN); end,	false, true, false);
	--motionMap:putNewMotion(3, "しゃがみ終",		function() key_reset(); end,					false, false, false);
	motionMap:putNewMotion(4, "前進",			function() key_reset(); key_on(front); end,		false, true, false);
	motionMap:putNewMotion(5, "後退",			function() key_reset(); key_on(back); end,		false, true, false);
	motionMap:putNewMotion(6, "8J",				function() key_reset(); key_on(ACT_UP); end,	true, false, false);
	motionMap:putNewMotion(7, "9J",				function() key_reset(); key_on(u_front); end,	true, false, false);
	motionMap:putNewMotion(8, "7J",				function() key_reset(); key_on(u_back); end,	true, false, false);
	--motionMap:putNewMotion(9, "落下中",			function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,		true, false, false);-- 落下中は一応ガード入れとく
	--motionMap:putNewMotion(10, "着地",			function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,		true, false, false);

	-- 被ダメ関連　とりあえずガードしとく
	--ダウン					97
	--その場起き上がり開始時	98
	--[[
	motionMap:putNewMotion(50, "頭のけぞり（弱）",		function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(51, "頭のけぞり（中）",		function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(52, "頭のけぞり（大）",		function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(53, "回転のけぞり",			function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(57, "胴のけぞり（中）",		function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(58, "胴のけぞり（大）",		function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(62, "屈頭のけぞり（小）",	function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(63, "屈頭のけぞり（中）",	function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(64, "屈頭のけぞり（大）",	function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(65, "屈回転のけぞり",		function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(70, "空中ひるみ（小）",		function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(71, "空中ひるみ（中）",		function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(72, "垂直吹き飛び（小）",	function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(73, "垂直吹き飛び（中）",	function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(74, "吹き飛ばし属性付与",	function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(75, "横吹き飛び",			function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(76, "回転壁バウンド",		function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(77, "縦吹き飛び",			function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(78, "壁バウンド",			function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(88, "地面バウンド",			function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(89, "地面バウンド後",		function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	motionMap:putNewMotion(98, "被バウンド属性付与時",	function() key_reset(); key_on(back); wait(DAMAGE_GUARD_WAIT); end,	true, true, false);
	]]--

	-- ガード関連
	motionMap:putNewMotion(150, "立ちガード硬直:微",		function() key_reset(); key_on(back); end, 						false, true, false);
	motionMap:putNewMotion(151, "立ちガード硬直:小",		function() key_reset(); key_on(back); end, 						false, true, false);
	motionMap:putNewMotion(152, "立ちガード硬直:中",		function() key_reset(); key_on(back); end, 						false, true, false);
	motionMap:putNewMotion(153, "立ちガード硬直:大",		function() key_reset(); key_on(back); end, 						false, true, false);
	motionMap:putNewMotion(154, "しゃがみガード硬直:微",	function() key_reset(); key_on(ACT_DOWN); key_on(back); end,	false, true, false);
	motionMap:putNewMotion(155, "しゃがみガード硬直:小",	function() key_reset(); key_on(ACT_DOWN); key_on(back); end,	false, true, false);
	motionMap:putNewMotion(156, "しゃがみガード硬直:中",	function() key_reset(); key_on(ACT_DOWN); key_on(back); end,	false, true, false);
	motionMap:putNewMotion(157, "しゃがみガード硬直:大",	function() key_reset(); key_on(ACT_DOWN); key_on(back); end,	false, true, false);
	motionMap:putNewMotion(159, "立ちガード硬直(誤):微",	function() key_reset(); key_on(back); end,						false, true, false);
	motionMap:putNewMotion(160, "立ちガード硬直(誤):小",	function() key_reset(); key_on(back); end,						false, true, false);
	motionMap:putNewMotion(161, "立ちガード硬直(誤):中",	function() key_reset(); key_on(back); end,						false, true, false);
	motionMap:putNewMotion(164, "しゃがみガード硬直(誤):小",function() key_reset(); key_on(ACT_DOWN); key_on(back); end,	false, true, false);
	motionMap:putNewMotion(165, "しゃがみガード硬直(誤):中",function() key_reset(); key_on(ACT_DOWN); key_on(back); end,	false, true, false);
	motionMap:putNewMotion(156, "しゃがみガード",			function() key_reset(); key_on(ACT_DOWN); key_on(back); end,	false, true, false);
	motionMap:putNewMotion(158, "空中ガード",				function() key_reset(); key_on(back); end,						false, true, false);
	
	-- 受身関連
	--[[
	motionMap:putNewMotion(180, "前受身",			function() key_reset(); key_on(ACT_A); key_on(front); end, false, false, false);
	motionMap:putNewMotion(181, "後ろ受身",			function() key_reset(); key_on(ACT_A); key_on(back); end, false, false, false);
	motionMap:putNewMotion(197, "前起き上がり",		function() key_reset(); key_on(ACT_A); key_on(front); end, false, false, false);
	motionMap:putNewMotion(198, "後ろ起き上がり",	function() key_reset(); key_on(ACT_A); key_on(back); end, false, false, false);
	motionMap:putNewMotion(199, "その場起き上がり",	function() key_reset(); end, false, false, false);
	]]--

	-- ダッシュ関連
	motionMap:putNewMotion(200, "6D",	function() key_reset(); key_on(front); key_on(ACT_D); end, 			false,	true,	false);
	motionMap:putNewMotion(201, "4D",	function() key_reset(); key_on(back); key_on(ACT_D); end, 			false,	false,	false);
	motionMap:putNewMotion(202, "J66",	function() key_reset(); frontDash(); end,							true,	true,	false);
	motionMap:putNewMotion(203, "J44",	function() key_reset(); backDash(); end,							true,	true,	false);
	--motionMap:putNewMotion(202, "J66",	function() key_reset(); key_event(front); key_event(front); end,	true,	false,	false);
	--motionMap:putNewMotion(203, "J44",	function() key_reset(); key_event(back); key_event(back); end,		true,	false,	false);
	--motionMap:putNewMotion(204, "6D解除モーション",	function() key_reset(); end,							false,	false,	false);
	
	-- HJ関連
	motionMap:putNewMotion(208, "8HJ",	function() key_reset(); key_event(ACT_DOWN); key_event(ACT_UP);  end,	true, false, false);
	motionMap:putNewMotion(209, "9HJ",	function() key_reset(); key_event(ACT_DOWN); key_event(u_front); end,	true, false, false);
	motionMap:putNewMotion(210, "7HJ",	function() key_reset(); key_event(ACT_DOWN); key_event(u_back);  end,	true, false, false);
	--[[
	motionMap:putNewMotion(208, "8HJ",	function() key_reset(); key_on(ACT_D); key_on(ACT_UP);  end,	false, false, false);
	motionMap:putNewMotion(209, "9HJ",	function() key_reset(); key_on(ACT_D); key_on(u_front); end,	false, false, false);
	motionMap:putNewMotion(210, "7HJ",	function() key_reset(); key_on(ACT_D); key_on(u_back);  end,	false, false, false);
	]]--
	
	--JxD 飛翔8方向
	--motionMap:putNewMotion(2140, "飛翔転換硬直",	function() key_reset(); end, false, false, false);
	motionMap:putNewMotion(2141, "J1D",	function() otherKeyOff(); key_on(d_back); key_on(ACT_D); end,	false, true, false);
	motionMap:putNewMotion(2142, "J2D",	function() otherKeyOff(); key_on(ACT_DOWN); key_on(ACT_D); end,	false, true, false);
	motionMap:putNewMotion(2143, "J3D",	function() otherKeyOff(); key_on(d_front); key_on(ACT_D); end,	false, true, false);
	motionMap:putNewMotion(2144, "J4D",	function() otherKeyOff(); key_on(back); key_on(ACT_D); end,		false, true, false);
	motionMap:putNewMotion(2146, "J6D",	function() otherKeyOff(); key_on(front); key_on(ACT_D); end,	false, true, false);
	motionMap:putNewMotion(2147, "J7D",	function() otherKeyOff(); key_on(u_back); key_on(ACT_D); end,	false, true, false);
	motionMap:putNewMotion(2148, "J8D",	function() otherKeyOff(); key_on(ACT_UP); key_on(ACT_D); end,	false, true, false);
	motionMap:putNewMotion(2149, "J9D",	function() otherKeyOff(); key_on(u_front); key_on(ACT_D); end,	false, true, false);
	--motionMap:putNewMotion(215, "飛翔着地硬直",	function() key_reset(); end,							false, false, false);

	-- 回避結界
	motionMap:putNewMotion(220, "2結界",	function() key_reset(); key_on(ACT_DOWN); key_event(ACT_D); key_event(ACT_D); end,	true, false, false);
	motionMap:putNewMotion(222, "1結界",	function() key_reset(); key_on(d_back); key_event(ACT_D); key_event(ACT_D); end,	true, false, false);
	motionMap:putNewMotion(223, "6結界",	function() key_reset(); key_on(front); key_event(ACT_D); key_event(ACT_D); end,		true, false, false);
	motionMap:putNewMotion(224, "4結界",	function() key_reset(); key_on(back); key_event(ACT_D); key_event(ACT_D); end,		true, false, false);
	motionMap:putNewMotion(225, "J4結界",	function() key_reset(); key_on(back); key_event(ACT_D); key_event(ACT_D); end,		true, false, false);
	motionMap:putNewMotion(226, "J6結界",	function() key_reset(); key_on(front); key_event(ACT_D); key_event(ACT_D); end,		true, false, false);

	-- A打撃系操作
	motionMap:putNewMotion(301, "遠A",	function() key_reset(); key_on(ACT_A); end, 								true, false, false);
	motionMap:putNewMotion(302, "6A",	function() key_reset(); key_on(front); key_on(ACT_A); end,					true, false, false);
	motionMap:putNewMotion(303, "2A",	function() key_reset(); key_on(ACT_DOWN); key_on(ACT_A);end,				true, false, false);
	motionMap:putNewMotion(311, "遠2A",	function() key_reset(); key_on(ACT_DOWN); key_on(ACT_A);end,				true, false, false);
	motionMap:putNewMotion(304, "3A",	function() key_reset(); key_on(d_front); key_on(ACT_A); end,				true, false, false);
	motionMap:putNewMotion(330, "4A",	function() key_reset(); key_on(back); key_on(ACT_A); end,					true, false, false);
	--motionMap:putNewMotion(305, "DA",	function() key_reset(); dattack(ACT_A); end,								false, true , false);
	motionMap:putNewMotion(305, "DA",	function() key_reset(); dashAttack(ACT_A); end,								true, false, true);
	motionMap:putNewMotion(306, "JA",	function() key_reset(); key_on(ACT_A); end,									true,  false, false);
	motionMap:putNewMotion(325, "JAA",	function() key_reset(); key_on(ACT_A); end,									true, false, false);
	motionMap:putNewMotion(307, "J6A",	function() key_reset(); key_on(front); key_on(ACT_A); end,					true, false, false);
	motionMap:putNewMotion(308, "J2A",	function() key_reset(); key_on(ACT_DOWN); key_on(ACT_A); end,				true, false, false);
	motionMap:putNewMotion(309, "J8A",	function() key_reset(); key_on(ACT_UP); key_on(ACT_A); end,					true, false, false);
	-- Aコンボ
	motionMap:putNewMotion(300, "A",	function() key_reset(); key_on(ACT_A); end, true, false, false);
	motionMap:putNewMotion(320, "AA",	function() key_reset(); key_on(ACT_A); end, true, false, true);
	motionMap:putNewMotion(321, "AAA",	function() key_reset(); key_on(ACT_A); end, true, false, true);
	motionMap:putNewMotion(322, "AAAA",	function() key_reset(); key_on(ACT_A); end, true, false, true);
	motionMap:putNewMotion(323, "AAAAA",function() key_reset(); key_on(ACT_A); end, true, false, true);

	-- B射撃系
	motionMap:putNewMotion(400, "B",	function() key_reset(); key_on(ACT_B); end,								false, false, false); -- TODO キャラ別になるかも･･･。
	motionMap:putNewMotion(401, "6B",	function() key_reset(); key_on(front); key_on(ACT_B); end,				false, false, false);
	motionMap:putNewMotion(402, "2B",	function() key_reset(); key_on(ACT_DOWN); key_on(ACT_B); end,			true, false, false); -- 恣意的にしゃがんでから。
	motionMap:putNewMotion(407, "4B",	function() key_reset(); key_on(back); key_on(ACT_B); end,				true, false, false);
	motionMap:putNewMotion(404, "JB",	function() key_reset(); key_on(ACT_B); end,								true, false, false);
	motionMap:putNewMotion(406, "J2B",	function() key_reset(); key_on(ACT_DOWN); key_on(ACT_B); end,			true, false, false);
	motionMap:putNewMotion(409, "J4B",	function() key_reset(); key_on(back); key_on(ACT_B); end,				true, false, false);
	--motionMap:putNewMotion(408, "DB",	function() key_reset(); dattack(ACT_B); end							,	false, true , false);
	motionMap:putNewMotion(408, "DB",	function() key_reset(); dashAttack(ACT_B); end,							true, false, true );
	
	-- C射撃系
	motionMap:putNewMotion(410, "C",	function() key_reset(); key_on(ACT_C); end,								true, false, false);
	motionMap:putNewMotion(411, "6C",	function() key_reset(); key_on(front); key_on(ACT_C); end,				true, false, false);
	motionMap:putNewMotion(412, "2C",	function() key_reset(); key_on(ACT_DOWN); key_on(ACT_C); end,			true, false, false);
	motionMap:putNewMotion(414, "JC",	function() key_reset(); key_on(ACT_C); end,								true, false, false);
	motionMap:putNewMotion(415, "J6C",	function() key_reset(); key_on(front); key_on(ACT_C); end,				true, false, false);
	motionMap:putNewMotion(416, "J2C",	function() key_reset(); key_on(ACT_DOWN); key_on(ACT_C); end,			true, false, false);
	motionMap:putNewMotion(417, "J1C",	function() key_reset(); key_on(d_back); key_on(ACT_C); end,				true, false, false);
	--motionMap:putNewMotion(418, "DC",	function() key_reset(); dattack(ACT_C); end,							false, true , false);
	motionMap:putNewMotion(418, "DC",	function() key_reset(); dashAttack(ACT_C); end,							true, false, true );

	-- コマンド技
	motionMap:putNewMotion(500, "B人形操創", function() key_reset(); lvr236(ACT_B); end,	true, false, true);
	motionMap:putNewMotion(501, "C人形操創", function() key_reset(); lvr236(ACT_C); end,	true, false, true);
	motionMap:putNewMotion(520, "B人形無操", function() key_reset(); lvr623(ACT_B); end,	true, false, true);
	motionMap:putNewMotion(521, "C人形無操", function() key_reset(); lvr623(ACT_C); end,	true, false, true);
	motionMap:putNewMotion(540, "B人形置操", function() key_reset(); lvr214(ACT_B); end,	true, false, true);
	motionMap:putNewMotion(541, "C人形置操", function() key_reset(); lvr214(ACT_C); end,	true, false, true);
	motionMap:putNewMotion(542, "空中B置操", function() key_reset(); lvr214(ACT_B); end,	true, false, true);
	motionMap:putNewMotion(543, "空中C置操", function() key_reset(); lvr214(ACT_C); end,	true, false, true);
	motionMap:putNewMotion(560, "人形振起",  function() key_reset(); lvr22(ACT_C);  end,	true, false, true);

	-- スペルカード
	motionMap:putNewMotion(600, "魔符「アーティフルサクリファイス」",	function() key_reset(); key_on(ACT_BC); end,	true, false, false);
	motionMap:putNewMotion(601, "戦符「リトルレギオン」",				function() key_reset(); key_on(ACT_BC); end,	true, false, false);
	motionMap:putNewMotion(602, "咒符「上海人形」",						function() key_reset(); key_on(ACT_BC); end,	true, false, false);
	motionMap:putNewMotion(603, "魔操「リターンイナニメトネス」",		function() key_reset(); key_on(ACT_BC); end,	true, false, false);
	motionMap:putNewMotion(604, "戦操「ドールズウォー」",				function() key_reset(); key_on(ACT_BC); end,	true, false, false);
	motionMap:putNewMotion(605, "咒詛「蓬莱人形」",						function() key_reset(); key_on(ACT_BC); end,	true, false, false);
	motionMap:putNewMotion(606, "偵符「シーカードールズ」",				function() key_reset(); key_on(ACT_BC); end,	true, false, false);
	motionMap:putNewMotion(607, "紅符「和蘭人形」",						function() key_reset(); key_on(ACT_BC); end,	true, false, false);
	motionMap:putNewMotion(608, "人形「未来文楽」",						function() key_reset(); key_on(ACT_BC); end,	true, false, false);
	motionMap:putNewMotion(609, "注力「トリップワイヤー」",				function() key_reset(); key_on(ACT_BC); end,	true, false, false);
	motionMap:putNewMotion(610, "未定義610",							function() key_reset(); key_on(ACT_BC); end,	false, false, false);
	motionMap:putNewMotion(611, "未定義611",							function() key_reset(); key_on(ACT_BC); end,	false, false, false);
	--[[
	motionMap:putNewMotion(612, "未定義612",							function() key_reset(); key_on(ACT_BC); end,	false, false, false);
	motionMap:putNewMotion(613, "未定義613",							function() key_reset(); key_on(ACT_BC); end,	false, false, false);
	motionMap:putNewMotion(614, "未定義614",							function() key_reset(); key_on(ACT_BC); end,	false, false, false);
	motionMap:putNewMotion(615, "未定義615",							function() key_reset(); key_on(ACT_BC); end,	false, false, false);
	motionMap:putNewMotion(616, "未定義616",							function() key_reset(); key_on(ACT_BC); end,	false, false, false);
	motionMap:putNewMotion(617, "未定義617",							function() key_reset(); key_on(ACT_BC); end,	false, false, false);
	motionMap:putNewMotion(618, "未定義618",							function() key_reset(); key_on(ACT_BC); end,	false, false, false);
	motionMap:putNewMotion(619, "未定義619",							function() key_reset(); key_on(ACT_BC); end,	false, false, false);
	]]--

	-- システムカード
	motionMap:putNewMotion(690, "スキカ発動",	function() key_reset(); key_on(ACT_BC); end,	true, false, false);
	motionMap:putNewMotion(691, "気象発現",		function() key_reset(); key_on(ACT_BC); end,	true, false, false);
	motionMap:putNewMotion(692, "スペル増幅",	function() key_reset(); key_on(ACT_BC); end,	true, false, false);
	motionMap:putNewMotion(693, "体力回復",		function() key_reset(); key_on(ACT_BC); end,	true, false, false);
	motionMap:putNewMotion(694, "霊力回復",		function() key_reset(); key_on(ACT_BC); end,	true, false, false);
	motionMap:putNewMotion(695, "霊撃",			function() key_reset(); key_on(ACT_BC); end,	true, false, false);

	return motionMap;
end

----------------------------------------------------------------------------------------------------------
-- 方向キーのみ全オフ。飛翔コマンドで利用。
----------------------------------------------------------------------------------------------------------
function otherKeyOff()
	key_off(d_back);
	key_off(ACT_DOWN);
	key_off(d_front);
	key_off(back);
	key_off(front);
	key_off(u_back);
	key_off(ACT_UP);
	key_off(u_front);
end 


----------------------------------------------------------------------------------------------------------
--
-- Motionクラス:モーション値マッピング保持クラス
--
----------------------------------------------------------------------------------------------------------
MotionMap={};

	----------------------------------------------------------------------------------------------------------
	-- コンストラクタ
	----------------------------------------------------------------------------------------------------------
	function MotionMap.new()
		obj={};
		-- マッピング保持テーブル
		obj.motionMap={};
		return setmetatable(obj, {__index = MotionMap});
	end
	
	----------------------------------------------------------------------------------------------------------
	-- Motionが存在する場合true
	----------------------------------------------------------------------------------------------------------
	function MotionMap:containsKey(act)
		return self:get(act) ~= nil;
	end
	
	----------------------------------------------------------------------------------------------------------
	-- Motionを追加します。
	--	引数
	--		act		:モーション値(飛翔は2140〜2149)
	--		motion	:Motionインスタンス
	----------------------------------------------------------------------------------------------------------
	function MotionMap:put(act, motion)
		--table.insert(self.motionMap, act, motion);
		self.motionMap[act] = motion;
	end
	
	----------------------------------------------------------------------------------------------------------
	-- モーション値に対応するMotionインスタンスを取得します。
	--	引数
	--		act		:モーション値(飛翔は2140〜2149)
	--
	--	戻り値
	--		Motionインスタンス
	----------------------------------------------------------------------------------------------------------
	function MotionMap:get(act)
		return self.motionMap[act];
	end
	
	----------------------------------------------------------------------------------------------------------
	-- Motionインスタンスを新規作成してマッピングに追加します。めんどくさいので作った。
	--	引数
	--		act		:モーション値(飛翔は2140〜2149)
	--		name			:行動名。
	--		action			:行動関数。モーション値に対応した行動関数をセットする。
	--		disableWait		:true action実行後wait()しない。, false action実行後wait()する。
	--						 CaptureInfoで得られる行動フレーム分wait()するためのフラグ。
	--		disableKeyReset	:true action実行後key_reset()しない。, false action実行後key_reset()する。
	--						 actionで定義された行動実行後、key_reset()を呼び出す必要があるか。
	--		waitCutMyFrame	:true カットする, false カットしない。
	--						 行動関数実行後、CaptureInfoで得られる行動フレームから経過フレーム数を
	--						 カットするかどうか。SetInput()を利用した際に必要以上にwait()しないように
	--						 するためのフラグ。
	----------------------------------------------------------------------------------------------------------
	function MotionMap:putNewMotion(act, name, action, disableWait, disableKeyReset, waitCutMyFrame)
		motion = Motion.new(name, action, disableWait, disableKeyReset, waitCutMyFrame);
		self:put(act, motion);
	end


----------------------------------------------------------------------------------------------------------
--
-- モーション値:操作のマッピング保持クラス
--
----------------------------------------------------------------------------------------------------------
Motion={};

	----------------------------------------------------------------------------------------------------------
	-- コンストラクタ
	--	引数
	--		name			:行動名。
	--		action			:行動関数。モーション値に対応した行動関数をセットする。
	--		disableWait		:true action実行後wait()しない。, false action実行後wait()する。
	--						 CaptureInfoで得られる行動フレーム分wait()するためのフラグ。
	--		disableKeyReset	:true action実行後key_reset()しない。, false action実行後key_reset()する。
	--						 actionで定義された行動実行後、key_reset()を呼び出す必要があるか。
	--		waitCutMyFrame	:true カットする, false カットしない。
	--						 行動関数実行後、CaptureInfoで得られる行動フレームから経過フレーム数を
	--						 カットするかどうか。SetInput()を利用した際に必要以上にwait()しないように
	--						 するためのフラグ。
	----------------------------------------------------------------------------------------------------------
	function Motion.new(name, action, disableWait, disableKeyReset, waitCutMyFrame)

		obj={};
		-- 行動名
		obj.name = name;
		-- 行動関数
		obj.action = action;
		-- action実行後wait()実行フラグ
		obj.disableWait = disableWait;
		-- action実行後のkey_reset()実行フラグ
		obj.disableKeyReset = disableKeyReset;
		-- SetInput()を利用した際に必要以上にwait()しないようにするためのフラグ。
		obj.waitCutMyFrame = waitCutMyFrame;
		
		return setmetatable(obj, {__index = Motion});
	end
	
	----------------------------------------------------------------------------------------------------------
	-- このモーションの行動関数を実行します。
	----------------------------------------------------------------------------------------------------------
	function Motion:action()
		self.action();
	end
	
	----------------------------------------------------------------------------------------------------------
	-- このモーションが行動関数実行後、wait()するか。
	--	戻り値
	--		true action実行後wait()しない。, false action実行後wait()する。
	----------------------------------------------------------------------------------------------------------
	function Motion:isDisableWait()
		return self.disableWait;
	end

	----------------------------------------------------------------------------------------------------------
	-- このモーションが行動関数実行後、key_reset()するか。
	--	戻り値
	--		true action実行後key_reset()しない。, false action実行後key_reset()する。
	----------------------------------------------------------------------------------------------------------
	function Motion:isDisableKeyReset()
		return self.disableKeyReset;
	end
	
	----------------------------------------------------------------------------------------------------------
	-- 行動関数実行後、CaptureInfoで得られる行動フレームから経過フレーム数をカットするか。
	--	戻り値
	--		true カットする, false カットしない。
	----------------------------------------------------------------------------------------------------------
	function Motion:isWaitCutMyFrame()
		return self.waitCutMyFrame;
	end

