using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using _2DGAMELIB;

namespace SlaveMatrix
{
    public class TrainingUI : Ele
    {
    	private ulong 媚薬投与価格 = 10000000uL;

    	private ConstProp CP = new ConstProp();


    	public ModeEventDispatcher Med;

    	public RenderArea Are; 
        private RenderArea Film;

        public Character Cha;

    	public Body Bod;

    	public InfoPanel ip;


        //tools
    	public ペニス ペニス;
    	public マウス マウス;
    	public ハンド ハンド右;
    	public ハンド ハンド左;
    	public ロータ ロータ;
    	public バイブ_コモン コモン;
    	public バイブ_ディル ディル;
    	public バイブ_アナル アナル;
    	public バイブ_デンマ デンマ;
    	public バイブ_ドリル ドリル;
    	public パール パール;
    	public 羽根箒 羽根箒;
    	public 調教鞭 調教鞭;
    	public T剃刀 T剃刀;
    	public キャップ1 キャップ1;
    	public キャップ1 キャップ2;
    	public キャップ1 キャップ3;

    	public CM ペニスCM;
    	public CM マウスCM;
    	public CM ハンド右CM;
    	public CM ハンド左CM;
    	public CM ロータCM;
    	public CM コモンCM;
    	public CM ディルCM;
    	public CM アナルCM;
    	public CM デンマCM;
    	public CM ドリルCM;
    	public CM パールCM;
    	public CM 羽根箒CM;
    	public CM 調教鞭CM;
    	public CM T剃刀CM;
    	public CM キャップ1CM;
    	public CM キャップ2CM;
        public CM キャップ3CM;
        private CM focus;
        private CM hcm;

        //tool animations?
        public 挿入処理 ペニス挿入;
    	public 挿入処理 マウス挿入;
    	public 挿入処理 ハンド挿入;
    	public 挿入処理 ロータ挿入;
    	public 挿入処理 コモン挿入;
    	public 挿入処理 ディル挿入;
    	public 挿入処理 アナル挿入;
    	public 挿入処理 デンマ挿入;
    	public 挿入処理 ドリル挿入;
    	public 挿入処理 パール挿入;
    	public 羽箒処理 羽箒処理;
    	public 剃刀処理 剃刀処理;
    	public 調鞭処理 調鞭処理;
    	public ハンド処理 ハンド処理;
    	public マウス処理 マウス処理;
    	public ペニス処理 ペニス処理;
    	public キャップ処理 キャップ処理;
        private 挿入処理 挿入処理f;
        public 挿入処理 挿入処理s; 
        private 挿入処理 ef;



        //ui elements
        public But 調教終了;
    	public But 拘束具;
    	public But 目隠帯;
    	public But 玉口枷;
    	public But 断面;
    	public But 媚薬;
    	public But 撮影;
        public But SlaveStamina;
        public But PlayerStamina;

        private Swi 拘束具sw = new Swi(Color.OrangeRed);
    	private Swi 目隠帯sw = new Swi(Color.OrangeRed);
    	private Swi 玉口枷sw = new Swi(Color.OrangeRed);
    	private Swi 断面sw = new Swi(Color.OrangeRed);

    	public Gau 体力sゲージ;
    	public Gau 絶頂sゲージ;
    	public Gau 興奮sゲージ;
    	public Gau 精力mゲージ;
    	public Gau 射精mゲージ;
    	public Gau 興奮mゲージ;

    	public Tex ステート;
        public Tex InfoBox;
        public Tex SensitivityBox;



        //misc flags
        public bool ステート描画;
        public bool ハンド左表示;
        public bool コキ_; 
        private bool 持ち手_;
        public bool 膣i肛f;
        public bool 肛f;
        public bool 肛oh;
        public bool IsTB;
        public bool 押し状態;
        private bool IsTool;
        private bool sf = true;
        public bool 強制拘束;
        public bool 拘束bu;
        public bool 発情bu;



        public 射精 射精;

    	public Motion 絶頂ゲージ点滅;
    	public Motion 射精ゲージ点滅;
    	public Motions Mots = new Motions();


        //moan queue :skull:
    	public Onomatopoeia 擬音;
    	public Queue<Action<RenderArea>> 擬音キュー = new Queue<Action<RenderArea>>();

        //animation queue?
        public List<挿入処理> SubFocus = new List<挿入処理>();

        private MouseButtons HeldButton;

    	public double X;
    	public double Y;


    	public Color 羽根箒先端hc
    	{
    		get
    		{
    			ShapePart x0Y0_羽根 = 羽根箒.X0Y0_羽根1;
    			return Med.GetHitColor(Med.FromBasePosition(x0Y0_羽根.ToGlobal(x0Y0_羽根.JP[1].Joint)));
    		}
    	}

    	public bool Is挿入
    	{
    		get
    		{
    			if ((focus != ペニスCM || !ペニス挿入.Is挿入) && (focus != マウスCM || !マウス挿入.Is挿入) && (focus != ハンド右CM || !ハンド挿入.Is挿入) && (focus != ロータCM || !ロータ挿入.Is挿入) && (focus != コモンCM || !コモン挿入.Is挿入) && (focus != ディルCM || !ディル挿入.Is挿入) && (focus != アナルCM || !アナル挿入.Is挿入) && (focus != デンマCM || !デンマ挿入.Is挿入) && (focus != ドリルCM || !ドリル挿入.Is挿入))
    			{
    				if (focus == パールCM)
    				{
    					return パール挿入.Is挿入;
    				}
    				return false;
    			}
    			return true;
    		}
    	}

    	public bool Is脚修正1
    	{
    		get
    		{
    			if (!ペニス挿入.Is膣 && !ペニス挿入.Is肛 && !ペニス挿入.Is糸 && !マウス挿入.Is膣 && !マウス挿入.Is肛 && !マウス挿入.Is糸 && !ハンド挿入.Is膣 && !ハンド挿入.Is肛 && !ハンド挿入.Is糸 && !ロータ挿入.Is膣 && !ロータ挿入.Is肛 && !ロータ挿入.Is糸 && !コモン挿入.Is膣 && !コモン挿入.Is肛 && !コモン挿入.Is糸 && !ディル挿入.Is膣 && !ディル挿入.Is肛 && !ディル挿入.Is糸 && !アナル挿入.Is膣 && !アナル挿入.Is肛 && !アナル挿入.Is糸 && !デンマ挿入.Is膣 && !デンマ挿入.Is肛 && !デンマ挿入.Is糸 && !ドリル挿入.Is膣 && !ドリル挿入.Is肛 && !ドリル挿入.Is糸 && !パール挿入.Is膣 && !パール挿入.Is肛 && !パール挿入.Is糸 && !ハンド処理.Isくぱぁ && !Player.Is性器接触)
    			{
    				return Cha.IsUrinating();
    			}
    			return true;
    		}
    	}

    	public bool Is脚修正2
    	{
    		get
    		{
    			if (!ペニス処理.Isパイズリ && !ハンド処理.Is乳繰り && !ハンド処理.Is乳摘み && !ハンド処理.Is乳捏ね && !ペニス処理.手コキ.Run)
    			{
    				return Player.CurrentContactType == ContactType.Milk;
    			}
    			return true;
    		}
    	}

    	public bool Isモード
    	{
    		get
    		{
    			if (!Is挿入 && (focus != ハンド右CM || !ハンド処理.Isモード) && (focus != マウスCM || !マウス処理.Isモード) && (focus != ペニスCM || !ペニス処理.Isパイズリ))
    			{
    				return コキ;
    			}
    			return true;
    		}
    	}

    	public bool コキ
    	{
    		get
    		{
    			return コキ_;
    		}
    		set
    		{
    			コキ_ = value;
    			ペニスCM.Under = value;
    		}
    	}

    	public CM Focus
    	{
    		get
    		{
    			return focus;
    		}
    		set
    		{
    			FocusReset();
    			Focus_nr = value;
    			if (Med.Mode == "Training" && Cha != null && Cha.CharacterData.Lust > 0.5 && RNG.XS.NextBool())
    			{
    				Cha.EyeTracking.Start();
    			}
    		}
    	}

    	public CM Focus_nr
    	{
    		get
    		{
    			return focus;
    		}
    		set
    		{
    			focus = value;
    			focus.StaShow = false;
    			focus.使用状態 = UsageStatus.InUse;
    			focus.Ele.Intensity = 1.0;
    			if (focus == 羽根箒CM)
    			{
    				羽根箒.角度B = -90.0;
    			}
    		}
    	}

    	public bool 持ち手
    	{
    		get
    		{
    			return 持ち手_;
    		}
    		set
    		{
    			持ち手_ = value;
    			if (持ち手_)
    			{
    				ハンド右.SetHitFalse();
    				ハンド右CM.使用状態 = UsageStatus.InUse;
    			}
    			else if (Focus != ハンド右CM)
    			{
    				ハンド右.SetHitTrue();
    				ハンド右CM.使用状態 = UsageStatus.Standby;
    			}
    		}
    	}

    	public bool Is乳弄り
    	{
    		get
    		{
    			if (!ハンド処理.Is乳捏ね && !ハンド処理.Is乳摘み && !ハンド処理.Is乳繰り && (!ペニス処理.Isパイズリ || ペニス処理.Isパイズリ他動) && !ハンド処理.Is核捏ね)
    			{
    				return ハンド挿入.Is膣;
    			}
    			return true;
    		}
    	}

    	public bool Is口挿入
    	{
    		get
    		{
    			if (!ペニス挿入.Is口 && !マウス挿入.Is口 && !ハンド挿入.Is口 && !ロータ挿入.Is口 && !コモン挿入.Is口 && !ディル挿入.Is口 && !アナル挿入.Is口 && !デンマ挿入.Is口 && !ドリル挿入.Is口)
    			{
    				return パール挿入.Is口;
    			}
    			return true;
    		}
    	}

    	public bool Is膣挿入
    	{
    		get
    		{
    			if (!ペニス挿入.Is膣 && !マウス挿入.Is膣 && !ハンド挿入.Is膣 && !ロータ挿入.Is膣 && !コモン挿入.Is膣 && !ディル挿入.Is膣 && !アナル挿入.Is膣 && !デンマ挿入.Is膣 && !ドリル挿入.Is膣)
    			{
    				return パール挿入.Is膣;
    			}
    			return true;
    		}
    	}

    	public bool Is肛挿入
    	{
    		get
    		{
    			if (!ペニス挿入.Is肛 && !マウス挿入.Is肛 && !ハンド挿入.Is肛 && !ロータ挿入.Is肛 && !コモン挿入.Is肛 && !ディル挿入.Is肛 && !アナル挿入.Is肛 && !デンマ挿入.Is肛 && !ドリル挿入.Is肛)
    			{
    				return パール挿入.Is肛;
    			}
    			return true;
    		}
    	}

    	public bool Is糸挿入
    	{
    		get
    		{
    			if (!ペニス挿入.Is糸 && !マウス挿入.Is糸 && !ハンド挿入.Is糸 && !ロータ挿入.Is糸 && !コモン挿入.Is糸 && !ディル挿入.Is糸 && !アナル挿入.Is糸 && !デンマ挿入.Is糸 && !ドリル挿入.Is糸)
    			{
    				return パール挿入.Is糸;
    			}
    			return true;
    		}
    	}

    	public bool Isフォーカス糸挿入
    	{
    		get
    		{
    			if ((focus != ペニスCM || !ペニス挿入.Is糸) && (focus != マウスCM || !マウス挿入.Is糸) && (focus != ハンド右CM || !ハンド挿入.Is糸) && (focus != ロータCM || !ロータ挿入.Is糸) && (focus != コモンCM || !コモン挿入.Is糸) && (focus != ディルCM || !ディル挿入.Is糸) && (focus != アナルCM || !アナル挿入.Is糸) && (focus != デンマCM || !デンマ挿入.Is糸) && (focus != ドリルCM || !ドリル挿入.Is糸))
    			{
    				if (focus == パールCM)
    				{
    					return パール挿入.Is糸;
    				}
    				return false;
    			}
    			return true;
    		}
    	}

    	public bool IsSub糸挿入 => SubFocus.Any((挿入処理 e) => e.Is糸);

    	public bool Isフォーカス膣肛挿入
    	{
    		get
    		{
    			if ((focus != ペニスCM || (!ペニス挿入.Is膣 && !ペニス挿入.Is肛)) && (focus != マウスCM || (!マウス挿入.Is膣 && !マウス挿入.Is肛)) && (focus != ハンド右CM || (!ハンド挿入.Is膣 && !ハンド挿入.Is肛)) && (focus != ロータCM || (!ロータ挿入.Is膣 && !ロータ挿入.Is肛)) && (focus != コモンCM || (!コモン挿入.Is膣 && !コモン挿入.Is肛)) && (focus != ディルCM || (!ディル挿入.Is膣 && !ディル挿入.Is肛)) && (focus != アナルCM || (!アナル挿入.Is膣 && !アナル挿入.Is肛)) && (focus != デンマCM || (!デンマ挿入.Is膣 && !デンマ挿入.Is肛)) && (focus != ドリルCM || (!ドリル挿入.Is膣 && !ドリル挿入.Is肛)))
    			{
    				if (focus == パールCM)
    				{
    					if (!パール挿入.Is膣)
    					{
    						return パール挿入.Is肛;
    					}
    					return true;
    				}
    				return false;
    			}
    			return true;
    		}
    	}



    	public void 発音(Vector2D p, string s, Color c, double d, bool b)
    	{
    		擬音キュー.Enqueue(delegate(RenderArea a)
    		{
    			擬音.Sound(a, p, s, new Font("MS Gothic", 1f), c, d, b);
    		});
    	}

    	public void 潮吹()
    	{
    		擬音キュー.Enqueue(delegate(RenderArea a)
    		{
    			擬音.Sound(a, Bod.尿道位置.GetAreaPoint(0.04), Sta.潮吹.GetVal(Player.変化V_潮吹, Player.変化V_固有値乱数), new Font("MS Gothic", 1f), Color.Azure, 0.2 + 0.2 * RNG.XS.NextDouble() * Player.変化V_潮吹, b: true);
    		});
    	}

    	public void 放尿()
    	{
    		if (CP.GetFlag(0.1 + 0.1 * Player.変化V_放尿 * 0.8))
    		{
    			擬音キュー.Enqueue(delegate(RenderArea a)
    			{
    				擬音.Sound(a, Bod.尿道位置.GetAreaPoint(0.04), Sta.放尿.GetVal(Player.変化V_放尿, Player.変化V_固有値乱数), new Font("MS Gothic", 1f), Col.Black, 0.2 + 0.2 * RNG.XS.NextDouble() * Player.変化V_放尿, b: true);
    			});
    		}
    	}

    	public void 口腔演出()
    	{
    	}

    	public void 肌体演出()
    	{
    	}

    	public void 乳房演出()
    	{
    	}

    	public void 乳首演出()
    	{
    	}

    	public void 陰核演出()
    	{
    	}

    	public void 膣腔演出()
    	{
    	}

    	public void 肛門演出()
    	{
    	}

    	public void 出糸演出()
    	{
    	}

    	public IEnumerable<CM> EnumCM()
    	{
    		yield return ペニスCM;
    		yield return マウスCM;
    		yield return ハンド右CM;
    		yield return ロータCM;
    		yield return コモンCM;
    		yield return ディルCM;
    		yield return アナルCM;
    		yield return デンマCM;
    		yield return ドリルCM;
    		yield return パールCM;
    		yield return 羽根箒CM;
    		yield return 調教鞭CM;
    		yield return T剃刀CM;
    		yield return キャップ1CM;
    		yield return キャップ2CM;
    		yield return キャップ3CM;
    	}

    	public void Set挿入Position()
    	{
    		ペニス挿入.SetPosition();
    		マウス挿入.SetPosition();
    		ハンド挿入.SetPosition();
    		ロータ挿入.SetPosition();
    		コモン挿入.SetPosition();
    		ディル挿入.SetPosition();
    		アナル挿入.SetPosition();
    		デンマ挿入.SetPosition();
    		ドリル挿入.SetPosition();
    		パール挿入.SetPosition();
    	}

    	private void Set_ペニス(Ele t)
    	{
    		t.位置B = ペニス.AreM.Position;
    	}

