void cDetectNpc::DoDisComport() { cPlayer* pPlayer = PlayerManager()->FindPlayer( m_dwTagetPlayerPKey ); //탐지된 대상이 나가거나 없어짐 if( NULL == pPlayer || pPlayer->GetIsDead() ) { InitDetect(); m_pFsmClass->TranslateState( EVENT_PLAYER_RUNAWAY ); return; } //NPC 탐지 범위 밖으로 플레이어가 도망갔는지 체크 DWORD dwPlayerPos = pPlayer->GetPos(); int nDiff1 = ( dwPlayerPos % COL_LINE ) - ( m_dwPos % COL_LINE ); int nDiff2 = ( dwPlayerPos / COL_LINE ) - ( m_dwPos / COL_LINE ); if( abs( nDiff1 ) > 1 || abs( nDiff2 ) > 1 ) { InitDetect(); m_pFsmClass->TranslateState( EVENT_PLAYER_RUNAWAY ); return; } //플레이어가 도망가지 않고 계속 있으면 NPC가 화냄 상태로 ++m_byDisComportIndex; if( MAX_DISCOMPORT_INDEX == m_byDisComportIndex ) { m_byDisComportIndex = 0; m_pFsmClass->TranslateState( EVENT_DISCOMPORT_INDEX ); } }
GameStageX::GameStageX(SDL_Renderer *render){ renderer = render; this->hasGameStarted = false; map = new MapManager("1"); bgScroller = new BackgroundScroller(imageName1,imageName2); screen = new ScreenManager(0,bgScroller->getBgWidth(),bgScroller->getBgHeight(),renderer); plyrMgr = PlayerManager(screen); plane = new PlaneManager(1); itemMgr = new ItemManager(renderer); itemMgr->addItems(map); this->levelCompleted = false; }
PlayerManager PlayerListManager::GetPlayerManager() { return PlayerManager(); }
void cDetectNpc::DoDetect() { PlayerManager()->DetectPlayerFromNpc( this ); }