コード例 #1
0
void CRMjudgeManager::StartNote( PlayerNumber player , WidgetType widgetType ) const
{
	CRMobject* thisNote = CRMobjectManager::GetInstance()->GetObjectFront( LAYER_MEMORY_POOL );
	if ( thisNote == nullptr )
	{
		return; 
	}

	if ( player == PLAYER_ONE && !CRMplayer1P::GetInstance()->IsDead())
	{
		// 만약 이곳에서 HP 체크를 하지 않으면?
		// Judge 메소드 주석 참조
		thisNote->SetWidgetType( widgetType );
		thisNote->SetPosition( NOTE_ONE_START_POSITION_X, NOTE_START_POSITION_Y );
		thisNote->SetVisible(true);
		thisNote->SetSceneType( SCENE_PLAY );
		thisNote->SetPlayer( PLAYER_ONE );
		CRMobjectManager::GetInstance()->AddObject( thisNote , LAYER_NOTE1 );
		CRMobjectManager::GetInstance()->DeleteNoteListFront( LAYER_MEMORY_POOL );
	}
	else if ( player == PLAYER_TWO && !CRMplayer2P::GetInstance()->IsDead() )
	{
		thisNote->SetWidgetType( widgetType );
		thisNote->SetPosition( NOTE_TWO_START_POSITION_X, NOTE_START_POSITION_Y );
		thisNote->SetVisible(true);
		thisNote->SetSceneType( SCENE_PLAY );
		thisNote->SetPlayer( PLAYER_TWO );
		CRMobjectManager::GetInstance()->AddObject( thisNote , LAYER_NOTE2 );
		CRMobjectManager::GetInstance()->DeleteNoteListFront( LAYER_MEMORY_POOL );
	}
}
コード例 #2
0
void CRMjudgeManager::JudgeNoteByPlayer( PlayerNumber playerNumber )
{

	LayerType playerLayer;
	CRMplayer* playerClass = nullptr;
	if ( playerNumber == PLAYER_ONE )
	{
		playerLayer = LAYER_NOTE1;
		playerClass = CRMplayer1P::GetInstance();
	}
	else
	{
		playerLayer = LAYER_NOTE2;
		playerClass = CRMplayer2P::GetInstance();
	}

	CRMobject* thisNote = CRMobjectManager::GetInstance()->GetObjectFront( playerLayer );
	if ( thisNote != nullptr )
	{
		/////////////////////////////////////////////////////////////////
		if ( IsKeyInputRight( thisNote , playerNumber ) )
		{
			if ( thisNote->GetPositionY() > NOTE_JUDGE_PERFECT_START_LINE && thisNote->GetPositionY() < NOTE_JUDGE_PERFECT_END_LINE )
			{
				thisNote->SetVisible(false);
				//effect 플래그 세팅
				//플래그만 세팅하면 이펙트 노출은 알아서 되게끔 하자
				//플래그 세팅하는 곳은 effect manager(싱글톤)를 따로 두고 진행합시다
				/*
						1. judge에서 effect Manager flag세팅
						2. childeffectimage에서 flag 확인
						3. childeffectimage에서 flag 확인 후 다시 flag 초기화
				*/
				float hitPositionX = thisNote->GetPositionX();
				float hitPositionY = thisNote->GetPositionY();
				CRMeffectManager::GetInstance()->SetFlag( playerNumber , hitPositionX , hitPositionY );

				//score up
				playerClass->AddEvent( JUDGE_PERFECT );
				PrintScore( playerNumber, JUDGE_PERFECT );

				if ( m_IsItemRecoverOn[playerNumber] == true )
				{
					playerClass->AddHP(4);
				}

				//키 누르면서 바로 지우면 플래그 세팅이 안됨
				//키를 누르면 무조건 세팅이 되면 miss 처리 불가
				//deleteNote 이동
				CRMobjectManager::GetInstance()->DeleteNoteListFront( playerLayer );
			}
			// Good
			else if ( ( thisNote->GetPositionY() > NOTE_JUDGE_GOOD_START_LINE && thisNote->GetPositionY() < NOTE_JUDGE_GOOD_END_LINE ) )
			{
				thisNote->SetVisible(false);
				//effect 플래그 세팅
				float hitPositionX = thisNote->GetPositionX();
				float hitPositionY = thisNote->GetPositionY();
				CRMeffectManager::GetInstance()->SetFlag( playerNumber , hitPositionX , hitPositionY );

				//score up
				playerClass->AddEvent( JUDGE_GOOD );
				PrintScore( playerNumber, JUDGE_GOOD );

				if ( m_IsItemRecoverOn[playerNumber] == true )
				{
					playerClass->AddHP(2);
				}

				CRMobjectManager::GetInstance()->DeleteNoteListFront( playerLayer );
			}
			// 너무 빨리 눌러 MISS (a키를 누르고 있을때 good나오는 버그 회피)

			else if ( thisNote->GetPositionY() > NOTE_JUDGE_FAST_MISS_LINE )
			{
				thisNote->SetVisible(false);
				
				//score up;
				playerClass->AddEvent( JUDGE_MISS );
				playerClass->SubHP();
				PrintScore( playerNumber, JUDGE_MISS );

				CRMobjectManager::GetInstance()->DeleteNoteListFront( playerLayer );
			}
		}
		//note bottom miss
		else if ( thisNote->GetPositionY() > NOTE_JUDGE_LATE_MISS_LINE )
		{
			
			//score up
			playerClass->AddEvent( JUDGE_MISS );
			playerClass->SubHP();
			PrintScore( playerNumber, JUDGE_MISS );

			//thisNote->SetPosition( DEFAULT_POSITION_X, DEFAULT_POSITION_Y );
			CRMobjectManager::GetInstance()->DeleteNoteListFront( playerLayer );

		}
		// Perfect 
		

		/////////////////////////////////////////////////////////////////
	}
}
コード例 #3
0
ファイル: RMmainLoop.cpp プロジェクト: blastingzone/oldboy
HRESULT CRMmainLoop::CreateObject()
{
	HRESULT hr = S_FALSE;

	// 이미지 리소스를 불러오려면 렌더가 필요함
	hr = CRMrender::GetInstance()->CreateFactory();
	if ( hr != S_OK )
	{
		MessageBox( NULL, ERROR_CREATE_RENDER, ERROR_TITLE_NORMAL, MB_OK | MB_ICONSTOP );
		return hr;
	}
	hr = CRMrender::GetInstance()->CreateRenderTarget();
	if ( hr != S_OK )
	{
		MessageBox( NULL, ERROR_CREATE_RENDER_TARGET, ERROR_TITLE_NORMAL, MB_OK | MB_ICONSTOP );
		return hr;
	}
	hr = CRMrender::GetInstance()->CreateBrush();
	if ( hr != S_OK )
	{
		MessageBox( NULL, ERROR_CREATE_BRUSH, ERROR_TITLE_NORMAL, MB_OK | MB_ICONSTOP );
		return hr;
	}

	// 렌더를 메인루프의 생성자에 못 넣는 이유는?
	// 렌더 쪽에서 메인루프 싱글톤을 호출하므로 메모리 접근 오류 발생!

	// 이미지 리소스 파일 불러오기
	hr = CRMresourceManager::GetInstance()->CreateFactory();
	if ( hr != S_OK )
	{
		MessageBox( NULL, ERROR_CREATE_WIC_FACTORY, ERROR_TITLE_NORMAL, MB_OK | MB_ICONSTOP );
		return hr;
	}
	hr = CRMresourceManager::GetInstance()->CreateTexture();
	if ( hr != S_OK )
	{
		MessageBox( NULL, ERROR_CREATE_BG_IMAGE, ERROR_TITLE_NORMAL, MB_OK | MB_ICONSTOP );
		return hr;
	}

	/**********************************************************************************/
	// 오브젝트 매니저 아이템 초기화
	/**********************************************************************************/
	// 오브젝트 매니저 안쪽으로 리팩토링 할 것
	//////////////////////////////////////////////////////////////////////////
	CRMobject*	newObject = new CRMchildBGImage();
	newObject->SetWidgetType(WIDGET_BG_IMAGE_TITLE);
	newObject->SetPosition(0, 0);
	newObject->SetSceneType(SCENE_TITLE);
	CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_BACKGROUND);

	newObject = new CRMchildBGImage();
	newObject->SetWidgetType(WIDGET_BG_IMAGE_PLAY);
	newObject->SetPosition(0, 0);
	newObject->SetSceneType(SCENE_PLAY);
	CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_BACKGROUND);
	
	newObject = new CRMchildBGImage();
	newObject->SetWidgetType(WIDGET_BG_IMAGE_SELECT);
	newObject->SetPosition(0, 0);
	newObject->SetSceneType(SCENE_SELECT_MUSIC);
	CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_BACKGROUND);
	
	//////////////////////////////////////////////////////////////////////////
	newObject = new CRMchildBGImage();
	newObject->SetWidgetType(WIDGET_ALBUM_IMAGE);
	newObject->SetPosition(0, 0);
	newObject->SetSceneType(SCENE_SELECT_MUSIC);
	CRMobjectManager::GetInstance()->AddAlbumImage(newObject, ALBUM_IMAGE_STATIC);

	newObject = new CRMchildAlbumImage();
	newObject->SetWidgetType(WIDGET_MOVING_ALBUM_IMAGE);
	newObject->SetPosition(0, 0);
	newObject->SetSceneType(SCENE_SELECT_MUSIC);
	CRMobjectManager::GetInstance()->AddAlbumImage(newObject, ALBUM_IMAGE_DYNAMIC);
	//////////////////////////////////////////////////////////////////////////

	newObject = new CRMchildBGImage();
	newObject->SetWidgetType(WIDGET_BG_IMAGE_RESULT);
	newObject->SetPosition(0, 0);
	newObject->SetSceneType(SCENE_RESULT);
	CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_BACKGROUND);

	CRMchildGauge* gaugeObject = new CRMchildGauge();
	gaugeObject->SetWidgetType(WIDGET_GAUGE_1P);
	gaugeObject->SetPosition(378, 650);
	gaugeObject->SetSceneType(SCENE_PLAY);
	gaugeObject->SetPlayer(PLAYER_ONE);
	CRMobjectManager::GetInstance()->AddObject(gaugeObject, LAYER_JUDGE_GAUGE);

	gaugeObject = new CRMchildGauge();
	gaugeObject->SetWidgetType(WIDGET_GAUGE_2P);
	gaugeObject->SetPosition(893, 650);
	gaugeObject->SetSceneType(SCENE_PLAY);
	gaugeObject->SetPlayer(PLAYER_TWO);
	CRMobjectManager::GetInstance()->AddObject(gaugeObject, LAYER_JUDGE_GAUGE);

	newObject = new CRMchildJudgeRing();
	newObject->SetWidgetType(WIDGET_JUDGE_RING);
	newObject->SetPosition(382, 530);
	newObject->SetSceneType(SCENE_PLAY);
	CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_JUDGE_GAUGE);

	newObject = new CRMchildJudgeRing();
	newObject->SetWidgetType(WIDGET_JUDGE_RING);
	newObject->SetPosition(895, 530);
	newObject->SetSceneType(SCENE_PLAY);
	CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_JUDGE_GAUGE);

	// 플레이 화면 판정 이미지
	newObject = new CRMchildJudgeMessage();
	newObject->SetWidgetType(WIDGET_PLAY_JUDGE_NONE);
	newObject->SetPosition(70, 160);
	newObject->SetSceneType(SCENE_PLAY);
	newObject->SetPlayer(PLAYER_ONE);
	CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_UI);

	newObject = new CRMchildJudgeMessage();
	newObject->SetWidgetType(WIDGET_PLAY_JUDGE_NONE);
	newObject->SetPosition(581, 160);
	newObject->SetSceneType(SCENE_PLAY);
	newObject->SetPlayer(PLAYER_TWO);
	CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_UI);

	for ( int i = 0 ; i < MAX_NOTE_IN_POOL ; ++i )
	{
		newObject = new CRMchildNote();
		newObject->SetWidgetType(WIDGET_NOTE_NORMAL_1);
		newObject->SetPosition( DEFAULT_POSITION_X, DEFAULT_POSITION_Y );
		newObject->SetSceneType(SCENE_PLAY);
		CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_MEMORY_POOL);
	}

	CRMchildShutter* shutterObject = new CRMchildShutter();
	shutterObject->SetWidgetType(WIDGET_SHUTTER);
	shutterObject->SetPosition(SHUTTER_P1_START_POSITION_X, -890);
	shutterObject->SetSceneType(SCENE_PLAY);
	shutterObject->SetPlayer(PLAYER_ONE);
	CRMobjectManager::GetInstance()->AddObject(shutterObject, LAYER_SHUTTER);

	shutterObject = new CRMchildShutter();
	shutterObject->SetWidgetType(WIDGET_SHUTTER);
	shutterObject->SetPosition(SHUTTER_P2_START_POSITION_X, -890);
	shutterObject->SetSceneType(SCENE_PLAY);
	shutterObject->SetPlayer(PLAYER_TWO);
	CRMobjectManager::GetInstance()->AddObject(shutterObject, LAYER_SHUTTER);

	for ( int i = 0 ; i < MAX_EFFECT ; ++ i )
	{
		newObject = new CRMchildEffectImage();
		newObject->SetWidgetType(WIDGET_NOTE_HIT);
		newObject->SetPosition(DEFAULT_POSITION_X, DEFAULT_POSITION_Y);
		newObject->SetSceneType(SCENE_PLAY);
		CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_NOTE_HIT);
	}



	newObject = new CRMchildAlertGrow();
	newObject->SetWidgetType( WIDGET_PLAY_ALERT_GROW_RED );
	newObject->SetPosition( SHUTTER_P1_START_POSITION_X , 0 );
	newObject->SetSceneType(SCENE_PLAY);
	newObject->SetPlayer(PLAYER_ONE);
	CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_UI);

	newObject = new CRMchildAlertGrow();
	newObject->SetWidgetType( WIDGET_PLAY_ALERT_GROW_RED );
	newObject->SetPosition( SHUTTER_P2_START_POSITION_X , 0 );
	newObject->SetSceneType(SCENE_PLAY);
	newObject->SetPlayer(PLAYER_TWO);
	CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_UI);

	newObject = new CRMchildCpuMode();
	newObject->SetWidgetType( WIDGET_UI_IMAGE_PLAY_CPU_MODE );
	newObject->SetPosition( SHUTTER_P2_START_POSITION_X , 0 );
	newObject->SetSceneType(SCENE_PLAY);
	newObject->SetPlayer(PLAYER_TWO);
	CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_UI);

	// pause용 이미지
	newObject = new CRMchildPauseImage();
	newObject->SetWidgetType(WIDGET_PAUSE_IMAGE_PLAY_CANCEL);
	newObject->SetPosition(0, 0); // 값 찾아서 define해야함 
	newObject->SetSceneType(SCENE_SELECT_MUSIC); // 필요 없지만 그냥 초기화
	CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_PAUSE);


	// title MODE용 이미지
	m_ModeSelector = new CRMchildTitleModeSelector;
	m_ModeSelector->SetWidgetType(WIDGET_TITLE_MODE_SINGLE);
	m_ModeSelector->SetPosition(390, 400);
	m_ModeSelector->SetSceneType(SCENE_TITLE);
	CRMobjectManager::GetInstance()->AddObject(m_ModeSelector, LAYER_PAUSE);


	// UI이미지 일단 리절트 화면
	newObject = new CRMchildUIResultImage();
	newObject->SetPlayer( PLAYER_ONE );
	newObject->SetWidgetType( WIDGET_UI_IMAGE_RESULT_LOSE_FAIL );
	newObject->SetPosition( ( SCREEN_SIZE_X / 2 ) - 462 , 217 );
	newObject->SetSceneType(SCENE_RESULT);
	CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_PAUSE);

	newObject = new CRMchildUIResultImage();
	newObject->SetPlayer( PLAYER_TWO );
	newObject->SetWidgetType( WIDGET_UI_IMAGE_RESULT_LOSE_FAIL );
	newObject->SetPosition( ( SCREEN_SIZE_X / 2 ) + 50 , 217 );
	newObject->SetSceneType(SCENE_RESULT);
	CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_PAUSE);

	// 설렉트 화면의 별있는 바 
	newObject = new CRMchildSelectBar();
	newObject->SetWidgetType( WIDGET_UI_IMAGE_SELECT_BAR_0 );
	newObject->SetPosition( 0 , 596 );
	newObject->SetSceneType(SCENE_SELECT_MUSIC);
	CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_UI);

	//<<<< 여기까지 이미지 자원
	//>>>> 여기부터 Label 자원
	
	//1. 포지션 위치 값 확인하고
	//2. 고정 값 / 유동 값 적용
	//3. 유동 값은 각 해당 위치에서 업데이트 되도록 set함수 제작
	//4. visible 정리 꼭 할 것

	//////////////////////////////////////////////////////////////////////////
	//music select 관련 label
	//


	//////////////////////////////////////////////////////////////////////////
	//P1 관련 label
	//


	//////////////////////////////////////////////////////////////////////////
	//p2 관련 label
	//

	// 아이템 매니저 생성
	CRMitemManager::GetInstance()->Create();

	CRMchildItemDisplay* itemObject = new CRMchildItemDisplay();
	itemObject->SetTier( TIER_1P_ONE );
	itemObject->SetPlayer( PLAYER_ONE );
	itemObject->SetPosition(ITEM_DISPLAY_POSITION_1P_X, -890);
	itemObject->SetSceneType(SCENE_PLAY);
	CRMobjectManager::GetInstance()->AddObject(itemObject, LAYER_ITEM);

	itemObject = new CRMchildItemDisplay();
	itemObject->SetTier( TIER_1P_TWO );
	itemObject->SetPlayer( PLAYER_ONE );
	itemObject->SetPosition(ITEM_DISPLAY_POSITION_1P_X, -890);
	itemObject->SetSceneType(SCENE_PLAY);
	CRMobjectManager::GetInstance()->AddObject(itemObject, LAYER_ITEM);

	itemObject = new CRMchildItemDisplay();
	itemObject->SetTier( TIER_1P_THREE );
	itemObject->SetPlayer( PLAYER_ONE );
	itemObject->SetPosition(ITEM_DISPLAY_POSITION_1P_X, -890);
	itemObject->SetSceneType(SCENE_PLAY);
	CRMobjectManager::GetInstance()->AddObject(itemObject, LAYER_ITEM);
	//////////////////////////////////////////////////////////////////////////
	itemObject = new CRMchildItemDisplay();
	itemObject->SetTier( TIER_2P_ONE );
	itemObject->SetPlayer( PLAYER_TWO );
	itemObject->SetPosition(ITEM_DISPLAY_POSITION_2P_X, -890);
	itemObject->SetSceneType(SCENE_PLAY);
	CRMobjectManager::GetInstance()->AddObject(itemObject, LAYER_ITEM);

	itemObject = new CRMchildItemDisplay();
	itemObject->SetTier( TIER_2P_TWO );
	itemObject->SetPlayer( PLAYER_TWO );
	itemObject->SetPosition(ITEM_DISPLAY_POSITION_2P_X, -890);
	itemObject->SetSceneType(SCENE_PLAY);
	CRMobjectManager::GetInstance()->AddObject(itemObject, LAYER_ITEM);

	itemObject = new CRMchildItemDisplay();
	itemObject->SetTier( TIER_2P_THREE );
	itemObject->SetPlayer( PLAYER_TWO );
	itemObject->SetPosition(ITEM_DISPLAY_POSITION_2P_X, -890);
	itemObject->SetSceneType(SCENE_PLAY);
	CRMobjectManager::GetInstance()->AddObject(itemObject, LAYER_ITEM);

	//////////////////////////////////////////////////////////////////////////
	// 툴팁 추가
	//////////////////////////////////////////////////////////////////////////

	newObject = new CRMchildBGImage();
	newObject->SetWidgetType( WIDGET_TOOLTIP_1 );
	newObject->SetVisible(true);
	newObject->SetPosition(0, 0);
	newObject->SetSceneType( SCENE_SELECT_MUSIC );
	CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_TOOLTIP);
	
	newObject = new CRMchildBGImage();
	newObject->SetWidgetType( WIDGET_TOOLTIP_2 );
	newObject->SetVisible(true);
	newObject->SetPosition(0, 0);
	newObject->SetSceneType( SCENE_SELECT_MUSIC );
	CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_TOOLTIP);

	newObject = new CRMchildBGImage();
	newObject->SetWidgetType( WIDGET_TOOLTIP_3 );
	newObject->SetVisible(true);
	newObject->SetPosition(0, 0);
	newObject->SetSceneType( SCENE_SELECT_MUSIC );
	CRMobjectManager::GetInstance()->AddObject(newObject, LAYER_TOOLTIP);

	//////////////////////////////////////////////////////////////////////////

	CRMchildItemCardDisplay* itemCardObject = nullptr;
	
//	for ( int i = 0 ; i < 30; ++i )
//	{
	itemCardObject = new CRMchildItemCardDisplay();
	itemCardObject->SetPosition(115, 200);
	itemCardObject->SetSceneType(SCENE_PLAY);
	itemCardObject->SetPlayer(PLAYER_ONE);
	//itemCardObject->SetOrder(i);
	CRMobjectManager::GetInstance()->AddObject(itemCardObject, LAYER_CARD);

	itemCardObject = new CRMchildItemCardDisplay();
	itemCardObject->SetPosition(627, 200);
	itemCardObject->SetSceneType(SCENE_PLAY);
	itemCardObject->SetPlayer(PLAYER_TWO);
	//itemCardObject->SetOrder(i);
	CRMobjectManager::GetInstance()->AddObject(itemCardObject, LAYER_CARD);
//	}
	return hr;
}