    	private void Set_ロータ(Ele t)
    	{
    		switch (ロータ.Yi)
    		{
    		case 0:
    			t.位置B = ロータ.X0Y0_ロータ.ToGlobal_nc(ロータ.X0Y0_ロータ.JP[1].Joint.AddY(0.004));
    			break;
    		case 1:
    			t.位置B = ロータ.X0Y1_ロータ.ToGlobal_nc(ロータ.X0Y1_ロータ.JP[1].Joint.AddY(0.004));
    			break;
    		case 2:
    			t.位置B = ロータ.X0Y2_ロータ.ToGlobal_nc(ロータ.X0Y2_ロータ.JP[1].Joint.AddY(0.004));
    			break;
    		case 3:
    			t.位置B = ロータ.X0Y3_ロータ.ToGlobal_nc(ロータ.X0Y3_ロータ.JP[0].Joint.AddY(0.004));
    			break;
    		default:
    			t.位置B = ロータ.X0Y4_ロータ.ToGlobal_nc(ロータ.X0Y4_ロータ.JP[0].Joint.AddY(0.004));
    			break;
    		}
    	}

    	private void Set_コモン(Ele t)
    	{
    		switch (コモン.Yi)
    		{
    		case 0:
    			t.位置B = コモン.X0Y0_ユニット_ユニット.ToGlobal_nc(コモン.X0Y0_ユニット_ユニット.JP[6].Joint);
    			break;
    		case 1:
    			t.位置B = コモン.X0Y1_ユニット_ユニット.ToGlobal_nc(コモン.X0Y1_ユニット_ユニット.JP[6].Joint);
    			break;
    		case 2:
    			t.位置B = コモン.X0Y2_ユニット_ユニット.ToGlobal_nc(コモン.X0Y2_ユニット_ユニット.JP[6].Joint);
    			break;
    		case 3:
    			t.位置B = コモン.X0Y3_ユニット_ユニット.ToGlobal_nc(コモン.X0Y3_ユニット_ユニット.JP[6].Joint);
    			break;
    		default:
    			t.位置B = コモン.X0Y4_ユニット_ユニット.ToGlobal_nc(コモン.X0Y4_ユニット_ユニット.JP[6].Joint);
    			break;
    		}
    	}

    	private void Set_ディル(Ele t)
    	{
    		switch (ディル.Yi)
    		{
    		case 0:
    			t.位置B = ディル.X0Y0_ユニット_ユニット.ToGlobal_nc(ディル.X0Y0_ユニット_ユニット.JP[6].Joint);
    			break;
    		case 1:
    			t.位置B = ディル.X0Y1_ユニット_ユニット.ToGlobal_nc(ディル.X0Y1_ユニット_ユニット.JP[6].Joint);
    			break;
    		case 2:
    			t.位置B = ディル.X0Y2_ユニット_ユニット.ToGlobal_nc(ディル.X0Y2_ユニット_ユニット.JP[6].Joint);
    			break;
    		case 3:
    			t.位置B = ディル.X0Y3_ユニット_ユニット.ToGlobal_nc(ディル.X0Y3_ユニット_ユニット.JP[6].Joint);
    			break;
    		default:
    			t.位置B = ディル.X0Y4_ユニット_ユニット.ToGlobal_nc(ディル.X0Y4_ユニット_ユニット.JP[6].Joint);
    			break;
    		}
    	}

    	private void Set_アナル(Ele t)
    	{
    		switch (アナル.Yi)
    		{
    		case 0:
    			t.位置B = アナル.X0Y0_ユニット_ユニット.ToGlobal_nc(アナル.X0Y0_ユニット_ユニット.JP[6].Joint);
    			break;
    		case 1:
    			t.位置B = アナル.X0Y1_ユニット_ユニット.ToGlobal_nc(アナル.X0Y1_ユニット_ユニット.JP[6].Joint);
    			break;
    		case 2:
    			t.位置B = アナル.X0Y2_ユニット_ユニット.ToGlobal_nc(アナル.X0Y2_ユニット_ユニット.JP[6].Joint);
    			break;
    		case 3:
    			t.位置B = アナル.X0Y3_ユニット_ユニット.ToGlobal_nc(アナル.X0Y3_ユニット_ユニット.JP[6].Joint);
    			break;
    		default:
    			t.位置B = アナル.X0Y4_ユニット_ユニット.ToGlobal_nc(アナル.X0Y4_ユニット_ユニット.JP[6].Joint);
    			break;
    		}
    	}

    	private void Set_デンマ(Ele t)
    	{
    		switch (デンマ.Yi)
    		{
    		case 0:
    			t.位置B = デンマ.X0Y0_ユニット_ユニット.ToGlobal_nc(デンマ.X0Y0_ユニット_ユニット.JP[6].Joint);
    			break;
    		case 1:
    			t.位置B = デンマ.X0Y1_ユニット_ユニット.ToGlobal_nc(デンマ.X0Y1_ユニット_ユニット.JP[6].Joint);
    			break;
    		case 2:
    			t.位置B = デンマ.X0Y2_ユニット_ユニット.ToGlobal_nc(デンマ.X0Y2_ユニット_ユニット.JP[6].Joint);
    			break;
    		case 3:
    			t.位置B = デンマ.X0Y3_ユニット_ユニット.ToGlobal_nc(デンマ.X0Y3_ユニット_ユニット.JP[6].Joint);
    			break;
    		default:
    			t.位置B = デンマ.X0Y4_ユニット_ユニット.ToGlobal_nc(デンマ.X0Y4_ユニット_ユニット.JP[6].Joint);
    			break;
    		}
    	}

    	private void Set_ドリル(Ele t)
    	{
    		switch (ドリル.Xi)
    		{
    		case 0:
    			switch (ドリル.Yi)
    			{
    			case 0:
    				t.位置B = ドリル.X0Y0_ユニット_ユニット.ToGlobal_nc(ドリル.X0Y0_ユニット_ユニット.JP[6].Joint);
    				break;
    			case 1:
    				t.位置B = ドリル.X0Y1_ユニット_ユニット.ToGlobal_nc(ドリル.X0Y1_ユニット_ユニット.JP[6].Joint);
    				break;
    			case 2:
    				t.位置B = ドリル.X0Y2_ユニット_ユニット.ToGlobal_nc(ドリル.X0Y2_ユニット_ユニット.JP[6].Joint);
    				break;
    			case 3:
    				t.位置B = ドリル.X0Y3_ユニット_ユニット.ToGlobal_nc(ドリル.X0Y3_ユニット_ユニット.JP[6].Joint);
    				break;
    			default:
    				t.位置B = ドリル.X0Y4_ユニット_ユニット.ToGlobal_nc(ドリル.X0Y4_ユニット_ユニット.JP[6].Joint);
    				break;
    			}
    			break;
    		case 1:
    			switch (ドリル.Yi)
    			{
    			case 0:
    				t.位置B = ドリル.X1Y0_ユニット_ユニット.ToGlobal_nc(ドリル.X1Y0_ユニット_ユニット.JP[6].Joint);
    				break;
    			case 1:
    				t.位置B = ドリル.X1Y1_ユニット_ユニット.ToGlobal_nc(ドリル.X1Y1_ユニット_ユニット.JP[6].Joint);
    				break;
    			case 2:
    				t.位置B = ドリル.X1Y2_ユニット_ユニット.ToGlobal_nc(ドリル.X1Y2_ユニット_ユニット.JP[6].Joint);
    				break;
    			case 3:
    				t.位置B = ドリル.X1Y3_ユニット_ユニット.ToGlobal_nc(ドリル.X1Y3_ユニット_ユニット.JP[6].Joint);
    				break;
    			default:
    				t.位置B = ドリル.X1Y4_ユニット_ユニット.ToGlobal_nc(ドリル.X1Y4_ユニット_ユニット.JP[6].Joint);
    				break;
    			}
    			break;
    		default:
    			switch (ドリル.Yi)
    			{
    			case 0:
    				t.位置B = ドリル.X2Y0_ユニット_ユニット.ToGlobal_nc(ドリル.X2Y0_ユニット_ユニット.JP[6].Joint);
    				break;
    			case 1:
    				t.位置B = ドリル.X2Y1_ユニット_ユニット.ToGlobal_nc(ドリル.X2Y1_ユニット_ユニット.JP[6].Joint);
    				break;
    			case 2:
    				t.位置B = ドリル.X2Y2_ユニット_ユニット.ToGlobal_nc(ドリル.X2Y2_ユニット_ユニット.JP[6].Joint);
    				break;
    			case 3:
    				t.位置B = ドリル.X2Y3_ユニット_ユニット.ToGlobal_nc(ドリル.X2Y3_ユニット_ユニット.JP[6].Joint);
    				break;
    			default:
    				t.位置B = ドリル.X2Y4_ユニット_ユニット.ToGlobal_nc(ドリル.X2Y4_ユニット_ユニット.JP[6].Joint);
    				break;
    			}
    			break;
    		}
    	}

    	private void Set_パール(Ele t)
    	{
    		switch (パール.Yi)
    		{
    		case 0:
    			t.位置B = パール.X0Y0_輪下.ToGlobal_nc(パール.X0Y0_輪下.JP[0].Joint);
    			break;
    		case 1:
    			t.位置B = パール.X0Y1_輪下.ToGlobal_nc(パール.X0Y1_輪下.JP[0].Joint);
    			break;
    		case 2:
    			t.位置B = パール.X0Y2_輪下.ToGlobal_nc(パール.X0Y2_輪下.JP[0].Joint);
    			break;
    		case 3:
    			t.位置B = パール.X0Y3_輪下.ToGlobal_nc(パール.X0Y3_輪下.JP[0].Joint);
    			break;
    		case 4:
    			t.位置B = パール.X0Y4_輪下.ToGlobal_nc(パール.X0Y4_輪下.JP[0].Joint);
    			break;
    		case 5:
    			t.位置B = パール.X0Y5_輪下.ToGlobal_nc(パール.X0Y5_輪下.JP[0].Joint);
    			break;
    		case 6:
    			t.位置B = パール.X0Y6_輪下.ToGlobal_nc(パール.X0Y6_輪下.JP[0].Joint);
    			break;
    		case 7:
    			t.位置B = パール.X0Y7_輪下.ToGlobal_nc(パール.X0Y7_輪下.JP[0].Joint);
    			break;
    		case 8:
    			t.位置B = パール.X0Y8_輪下.ToGlobal_nc(パール.X0Y8_輪下.JP[0].Joint);
    			break;
    		case 9:
    			t.位置B = パール.X0Y9_輪下.ToGlobal_nc(パール.X0Y9_輪下.JP[0].Joint);
    			break;
    		case 10:
    			t.位置B = パール.X0Y10_輪下.ToGlobal_nc(パール.X0Y10_輪下.JP[0].Joint);
    			break;
    		case 11:
    			t.位置B = パール.X0Y11_輪下.ToGlobal_nc(パール.X0Y11_輪下.JP[0].Joint);
    			break;
    		case 12:
    			t.位置B = パール.X0Y12_輪下.ToGlobal_nc(パール.X0Y12_輪下.JP[0].Joint);
    			break;
    		case 13:
    			t.位置B = パール.X0Y13_輪下.ToGlobal_nc(パール.X0Y13_輪下.JP[0].Joint);
    			break;
    		case 14:
    			t.位置B = パール.X0Y14_輪下.ToGlobal_nc(パール.X0Y14_輪下.JP[0].Joint);
    			break;
    		case 15:
    			t.位置B = パール.X0Y15_輪下.ToGlobal_nc(パール.X0Y15_輪下.JP[0].Joint);
    			break;
    		default:
    			t.位置B = パール.X0Y16_輪下.ToGlobal_nc(パール.X0Y16_輪下.JP[0].Joint);
    			break;
    		}
    	}

    	private void Set_羽根箒(Ele t)
    	{
    		t.位置B = 羽根箒.X0Y0_柄.ToGlobal_nc(羽根箒.X0Y0_柄.JP[1].Joint);
    		t.角度C = 羽根箒.X0Y0_柄.Angle;
    	}

    	private void Set_調教鞭(Ele t)
    	{
    		int num = -45;
    		if (調教鞭.Xi == 0)
    		{
    			switch (調教鞭.Yi)
    			{
    			case 0:
    				t.位置B = 調教鞭.X0Y0_柄.ToGlobal_nc(調教鞭.X0Y0_柄.JP[1].Joint);
    				t.角度C = 調教鞭.X0Y0_柄.Angle;
    				break;
    			case 1:
    				t.位置B = 調教鞭.X0Y1_柄.ToGlobal_nc(調教鞭.X0Y1_柄.JP[1].Joint);
    				t.角度C = 調教鞭.X0Y1_柄.Angle;
    				break;
    			case 2:
    				t.位置B = 調教鞭.X0Y2_柄.ToGlobal_nc(調教鞭.X0Y2_柄.JP[1].Joint);
    				t.角度C = 調教鞭.X0Y2_柄.Angle;
    				break;
    			case 3:
    				t.位置B = 調教鞭.X0Y3_柄.ToGlobal_nc(調教鞭.X0Y3_柄.JP[1].Joint);
    				t.角度C = 調教鞭.X0Y3_柄.Angle;
    				break;
    			default:
    				t.位置B = 調教鞭.X0Y4_柄.ToGlobal_nc(調教鞭.X0Y4_柄.JP[1].Joint);
    				t.角度C = 調教鞭.X0Y4_柄.Angle;
    				break;
    			}
    		}
    		else if (調教鞭.Yi == 0)
    		{
    			t.位置B = 調教鞭.X1Y0_柄.ToGlobal_nc(調教鞭.X1Y0_柄.JP[1].Joint);
    			t.角度C = (double)((調教鞭.Xi != 0) ? num : 0) + 調教鞭.X0Y0_柄.Angle;
    		}
    		else
    		{
    			t.位置B = 調教鞭.X1Y4_柄.ToGlobal_nc(調教鞭.X1Y4_柄.JP[1].Joint);
    			t.角度C = (double)((調教鞭.Xi != 0) ? (-num) : 0) + 調教鞭.X0Y4_柄.Angle;
    		}
    	}

    	private void Set_T剃刀(Ele t)
    	{
    		t.位置B = T剃刀.X0Y0_グリップ_グリップ4.ToGlobal_nc(T剃刀.X0Y0_グリップ_グリップ4.JP[0].Joint);
    		t.角度C = T剃刀.X0Y0_グリップ_グリップ4.Angle;
    	}

    	public void Set_キャップ1(Ele t)
    	{
    		t.位置B = キャップ1.X0Y0_先端.ToGlobal_nc(キャップ1.X0Y0_先端.JP[0].Joint);
    	}

    	public void Set_キャップ2(Ele t)
    	{
    		t.位置B = キャップ2.X0Y0_先端.ToGlobal_nc(キャップ2.X0Y0_先端.JP[0].Joint);
    	}

    	public void Set_キャップ3(Ele t)
    	{
    		t.位置B = キャップ3.X0Y0_先端.ToGlobal_nc(キャップ3.X0Y0_先端.JP[0].Joint);
    	}

    	public void Set_キャップ左(Ele t)
    	{
    		キャップ2 キャップ2左 = Bod.キャップ2左;
    		t.位置B = キャップ2左.X0Y0_先端.ToGlobal_nc(キャップ2左.X0Y0_先端.JP[0].Joint);
    	}

    	public void Set_キャップ右(Ele t)
    	{
    		キャップ2 キャップ2右 = Bod.キャップ2右;
    		t.位置B = キャップ2右.X0Y0_先端.ToGlobal_nc(キャップ2右.X0Y0_先端.JP[0].Joint);
    	}

    	public void Set_キャップ中(Ele t)
    	{
    		キャップ1 キャップ3 = Bod.キャップ1;
    		t.位置B = キャップ3.X0Y0_先端.ToGlobal_nc(キャップ3.X0Y0_先端.JP[0].Joint);
    	}

    	public void Set_口(Ele t)
    	{
    		ShapePart shapePart = Bod.口.Body.Current.EnumAllPar().First((ShapePart e) => e.Tag == "口");
    		Bod.口.接続PA();
    		t.位置B = shapePart.Position;
    	}

