Example #1
0
//==============================================================
// タイトルの実行
//==============================================================
int CTitle::Run(void)
{
	// ゲームの初期化
	Init();

	// フェードイン
	SetFade(FADE_IN, 8.0f);
	UpdateFade();

	// BGM再生
	m_BGM.Release();
	m_BGM.Load("../Resource/BGM/OP.wav");
	m_BGM.SetVolume(MAX_VOL);
	m_BGM.Play(DSBPLAY_LOOPING);

	return 0;
}
BOOL CGumpEditorDoc::OnNewDocument()
{
	if (!CDialogEditorDemoDoc::OnNewDocument())
		return FALSE;

	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)
	SetName("");
	SetAlpha(0);
	SetFade(0,0);
	SetEventHandler("","","","","");
	SetShapeName("");
	
	m_objs.Clear();
	m_objs.SetVirtualSize(CSize(m_iDefWidth,m_iDefHeight));

	return TRUE;
}
void CGumpEditorDoc::OnSettings()
{
	CGumpEditorView* pView = (CGumpEditorView*)FindView(RUNTIME_CLASS(CGumpEditorView));
	if (!pView) return;

	CDEditor& editor = pView->GetDEditor();

	CDialogSettings	dlg;

	dlg.m_width = editor.GetVirtualSize().cx;
	dlg.m_height = editor.GetVirtualSize().cy;
	dlg.m_gridWidth = editor.GetGridSize().cx;
	dlg.m_gridHeight = editor.GetGridSize().cy;
	editor.GetMargins( dlg.m_marginLeft, dlg.m_marginTop, dlg.m_marginRight, dlg.m_marginBottom );
	
	dlg.m_strName = GetName();
	dlg.m_iAlpha = GetAlpha();
	dlg.m_iFlags = GetFlags();
	dlg.m_iFadeAlpha = GetFadeAlpha();
	dlg.m_iFadeTime = GetFadeTime();
	dlg.m_strShapeName = GetShapeName();
	GetEventHandler(dlg.m_strEvClick, dlg.m_strEvClose, dlg.m_strEvMouseUp, dlg.m_strEvMouseDown, dlg.m_strEvKeyPressed);

	if( dlg.DoModal() == IDOK )
	{
		editor.SetGridSize( CSize( dlg.m_gridWidth, dlg.m_gridHeight ) );
		editor.SetVirtualSize( CSize( dlg.m_width, dlg.m_height ) );
		editor.SetMargins( dlg.m_marginLeft, dlg.m_marginTop, dlg.m_marginRight, dlg.m_marginBottom );
		
		SetName(dlg.m_strName);
		SetAlpha(dlg.m_iAlpha);
		SetFlags(dlg.m_iFlags);
		SetFade(dlg.m_iFadeAlpha, dlg.m_iFadeTime);
		SetShapeName(dlg.m_strShapeName);
		SetEventHandler(dlg.m_strEvClick, dlg.m_strEvClose, dlg.m_strEvMouseUp, dlg.m_strEvMouseDown, dlg.m_strEvKeyPressed);
		
		editor.RedrawWindow();
	}
}
Example #4
0
File: pause.cpp Project: ponyuzu/-
/******************************************************************************
* 関数名:UpdatePause
* 
* 引数  :
* 戻り値:
* 説明  :
******************************************************************************/
void UpdatePause( void )
{

	for( int cnt = 0 ; cnt < PAUSE_TEX_MAX ; cnt++ )
	{

		VERTEX_2D *pVtx;
		g_pause[cnt].pVtxBuffPause -> Lock( 0 , 0 , ( void** ) &pVtx , 0 );

		//頂点カラー設定
		for( int cntCol = 0 ; cntCol < 4 ; cntCol ++ )
		{
			pVtx[cntCol].col = D3DCOLOR_RGBA( 255 , 255 , 255 , 255 );
		}

		g_pause[cnt].pVtxBuffPause -> Unlock();

	}

	switch( g_pausePattarn )
	{
	case PAUSE_CONTINUE:
		{
			VERTEX_2D *pVtx;
			g_pause[1].pVtxBuffPause -> Lock( 0 , 0 , ( void** ) &pVtx , 0 );

			//頂点カラー設定
			for( int cntCol = 0 ; cntCol < 4 ; cntCol ++ )
			{
				pVtx[cntCol].col = D3DCOLOR_RGBA( 255 , 0 , 0 , 255 );
			}

			g_pause[1].pVtxBuffPause -> Unlock();

			break;
		}
	case PAUSE_RETRY:
		{
			VERTEX_2D *pVtx;
			g_pause[2].pVtxBuffPause -> Lock( 0 , 0 , ( void** ) &pVtx , 0 );

			//頂点カラー設定
			for( int cntCol = 0 ; cntCol < 4 ; cntCol ++ )
			{
				pVtx[cntCol].col = D3DCOLOR_RGBA( 255 , 0 , 0 , 255 );
			}

			g_pause[2].pVtxBuffPause -> Unlock();
			break;
		}
	case PAUSE_QUIT:
		{
			VERTEX_2D *pVtx;
			g_pause[3].pVtxBuffPause -> Lock( 0 , 0 , ( void** ) &pVtx , 0 );

			//頂点カラー設定
			for( int cntCol = 0 ; cntCol < 4 ; cntCol ++ )
			{
				pVtx[cntCol].col = D3DCOLOR_RGBA( 255 , 0 , 0 , 255 );
			}

			g_pause[3].pVtxBuffPause -> Unlock();
			break;
		}
	}

	//ポーズ中の処理
	if( g_bPause == true )
	{
		//上に移動
		if( GetKeyboardTrigger( DIK_W ) )
		{
			if( g_pausePattarn == PAUSE_CONTINUE )
			{
				g_pausePattarn = PAUSE_QUIT;
			}
			else if( g_pausePattarn == PAUSE_QUIT )
			{
				g_pausePattarn = PAUSE_RETRY;
			}
			else
			{
				g_pausePattarn = PAUSE_CONTINUE;
			}
		}

		//下に移動
		else if( GetKeyboardTrigger( DIK_S ) )
		{
			if( g_pausePattarn == PAUSE_CONTINUE )
			{
				g_pausePattarn = PAUSE_RETRY;
			}
			else if( g_pausePattarn == PAUSE_RETRY )
			{
				g_pausePattarn = PAUSE_QUIT;
			}
			else
			{
				g_pausePattarn = PAUSE_CONTINUE;
			}
		}

		//enterを押した時の処理
		if( GetKeyboardTrigger( DIK_RETURN ) )
		{
			if( g_pausePattarn == PAUSE_CONTINUE )
			{
				g_bPause = false;
			}
			else if( g_pausePattarn == PAUSE_RETRY )
			{
				SetFade( FADE_OUT , MODE_GAME );
			}
			else
			{
				SetFade( FADE_OUT , MODE_SELECT );
			}
		}
	}

}
BOOL CGumpEditorDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
	XML::Parser parser;
	XML::Node* form=NULL,* document=NULL;
	XML::Node* section = NULL,* value = NULL;
	CSize sizeForm(m_iDefWidth,m_iDefHeight);
	
	try	{
		parser.loadData(lpszPathName);
		document = parser.parseDocument();

		form = document->findNode("form");
		if(!form ) throw;
		form->lookupAttribute("width",  (int&)sizeForm.cx);
		form->lookupAttribute("height", (int&)sizeForm.cy);

		int alpha=0,flags=0;
		std::string shape;

		form->lookupAttribute("alpha", alpha);
		form->lookupAttribute("flags", flags);
		form->lookupAttribute("shape", shape);

		m_objs.Clear();
		m_objs.SetVirtualSize(sizeForm);

		SetAlpha(alpha);
		SetFlags(flags);
		SetShapeName(shape.c_str());
	} catch (...) {
		return FALSE;
	}

	
	int alpha=0,time=0;
	std::string onclick, onclose, onmouseup, onmousedown, onkeypressed;
	
	XML::Node* fade_node = form->findNode("fade");
	if (fade_node) {
		fade_node->lookupAttribute("alpha", alpha);
		fade_node->lookupAttribute("time", time);
	}

	XML::Node* event_node = form->findNode("event");
	if (event_node) {
		event_node->lookupAttribute("onclick", onclick);
		event_node->lookupAttribute("onclose", onclose);
		event_node->lookupAttribute("onmouseup", onmouseup);
		event_node->lookupAttribute("onmousedown", onmousedown);
		event_node->lookupAttribute("onkeypressed", onkeypressed);
	}

	SetFade(alpha, time);
	SetEventHandler(onclick.c_str(), onclose.c_str(), onmouseup.c_str(), onmousedown.c_str(), onkeypressed.c_str());

	int idx=0;
	XML::Node* control = NULL;	

	while (control = form->findNode("control", idx++)) {
		CDiagramEntity* obj = CDiagramControlFactory::CreateFromString(control);
		if (obj) m_objs.Add(obj);
	}
	
	m_objs.SetModified( FALSE );
	
	delete document; document=NULL;

	return TRUE;
}
Example #6
0
//=============================================================================
// 更新処理
//=============================================================================
void UpdateGameManager(void)
{
#ifdef _DEBUG
	if(GetKeyboardTrigger(DIK_F1))
	{
		g_nGameMode = SELECTMODE_PLAY;
	}
	if(GetKeyboardTrigger(DIK_F2))
	{
		g_nGameMode = SELECTMODE_WALLEDIT;
	}
	if(GetKeyboardTrigger(DIK_F3))
	{
		g_nGameMode = SELECTMODE_GIMMICKEDIT;
	}
	if(GetKeyboardTrigger(DIK_F4))
	{
		g_nGameMode = SELECTMODE_PLAYEREDIT;
	}
	if(GetKeyboardTrigger(DIK_F5))
	{
		g_nGameMode = SELECTMODE_DELETE;
	}
	if(GetKeyboardTrigger(DIK_F6))
	{
		g_nGameMode = SELECTMODE_SCENECHANGE;
	}
	if(GetKeyboardTrigger(DIK_F7))
	{
		g_nGameMode = SELECTMODE_PLAYERBAR_NUM;
	}
	if(GetKeyboardTrigger(DIK_F8))
	{
		g_nGameMode = SELECTMODE_ITEMNUMEDIT;
	}
	if(g_nGameMode != SELECTMODE_PLAY)
		GetBackG()[BACKGROUND_EDIT_NET].bUse = true;
	else
		GetBackG()[BACKGROUND_EDIT_NET].bUse = false;

#endif

	switch (g_nGameMode)
	{
	case SELECTMODE_PLAY:
	{
		PrintDebugProc("【ゲームモード】\n");
		if(GetTimeCounter()->fCurrentTime > TIME_15)
			g_bIsPlay = false;

		if(!g_bIsPlay)
		{
			if(IsMouseRightTriggered())
			{
				int nGimNum = -1;
				int nItemNum = GetItemNum()->nItemLockTime;
				bool bIsLock = false;

				if(IsGimmickLock(&nGimNum, &bIsLock, &nItemNum) == true)
				{
					if(bIsLock == true)
					{
						SetItem(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), ITEM_TYPE_01, nGimNum);
						UpdataItemNum(-1);
					}
					else
					{
						DeleteItem(nGimNum);
						UpdataItemNum(1);
					}
				}
			}
		}
		break;
	}
	case SELECTMODE_WALLEDIT:
	{
		PrintDebugProc("【壁を編集するモード】\n");
		WallCreateMode();
		break;
	}
	case SELECTMODE_GIMMICKEDIT:
	{
		PrintDebugProc("【ギミック編集モード】\n");
		GimmickCreateMode();
		break;
	}
	case SELECTMODE_PLAYEREDIT:
	{
		PrintDebugProc("【プレイヤー編集モード】\n");
		if(IsMouseLeftPressed())
			IsMouseHitPlayer();
		PlayerEdit();
		break;
	}
	case SELECTMODE_DELETE:
	{
		PrintDebugProc("【削除モード】\n");
		DeleteGimmick();
		DeleteWall();
		break;
	}
	case SELECTMODE_SCENECHANGE:
	{
		PrintDebugProc("【ステージ切り替えるモード】\n");
		if(IsMouseRightTriggered())
		{
			if(*GetSceneNum() < SCENE_TYPE_MAX)
				(*GetSceneNum())++;
			if(*GetSceneNum() == SCENE_TYPE_MAX)
				*GetSceneNum() = 0;
			g_bIsSceneInit = true;
		}

		if(g_bIsSceneInit == true)
		{
			g_bIsSceneInit = false;
			switch (*GetSceneNum())
			{
			case SCENE_01:
				// 从文件中读取
				LoadData(SCENE_01);
				break;
			case SCENE_02:
				// 从文件中读取
				LoadData(SCENE_02);
				break;
			case SCENE_03:
				// 从文件中读取
				LoadData(SCENE_03);
				break;
			case SCENE_04:
				// 从文件中读取
				LoadData(SCENE_04);
				break;
			case SCENE_05:
				// 从文件中读取
				LoadData(SCENE_05);
				break;
			default:
				break;
			}
			// 読み込むデータを初期化
			InitDataPlayer();
			InitDataWall();
			InitDataGimmick();
			InitDataPlayerbar();

			for(int nCntGim = 0; nCntGim < MAX_GIMMICK; nCntGim++)
			{
				// 根据补完的数据对机关场景进行位置和运动预处理
				SetupGimmickTrack(nCntGim);
				*GetCleanupSwitch() = false;
			}
		}
		break;
	}
	case SELECTMODE_PLAYERBAR_NUM:
	{
		PrintDebugProc("【時間軸編集モード】\n");
		PrintDebugProc("数字キー「1」 時間軸数:1\n");
		PrintDebugProc("数字キー「2」 時間軸数:2\n");
		PrintDebugProc("数字キー「3」 時間軸数:3\n");
		if(GetKeyboardTrigger(DIK_1))
		{
			for(int nCntPlayBar = 0; nCntPlayBar < MAX_PLAYBAR; nCntPlayBar++)
			{
				//if(g_pPlaybar_GM[nCntPlayBar].bUse == true)
					g_pPlaybar_GM[nCntPlayBar].bUse = false;
			}
			for(int nCntGim = 0; nCntGim < MAX_GIMMICK; nCntGim++)
			{
				if(g_pGimmick_GM[nCntGim].bUse)
				{
					g_pGimmick_GM[nCntGim].nPriorityNum01 = -1;
					g_pGimmick_GM[nCntGim].nPriorityNum02 = -1;
					g_pGimmick_GM[nCntGim].nPriorityNum03 = -1;
				}
			}
			SetPlaybar(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), PLAYBAR_3_1);
			PlaybarNumCount();
		}
		if(GetKeyboardTrigger(DIK_2))
		{
			for(int nCntPlayBar = 0; nCntPlayBar < MAX_PLAYBAR; nCntPlayBar++)
			{
				//if(g_pPlaybar_GM[nCntPlayBar].bUse == true)
					g_pPlaybar_GM[nCntPlayBar].bUse = false;
			}
			for(int nCntGim = 0; nCntGim < MAX_GIMMICK; nCntGim++)
			{
				if(g_pGimmick_GM[nCntGim].bUse)
				{
					g_pGimmick_GM[nCntGim].nPriorityNum01 = -1;
					g_pGimmick_GM[nCntGim].nPriorityNum02 = -1;
					g_pGimmick_GM[nCntGim].nPriorityNum03 = -1;
				}
			}
			SetPlaybar(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), PLAYBAR_3_1);
			SetPlaybar(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), PLAYBAR_3_2);
			PlaybarNumCount();
		}
		if(GetKeyboardTrigger(DIK_3))
		{
			for(int nCntPlayBar = 0; nCntPlayBar < MAX_PLAYBAR; nCntPlayBar++)
			{
				//if(g_pPlaybar_GM[nCntPlayBar].bUse == true)
					g_pPlaybar_GM[nCntPlayBar].bUse = false;
			}
			for(int nCntGim = 0; nCntGim < MAX_GIMMICK; nCntGim++)
			{
				if(g_pGimmick_GM[nCntGim].bUse)
				{
					g_pGimmick_GM[nCntGim].nPriorityNum01 = -1;
					g_pGimmick_GM[nCntGim].nPriorityNum02 = -1;
					g_pGimmick_GM[nCntGim].nPriorityNum03 = -1;
				}
			}
			SetPlaybar(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), PLAYBAR_3_1);
			SetPlaybar(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), PLAYBAR_3_2);
			SetPlaybar(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), PLAYBAR_3_3);
			PlaybarNumCount();
		}
		break;
	}
	case SELECTMODE_ITEMNUMEDIT:
	{
		PrintDebugProc("【アイテム個数編集モード】\n");
		PrintDebugProc("【メニュー】    【アイテム】    【個数】\n");
		PrintDebugProc("数字キー「1」 時間固定アイテム:%d\n\n", g_pItemNum_GM->nItemLockTime);

		if(GetKeyboardTrigger(DIK_1))
		{
			g_nMenuSelect_GM = 1;
		}

		switch (g_nMenuSelect_GM)
		{

			case 1:
				PrintDebugProc("矢印キー【左】、【右】   【プラス/マイナス 1】\n");
				PrintDebugProc("矢印キー【上】、【下】   【プラス/マイナス 5】\n");

				if(GetKeyboardRepeat(DIK_LEFT))
				{
					g_pItemNum_GM->nItemLockTime -= 1;
					if(g_pItemNum_GM->nItemLockTime < 0)
						g_pItemNum_GM->nItemLockTime = 0;
				}
				if(GetKeyboardRepeat(DIK_RIGHT))
				{
					g_pItemNum_GM->nItemLockTime += 1;
					if(g_pItemNum_GM->nItemLockTime > 9)
						g_pItemNum_GM->nItemLockTime = 9;
				}
				if(GetKeyboardRepeat(DIK_DOWN))
				{
					g_pItemNum_GM->nItemLockTime -= 5;
					if(g_pItemNum_GM->nItemLockTime < 0)
						g_pItemNum_GM->nItemLockTime = 0;
				}
				if(GetKeyboardRepeat(DIK_UP))
				{
					g_pItemNum_GM->nItemLockTime += 5;
					if(g_pItemNum_GM->nItemLockTime > 9)
						g_pItemNum_GM->nItemLockTime = 9;
				}
				break;
			default:
				break;
		}

	}
	default:
		break;
	}

	if(!g_bIsPlay)
	{
		switch (*GetSceneNum())
		{
		case SCENE_01:
			PrintDebugProc("【SCENE_01】\n");
			// 今のシーンをセーフする
			if(IsMouseCenterTriggered())
				SaveData(SCENE_01);
			break;

		case SCENE_02:
			PrintDebugProc("【SCENE_02】\n");
			if(IsMouseCenterTriggered())
				SaveData(SCENE_02);
			break;

		case SCENE_03:
			PrintDebugProc("【SCENE_03】\n");
			if(IsMouseCenterTriggered())
				SaveData(SCENE_03);
			break;

		case SCENE_04:
			PrintDebugProc("【SCENE_04】\n");
			if(IsMouseCenterTriggered())
				SaveData(SCENE_04);
			break;

		case SCENE_05:
			PrintDebugProc("【SCENE_05】\n");
			if(IsMouseCenterTriggered())
				SaveData(SCENE_05);
			break;

		default:
			break;
		}
	}

	switch(*GetMode())
	{
	case GAMEMODE_LOGO:
		break;

	case GAMEMODE_TITLE:
	{
		if(GetKeyboardTrigger(DIK_RETURN) || IsMouseLeftTriggered())
			SetFade(FADE_OUT, FADE_IN, GAMEMODE_STAGE_SELECT);
		break;
	}
	case GAMEMODE_STAGE_SELECT:
	{
		g_bIsStop = true;
		g_bIsPlay = false;

		if(GetKeyboardTrigger(DIK_RETURN))
			SetFade(FADE_OUT, FADE_IN, GAMEMODE_GAME);

		if(IsMouseLeftTriggered())
		{
			int pIconNum = 0;
			if(IsMouseHitIcon(&pIconNum) == true)
			{
				*GetSceneNum() = GetGameElement()[pIconNum].nType;
				g_bIsSceneInit = true;
			}
		}

		if(g_bIsSceneInit == true)
		{
			g_bIsSceneInit = false;
			switch (*GetSceneNum())
			{
			case SCENE_01:
				// 从文件中读取
				LoadData(SCENE_01);
				break;
			case SCENE_02:
				// 从文件中读取
				LoadData(SCENE_02);
				break;
			case SCENE_03:
				// 从文件中读取
				LoadData(SCENE_03);
				break;
			case SCENE_04:
				// 从文件中读取
				LoadData(SCENE_04);
				break;
			case SCENE_05:
				// 从文件中读取
				LoadData(SCENE_05);
				break;
			default:
				break;
			}
			// 読み込むデータを初期化
			InitDataPlayer();
			InitDataWall();
			InitDataGimmick();
			InitDataPlayerbar();

			for(int nCntGim = 0; nCntGim < MAX_GIMMICK; nCntGim++)
			{
				// 根据补完的数据对机关场景进行位置和运动预处理
				SetupGimmickTrack(nCntGim);
				*GetCleanupSwitch() = false;
			}
			//*GetMode() = GAMEMODE_GAME;

			SetFade(FADE_OUT, FADE_IN, GAMEMODE_GAME);
		}
		
		break;
	}
	case GAMEMODE_GAME:
		break;

	case GAMEMODE_END:
		break;

	default:
		break;
	}



}
Example #7
0
//=============================================================================
// 更新処理
//=============================================================================
void UpdatePlayer(void)
{
	D3DXVECTOR3 nextPos;		//次に移動する位置
	D3DXVECTOR2 Intersection;	//坂道との交点

	// プレーヤー最大範囲と最小範囲の更新
	g_aPlayer[0].fMaxX = g_aPlayer[0].pos.x + g_aPlayer[0].fWidth / 4;
	g_aPlayer[0].fMinX = g_aPlayer[0].pos.x - g_aPlayer[0].fWidth / 4;
	g_aPlayer[0].fMaxY = g_aPlayer[0].pos.y + g_aPlayer[0].fHeight / 2;
	g_aPlayer[0].fMinY = g_aPlayer[0].pos.y - g_aPlayer[0].fHeight / 2;

	if(!*GetIsStop() && !*GetIsPause())
	{
		//移動する処理
		{
			//水平移動に関する
			g_aPlayer[0].bIsHit = false;

			nextPos = D3DXVECTOR3(g_aPlayer[0].pos.x + g_aPlayer[0].move.x, g_aPlayer[0].pos.y, 0.0f);

			//坂との当たった場合
			if(IsHitBySlope(nextPos, &Intersection,  false))
			{
				g_aPlayer[0].bIsHit = true;
			}
			else
			{//坂と当たっていない、かつ坂の上にある場合
				if(g_aPlayer[0].bIsOnSlope)
				{
					//位置補正
					g_aPlayer[0].pos.y = Intersection.y - g_aPlayer[0].size.y / 2;
				}
			}

			//壁に対する当たり判定
			if(IsHitByWall(nextPos,false))
			{
				g_aPlayer[0].bIsHit = true;
				//方向逆転
				g_aPlayer[0].move.x *= -1.0f;
				g_aPlayer[0].bIsChangeDir = g_aPlayer[0].bIsChangeDir ? false : true;
				g_aPlayer[0].bIsGoLeft = !g_aPlayer[0].bIsGoLeft;
			}
			//移動可能な道があるか
			if(g_aPlayer[0].bIsOnfloor)
			{
				//歩く道がなければ
				if(!CheckCanWalk(g_aPlayer[0].move.x, g_aPlayer[0].bIsGoLeft))
				{
					g_aPlayer[0].bIsHit = true;
				}
			}

			if(!g_aPlayer[0].bIsHit)
			{
				//水平移動の移動量を加算
				g_aPlayer[0].pos.x = nextPos.x;
			}

			//垂直移動処理
			nextPos = D3DXVECTOR3(g_aPlayer[0].pos.x, g_aPlayer[0].pos.y + g_aPlayer[0].move.y, 0.0f);
			//坂の上でない場合
			if(g_aPlayer[0].bIsOnSlope == false)
			{
				if(IsHitBySlope(nextPos, &Intersection,true))
				{
					g_aPlayer[0].bIsHit = true;
				}
				else
				{
					if(g_aPlayer[0].bIsOnSlope)
					{
						g_aPlayer[0].pos.y = Intersection.y - g_aPlayer[0].size.y / 2;
					}
				}
			}
			if(IsHitByWall(nextPos,true))
			{
				g_aPlayer[0].bIsHit = true;
			}

			//坂道の上でも、オブジェクトでも当たっていない
			if(g_aPlayer[0].bIsOnSlope == false && g_aPlayer[0].bIsHit == false)
			{
				g_aPlayer[0].pos.y = nextPos.y;
			}
		}

	//アニメション処理
			g_aPlayer[0].nCounterAnim++;
			// 移動方向
			if(g_aPlayer[0].bIsChangeDir == false)
			{
				if( (g_aPlayer[0].nCounterAnim % TIME_CHANGE_PLAYER_MOTION) == 0 )
					g_aPlayer[0].nPatternAnim = (( g_aPlayer[0].nPatternAnim + 1 ) % (NUM_ANIM_PATTERN_X9_Y1 - 1));
				SetVertexPlayer(0, 1, 1);
				SetTexturePlayer(0, g_aPlayer[0].nPatternAnim, NUM_ANIM_PATTERN_X9_Y2, TEX_PATTERN_DIVIDE_X9, TEX_PATTERN_DIVIDE_Y2);
			}
			else
			{
				if( (g_aPlayer[0].nCounterAnim % TIME_CHANGE_PLAYER_MOTION) == 0 )
					g_aPlayer[0].nPatternAnim = (( g_aPlayer[0].nPatternAnim + 1 ) % (NUM_ANIM_PATTERN_X9_Y1 - 1));
				SetVertexPlayer(0, 1, 1);
				SetTexturePlayer(0, g_aPlayer[0].nPatternAnim + NUM_ANIM_PATTERN_X9_Y1, NUM_ANIM_PATTERN_X9_Y2, TEX_PATTERN_DIVIDE_X9, TEX_PATTERN_DIVIDE_Y2);
			}

			if(g_aPlayer[0].bIsHitByGimmick == true)
			{
				if(g_aPlayer[0].bIsChangeDir == false)
				{
					SetVertexPlayer(0, 1, 1);
					SetTexturePlayer(0, NUM_ANIM_PATTERN_X9_Y1 - 1, NUM_ANIM_PATTERN_X9_Y2, TEX_PATTERN_DIVIDE_X9, TEX_PATTERN_DIVIDE_Y2);
				}
				else
				{
					SetVertexPlayer(0, 1, 1);
					SetTexturePlayer(0, NUM_ANIM_PATTERN_X9_Y2 - 1, NUM_ANIM_PATTERN_X9_Y2, TEX_PATTERN_DIVIDE_X9, TEX_PATTERN_DIVIDE_Y2);
				}
			}
		}
	else if(*GetIsStop() == true)
	{
		if(*GetGameMode() != SELECTMODE_PLAYEREDIT)
		{
			g_aPlayer[0].pos = g_aPlayer[0].posSave;
			g_aPlayer[0].fSpeedX = abs(g_aPlayer[0].fSpeedX);
			g_aPlayer[0].bIsChangeDir = false;
		}
		//g_aPlayer[0].bIsHit = false;
		g_aPlayer[0].bIsHitByGimmick = false;
		g_aPlayer[0].bIsOnfloor = false;
		SetVertexPlayer(0, 1, 1);
		SetTexturePlayer(0, 0, NUM_ANIM_PATTERN_X9_Y2, TEX_PATTERN_DIVIDE_X9, TEX_PATTERN_DIVIDE_Y2);
	}

	if(IsPlayerReachGoal(0, 0, 0) == true)
	{
		// 获得当前关卡的号码
		int* nCurrentSceneNum = GetSceneNum();
		int* nLastSceneNum = GetLastSceneNum();

		if(*nCurrentSceneNum > *nLastSceneNum)
			*nLastSceneNum = *nCurrentSceneNum;
		//
		// 获得当前关卡记录 包含关卡数量及是否被攻略
		SCENE* tempScene = GetScene();

		if(!(tempScene[*nCurrentSceneNum].bIsClear))
		{
			tempScene[*nCurrentSceneNum].bIsClear = true;
			(*nLastSceneNum)++;
		}
		*GetIsStop() = true;
		*GetIsPlay() = false;
		SetFade(FADE_OUT, FADE_IN, GAMEMODE_STAGE_SELECT);
	}
}