    	public void Set_乳首(Ele t, bool 右)
    	{
    		乳房 乳房2 = (右 ? Bod.乳房右 : Bod.乳房左);
    		乳房2.接続PA();
    		switch (乳房2.Yi)
    		{
    		case 0:
    			t.位置B = 乳房2.X0Y0_乳首.ToGlobal_nc(乳房2.X0Y0_乳首.JP[0].Joint);
    			break;
    		case 1:
    			t.位置B = 乳房2.X0Y1_乳首.ToGlobal_nc(乳房2.X0Y1_乳首.JP[0].Joint);
    			break;
    		case 2:
    			t.位置B = 乳房2.X0Y2_乳首.ToGlobal_nc(乳房2.X0Y2_乳首.JP[0].Joint);
    			break;
    		case 3:
    			t.位置B = 乳房2.X0Y3_乳首.ToGlobal_nc(乳房2.X0Y3_乳首.JP[0].Joint);
    			break;
    		default:
    			t.位置B = 乳房2.X0Y4_乳首.ToGlobal_nc(乳房2.X0Y4_乳首.JP[0].Joint);
    			break;
    		}
    	}

    	public void Set_乳房(Ele t, bool 右)
    	{
    		乳房 乳房2 = (右 ? Bod.乳房右 : Bod.乳房左);
    		乳房2.接続PA();
    		switch (乳房2.Yi)
    		{
    		case 0:
    			t.位置B = 乳房2.X0Y0_乳房.ToGlobal_nc(乳房2.X0Y0_乳房.OP.GetCenter());
    			break;
    		case 1:
    			t.位置B = 乳房2.X0Y1_乳房.ToGlobal_nc(乳房2.X0Y1_乳房.OP.GetCenter());
    			break;
    		case 2:
    			t.位置B = 乳房2.X0Y2_乳房.ToGlobal_nc(乳房2.X0Y2_乳房.OP.GetCenter());
    			break;
    		case 3:
    			t.位置B = 乳房2.X0Y3_乳房.ToGlobal_nc(乳房2.X0Y3_乳房.OP.GetCenter());
    			break;
    		default:
    			t.位置B = 乳房2.X0Y4_乳房.ToGlobal_nc(乳房2.X0Y4_乳房.OP.GetCenter());
    			break;
    		}
    	}

    	public void Set_陰核(Ele t)
    	{
    		ShapePart shapePart = Bod.性器.Body.Current.EnumAllPar().First((ShapePart e) => e.Tag == "陰核");
    		Bod.性器.接続PA();
    		t.位置B = shapePart.Position;
    	}

    	public void Set_膣口(Ele t)
    	{
    		ShapePart shapePart = Bod.性器.Body.Current.EnumAllPar().First((ShapePart e) => e.Tag == "膣口");
    		Bod.性器.接続PA();
    		t.位置B = shapePart.Position;
    	}

    	public void Set_肛門(Ele t)
    	{
    		Bod.肛門.接続PA();
    		t.位置B = Bod.肛門.位置;
    	}

    	public void Set_出糸(Ele t)
    	{
    		Bod.蜘尾.接続PA();
    		t.位置B = Bod.蜘尾.X0Y0_出糸突起後_出糸突起基.Position;
    	}

    	public void Set_くぱぁ(Ele t, bool 右)
    	{
    		ShapePart shapePart = (Bod.Is獣 ? Bod.Waist_獣.Body.Current.EnumAllPar().First((ShapePart e) => e.Tag == "股") : Bod.Waist.Body.Current.EnumAllPar().First((ShapePart e) => e.Tag == "股"));
    		Bod.Waist.接続PA();
    		if (右)
    		{
    			t.位置B = shapePart.Position.AddXY(0.018, 0.002);
    		}
    		else
    		{
    			t.位置B = shapePart.Position.AddXY(-0.018, 0.002);
    		}
    	}

    	public bool IsHitCha(ref ContactD cd)
    	{
    		return cd.e != null;
    	}

    	public bool Isバイブ(CM cm)
    	{
    		if (コモンCM != cm && ディルCM != cm && アナルCM != cm && デンマCM != cm)
    		{
    			return ドリルCM == cm;
    		}
    		return true;
    	}

    	public 挿入処理 Get挿入処理()
    	{
    		if (Focus == ペニスCM)
    		{
    			return ペニス挿入;
    		}
    		if (Focus == マウスCM)
    		{
    			return マウス挿入;
    		}
    		if (Focus == ハンド右CM)
    		{
    			return ハンド挿入;
    		}
    		if (Focus == ロータCM)
    		{
    			return ロータ挿入;
    		}
    		if (Focus == コモンCM)
    		{
    			return コモン挿入;
    		}
    		if (Focus == ディルCM)
    		{
    			return ディル挿入;
    		}
    		if (Focus == アナルCM)
    		{
    			return アナル挿入;
    		}
    		if (Focus == デンマCM)
    		{
    			return デンマ挿入;
    		}
    		if (Focus == ドリルCM)
    		{
    			return ドリル挿入;
    		}
    		if (Focus == パールCM)
    		{
    			return パール挿入;
    		}
    		return null;
    	}

    	private 挿入処理 Get挿入処理(ref Color hc)
    	{
    		if (ペニス.Body.IsHit(ref hc))
    		{
    			return ペニス挿入;
    		}
    		if (マウス.Body.IsHit(ref hc))
    		{
    			return マウス挿入;
    		}
    		if (ハンド右.Body.IsHit(ref hc))
    		{
    			return ハンド挿入;
    		}
    		if (ロータ.Body.IsHit(ref hc))
    		{
    			return ロータ挿入;
    		}
    		if (コモン.Body.IsHit(ref hc))
    		{
    			return コモン挿入;
    		}
    		if (ディル.Body.IsHit(ref hc))
    		{
    			return ディル挿入;
    		}
    		if (アナル.Body.IsHit(ref hc))
    		{
    			return アナル挿入;
    		}
    		if (デンマ.Body.IsHit(ref hc))
    		{
    			return デンマ挿入;
    		}
    		if (ドリル.Body.IsHit(ref hc))
    		{
    			return ドリル挿入;
    		}
    		if (パール.Body.IsHit(ref hc))
    		{
    			return パール挿入;
    		}
    		return null;
    	}

    	public void FocusReset()
    	{
    		if (focus == ロータ挿入.対象)
    		{
    			ロータ挿入.振動 = false;
    		}
    		else if (focus == コモン挿入.対象)
    		{
    			コモン挿入.振動 = false;
    		}
    		else if (focus == ディル挿入.対象)
    		{
    			ディル挿入.振動 = false;
    		}
    		else if (focus == アナル挿入.対象)
    		{
    			アナル挿入.振動 = false;
    		}
    		else if (focus == デンマ挿入.対象)
    		{
    			デンマ挿入.振動 = false;
    		}
    		else if (focus == ドリル挿入.対象)
    		{
    			ドリル挿入.振動 = false;
    			ドリル挿入.回転 = false;
    		}
    		ペニス処理.選択 = false;
    		マウス処理.選択 = false;
    		ハンド処理.選択 = false;
    		ペニス挿入.選択 = false;
    		マウス挿入.選択 = false;
    		ハンド挿入.選択 = false;
    		ロータ挿入.選択 = false;
    		コモン挿入.選択 = false;
    		ディル挿入.選択 = false;
    		アナル挿入.選択 = false;
    		デンマ挿入.選択 = false;
    		ドリル挿入.選択 = false;
    		パール挿入.選択 = false;
    		キャップ処理.選択 = false;
    		羽箒処理.選択 = false;
    		剃刀処理.選択 = false;
    		調鞭処理.選択 = false;
    		放し();
    		focus.StaShow = true;
    		focus.使用状態 = UsageStatus.Standby;
    		focus.Ele.Xi = 0;
    		focus.Ele.Yi = 0;
    		focus.Ele.位置B = focus.bp;
    		focus.Ele.位置C = DataConsts.Vec2DZero;
    		focus.Ele.角度B = 0.0;
    		focus.Ele.角度C = 0.0;
    		focus.Ele.右 = false;
    		if (focus == 調教鞭CM)
    		{
    			調教鞭.Yi = 2;
    			focus.Ele.角度C = 0.0;
    		}
    		focus.Ele.Body.JoinPAall();
    	}

    	public void Set持ち手()
    	{
    		if (focus == ペニスCM || focus == マウスCM || focus == ハンド右CM)
    		{
    			持ち手 = false;
    			ハンド右.位置C = DataConsts.Vec2DZero;
    			ハンド右.角度B = 0.0;
    			ハンド右.角度C = 0.0;
    			ハンド右.Xi = 0;
    			ハンド右.Yi = 0;
    			ハンド右.Body.JoinPA();
    			return;
    		}
    		持ち手 = true;
    		ハンド右.位置C = DataConsts.Vec2DZero;
    		ハンド右.角度B = 0.0;
    		ハンド右.角度C = 0.0;
    		if (focus == コモンCM || focus == ディルCM || focus == アナルCM || focus == デンマCM || focus == ドリルCM)
    		{
    			ハンド右.Xi = 13;
    		}
    		else if (focus == ロータCM || focus == パールCM || focus == 羽根箒CM || focus == 調教鞭CM || focus == T剃刀CM)
    		{
    			ハンド右.Xi = 11;
    		}
    		else if (focus == キャップ1CM)
    		{
    			ハンド右.Xi = 5;
    			Set_キャップ1(ハンド右);
    		}
    		else if (focus == キャップ2CM)
    		{
    			ハンド右.Xi = 5;
    			Set_キャップ2(ハンド右);
    		}
    		else if (focus == キャップ3CM)
    		{
    			ハンド右.Xi = 5;
    			Set_キャップ3(ハンド右);
    		}
    		ハンド右.Body.JoinPA();
    	}

    	public void Joi持ち手()
    	{
    		if (持ち手)
    		{
    			if (focus == ペニスCM)
    			{
    				Set_ペニス(ハンド右);
    				ハンド右.角度C = 0.0 - ハンド右.角度C;
    			}
    			else if (focus == ロータCM)
    			{
    				Set_ロータ(ハンド右);
    			}
    			else if (focus == コモンCM)
    			{
    				Set_コモン(ハンド右);
    			}
    			else if (focus == ディルCM)
    			{
    				Set_ディル(ハンド右);
    			}
    			else if (focus == アナルCM)
    			{
    				Set_アナル(ハンド右);
    			}
    			else if (focus == デンマCM)
    			{
    				Set_デンマ(ハンド右);
    			}
    			else if (focus == ドリルCM)
    			{
    				Set_ドリル(ハンド右);
    			}
    			else if (focus == パールCM)
    			{
    				Set_パール(ハンド右);
    			}
    			else if (focus == 羽根箒CM)
    			{
    				Set_羽根箒(ハンド右);
    			}
    			else if (focus == 調教鞭CM)
    			{
    				Set_調教鞭(ハンド右);
    			}
    			else if (focus == T剃刀CM)
    			{
    				Set_T剃刀(ハンド右);
    			}
    			else if (Focus == キャップ1CM)
    			{
    				Set_キャップ1(ハンド右);
    			}
    			else if (Focus == キャップ2CM)
    			{
    				Set_キャップ2(ハンド右);
    			}
    			else if (Focus == キャップ3CM)
    			{
    				Set_キャップ3(ハンド右);
    			}
    		}
    	}

    	public void In持ち手()
    	{
    		if (持ち手)
    		{
    			ハンド右.Intensity = 0.2;
    		}
    	}

    	public void Out持ち手()
    	{
    		if (持ち手)
    		{
    			ハンド右.Intensity = 1.0;
    		}
    	}

    	public void 持ち手下描画()
    	{
    		if (持ち手)
    		{
    			Joi持ち手();
    			ハンド右.Body.JoinPA();
    			ハンド右.色更新();
    			if (ハンド右.Xi == 11)
    			{
    				Are.Draw(ハンド右.X11Y0_小指);
    				Are.Draw(ハンド右.X11Y0_薬指);
    				Are.Draw(ハンド右.X11Y0_中指);
    				Are.Draw(ハンド右.X11Y0_人指);
    			}
    		}
    	}

    	public void 持ち手上描画()
    	{
    		if (!持ち手)
    		{
    			return;
    		}
    		switch (ハンド右.Xi)
    		{
    		case 5:
    			switch (ハンド右.Yi)
    			{
    			case 0:
    				Are.Draw(ハンド右.X5Y0_親指);
    				Are.Draw(ハンド右.X5Y0_手);
    				Are.Draw(ハンド右.X5Y0_小指);
    				Are.Draw(ハンド右.X5Y0_薬指);
    				Are.Draw(ハンド右.X5Y0_中指);
    				Are.Draw(ハンド右.X5Y0_人指);
    				Are.Draw(ハンド右.X5Y0_呪印_輪1_輪外);
    				Are.Draw(ハンド右.X5Y0_呪印_輪1_輪内);
    				Are.Draw(ハンド右.X5Y0_呪印_輪2_輪外);
    				Are.Draw(ハンド右.X5Y0_呪印_輪2_輪内);
    				Are.Draw(ハンド右.X5Y0_呪印_輪3_輪外);
    				Are.Draw(ハンド右.X5Y0_呪印_輪3_輪内);
    				Are.Draw(ハンド右.X5Y0_呪印_鎖1);
    				Are.Draw(ハンド右.X5Y0_呪印_鎖2);
    				Are.Draw(ハンド右.X5Y0_呪印_鎖3);
    				break;
    			case 1:
    				Are.Draw(ハンド右.X5Y1_親指);
    				Are.Draw(ハンド右.X5Y1_手);
    				Are.Draw(ハンド右.X5Y1_小指);
    				Are.Draw(ハンド右.X5Y1_薬指);
    				Are.Draw(ハンド右.X5Y1_中指);
    				Are.Draw(ハンド右.X5Y1_人指);
    				Are.Draw(ハンド右.X5Y1_呪印_輪1_輪外);
    				Are.Draw(ハンド右.X5Y1_呪印_輪1_輪内);
    				Are.Draw(ハンド右.X5Y1_呪印_輪2_輪外);
    				Are.Draw(ハンド右.X5Y1_呪印_輪2_輪内);
    				Are.Draw(ハンド右.X5Y1_呪印_輪3_輪外);
    				Are.Draw(ハンド右.X5Y1_呪印_輪3_輪内);
    				Are.Draw(ハンド右.X5Y1_呪印_鎖1);
    				Are.Draw(ハンド右.X5Y1_呪印_鎖2);
    				Are.Draw(ハンド右.X5Y1_呪印_鎖3);
    				break;
    			case 2:
    				Are.Draw(ハンド右.X5Y2_親指);
    				Are.Draw(ハンド右.X5Y2_手);
    				Are.Draw(ハンド右.X5Y2_小指);
    				Are.Draw(ハンド右.X5Y2_薬指);
    				Are.Draw(ハンド右.X5Y2_中指);
    				Are.Draw(ハンド右.X5Y2_人指);
    				Are.Draw(ハンド右.X5Y2_呪印_輪1_輪外);
    				Are.Draw(ハンド右.X5Y2_呪印_輪1_輪内);
    				Are.Draw(ハンド右.X5Y2_呪印_輪2_輪外);
    				Are.Draw(ハンド右.X5Y2_呪印_輪2_輪内);
    				Are.Draw(ハンド右.X5Y2_呪印_輪3_輪外);
    				Are.Draw(ハンド右.X5Y2_呪印_輪3_輪内);
    				Are.Draw(ハンド右.X5Y2_呪印_鎖1);
    				Are.Draw(ハンド右.X5Y2_呪印_鎖2);
    				Are.Draw(ハンド右.X5Y2_呪印_鎖3);
    				break;
    			case 3:
    				Are.Draw(ハンド右.X5Y3_親指);
    				Are.Draw(ハンド右.X5Y3_手);
    				Are.Draw(ハンド右.X5Y3_小指);
    				Are.Draw(ハンド右.X5Y3_薬指);
    				Are.Draw(ハンド右.X5Y3_中指);
    				Are.Draw(ハンド右.X5Y3_人指);
    				Are.Draw(ハンド右.X5Y3_呪印_輪1_輪外);
    				Are.Draw(ハンド右.X5Y3_呪印_輪1_輪内);
    				Are.Draw(ハンド右.X5Y3_呪印_輪2_輪外);
    				Are.Draw(ハンド右.X5Y3_呪印_輪2_輪内);
    				Are.Draw(ハンド右.X5Y3_呪印_輪3_輪外);
    				Are.Draw(ハンド右.X5Y3_呪印_輪3_輪内);
    				Are.Draw(ハンド右.X5Y3_呪印_鎖1);
    				Are.Draw(ハンド右.X5Y3_呪印_鎖2);
    				Are.Draw(ハンド右.X5Y3_呪印_鎖3);
    				break;
    			default:
    				Are.Draw(ハンド右.X5Y4_親指);
    				Are.Draw(ハンド右.X5Y4_手);
    				Are.Draw(ハンド右.X5Y4_小指);
    				Are.Draw(ハンド右.X5Y4_薬指);
    				Are.Draw(ハンド右.X5Y4_中指);
    				Are.Draw(ハンド右.X5Y4_人指);
    				Are.Draw(ハンド右.X5Y4_呪印_輪1_輪外);
    				Are.Draw(ハンド右.X5Y4_呪印_輪1_輪内);
    				Are.Draw(ハンド右.X5Y4_呪印_輪2_輪外);
    				Are.Draw(ハンド右.X5Y4_呪印_輪2_輪内);
    				Are.Draw(ハンド右.X5Y4_呪印_輪3_輪外);
    				Are.Draw(ハンド右.X5Y4_呪印_輪3_輪内);
    				Are.Draw(ハンド右.X5Y4_呪印_鎖1);
    				Are.Draw(ハンド右.X5Y4_呪印_鎖2);
    				Are.Draw(ハンド右.X5Y4_呪印_鎖3);
    				break;
    			}
    			break;
    		case 11:
    			Are.Draw(ハンド右.X11Y0_手);
    			Are.Draw(ハンド右.X11Y0_親指);
    			Are.Draw(ハンド右.X11Y0_呪印_輪1_輪外);
    			Are.Draw(ハンド右.X11Y0_呪印_輪1_輪内);
    			Are.Draw(ハンド右.X11Y0_呪印_輪2_輪外);
    			Are.Draw(ハンド右.X11Y0_呪印_輪2_輪内);
    			Are.Draw(ハンド右.X11Y0_呪印_輪3_輪外);
    			Are.Draw(ハンド右.X11Y0_呪印_輪3_輪内);
    			Are.Draw(ハンド右.X11Y0_呪印_鎖1);
    			Are.Draw(ハンド右.X11Y0_呪印_鎖3);
    			break;
    		case 13:
    			Are.Draw(ハンド右.X13Y0_中指);
    			Are.Draw(ハンド右.X13Y0_人指);
    			Are.Draw(ハンド右.X13Y0_手);
    			Are.Draw(ハンド右.X13Y0_親指);
    			Are.Draw(ハンド右.X13Y0_呪印_輪1_輪外);
    			Are.Draw(ハンド右.X13Y0_呪印_輪1_輪内);
    			Are.Draw(ハンド右.X13Y0_呪印_輪2_輪外);
    			Are.Draw(ハンド右.X13Y0_呪印_輪2_輪内);
    			Are.Draw(ハンド右.X13Y0_呪印_輪3_輪外);
    			Are.Draw(ハンド右.X13Y0_呪印_輪3_輪内);
    			Are.Draw(ハンド右.X13Y0_呪印_鎖1);
    			Are.Draw(ハンド右.X13Y0_呪印_鎖3);
    			break;
    		}
    	}

    	public void 通常放し()
    	{
    		focus.Ele.Intensity = 0.5;
    		Focus = ハンド右CM;
    		if (Med.Mode == "Training")
    		{
                //~~TODO~~ fix?
                //Cursor.Position = Med.BaseControlC.PointToScreen(Med.FromBasePosition(ハンド右.位置B));
                Med.CursorPosition = Med.FromBasePosition(ハンド右.位置B);
    		}
    		Set持ち手();
    	}

    	public void 挿入放し()
    	{
    		sf = false;
    		if (膣i肛f)
    		{
    			if (Focus == ペニスCM)
    			{
    				SubFocus.Insert(0, ペニス挿入);
    				ペニスCM.使用状態 = UsageStatus.Attach;
    			}
    			else if (Focus == マウスCM)
    			{
    				SubFocus.Insert(0, マウス挿入);
    				マウスCM.使用状態 = UsageStatus.Attach;
    			}
    			else if (Focus == ハンド右CM)
    			{
    				SubFocus.Insert(0, ハンド挿入);
    				ハンド右CM.使用状態 = UsageStatus.Attach;
    			}
    			else if (Focus == ロータCM)
    			{
    				SubFocus.Insert(0, ロータ挿入);
    				ロータCM.使用状態 = UsageStatus.Attach;
    			}
    			else if (Focus == コモンCM)
    			{
    				SubFocus.Insert(0, コモン挿入);
    				コモンCM.使用状態 = UsageStatus.Attach;
    			}
    			else if (Focus == ディルCM)
    			{
    				SubFocus.Insert(0, ディル挿入);
    				ディルCM.使用状態 = UsageStatus.Attach;
    			}
    			else if (Focus == アナルCM)
    			{
    				SubFocus.Insert(0, アナル挿入);
    				アナルCM.使用状態 = UsageStatus.Attach;
    			}
    			else if (Focus == デンマCM)
    			{
    				SubFocus.Insert(0, デンマ挿入);
    				デンマCM.使用状態 = UsageStatus.Attach;
    			}
    			else if (Focus == ドリルCM)
    			{
    				SubFocus.Insert(0, ドリル挿入);
    				ドリルCM.使用状態 = UsageStatus.Attach;
    			}
    			else if (Focus == パールCM)
    			{
    				SubFocus.Insert(0, パール挿入);
    				パールCM.使用状態 = UsageStatus.Attach;
    			}
    		}
    		else if (Focus == ペニスCM)
    		{
    			SubFocus.Add(ペニス挿入);
    			ペニスCM.使用状態 = UsageStatus.Attach;
    		}
    		else if (Focus == マウスCM)
    		{
    			SubFocus.Add(マウス挿入);
    			マウスCM.使用状態 = UsageStatus.Attach;
    		}
    		else if (Focus == ハンド右CM)
    		{
    			SubFocus.Add(ハンド挿入);
    			ハンド右CM.使用状態 = UsageStatus.Attach;
    		}
    		else if (Focus == ロータCM)
    		{
    			SubFocus.Add(ロータ挿入);
    			ロータCM.使用状態 = UsageStatus.Attach;
    		}
    		else if (Focus == コモンCM)
    		{
    			SubFocus.Add(コモン挿入);
    			コモンCM.使用状態 = UsageStatus.Attach;
    		}
    		else if (Focus == ディルCM)
    		{
    			SubFocus.Add(ディル挿入);
    			ディルCM.使用状態 = UsageStatus.Attach;
    		}
    		else if (Focus == アナルCM)
    		{
    			SubFocus.Add(アナル挿入);
    			アナルCM.使用状態 = UsageStatus.Attach;
    		}
    		else if (Focus == デンマCM)
    		{
    			SubFocus.Add(デンマ挿入);
    			デンマCM.使用状態 = UsageStatus.Attach;
    		}
    		else if (Focus == ドリルCM)
    		{
    			SubFocus.Add(ドリル挿入);
    			ドリルCM.使用状態 = UsageStatus.Attach;
    		}
    		else if (Focus == パールCM)
    		{
    			SubFocus.Add(パール挿入);
    			パールCM.使用状態 = UsageStatus.Attach;
    		}
    		Focus.Ele.SetHitTrue();
    		Focus_nr = ハンド右CM;
            
            //~~TODO~~ fix?
            //Cursor.Position = Med.BaseControlC.PointToScreen(Med.FromBasePosition(ハンド右.位置B));
            Med.CursorPosition = Med.FromBasePosition(ハンド右.位置B);

    		Set持ち手();
    	}

    	private void SetIs膣i肛f()
    	{
    		肛f = Get挿入処理()?.Is肛 ?? false;
    		膣i肛f = 肛f && SubFocus.Any((挿入処理 e) => e.Is膣);
    	}

    	public void Setハンド左(挿入処理 i)
    	{
    		if (i == ロータ挿入)
    		{
    			Set_ロータ(ハンド左);
    		}
    		else if (i == コモン挿入)
    		{
    			Set_コモン(ハンド左);
    		}
    		else if (i == ディル挿入)
    		{
    			Set_ディル(ハンド左);
    		}
    		else if (i == アナル挿入)
    		{
    			Set_アナル(ハンド左);
    		}
    		else if (i == デンマ挿入)
    		{
    			Set_デンマ(ハンド左);
    		}
    		else if (i == ドリル挿入)
    		{
    			Set_ドリル(ハンド左);
    		}
    		else if (i == パール挿入)
    		{
    			Set_パール(ハンド左);
    		}
    		ハンド左CM.Draws(Are);
    	}

    	public void 押し(ref ContactD cd)
    	{
    		if (IsHitCha(ref cd) || focus == 羽根箒CM || focus == 調教鞭CM)
    		{
    			focus.Ele.尺度C = 1.0;
    			if (持ち手 || ペニス処理.Isパイズリ)
    			{
    				ハンド右.尺度C = 1.0;
    			}
    			ハンド左.尺度C = 1.0;
    			押し状態 = true;
    		}
    	}

    	public void 放し()
    	{
    		if (!Is挿入)
    		{
    			focus.Ele.尺度C = 1.09;
    			if (持ち手 || ペニス処理.Isパイズリ)
    			{
    				ハンド右.尺度C = 1.09;
    			}
    			ハンド左.尺度C = 1.09;
    			押し状態 = false;
    		}
    	}

    	public void くぱぁ閉じ時()
    	{
    		if (ペニス挿入.Is膣 || ペニス挿入.Is肛)
    		{
    			ペニス挿入.抜け落ち.Start();
    		}
    		if (マウス挿入.Is膣 || マウス挿入.Is肛)
    		{
    			マウス挿入.抜け落ち.Start();
    		}
    		if (ハンド挿入.Is膣 || ハンド挿入.Is肛)
    		{
    			ハンド挿入.抜け落ち.Start();
    		}
    		if (ロータ挿入.Is膣 || ロータ挿入.Is肛)
    		{
    			ロータ挿入.抜け落ち.Start();
    		}
    		if (コモン挿入.Is膣 || コモン挿入.Is肛)
    		{
    			コモン挿入.抜け落ち.Start();
    		}
    		if (ディル挿入.Is膣 || ディル挿入.Is肛)
    		{
    			ディル挿入.抜け落ち.Start();
    		}
    		if (アナル挿入.Is膣 || アナル挿入.Is肛)
    		{
    			アナル挿入.抜け落ち.Start();
    		}
    		if (デンマ挿入.Is膣 || デンマ挿入.Is肛)
    		{
    			デンマ挿入.抜け落ち.Start();
    		}
    		if (ドリル挿入.Is膣 || ドリル挿入.Is肛)
    		{
    			ドリル挿入.抜け落ち.Start();
    		}
    		if (パール挿入.Is膣 || パール挿入.Is肛)
    		{
    			パール挿入.抜け落ち.Start();
    		}
    	}

    	public void 脚修正()
    	{
    		if (!Bod.Is拘束 && Bod.脚人n > 0)
    		{
    			Cha.Leg();
    			Cha.Body.腿Update();
    		}
    	}

    	public void 腕修正()
    	{
    		if (!Bod.Is拘束 && Bod.Arm人n > 0 && Bod.Is最前腕人)
    		{
    			Cha.腕();
    			Cha.Body.EI腕前.Updatef = true;
    		}
    	}

    	public void 大顎修正()
    	{
    		if (!Bod.Is拘束 && Bod.大顎n > 0)
    		{
    			Cha.顎();
    		}
    	}

    	private void SubInfoSet(ref MouseButtons mb, ref Vector2D cp, ref Vector2D op, ref Color hc, ref ContactD cd)
    	{
    		ペニス処理.Move(ref mb, ref cp, ref hc, ref cd);
    		マウス処理.Move(ref mb, ref cp, ref hc, ref cd);
    		ハンド処理.Move(ref mb, ref cp, ref hc, ref cd);
    		ロータ挿入.Move(ref mb, ref cp, ref hc, ref cd);
    		コモン挿入.Move(ref mb, ref cp, ref hc, ref cd);
    		ディル挿入.Move(ref mb, ref cp, ref hc, ref cd);
    		アナル挿入.Move(ref mb, ref cp, ref hc, ref cd);
    		デンマ挿入.Move(ref mb, ref cp, ref hc, ref cd);
    		ドリル挿入.Move(ref mb, ref cp, ref hc, ref cd);
    		パール挿入.Move(ref mb, ref cp, ref hc, ref cd);
    		キャップ処理.Move(ref mb, ref cp, ref op, ref hc, ref cd);
    		羽箒処理.Move(ref mb, ref cp, ref hc, ref cd);
    		剃刀処理.Move(ref mb, ref cp, ref op, ref hc, ref cd);
    		調鞭処理.Move(ref mb, ref cp, ref hc, ref cd);
    	}

    	public void Move(ref MouseButtons mb, ref Vector2D cp, ref Vector2D op, ref Color hc, ref ContactD cd)
    	{
    		if (HeldButton != mb)
    		{
    			return;
    		}
    		if (!Is挿入 && !ペニス処理.Isパイズリ && !マウス処理.Is吸付 && !コキ)
    		{
    			Focus.Ele.位置B = cp;
    		}
    		if (IsTool = X < cp.X && cp.Y < Y && mb != MouseButtons.Left && !Isモード)
    		{
    			Med.CursorShow();
    			if (focus.Ele.Intensity == 1.0)
    			{
    				Focus.Ele.Intensity = 0.2;
    			}
    			In持ち手();
    			Color hc_ = hc;
    			hcm = (from e in EnumCM()
    				where e.使用状態 == UsageStatus.Standby
    				select e).FirstOrDefault((CM e) => e.Ele.Body.IsHit(ref hc_));
    			if (hcm != null)
    			{
    				foreach (CM item in from e in EnumCM()
    					where e.使用状態 == UsageStatus.Standby
    					select e)
    				{
    					item.Ele.Intensity = 0.5;
    				}
    				hcm.Ele.Intensity = 1.0;
    			}
    			else
    			{
    				foreach (CM item2 in from e in EnumCM()
    					where e.使用状態 == UsageStatus.Standby && e.Ele.Intensity == 1.0
    					select e)
    				{
    					item2.Ele.Intensity = 0.5;
    				}
    			}
    		}
    		else
    		{
    			if (ip.MaiShow)
    			{
    				Med.CursorShow();
    			}
    			else
    			{
    				Med.CursorHide();
    			}
    			if (focus.Ele.Intensity == 0.2)
    			{
    				Focus.Ele.Intensity = 1.0;
    			}
    			Out持ち手();
    			foreach (CM item3 in from e in EnumCM()
    				where e.使用状態 == UsageStatus.Standby && e.Ele.Intensity == 1.0
    				select e)
    			{
    				item3.Ele.Intensity = 0.5;
    			}
    			if (!Isモード)
    			{
    				調教終了.Move(ref hc);
    				拘束具.Move(ref hc);
    				目隠帯.Move(ref hc);
    				玉口枷.Move(ref hc);
    				断面.Move(ref hc);
    				媚薬.Move(ref hc);
    				撮影.Move(ref hc);
    				SlaveStamina.Move(ref hc);
    				PlayerStamina.Move(ref hc);
    				if (調教終了.PartGroup.IsHit(ref hc) || 拘束具.PartGroup.IsHit(ref hc) || 目隠帯.PartGroup.IsHit(ref hc) || 玉口枷.PartGroup.IsHit(ref hc) || 断面.PartGroup.IsHit(ref hc) || 媚薬.PartGroup.IsHit(ref hc) || 撮影.PartGroup.IsHit(ref hc))
    				{
    					Med.CursorShow();
    				}
    				else if (ip.MaiShow)
    				{
    					Med.CursorShow();
    				}
    				else if (SlaveStamina.PartGroup.IsHit(ref hc) || PlayerStamina.PartGroup.IsHit(ref hc))
    				{
    					Med.CursorShow();
    				}
    				else
    				{
    					Med.CursorHide();
    				}
    			}
    		}
    		肛oh = false;
    		ef = null;
    		if (sf && !ハンド処理.Isモード && Focus == ハンド右CM && SubFocus.Count > 0)
    		{
    			bool flag = true;
    			foreach (挿入処理 item4 in SubFocus)
    			{
    				if (flag = item4.対象.Ele.Body.IsHit(ref hc))
    				{
    					if (item4.対象 == ロータCM)
    					{
    						Set_ロータ(ハンド右);
    						ハンド右.Xi = 11;
    					}
    					else if (item4.対象 == コモンCM)
    					{
    						Set_コモン(ハンド右);
    						ハンド右.Xi = 13;
    					}
    					else if (item4.対象 == ディルCM)
    					{
    						Set_ディル(ハンド右);
    						ハンド右.Xi = 13;
    					}
    					else if (item4.対象 == アナルCM)
    					{
    						Set_アナル(ハンド右);
    						ハンド右.Xi = 13;
    					}
    					else if (item4.対象 == デンマCM)
    					{
    						Set_デンマ(ハンド右);
    						ハンド右.Xi = 13;
    					}
    					else if (item4.対象 == ドリルCM)
    					{
    						Set_ドリル(ハンド右);
    						ハンド右.Xi = 13;
    					}
    					else if (item4.対象 == パールCM)
    					{
    						Set_パール(ハンド右);
    						ハンド右.Xi = 11;
    					}
    					else if (item4.対象 == 羽根箒CM)
    					{
    						Set_羽根箒(ハンド右);
    						ハンド右.Xi = 11;
    					}
    					else if (item4.対象 == 調教鞭CM)
    					{
    						Set_調教鞭(ハンド右);
    						ハンド右.Xi = 11;
    					}
    					else if (item4.対象 == T剃刀CM)
    					{
    						Set_T剃刀(ハンド右);
    						ハンド右.Xi = 11;
    					}
    					ef = item4;
    					if (Sta.GameData.ガイド)
    					{
    						ip.SubInfoIm = ((item4.対象 == ペニスCM) ? ("LCl:" + GameText.選択) : ("LCl:" + GameText.持つ));
    					}
    					挿入処理 挿入処理2 = Get挿入処理(ref hc);
    					肛oh = 挿入処理2 != null && 挿入処理2.Is肛 && focus == ハンド右CM;
    					break;
    				}
    			}
    			if (!flag)
    			{
    				if (ハンド右.Xi == 11 || ハンド右.Xi == 13)
    				{
    					ハンド右.Xi = 0;
    				}
    				ef = null;
    			}
    		}
    		else
    		{
    			sf = true;
    		}
    		if (!ペニス処理.手コキ.Run && !ペニス処理.足コキ.Run)
    		{
    			ペニス処理.Move(ref mb, ref cp, ref hc, ref cd);
    			マウス処理.Move(ref mb, ref cp, ref hc, ref cd);
    			ハンド処理.Move(ref mb, ref cp, ref hc, ref cd);
    			ロータ挿入.Move(ref mb, ref cp, ref hc, ref cd);
    			コモン挿入.Move(ref mb, ref cp, ref hc, ref cd);
    			ディル挿入.Move(ref mb, ref cp, ref hc, ref cd);
    			アナル挿入.Move(ref mb, ref cp, ref hc, ref cd);
    			デンマ挿入.Move(ref mb, ref cp, ref hc, ref cd);
    			ドリル挿入.Move(ref mb, ref cp, ref hc, ref cd);
    			パール挿入.Move(ref mb, ref cp, ref hc, ref cd);
    			キャップ処理.Move(ref mb, ref cp, ref op, ref hc, ref cd);
    			羽箒処理.Move(ref mb, ref cp, ref hc, ref cd);
    			剃刀処理.Move(ref mb, ref cp, ref op, ref hc, ref cd);
    			調鞭処理.Move(ref mb, ref cp, ref hc, ref cd);
    		}
    		IsTB = false;
    		挿入処理f = Get挿入処理();
    		if (IsTB = Isバイブ(focus) && 挿入処理f != null && ((挿入処理f.Is膣 && SubFocus.Any((挿入処理 e) => e.Is肛 && Isバイブ(e.対象))) || (挿入処理f.Is肛 && SubFocus.Any((挿入処理 e) => e.Is膣 && Isバイブ(e.対象)))))
    		{
    			if (挿入処理f.Is膣)
    			{
    				(挿入処理s = SubFocus.First((挿入処理 e) => e.Is肛)).MoveR(ref mb, ref cp, ref hc, ref cd);
    			}
    			else if (挿入処理f.Is肛)
    			{
    				(挿入処理s = SubFocus.First((挿入処理 e) => e.Is膣)).MoveR(ref mb, ref cp, ref hc, ref cd);
    			}
    			挿入処理s.抜け落ち.End();
    			if (挿入処理s == ロータ挿入)
    			{
    				Set_ロータ(ハンド左);
    				ハンド左.Xi = 11;
    			}
    			else if (挿入処理s == コモン挿入)
    			{
    				Set_コモン(ハンド左);
    				ハンド左.Xi = 13;
    			}
    			else if (挿入処理s == ディル挿入)
    			{
    				Set_ディル(ハンド左);
    				ハンド左.Xi = 13;
    			}
    			else if (挿入処理s == アナル挿入)
    			{
    				Set_アナル(ハンド左);
    				ハンド左.Xi = 13;
    			}
    			else if (挿入処理s == デンマ挿入)
    			{
    				Set_デンマ(ハンド左);
    				ハンド左.Xi = 13;
    			}
    			else if (挿入処理s == ドリル挿入)
    			{
    				Set_ドリル(ハンド左);
    				ハンド左.Xi = 13;
    			}
    			else if (挿入処理s == パール挿入)
    			{
    				Set_パール(ハンド左);
    				ハンド左.Xi = 11;
    			}
    		}
    		SetIs膣i肛f();
    		if (Sta.GameData.ガイド && IsTool && hcm != null)
    		{
    			ip.SubInfoIm = ((hcm == ペニスCM || hcm == マウスCM || hcm == ハンド右CM) ? ("LCl:" + GameText.選択) : ("LCl:" + GameText.持つ));
    		}
    		if (拘束具.PartGroup.Values.First().ToPar().HitColor == hc)
    		{
    			ip.SubInfoIm = GameText.拘束状態を切換えます;
    		}
    		if (目隠帯.PartGroup.Values.First().ToPar().HitColor == hc)
    		{
    			ip.SubInfoIm = GameText.目隠状態を切換えます;
    		}
    		if (玉口枷.PartGroup.Values.First().ToPar().HitColor == hc)
    		{
    			ip.SubInfoIm = GameText.口枷状態を切換えます;
    		}
    		if (断面.PartGroup.Values.First().ToPar().HitColor == hc)
    		{
    			ip.SubInfoIm = GameText.断面表示を切換えます;
    		}
    		if (媚薬.PartGroup.Values.First().ToPar().HitColor == hc)
    		{
    			ip.SubInfoIm = GameText.発情状態になります + "(-" + 媚薬投与価格.ToString("#,0") + ")";
    		}
    		if (SlaveStamina.PartGroup.Values.First().ToPar().HitColor == hc)
    		{
    			ip.SubInfoIm = "Reset slave's stamina";
    		}
    		if (PlayerStamina.PartGroup.Values.First().ToPar().HitColor == hc)
    		{
    			ip.SubInfoIm = "Reset player's stamina";
    		}
    		if (撮影.PartGroup.Values.First().ToPar().HitColor == hc && ip.SubInfoIm != GameText.撮影しました + "\r\n" + GameText.写真はPhotoフォルダに保存されます)
    		{
    			ip.SubInfoIm = GameText.撮影を行います;
    		}
    	}

    	public void Down(ref MouseButtons mb, ref Vector2D cp, ref Vector2D op, ref Color hc, ref ContactD cd)
    	{
    		if (HeldButton != MouseButtons.None)
    		{
    			return;
    		}
    		if (Player.強制終了)
    		{
    			Player.強制終了 = false;
    			調教終了.Action(調教終了);
    			return;
    		}
    		if (X < cp.X && cp.Y < Y)
    		{
    			Color hc_ = hc;
    			CM cM = (from e in EnumCM()
    				where e.使用状態 == UsageStatus.Standby
    				select e).FirstOrDefault((CM e) => e.Ele.Body.IsHit(ref hc_));
    			if (cM != null)
    			{
    				Focus.Ele.Intensity = 0.5;
    				Focus = cM;
    				Focus.Ele.Intensity = 0.2;
    				Focus.Ele.位置B = Med.CursorPosition;
    				Set持ち手();
    				if (持ち手)
    				{
    					ハンド右.Intensity = 0.2;
    				}
    				else
    				{
    					ハンド右.位置B = ハンド右CM.bp;
    				}
    				SubInfoSet(ref mb, ref cp, ref op, ref hc, ref cd);
    			}
    		}
    		else
    		{
    			調教終了.Down(ref hc);
    			拘束具.Down(ref hc);
    			目隠帯.Down(ref hc);
    			玉口枷.Down(ref hc);
    			断面.Down(ref hc);
    			媚薬.Down(ref hc);
    			撮影.Down(ref hc);
    			SlaveStamina.Down(ref hc);
    			PlayerStamina.Down(ref hc);
    		}
    		if (Focus == ハンド右CM && SubFocus.Count > 0 && ef != null)
    		{
    			ef.抜け落ち.End();
    			SubFocus.Remove(ef);
    			Focus = ef.対象;
    			ef.挿抜モーション.End();
    			if (ef != ペニス挿入)
    			{
    				ef.挿抜フラグ = true;
    			}
    			ef = null;
    			Set持ち手();
    		}
    		ペニス処理.Down(ref mb, ref cp, ref hc, ref cd);
    		マウス処理.Down(ref mb, ref cp, ref hc, ref cd);
    		ハンド処理.Down(ref mb, ref cp, ref hc, ref cd);
    		ロータ挿入.Down(ref mb, ref cp, ref hc, ref cd);
    		コモン挿入.Down(ref mb, ref cp, ref hc, ref cd);
    		ディル挿入.Down(ref mb, ref cp, ref hc, ref cd);
    		アナル挿入.Down(ref mb, ref cp, ref hc, ref cd);
    		デンマ挿入.Down(ref mb, ref cp, ref hc, ref cd);
    		ドリル挿入.Down(ref mb, ref cp, ref hc, ref cd);
    		パール挿入.Down(ref mb, ref cp, ref hc, ref cd);
    		キャップ処理.Down(ref mb, ref cp, ref op, ref hc, ref cd);
    		羽箒処理.Down(ref mb, ref cp, ref hc, ref cd);
    		剃刀処理.Down(ref mb, ref cp, ref hc, ref cd);
    		調鞭処理.Down(ref mb, ref cp, ref hc, ref cd);
    		SetIs膣i肛f();
    		HeldButton = mb;
    	}

    	public void Up(ref MouseButtons mb, ref Vector2D cp, ref Color hc, ref ContactD cd)
    	{
    		if (HeldButton == mb)
    		{
    			調教終了.Up(ref hc);
    			拘束具.Up(ref hc);
    			目隠帯.Up(ref hc);
    			玉口枷.Up(ref hc);
    			断面.Up(ref hc);
    			媚薬.Up(ref hc);
    			撮影.Up(ref hc);
    			SlaveStamina.Up(ref hc);
    			PlayerStamina.Up(ref hc);
    			ペニス処理.Up(ref mb, ref cp, ref hc, ref cd);
    			マウス処理.Up(ref mb, ref cp, ref hc, ref cd);
    			ハンド処理.Up(ref mb, ref cp, ref hc, ref cd);
    			ロータ挿入.Up(ref mb, ref cp, ref hc, ref cd);
    			コモン挿入.Up(ref mb, ref cp, ref hc, ref cd);
    			ディル挿入.Up(ref mb, ref cp, ref hc, ref cd);
    			アナル挿入.Up(ref mb, ref cp, ref hc, ref cd);
    			デンマ挿入.Up(ref mb, ref cp, ref hc, ref cd);
    			ドリル挿入.Up(ref mb, ref cp, ref hc, ref cd);
    			パール挿入.Up(ref mb, ref cp, ref hc, ref cd);
    			キャップ処理.Up(ref mb, ref cp, ref hc);
    			羽箒処理.Up(ref mb, ref cp, ref hc, ref cd);
    			剃刀処理.Up(ref mb, ref cp, ref hc, ref cd);
    			HeldButton = MouseButtons.None;
    		}
    	}

    	public void Wheel(ref MouseButtons mb, ref Vector2D cp, ref int dt, ref Color hc, ref ContactD cd)
    	{
    		ペニス処理.Wheel(ref mb, ref cp, ref dt, ref hc, ref cd);
    		マウス処理.Wheel(ref mb, ref cp, ref dt, ref hc, ref cd);
    		ハンド処理.Wheel(ref mb, ref cp, ref dt, ref hc, ref cd);
    		ロータ挿入.Wheel(ref mb, ref cp, ref dt, ref hc, ref cd);
    		コモン挿入.Wheel(ref mb, ref cp, ref dt, ref hc, ref cd);
    		ディル挿入.Wheel(ref mb, ref cp, ref dt, ref hc, ref cd);
    		アナル挿入.Wheel(ref mb, ref cp, ref dt, ref hc, ref cd);
    		デンマ挿入.Wheel(ref mb, ref cp, ref dt, ref hc, ref cd);
    		ドリル挿入.Wheel(ref mb, ref cp, ref dt, ref hc, ref cd);
    		パール挿入.Wheel(ref mb, ref cp, ref dt, ref hc, ref cd);
    		羽箒処理.Wheel(ref mb, ref cp, ref dt, ref hc, ref cd);
    		調鞭処理.Wheel(ref mb, ref cp, ref dt, ref hc);
    	}

    	public void Leave(ref MouseButtons mb, ref Vector2D cp, ref Color hc)
    	{
    		Med.CursorShow();
    		調教終了.Leave();
    		拘束具.Leave();
    		目隠帯.Leave();
    		玉口枷.Leave();
    		断面.Leave();
    		媚薬.Leave();
    		撮影.Leave();
    		SlaveStamina.Leave();
    		PlayerStamina.Leave();
    	}

    	public TrainingUI(ModeEventDispatcher Med, RenderArea Are, InfoPanel ip)
    	{
    		TrainingUI 調教UI2 = this;
    		try
    		{
    			this.Med = Med;
    			this.Are = Are;
    			double disUnit = Are.DisplayUnitScale;
    			this.ip = ip;
    			ペニスCM = new CM(Med, this, ペニス = new ペニス(disUnit, 配色指定.N0, Sta.GameData.配色, Med, new ペニスD
    			{
    				濃度 = 0.5,
    				尺度C = 1.09
    			}));
    			マウスCM = new CM(Med, this, マウス = new マウス(disUnit, 配色指定.N0, Sta.GameData.配色, Med, new マウスD
    			{
    				濃度 = 0.5,
    				尺度C = 1.09
    			}));
    			ハンド右CM = new CM(Med, this, ハンド右 = new ハンド(disUnit, 配色指定.N0, Sta.GameData.配色, Med, new ハンドD
    			{
    				尺度C = 1.09,
    				呪印_輪1_輪外_表示 = false,
    				呪印_輪1_輪内_表示 = false,
    				呪印_輪2_輪外_表示 = false,
    				呪印_輪2_輪内_表示 = false,
    				呪印_輪3_輪外_表示 = false,
    				呪印_輪3_輪内_表示 = false,
    				呪印_鎖1_表示 = false,
    				呪印_鎖2_表示 = false,
    				呪印_鎖3_表示 = false
    			}));
    			ハンド左CM = new CM(Med, this, ハンド左 = new ハンド(disUnit, 配色指定.N0, Sta.GameData.配色, Med, new ハンドD
    			{
    				尺度C = 1.09,
    				呪印_輪1_輪外_表示 = false,
    				呪印_輪1_輪内_表示 = false,
    				呪印_輪2_輪外_表示 = false,
    				呪印_輪2_輪内_表示 = false,
    				呪印_輪3_輪外_表示 = false,
    				呪印_輪3_輪内_表示 = false,
    				呪印_鎖1_表示 = false,
    				呪印_鎖2_表示 = false,
    				呪印_鎖3_表示 = false,
    				右 = true
    			}));
    			ハンド左.SetHitFalse();
    			ロータCM = new CM(Med, this, ロータ = new ロータ(disUnit, 配色指定.N0, null, Med, new ロータD
    			{
    				濃度 = 0.5,
    				尺度C = 1.09
    			}));
    			コモンCM = new CM(Med, this, コモン = new バイブ_コモン(disUnit, 配色指定.N0, null, Med, new バイブ_コモンD
    			{
    				濃度 = 0.5,
    				尺度C = 1.09
    			}));
    			ディルCM = new CM(Med, this, ディル = new バイブ_ディル(disUnit, 配色指定.N0, null, Med, new バイブ_ディルD
    			{
    				濃度 = 0.5,
    				尺度C = 1.09
    			}));
    			アナルCM = new CM(Med, this, アナル = new バイブ_アナル(disUnit, 配色指定.N0, null, Med, new バイブ_アナルD
    			{
    				濃度 = 0.5,
    				尺度C = 1.09
    			}));
    			デンマCM = new CM(Med, this, デンマ = new バイブ_デンマ(disUnit, 配色指定.N0, null, Med, new バイブ_デンマD
    			{
    				濃度 = 0.5,
    				尺度C = 1.09
    			}));
    			ドリルCM = new CM(Med, this, ドリル = new バイブ_ドリル(disUnit, 配色指定.N0, null, Med, new バイブ_ドリルD
    			{
    				濃度 = 0.5,
    				尺度C = 1.09
    			}));
    			パールCM = new CM(Med, this, パール = new パール(disUnit, 配色指定.N0, null, Med, new パールD
    			{
    				濃度 = 0.5,
    				尺度C = 1.09
    			}));
    			羽根箒CM = new CM(Med, this, 羽根箒 = new 羽根箒(disUnit, 配色指定.N0, null, Med, new 羽根箒D
    			{
    				濃度 = 0.5,
    				尺度C = 1.09
    			}));
    			調教鞭CM = new CM(Med, this, 調教鞭 = new 調教鞭(disUnit, 配色指定.N0, null, Med, new 調教鞭D
    			{
    				濃度 = 0.5,
    				尺度C = 1.09,
    				Yi = 2
    			}));
    			T剃刀CM = new CM(Med, this, T剃刀 = new T剃刀(disUnit, 配色指定.N0, null, Med, new T剃刀D
    			{
    				濃度 = 0.5,
    				尺度C = 1.09
    			}));
    			ペニス挿入 = new 挿入処理(this, ペニスCM);
    			マウス挿入 = new 挿入処理(this, マウスCM);
    			ハンド挿入 = new 挿入処理(this, ハンド右CM);
    			ロータ挿入 = new 挿入処理(this, ロータCM);
    			コモン挿入 = new 挿入処理(this, コモンCM);
    			ディル挿入 = new 挿入処理(this, ディルCM);
    			アナル挿入 = new 挿入処理(this, アナルCM);
    			デンマ挿入 = new 挿入処理(this, デンマCM);
    			ドリル挿入 = new 挿入処理(this, ドリルCM);
    			パール挿入 = new 挿入処理(this, パールCM);
    			ペニス処理 = new ペニス処理(this, ペニスCM);
    			マウス処理 = new マウス処理(this, マウスCM);
    			ハンド処理 = new ハンド処理(this, ハンド右CM);
    			キャップ処理 = new キャップ処理(this);
    			羽箒処理 = new 羽箒処理(this, 羽根箒CM);
    			剃刀処理 = new 剃刀処理(this, T剃刀CM);
    			調鞭処理 = new 調鞭処理(this, 調教鞭CM);
    			射精 = new 射精(disUnit, 配色指定.N0, Sta.GameData.配色, Med, new 射精D
    			{
    				表示 = false,
    				位置C = new Vector2D(0.0, 0.001)
    			});
    			射精.SetHitFalse();
    			ShapePartT shapePartT = new ShapePartT();
    			shapePartT.Text = GameText.調教終了;
    			shapePartT.SizeBase = 0.095;
    			shapePartT.Font = new Font("MS Gothic", 1f);
    			shapePartT.FontSize = 0.07;
    			shapePartT.SetStringRectOutline(Are.UnitScale, Are.DisplayGraphics);
    			shapePartT.RectSize = new Vector2D(shapePartT.OP[0].ps[1].X, shapePartT.OP[0].ps[2].Y);
    			shapePartT.OP.ScalingY(shapePartT.BasePointBase, 0.9);
    			shapePartT.Closed = true;
    			shapePartT.TextColor = Col.Black;
    			shapePartT.BrushColor = Color.FromArgb(160, Col.Black);
    			shapePartT.ShadBrush = new SolidBrush(Color.FromArgb(64, Col.Black));
    			shapePartT.HitColor = Med.GetUniqueColor();
    			shapePartT.StringFormat.Alignment = StringAlignment.Center;
    			shapePartT.StringFormat.LineAlignment = StringAlignment.Center;
    			shapePartT.PositionBase = Are.GetPosition(1.0 - (shapePartT.OP[0].ps[1].X * shapePartT.SizeBase / Are.LocalWidth + 0.005), 1.0 - shapePartT.OP[0].ps[2].Y * shapePartT.SizeBase / Are.LocalHeight).AddY(-0.001);
    			shapePartT.PositionBase = new Vector2D(ip.SubB.PositionBase.X, shapePartT.PositionBase.Y);
    			調教終了 = new But1(shapePartT, null);
    			ShapePartT shapePartT2 = new ShapePartT();
    			shapePartT2.Text = GameText.拘束;
    			shapePartT2.SizeBase = 0.095;
    			shapePartT2.Font = new Font("MS Gothic", 1f);
    			shapePartT2.FontSize = 0.07;
    			shapePartT2.SetStringRectOutline(Are.UnitScale, Are.DisplayGraphics);
    			shapePartT2.RectSize = new Vector2D(shapePartT2.OP[0].ps[1].X, shapePartT2.OP[0].ps[2].Y);
    			shapePartT2.OP.ScalingY(shapePartT2.BasePointBase, 0.9);
    			shapePartT2.Closed = true;
    			shapePartT2.TextColor = Col.Black;
    			shapePartT2.BrushColor = Color.FromArgb(160, Col.Black);
    			shapePartT2.ShadBrush = new SolidBrush(Color.FromArgb(64, Col.Black));
    			shapePartT2.HitColor = Med.GetUniqueColor();
    			shapePartT2.StringFormat.Alignment = StringAlignment.Center;
    			shapePartT2.StringFormat.LineAlignment = StringAlignment.Center;
    			shapePartT2.PositionBase = Are.GetPosition(0.08, 0.7);
    			拘束具 = new But1(shapePartT2, delegate(But a)
    			{
    				if (調教UI2.拘束具sw.Flag)
    				{
    					//Sounds.変更2.Play();
    				}
    				else
    				{
    					//Sounds.変更1.Play();
    				}
    				調教UI2.拘束具sw.OnOff(a);
    				Sta.GameData.拘束具 = 調教UI2.拘束具sw.Flag;
    				調教UI2.Bod.拘束具_表示 = Sta.GameData.拘束具;
    				調教UI2.Bod.首輪_表示 = true;
    				Player.Reaction1();
    			});
    			ShapePartT shapePartT3 = new ShapePartT();
    			shapePartT3.Text = GameText.目隠;
    			shapePartT3.SizeBase = 0.095;
    			shapePartT3.Font = new Font("MS Gothic", 1f);
    			shapePartT3.FontSize = 0.07;
    			shapePartT3.SetStringRectOutline(Are.UnitScale, Are.DisplayGraphics);
    			shapePartT3.RectSize = new Vector2D(shapePartT3.OP[0].ps[1].X, shapePartT3.OP[0].ps[2].Y);
    			shapePartT3.OP.ScalingY(shapePartT3.BasePointBase, 0.9);
    			shapePartT3.Closed = true;
    			shapePartT3.TextColor = Col.Black;
    			shapePartT3.BrushColor = Color.FromArgb(160, Col.Black);
    			shapePartT3.ShadBrush = new SolidBrush(Color.FromArgb(64, Col.Black));
    			shapePartT3.HitColor = Med.GetUniqueColor();
    			shapePartT3.StringFormat.Alignment = StringAlignment.Center;
    			shapePartT3.StringFormat.LineAlignment = StringAlignment.Center;
    			shapePartT3.PositionBase = shapePartT2.PositionBase.AddY(0.015);
    			目隠帯 = new But1(shapePartT3, delegate(But a)
    			{
    				調教UI2.目隠帯sw.OnOff(a);
    				Sta.GameData.目隠帯 = 調教UI2.目隠帯sw.Flag;
    				調教UI2.Bod.目隠帯_表示 = Sta.GameData.目隠帯;
    				Player.Reaction1();
    			});
    			ShapePartT shapePartT4 = new ShapePartT();
    			shapePartT4.Text = GameText.口枷;
    			shapePartT4.SizeBase = 0.095;
    			shapePartT4.Font = new Font("MS Gothic", 1f);
    			shapePartT4.FontSize = 0.07;
    			shapePartT4.SetStringRectOutline(Are.UnitScale, Are.DisplayGraphics);
    			shapePartT4.RectSize = new Vector2D(shapePartT4.OP[0].ps[1].X, shapePartT4.OP[0].ps[2].Y);
    			shapePartT4.OP.ScalingY(shapePartT4.BasePointBase, 0.9);
    			shapePartT4.Closed = true;
    			shapePartT4.TextColor = Col.Black;
    			shapePartT4.BrushColor = Color.FromArgb(160, Col.Black);
    			shapePartT4.ShadBrush = new SolidBrush(Color.FromArgb(64, Col.Black));
    			shapePartT4.HitColor = Med.GetUniqueColor();
    			shapePartT4.StringFormat.Alignment = StringAlignment.Center;
    			shapePartT4.StringFormat.LineAlignment = StringAlignment.Center;
    			shapePartT4.PositionBase = shapePartT3.PositionBase.AddY(0.015);
    			玉口枷 = new But1(shapePartT4, delegate(But a)
    			{
    				調教UI2.玉口枷sw.OnOff(a);
    				Sta.GameData.玉口枷 = 調教UI2.玉口枷sw.Flag;
    				調教UI2.Bod.玉口枷_表示 = Sta.GameData.玉口枷;
    				Player.Reaction1();
    			});
    			ShapePartT shapePartT5 = new ShapePartT();
    			shapePartT5.Text = GameText.断面;
    			shapePartT5.SizeBase = 0.095;
    			shapePartT5.Font = new Font("MS Gothic", 1f);
    			shapePartT5.FontSize = 0.07;
    			shapePartT5.SetStringRectOutline(Are.UnitScale, Are.DisplayGraphics);
    			shapePartT5.RectSize = new Vector2D(shapePartT5.OP[0].ps[1].X, shapePartT5.OP[0].ps[2].Y);
    			shapePartT5.OP.ScalingY(shapePartT5.BasePointBase, 0.9);
    			shapePartT5.Closed = true;
    			shapePartT5.TextColor = Col.Black;
    			shapePartT5.BrushColor = Color.FromArgb(160, Col.Black);
    			shapePartT5.ShadBrush = new SolidBrush(Color.FromArgb(64, Col.Black));
    			shapePartT5.HitColor = Med.GetUniqueColor();
    			shapePartT5.StringFormat.Alignment = StringAlignment.Center;
    			shapePartT5.StringFormat.LineAlignment = StringAlignment.Center;
    			shapePartT5.PositionBase = shapePartT4.PositionBase.AddY(0.015);
    			断面 = new But1(shapePartT5, delegate(But a)
    			{
    				double v = 0.0;
    				if (調教UI2.ペニス挿入.Is膣)
    				{
    					v = 調教UI2.ペニス挿入.Insert;
    				}
    				if (調教UI2.マウス挿入.Is膣)
    				{
    					v = 調教UI2.マウス挿入.Insert;
    				}
    				if (調教UI2.ハンド挿入.Is膣)
    				{
    					v = 調教UI2.ハンド挿入.Insert;
    				}
    				if (調教UI2.ロータ挿入.Is膣)
    				{
    					v = 調教UI2.ロータ挿入.Insert;
    				}
    				if (調教UI2.コモン挿入.Is膣)
    				{
    					v = 調教UI2.コモン挿入.Insert;
    				}
    				if (調教UI2.ディル挿入.Is膣)
    				{
    					v = 調教UI2.ディル挿入.Insert;
    				}
    				if (調教UI2.アナル挿入.Is膣)
    				{
    					v = 調教UI2.アナル挿入.Insert;
    				}
    				if (調教UI2.デンマ挿入.Is膣)
    				{
    					v = 調教UI2.デンマ挿入.Insert;
    				}
    				if (調教UI2.ドリル挿入.Is膣)
    				{
    					v = 調教UI2.ドリル挿入.Insert;
    				}
    				if (調教UI2.パール挿入.Is膣)
    				{
    					v = 調教UI2.パール挿入.Insert;
    				}
    				調教UI2.断面sw.OnOff(a);
    				Sta.GameData.断面 = 調教UI2.断面sw.Flag;
    				if (!調教UI2.Bod.Is粘)
    				{
    					調教UI2.Bod.断面_表示 = Sta.GameData.断面;
    				}
    				if (調教UI2.ペニス挿入.Is膣)
    				{
    					調教UI2.ペニス挿入.断面切替(v);
    				}
    				if (調教UI2.マウス挿入.Is膣)
    				{
    					調教UI2.マウス挿入.断面切替(v);
    				}
    				if (調教UI2.ハンド挿入.Is膣)
    				{
    					調教UI2.ハンド挿入.断面切替(v);
    				}
    				if (調教UI2.ロータ挿入.Is膣)
    				{
    					調教UI2.ロータ挿入.断面切替(v);
    				}
    				if (調教UI2.コモン挿入.Is膣)
    				{
    					調教UI2.コモン挿入.断面切替(v);
    				}
    				if (調教UI2.ディル挿入.Is膣)
    				{
    					調教UI2.ディル挿入.断面切替(v);
    				}
    				if (調教UI2.アナル挿入.Is膣)
    				{
    					調教UI2.アナル挿入.断面切替(v);
    				}
    				if (調教UI2.デンマ挿入.Is膣)
    				{
    					調教UI2.デンマ挿入.断面切替(v);
    				}
    				if (調教UI2.ドリル挿入.Is膣)
    				{
    					調教UI2.ドリル挿入.断面切替(v);
    				}
    				if (調教UI2.パール挿入.Is膣)
    				{
    					調教UI2.パール挿入.断面切替(v);
    				}
    			});
    			ShapePartT shapePartT6 = new ShapePartT();
    			shapePartT6.Text = GameText.媚薬;
    			shapePartT6.SizeBase = 0.095;
    			shapePartT6.Font = new Font("MS Gothic", 1f);
    			shapePartT6.FontSize = 0.07;
    			shapePartT6.SetStringRectOutline(Are.UnitScale, Are.DisplayGraphics);
    			shapePartT6.RectSize = new Vector2D(shapePartT6.OP[0].ps[1].X, shapePartT6.OP[0].ps[2].Y);
    			shapePartT6.OP.ScalingY(shapePartT6.BasePointBase, 0.9);
    			shapePartT6.Closed = true;
    			shapePartT6.TextColor = Col.Black;
    			shapePartT6.BrushColor = Color.FromArgb(160, Col.Black);
    			shapePartT6.ShadBrush = new SolidBrush(Color.FromArgb(64, Col.Black));
    			shapePartT6.HitColor = Med.GetUniqueColor();
    			shapePartT6.StringFormat.Alignment = StringAlignment.Center;
    			shapePartT6.StringFormat.LineAlignment = StringAlignment.Center;
    			shapePartT6.PositionBase = shapePartT5.PositionBase.AddY(0.015);
    			媚薬 = new But1(shapePartT6, delegate
    			{
    				if (Sta.GameData.所持金 < 調教UI2.媚薬投与価格)
    				{
    					ip.SubInfoIm = GameText.所持金が足りません;
    				}
    				else
    				{
    					Sta.GameData.所持金 -= 調教UI2.媚薬投与価格;
                        //TODO fix?
                        //Sounds.精算.Play();
    					ip.UpdateSub2();
    					Sta.GameData.TrainingTarget.発情フラグ = true;
    					ip.SubInfoIm = GameText.媚薬を打ち込んだ;
    					Player.Reaction1();
    					調教UI2.媚薬.Dra = false;
    				}
    			});
    			StaminaButtons(Are, Med, ip);
    			ShapePartT shapePartT7 = new ShapePartT();
    			shapePartT7.Text = GameText.撮影;
    			shapePartT7.SizeBase = 0.095;
    			shapePartT7.Font = new Font("MS Gothic", 1f);
    			shapePartT7.FontSize = 0.07;
    			shapePartT7.SetStringRectOutline(Are.UnitScale, Are.DisplayGraphics);
    			shapePartT7.RectSize = new Vector2D(shapePartT7.OP[0].ps[1].X, shapePartT7.OP[0].ps[2].Y);
    			shapePartT7.OP.ScalingY(shapePartT7.BasePointBase, 0.9);
    			shapePartT7.Closed = true;
    			shapePartT7.TextColor = Col.Black;
    			shapePartT7.BrushColor = Color.FromArgb(160, Col.Black);
    			shapePartT7.ShadBrush = new SolidBrush(Color.FromArgb(64, Col.Black));
    			shapePartT7.HitColor = Med.GetUniqueColor();
    			shapePartT7.StringFormat.Alignment = StringAlignment.Center;
    			shapePartT7.StringFormat.LineAlignment = StringAlignment.Center;
    			shapePartT7.PositionBase = shapePartT6.PositionBase.AddY(0.015);
    			string Path = "Photo";
    			Film = new RenderArea(Med, Hit: false);
    			撮影 = new But1(shapePartT7, delegate
    			{
    				//Sounds.撮影.Play();
    				Med.flash();
    				if (!Directory.Exists(Path))
    				{
    					Directory.CreateDirectory(Path);
    				}
    				DateTime now = DateTime.Now;
    				Mods.撮影描画(調教UI2.Film, Med.FPSF);
    				Font font = new Font("MS Gothic", (float)(10.0));
    				float x = 350f;
    				float y = 365f;
    				if (Sta.BigWindow)
    				{
    					x = 525f;
    					y = 500f;
    				}
    				try
    				{
    					調教UI2.Film.DisplayGraphics.DrawString("Slave Matrix " + now.ToShortDateString().Replace("/", "."), font, Brushes.Coral, x, y);
    				}
    				finally
    				{
    					((IDisposable)font)?.Dispose();
    				}
    				調教UI2.Film.DisplayLayer.Save(System.IO.Path.Combine(Path, now.ToString("yyyy_MM_dd_HH_mm_ss") + ".png"), ImageFormat.Png);
    				ip.SubInfoIm = GameText.撮影しました + "\r\n" + GameText.写真はPhotoフォルダに保存されます;
    				if (Sta.GameData.TrainingTarget.Trained && !調教UI2.Cha.Body.Is拘束 && 調教UI2.Cha.Body.Is腕人 && !Sta.GameData.TrainingTarget.ChaD.撮影ピース経験)
    				{
    					ip.Text = GameText.愛想が悪い + "\r\n" + GameText.ダブルピースさせますか;
    					ip.Mai.Done = delegate
    					{
    						ip.選択yAct = delegate
    						{
    							//Sounds.操作.Play();
    							Sta.GameData.TrainingTarget.ChaD.撮影ピース経験 = true;
    							調教UI2.Cha.Setダブルピース();
    							調教UI2.Cha.Body.Update();
    							ip.選択肢表示 = false;
    							ip.MaiShow = false;
    						};
    						ip.選択nAct = delegate
    						{
    							//Sounds.操作.Play();
    							ip.選択肢表示 = false;
    							ip.MaiShow = false;
    						};
    						ip.選択肢表示 = true;
    					};
    					ip.MaiShow = true;
    				}
    			});
    			int alpha = 200;
    			体力sゲージ = new Gau("体力", Are.GetPosition(new Vector2D(0.025, 0.5)), Are.Size, 0.025, Are.YRatio * 0.98, 0.02, Open.Top, _2DGAMELIB.Range.ZeroOne, disUnit, Color.FromArgb(alpha, Color.Red), Color.Yellow, Color.FromArgb(alpha, Color.Gray), Color.FromArgb(alpha, Color.Gray), Color.FromArgb(alpha, Col.Black), Knob: false);
    			体力sゲージ.Frame1.Pen = null;
    			絶頂sゲージ = new Gau("絶頂", Are.GetPosition(new Vector2D(0.060000000000000005, 0.5)), Are.Size, 0.01, Are.YRatio * 0.98, 0.02, Open.Top, _2DGAMELIB.Range.ZeroOne, disUnit, Color.FromArgb(alpha, Color.DeepPink), Col.White, Color.FromArgb(alpha, Color.Gray), Color.FromArgb(alpha, Color.Gray), Color.Transparent, Knob: false);
    			絶頂sゲージ.Frame1.Pen = null;
    			絶頂sゲージ.Gauge.Pen = null;
    			興奮sゲージ = new Gau("興奮", Are.GetPosition(new Vector2D(0.060000000000000005, 0.5)), Are.Size, 0.025, Are.YRatio * 0.98, 0.02, Open.Top, _2DGAMELIB.Range.ZeroOne, disUnit, Color.FromArgb(180, Col.White), Color.FromArgb(180, Color.Red), Color.FromArgb(alpha, Color.Gray), Color.FromArgb(alpha, Color.Gray), Color.FromArgb(alpha, Col.Black), Knob: false);
    			興奮sゲージ.Frame1.Pen = null;
    			興奮sゲージ.Gauge.Pen = null;
    			精力mゲージ = new Gau("精力", Are.GetPosition(new Vector2D(0.025.Inverse(), 0.5)), Are.Size, 0.025, Are.YRatio * 0.98, 0.02, Open.Top, _2DGAMELIB.Range.ZeroOne, disUnit, Color.FromArgb(alpha, Col.Yellow.Add(180, 0, 0)), Col.Red.Add(180, 0, 0), Color.FromArgb(alpha, Color.Gray), Color.FromArgb(alpha, Color.Gray), Color.FromArgb(alpha, Col.Black), Knob: false);
    			精力mゲージ.Frame1.Pen = null;
    			射精mゲージ = new Gau("射精", Are.GetPosition(new Vector2D(0.060000000000000005.Inverse(), 0.5)), Are.Size, 0.01, Are.YRatio * 0.98, 0.02, Open.Top, _2DGAMELIB.Range.ZeroOne, disUnit, Color.FromArgb(alpha, Col.DeepPink.Add(180, 0, 0)), Col.White.Add(180, 0, 0), Color.FromArgb(alpha, Color.Gray), Color.FromArgb(alpha, Color.Gray), Color.Transparent, Knob: false);
    			射精mゲージ.Frame1.Pen = null;
    			射精mゲージ.Gauge.Pen = null;
    			興奮mゲージ = new Gau("興奮", Are.GetPosition(new Vector2D(0.060000000000000005.Inverse(), 0.5)), Are.Size, 0.025, Are.YRatio * 0.98, 0.02, Open.Top, _2DGAMELIB.Range.ZeroOne, disUnit, Color.FromArgb(180, Col.White), Color.FromArgb(180, Color.Red), Color.FromArgb(alpha, Color.Gray), Color.FromArgb(alpha, Color.Gray), Color.FromArgb(alpha, Col.Black), Knob: false);
    			興奮mゲージ.Frame1.Pen = null;
    			興奮mゲージ.Gauge.Pen = null;
    			Color c = Med.GetUniqueColor();
    			foreach (ShapePart item in 体力sゲージ.PartGroup.EnumAllPar())
    			{
    				item.HitColor = c;
    			}
    			Med.GetUniqueColor(out c);
    			foreach (ShapePart item2 in 絶頂sゲージ.PartGroup.EnumAllPar())
    			{
    				item2.HitColor = c;
    			}
    			Med.GetUniqueColor(out c);
    			foreach (ShapePart item3 in 興奮sゲージ.PartGroup.EnumAllPar())
    			{
    				item3.HitColor = c;
    			}
    			Med.GetUniqueColor(out c);
    			foreach (ShapePart item4 in 精力mゲージ.PartGroup.EnumAllPar())
    			{
    				item4.HitColor = c;
    			}
    			Med.GetUniqueColor(out c);
    			foreach (ShapePart item5 in 射精mゲージ.PartGroup.EnumAllPar())
    			{
    				item5.HitColor = c;
    			}
    			Med.GetUniqueColor(out c);
    			foreach (ShapePart item6 in 興奮mゲージ.PartGroup.EnumAllPar())
    			{
    				item6.HitColor = c;
    			}
    			体力sゲージ.Value = 1.0;
    			絶頂sゲージ.Value = 0.0;
    			興奮sゲージ.Value = 0.0;
    			精力mゲージ.Value = 1.0;
    			射精mゲージ.Value = 0.0;
    			興奮mゲージ.Value = 0.0;
    			Vector2D vector2D = new Vector2D(Are.LocalWidth - 0.14, Are.LocalHeight - (Are.LocalHeight - 0.005));
    			アナル.位置B = (アナルCM.bp = vector2D + new Vector2D(0, 0));
    			デンマ.位置B = (デンマCM.bp = vector2D + new Vector2D(0.019133333333333, 0.0));
    			ドリル.位置B = (ドリルCM.bp = vector2D + new Vector2D(0.038266666666666, 0.0));
    			コモン.位置B = (コモンCM.bp = vector2D + new Vector2D(0.0574, 0.0));
    			ディル.位置B = (ディルCM.bp = vector2D + new Vector2D(0.076533333333333, 0.0));
    			パール.位置B = (パールCM.bp = vector2D + new Vector2D(0.0574, 0.14175));
    			ロータ.位置B = (ロータCM.bp = vector2D + new Vector2D(0.076533333333333, 0.17325));
    			キャップ1.位置B = (キャップ1CM.bp = vector2D + new Vector2D(0.095666666666666, 0.1667));
    			キャップ2.位置B = (キャップ2CM.bp = vector2D + new Vector2D(0.095666666666666, 0.1807));
    			キャップ3.位置B = (キャップ3CM.bp = vector2D + new Vector2D(0.095666666666666, 0.1947));
    			T剃刀.位置B = (T剃刀CM.bp = vector2D + new Vector2D(0.0574, 0.091));
    			羽根箒.位置B = (羽根箒CM.bp = vector2D + new Vector2D(0.076533333333333, 0.116));
    			調教鞭.位置B = (調教鞭CM.bp = vector2D + new Vector2D(0.095666666666666, 0.11025));
    			ハンド右.位置B = (ハンド右CM.bp = vector2D + new Vector2D(0.0574, 181.0 / 800.0));
    			マウス.位置B = (マウスCM.bp = vector2D + new Vector2D(0.076533333333333, 0.23675));
    			ペニス.位置B = (ペニスCM.bp = vector2D + new Vector2D(0.095666666666666, 167.0 / 800.0));
    			focus = ハンド右CM;
    			Focus = ハンド右CM;
    			Set持ち手();
    			X = アナル.位置B.X - 0.006;
    			Y = マウス.位置B.Y + 0.015;
    			Mots.Add(Player.ゲージ降下処理.GetHashCode().ToString(), Player.ゲージ降下処理);
    			Player.ゲージ降下処理.Start();
    			擬音 = new Onomatopoeia();
    			AddBoxes();
    			絶頂ゲージ点滅 = new Motion(0.0, 1.0)
    			{
    				BaseSpeed = 2.0,
    				OnStart = delegate
    				{
    				},
    				OnUpdate = delegate(Motion m)
    				{
    					調教UI2.絶頂sゲージ.SetAlphaG(m.Value);
    				},
    				OnReach = delegate
    				{
    				},
    				OnLoop = delegate
    				{
    				},
    				OnEnd = delegate
    				{
    					調教UI2.絶頂sゲージ.SetAlphaG(1.0);
    				}
    			};
    			Mots.Add(絶頂ゲージ点滅.GetHashCode().ToString(), 絶頂ゲージ点滅);
    			射精ゲージ点滅 = new Motion(0.0, 1.0)
    			{
    				BaseSpeed = 2.0,
    				OnStart = delegate
    				{
    				},
    				OnUpdate = delegate(Motion m)
    				{
    					調教UI2.射精mゲージ.SetAlphaG(m.Value);
    				},
    				OnReach = delegate
    				{
    				},
    				OnLoop = delegate
    				{
    				},
    				OnEnd = delegate
    				{
    					調教UI2.射精mゲージ.SetAlphaG(1.0);
    				}
    			};
    			Mots.Add(射精ゲージ点滅.GetHashCode().ToString(), 射精ゲージ点滅);
    		}
    		catch (Exception)
    		{
    		}
    	}

    	public void SetTarget(Unit Unit, Character Cha)
    	{
    		if (this.Cha != null)
    		{
    			this.Cha.潮吹擬音 = null;
    			this.Cha.放尿擬音 = null;
    		}
    		this.Cha = Cha;
    		Bod = Cha.Body;
    		Bod.カーソル = this;
    		ペニス挿入.SetCha(Cha);
    		マウス挿入.SetCha(Cha);
    		ハンド挿入.SetCha(Cha);
    		ロータ挿入.SetCha(Cha);
    		コモン挿入.SetCha(Cha);
    		ディル挿入.SetCha(Cha);
    		アナル挿入.SetCha(Cha);
    		デンマ挿入.SetCha(Cha);
    		ドリル挿入.SetCha(Cha);
    		パール挿入.SetCha(Cha);
    		羽箒処理.SetCha(Cha);
    		剃刀処理.SetCha(Cha);
    		調鞭処理.SetCha(Cha);
    		ハンド処理.SetCha(Cha);
    		マウス処理.SetCha(Cha);
    		ペニス処理.SetCha(Cha);
    		キャップ処理.SetCha(Cha);
    		this.Cha.潮吹擬音 = 潮吹;
    		this.Cha.放尿擬音 = 放尿;
    		CP.Reset();
    		ペニス挿入.CP挿入.Reset();
    		マウス挿入.CP挿入.Reset();
    		ハンド挿入.CP挿入.Reset();
    		ロータ挿入.CP挿入.Reset();
    		コモン挿入.CP挿入.Reset();
    		ディル挿入.CP挿入.Reset();
    		アナル挿入.CP挿入.Reset();
    		デンマ挿入.CP挿入.Reset();
    		ドリル挿入.CP挿入.Reset();
    		パール挿入.CP挿入.Reset();
    		ペニス挿入.CP振動.Reset();
    		マウス挿入.CP振動.Reset();
    		ハンド挿入.CP振動.Reset();
    		ロータ挿入.CP振動.Reset();
    		コモン挿入.CP振動.Reset();
    		ディル挿入.CP振動.Reset();
    		アナル挿入.CP振動.Reset();
    		デンマ挿入.CP振動.Reset();
    		ドリル挿入.CP振動.Reset();
    		パール挿入.CP振動.Reset();
    		キャップ処理.CP中.Reset();
    		キャップ処理.CP左.Reset();
    		キャップ処理.CP右.Reset();
    		発情bu = Sta.GameData.TrainingTarget.発情フラグ;
    		強制拘束 = false;
    		拘束bu = Sta.GameData.拘束具;
    		if (!Unit.Trained)
    		{
    			Sta.GameData.拘束具 = true;
    			強制拘束 = true;
    		}
    		拘束具sw.SetFlag(拘束具, Sta.GameData.拘束具);
    		Bod.拘束具_表示 = Sta.GameData.拘束具;
    		目隠帯sw.SetFlag(目隠帯, Sta.GameData.目隠帯);
    		Bod.目隠帯_表示 = Sta.GameData.目隠帯;
    		玉口枷sw.SetFlag(玉口枷, Sta.GameData.玉口枷);
    		Bod.玉口枷_表示 = Sta.GameData.玉口枷;
    		断面sw.SetFlag(断面, Sta.GameData.断面);
    		if (!Bod.Is粘)
    		{
    			Bod.断面_表示 = Sta.GameData.断面;
    		}
    		断面.Dra = Sta.GameData.心眼;
    		媚薬.Dra = Sta.GameData.媚薬 && !Cha.CharacterData.タトゥ;
    		拘束具.Dra = Unit.Trained;
    		SlaveStamina.Dra = Sta.StaminaButton;
    		PlayerStamina.Dra = Sta.StaminaButton;
    	}

    	public void Reset()
    	{
    		foreach (Motion value in Mots.ms.Values)
    		{
    			if (value != Player.ゲージ降下処理)
    			{
    				value.End();
    			}
    		}
    		if (羽根箒.右)
    		{
    			ハンド右.X11Y0_小指.ReverseX();
    			ハンド右.X11Y0_薬指.ReverseX();
    			ハンド右.X11Y0_中指.ReverseX();
    			ハンド右.X11Y0_人指.ReverseX();
    			ハンド右.X11Y0_手.ReverseX();
    			ハンド右.X11Y0_親指.ReverseX();
    			ハンド右.X11Y0_呪印_輪1_輪外.ReverseX();
    			ハンド右.X11Y0_呪印_輪1_輪内.ReverseX();
    			ハンド右.X11Y0_呪印_輪2_輪外.ReverseX();
    			ハンド右.X11Y0_呪印_輪2_輪内.ReverseX();
    			ハンド右.X11Y0_呪印_輪3_輪外.ReverseX();
    			ハンド右.X11Y0_呪印_輪3_輪内.ReverseX();
    			ハンド右.X11Y0_呪印_鎖1.ReverseX();
    			ハンド右.X11Y0_呪印_鎖3.ReverseX();
    			ハンド右.Body.JoinPA();
    		}
    		Focus = ハンド右CM;
    		通常放し();
    		CP.Reset();
    		擬音キュー.Clear();
    		コキ_ = false;
    		ハンド左表示 = false;
    		持ち手 = false;
    		SubFocus.Clear();
    		膣i肛f = false;
    		肛f = false;
    		肛oh = false;
    		IsTB = false;
    		放し();
    		HeldButton = MouseButtons.None;
    		IsTool = false;
    		hcm = null;
    		ef = null;
    		sf = true;
    		ペニスCM.Reset();
    		マウスCM.Reset();
    		ハンド右CM.Reset();
    		ハンド左CM.Reset();
    		ハンド左.Intensity = 1.0;
    		ハンド左.SetHitFalse();
    		ロータCM.Reset();
    		コモンCM.Reset();
    		ディルCM.Reset();
    		アナルCM.Reset();
    		デンマCM.Reset();
    		ドリルCM.Reset();
    		パールCM.Reset();
    		羽根箒CM.Reset();
    		調教鞭CM.Reset();
    		調教鞭.Yi = 2;
    		T剃刀CM.Reset();
    		ペニス挿入.Reset();
    		マウス挿入.Reset();
    		ハンド挿入.Reset();
    		ロータ挿入.Reset();
    		コモン挿入.Reset();
    		ディル挿入.Reset();
    		アナル挿入.Reset();
    		デンマ挿入.Reset();
    		ドリル挿入.Reset();
    		パール挿入.Reset();
    		ペニス処理.Reset();
    		マウス処理.Reset();
    		ハンド処理.Reset();
    		キャップ処理.Reset();
    		羽箒処理.Reset();
    		剃刀処理.Reset();
    		調鞭処理.Reset();
    		射精.表示 = false;
    		射精.位置C = new Vector2D(0.0, 0.001);
    		射精.SetHitFalse();
    		Vector2D vector2D = new Vector2D(Are.LocalWidth - 0.14, Are.LocalHeight - (Are.LocalHeight - 0.005));
    		アナル.位置B = (アナルCM.bp = vector2D + new Vector2D(0, 0));
    		デンマ.位置B = (デンマCM.bp = vector2D + new Vector2D(0.019133333333333, 0.0));
    		ドリル.位置B = (ドリルCM.bp = vector2D + new Vector2D(0.038266666666666, 0.0));
    		コモン.位置B = (コモンCM.bp = vector2D + new Vector2D(0.0574, 0.0));
    		ディル.位置B = (ディルCM.bp = vector2D + new Vector2D(0.076533333333333, 0.0));
    		パール.位置B = (パールCM.bp = vector2D + new Vector2D(0.0574, 0.14175));
    		ロータ.位置B = (ロータCM.bp = vector2D + new Vector2D(0.076533333333333, 0.17325));
    		キャップ1.位置B = (キャップ1CM.bp = vector2D + new Vector2D(0.095666666666666, 0.1667));
    		キャップ2.位置B = (キャップ2CM.bp = vector2D + new Vector2D(0.095666666666666, 0.1807));
    		キャップ3.位置B = (キャップ3CM.bp = vector2D + new Vector2D(0.095666666666666, 0.1947));
    		T剃刀.位置B = (T剃刀CM.bp = vector2D + new Vector2D(0.0574, 0.091));
    		羽根箒.位置B = (羽根箒CM.bp = vector2D + new Vector2D(0.076533333333333, 0.116));
    		調教鞭.位置B = (調教鞭CM.bp = vector2D + new Vector2D(0.095666666666666, 0.11025));
    		ハンド右.位置B = (ハンド右CM.bp = vector2D + new Vector2D(0.0574, 181.0 / 800.0));
    		マウス.位置B = (マウスCM.bp = vector2D + new Vector2D(0.076533333333333, 0.23675));
    		ペニス.位置B = (ペニスCM.bp = vector2D + new Vector2D(0.095666666666666, 167.0 / 800.0));
    		focus = ハンド右CM;
    		Focus = ハンド右CM;
    		Set持ち手();
    		X = アナル.位置B.X - 0.006;
    		Y = マウス.位置B.Y + 0.015;
    		擬音.Clear();
    	}

    	public void 描画糸(RenderArea Are)
    	{
    		foreach (挿入処理 item in SubFocus)
    		{
    			if (item.Is糸)
    			{
    				item.対象.Draws(Are);
    			}
    		}
    	}

    	public void 描画肛(RenderArea Are)
    	{
    		if (膣i肛f)
    		{
    			focus.描画0(Are);
    			focus.描画1(Are);
    			if (!持ち手 || ((focus == キャップ1CM || focus == キャップ2CM || focus == キャップ3CM) && (キャップ処理.Isキャップ1着() || キャップ処理.Isキャップ2左着() || キャップ処理.Isキャップ2右着()) && !focus.DraShow))
    			{
    				ハンド右CM.待機描画(Are);
    			}
    		}
    		foreach (挿入処理 item in SubFocus)
    		{
    			if (item.Is肛)
    			{
    				item.対象.描画0s(Are);
    				if (item == マウス挿入)
    				{
    					item.対象.描画1s(Are);
    				}
    				if (肛oh)
    				{
    					focus.Draw(Are);
    				}
    				else if (!膣i肛f && IsTB)
    				{
    					Setハンド左(item);
    				}
    			}
    		}
    		if (!膣i肛f && 肛f)
    		{
    			focus.描画0(Are);
    		}
    	}

    	public override void 描画0(RenderArea Are)
    	{
    		foreach (挿入処理 item in SubFocus)
    		{
    			if (!item.Is肛)
    			{
    				item.対象.描画0s(Are);
    				if (item == マウス挿入)
    				{
    					item.対象.描画1s(Are);
    				}
    			}
    		}
    		if (!膣i肛f && !肛f)
    		{
    			focus.描画0(Are);
    		}
    	}

    	public override void 描画1(RenderArea Are)
    	{
    		if (ハンド挿入.Is膣)
    		{
    			return;
    		}
    		foreach (挿入処理 item in SubFocus)
    		{
    			if (item != マウス挿入)
    			{
    				item.対象.描画1s(Are);
    			}
    		}
    		if (!膣i肛f)
    		{
    			focus.描画1(Are);
    		}
    	}

    	public override void 描画2(RenderArea Are)
    	{
    		if (射精.表示)
    		{
    			射精.位置B = ペニス.位置B;
    			射精.色更新();
    			射精.Body.Draw(Are);
    		}
    		foreach (挿入処理 item in SubFocus)
    		{
    			if (!item.Is糸)
    			{
    				item.対象.Draws(Are);
    			}
    		}
    		if (!膣i肛f)
    		{
    			if (!肛oh)
    			{
    				focus.Draw(Are);
    			}
    		}
    		else if (IsTB)
    		{
    			Setハンド左(挿入処理s);
    		}
    		if (ハンド左表示 || ハンド処理.Is乳繰り || ハンド処理.Is乳摘み || ハンド処理.Is乳捏ね || ハンド処理.Isくぱぁ)
    		{
    			ハンド左CM.Draws(Are);
    			if (Is乳弄り)
    			{
    				ハンド右CM.待機描画(Are);
    			}
    		}
    		if (!ハンド挿入.Is膣)
    		{
    			return;
    		}
    		foreach (挿入処理 item2 in SubFocus)
    		{
    			item2.対象.描画1s(Are);
    		}
    		if (!膣i肛f)
    		{
    			focus.描画1(Are);
    		}
    	}

    	public void StaDraw(RenderArea Are, FPS FPS)
    	{
    		Player.表示ステート更新();
    		Player.ModBox();
    		Player.SensBox();
    		Are.Draw(体力sゲージ.PartGroup);
    		Are.Draw(興奮sゲージ.PartGroup);
    		Are.Draw(絶頂sゲージ.PartGroup);
    		Are.Draw(精力mゲージ.PartGroup);
    		Are.Draw(興奮mゲージ.PartGroup);
    		Are.Draw(射精mゲージ.PartGroup);
    		if (!Is乳弄り && !Isフォーカス糸挿入)
    		{
    			描画2(Are);
    		}
    		ペニスCM.待機描画(Are);
    		マウスCM.待機描画(Are);
    		if (!膣i肛f && !Is乳弄り && (!持ち手 || ((focus == キャップ1CM || focus == キャップ2CM || focus == キャップ3CM) && (キャップ処理.Isキャップ1着() || キャップ処理.Isキャップ2左着() || キャップ処理.Isキャップ2右着()) && !focus.DraShow)))
    		{
    			ハンド右CM.待機描画(Are);
    		}
    		ロータCM.待機描画(Are);
    		コモンCM.待機描画(Are);
    		ディルCM.待機描画(Are);
    		アナルCM.待機描画(Are);
    		デンマCM.待機描画(Are);
    		ドリルCM.待機描画(Are);
    		パールCM.待機描画(Are);
    		羽根箒CM.待機描画(Are);
    		調教鞭CM.待機描画(Are);
    		T剃刀CM.待機描画(Are);
    		キャップ1CM.待機描画(Are);
    		キャップ2CM.待機描画(Are);
    		キャップ3CM.待機描画(Are);
    		調教終了.Draw(Are);
    		拘束具.Draw(Are);
    		目隠帯.Draw(Are);
    		玉口枷.Draw(Are);
    		断面.Draw(Are);
    		媚薬.Draw(Are);
    		撮影.Draw(Are);
    		SlaveStamina.Draw(Are);
    		PlayerStamina.Draw(Are);
    		調鞭処理.衝撃.描画0(Are);
    		while (擬音キュー.Count > 0)
    		{
    			擬音キュー.Dequeue()(Are);
    		}
    		擬音.Draw(FPS);
    		if (ステート描画)
    		{
    			Are.Draw(ステート.PartGroup);
    		}
    		if (Sta.ShowSenses)
    		{
    			Are.Draw(InfoBox.PartGroup);
    			Are.Draw(SensitivityBox.PartGroup);
    		}
    	}

    	public void DrawState(RenderArea Are)
    	{
    		Player.表示ステート更新();
    		Player.ModBox();
    		Player.SensBox();
    		Are.Draw(体力sゲージ.PartGroup);
    		Are.Draw(精力mゲージ.PartGroup);
    		if (ステート描画)
    		{
    			Are.Draw(ステート.PartGroup);
    		}
    		if (Sta.ShowSenses)
    		{
    			Are.Draw(InfoBox.PartGroup);
    			Are.Draw(SensitivityBox.PartGroup);
    		}
    	}

    	public override void Dispose()
    	{
    		射精.Dispose();
    		ペニス.Dispose();
    		マウス.Dispose();
    		ハンド右.Dispose();
    		ハンド左.Dispose();
    		ロータ.Dispose();
    		コモン.Dispose();
    		ディル.Dispose();
    		アナル.Dispose();
    		デンマ.Dispose();
    		ドリル.Dispose();
    		パール.Dispose();
    		羽根箒.Dispose();
    		調教鞭.Dispose();
    		T剃刀.Dispose();
    		キャップ1.Dispose();
    		キャップ2.Dispose();
    		キャップ3.Dispose();
    		調鞭処理.衝撃.Dispose();
    		調教終了.Dispose();
    		拘束具.Dispose();
    		目隠帯.Dispose();
    		玉口枷.Dispose();
    		断面.Dispose();
    		媚薬.Dispose();
    		撮影.Dispose();
    		体力sゲージ.Dispose();
    		絶頂sゲージ.Dispose();
    		興奮sゲージ.Dispose();
    		精力mゲージ.Dispose();
    		射精mゲージ.Dispose();
    		興奮mゲージ.Dispose();
    		擬音.Dispose();
    		ステート.Dispose();
    		Film.Dispose();
    		InfoBox.Dispose();
    		SensitivityBox.Dispose();
    		//((Tex)(object)SlaveStamina).Dispose();
    		//((Tex)(object)PlayerStamina).Dispose();
    	}

    	public void Action(ContactType 接触, ActionType アクション情報, CurrentState タイミング情報, ToolType アイテム情報, int 挿入Lv, int 強さ, bool 機械, bool 射精)
    	{
    		Player.アクション入力(接触, アクション情報, タイミング情報, アイテム情報, 挿入Lv, 強さ, 機械, 射精);
    	}

    	public void AddBoxes()
    	{
    		double num = 0.31;
    		double width = 0.7;
    		if (Sta.BigWindow)
    		{
    			num += 0.14;
    		}
    		if (Sta.FixInfo)
    		{
    			width = 0.75;
    		}
    		ステート = new Tex("Tex", new Vector2D(Are.GetPosition(0.08, 0.7).X, 0.1), 0.1, width, 1.15, new Font("MS Gothic", 1f), 0.07, 0, "", Col.White, Col.Black, Color.FromArgb(160, Col.Black), 15.0);
    		InfoBox = new Tex("Info", new Vector2D(num, 0.005), 0.1, 0.9, 0.85, new Font("MS Gothic", 1f), 0.07, 0, "", Col.White, Col.Transparent, Color.FromArgb(15, Col.DarkMagenta), 100.0);
    		SensitivityBox = new Tex("Sens", new Vector2D(num + 0.02, 0.08), 0.1, 0.6, 1.99, new Font("MS Gothic", 1f), 0.057, 0, "", Col.White, Col.Transparent, Color.FromArgb(5, Col.DarkMagenta), 100.0);
    	}

    	public void StaminaButtons(RenderArea Are, ModeEventDispatcher Med, InfoPanel ip)
    	{
    		double x = 0.08;
    		double y = 0.1;
    		if (Sta.BigWindow)
    		{
    			x = 0.08;
    			y = 0.1;
    		}
    		ShapePartT shapePartT = new ShapePartT();
    		shapePartT.Text = "SlaveStamina";
    		shapePartT.SizeBase = 0.095;
    		shapePartT.Font = new Font("MS Gothic", 1f);
    		shapePartT.FontSize = 0.07;
    		shapePartT.SetStringRectOutline(Are.UnitScale, Are.DisplayGraphics);
    		shapePartT.RectSize = new Vector2D(shapePartT.OP[0].ps[1].X, shapePartT.OP[0].ps[2].Y);
    		shapePartT.OP.ScalingY(shapePartT.BasePointBase, 0.9);
    		shapePartT.Closed = true;
    		shapePartT.TextColor = Col.Black;
    		shapePartT.BrushColor = Color.FromArgb(160, Col.Black);
    		shapePartT.ShadBrush = new SolidBrush(Color.FromArgb(64, Col.Black));
    		shapePartT.HitColor = Med.GetUniqueColor();
    		shapePartT.StringFormat.Alignment = StringAlignment.Center;
    		shapePartT.StringFormat.LineAlignment = StringAlignment.Center;
    		shapePartT.PositionBase = Are.GetPosition(x, y);
    		SlaveStamina = new But1(shapePartT, delegate
    		{
    			//Sounds.操作.Play();
    			ip.UpdateSub2();
    			Sta.GameData.TrainingTarget.ChaD.Stamina = 1.0;
    		});
    		ShapePartT shapePartT2 = new ShapePartT();
    		shapePartT2.Text = "PlayerStamina";
    		shapePartT2.SizeBase = 0.095;
    		shapePartT2.Font = new Font("MS Gothic", 1f);
    		shapePartT2.FontSize = 0.07;
    		shapePartT2.SetStringRectOutline(Are.UnitScale, Are.DisplayGraphics);
    		shapePartT2.RectSize = new Vector2D(shapePartT2.OP[0].ps[1].X, shapePartT2.OP[0].ps[2].Y);
    		shapePartT2.OP.ScalingY(shapePartT2.BasePointBase, 0.9);
    		shapePartT2.Closed = true;
    		shapePartT2.TextColor = Col.Black;
    		shapePartT2.BrushColor = Color.FromArgb(160, Col.Black);
    		shapePartT2.ShadBrush = new SolidBrush(Color.FromArgb(64, Col.Black));
    		shapePartT2.HitColor = Med.GetUniqueColor();
    		shapePartT2.StringFormat.Alignment = StringAlignment.Center;
    		shapePartT2.StringFormat.LineAlignment = StringAlignment.Center;
    		shapePartT2.PositionBase = shapePartT.PositionBase.AddY(0.015);
    		PlayerStamina = new But1(shapePartT2, delegate
    		{
    			//Sounds.操作.Play();
    			ip.UpdateSub2();
    			Sta.GameData.精力 = 1.0;
    		});
    	}
    }
}
