예제 #1
0
int CGameFlyControl::OnGameTimer(UINT_PTR nIDEvent)
{

	int nTimer1=GetTimerID(BIRDMOVETIMER);
	int nTimer2=GetTimerID(BIRDFLYLEVELTIMER);
	if (nIDEvent == nTimer1)
	{
		DrawBirdBody(RGB(40,150,40));
		birdBody->MoveBirdPos();
		DrawBirdBody(dwBirdColor);
		if(birdBody->HasHitWall())
		{
				KillAllTimer();
				return -2;
		}
		if (birdBody->HasHitBird(gunControl->GetGunArry(),gunControl->GetGunWidth(),gunControl->GetGunHight()))
		{
			KillAllTimer();
			return -2;
		}
		ClearLast();
		DrawGunBody(RGB(40,150,40));
		gunControl->MoveGun();
		DrawGunBody(dwGunColor);
		if (gunControl->HasHitBird(birdBody->GetBirdRect()))
		{
			KillAllTimer();
			return -2;
		}
		IncreaseScore(1);
		gunControl->HasHitWall();
		gunControl->ReSetGunPos();
	}
	if (nIDEvent == nTimer2)
	{
		
			if (nHardLevel<21)
			{
				nHardLevel++;
				gunControl->SetMaxGun(nHardLevel);
			}
	}
	if (nIDEvent==GetTimerID(GUNMOVETIMER))
	{
		birdBody->ChangeBirdSpeed(bLButtonDown,0.6);
	}
		
	
	return 2;
}
예제 #2
0
파일: Plugin.cpp 프로젝트: MXControl/RoboMX
void CTrivia::OnMessage(DWORD dwID, CString* pUser, CString* pMsg, BOOL bIsAction)
{
 	

	if(m_dwTriviaID != dwID){

		return;
	}

	CString strNickname = *pUser;
	CString strMessage	= *pMsg;

	// Nickname is emtpy, ignore input :-P
	if(strNickname.IsEmpty()){
	
		return;
	}
	// Message is emtpy, ignore input :-P
	if(strMessage.IsEmpty()){
		
		return;
	}
	
	if(m_strQuestion.GetLength() && (strMessage.Find(m_strQuestion) >= 0)){
		
		return;
	}

	CString strTmp;

	if((strMessage == "!hints") && IsAdmin(strNickname)){

		m_bHints = !m_bHints;
		if(m_bHints) FloodSafeInput(dwID, "Enabled Hints.");
		else FloodSafeInput(dwID, "Disabled Hints.");
	}

	if(!m_bTrivia){

        if((strMessage.Find("!trivia") == 0) && IsAdmin(strNickname)){

			strTmp = strMessage.Mid(7);
			strTmp.TrimLeft(); strTmp.TrimRight();
			
			if(strTmp.IsEmpty()){

				m_nRoundEnd = -1;
			}
			else{

				m_nRoundEnd		= atoi(strTmp);
			}
			m_bTrivia    = TRUE;
			m_eTrivia.ResetEvent();
			AfxBeginThread(TriviaThread, (LPVOID)this, THREAD_PRIORITY_NORMAL);
		}
		else{

			return;
		}
	}
	if(m_bTrivia){

		if((strMessage == "!strivia") && IsAdmin(strNickname)){

			m_bTrivia = FALSE;
			WaitForSingleObject(m_eTrivia.m_hObject, INFINITE);
			CString strMsg;
			strMsg.Format("Game has been stopped by '%s'.", strNickname);
			FloodSafeInput(m_dwTriviaID, strMsg);
		}
	}
	if(strMessage == "!score"){

 		strTmp = m_strScore;
		strTmp.Replace("%NAME%", strNickname);
		strTmp.Replace("%POINTS%", itocstr(GetScore(strNickname)));
		FloodSafeInput(m_dwTriviaID, strTmp);
		return;		
	}
	
	if(strMessage == "!ranking"){

		if(!m_aPlayers.GetSize()) return;

		PLAYER uTemp, u1, u2, u3;

		//CString strTmp;

		u1.nTriviaScore = -1;
		u1.strName = "";
		POSITION pos = m_aPlayers.GetStartPosition();
		//for(int i = 0; i < m_aPlayers.GetSize(); i++){
		
		while(pos){

			m_aPlayers.GetNextAssoc(pos, strTmp, uTemp);
			if(uTemp.nTriviaScore > u1.nTriviaScore){

				TRACE("1> %s %d\n", uTemp.strName, uTemp.nTriviaScore);
				u1 = uTemp;
			}
		}
		
		pos = NULL;

		if(m_aPlayers.GetSize() > 1){

			u2.nTriviaScore = -1;
			u2.strName = "";
						
			pos = m_aPlayers.GetStartPosition();

			//for(i = 0; i < m_aPlayers.GetSize(); i++){
			while(pos){

				m_aPlayers.GetNextAssoc(pos, strTmp, uTemp);

				if((uTemp.nTriviaScore > u2.nTriviaScore) &&
					(uTemp.nTriviaScore <= u1.nTriviaScore) &&
					(uTemp.strName != u1.strName)){

					TRACE("2> %s %d\n", uTemp.strName, uTemp.nTriviaScore);
					u2 = uTemp;
				}
			}
		}

		pos = NULL;

		if(m_aPlayers.GetSize() > 2){


			u3.nTriviaScore = -1;
			u3.strName = "";

			pos = m_aPlayers.GetStartPosition();

			//for(i = 0; i < m_aPlayers.GetSize(); i++){
			while(pos){

				m_aPlayers.GetNextAssoc(pos, strTmp, uTemp);

				if((uTemp.nTriviaScore > u3.nTriviaScore) &&
					(uTemp.nTriviaScore <= u2.nTriviaScore) &&
					(uTemp.strName != u2.strName) &&
					(uTemp.strName != u1.strName)){

					TRACE("3> %s %d\n", uTemp.strName, uTemp.nTriviaScore);
					u3 = uTemp;
				}
			}
		}


		FloodSafeInput(m_dwTriviaID, "Trivia UserRanking:");
		Sleep(100);

		strTmp.Format("  Place 1: %s (%02d points)", u1.strName, u1.nTriviaScore);
		FloodSafeInput(m_dwTriviaID, strTmp);
		Sleep(100);

		if(m_aPlayers.GetSize() > 1){

			strTmp.Format("  Place 2: %s (%02d points)", u2.strName, u2.nTriviaScore);
			FloodSafeInput(m_dwTriviaID, strTmp);
			Sleep(100);
		}

		if(m_aPlayers.GetSize() > 2){

			strTmp.Format("  Place 3: %s (%02d points)", u3.strName, u3.nTriviaScore);
			FloodSafeInput(m_dwTriviaID, strTmp);
			Sleep(100);
		}
		return;		
	}

	if((strMessage == "!pause") && IsAdmin(strNickname)){

		m_bPause = !m_bPause;
		if(m_bPause){

			FloodSafeInput(m_dwTriviaID, "Game has been paused.");
		}
		else{

			FloodSafeInput(m_dwTriviaID, "Game has been unpaused.");
		}
	}

	if((strMessage == "!skip") && IsAdmin(strNickname)){


		strTmp = m_strSkipText;
		strTmp.Replace("%QUES%", m_strQuestion);
		strTmp.Replace("%ANS%", m_aAnswers[0]);
		strTmp.Replace("%TIME%", itocstr(m_nTime));
		strTmp.Replace("%POINTS%", itocstr(m_nPoints));
	    strTmp.Replace("%NAME%", strNickname);
		FloodSafeInput(m_dwTriviaID, strTmp);
		m_strQuestion.Empty();
		m_aAnswers.RemoveAll();
		return;		
	}

	if((strMessage.Find("!reset") == 0) && IsAdmin(strNickname)){

		
		POSITION pos = m_aPlayers.GetStartPosition();

		while(pos){

			PLAYER uTemp;
			m_aPlayers.GetNextAssoc(pos, strTmp, uTemp);
			
			uTemp.nTriviaScore = 0;
			m_aPlayers.SetAt(uTemp.strName, uTemp);

		}

		strTmp = strMessage.Mid(6);
		strTmp.TrimLeft(); strTmp.TrimRight();
		
		if(strTmp.IsEmpty()){

			m_nRoundEnd = -1;
		}
		else{

			m_nRoundEnd		= atoi(strTmp);
		}

		if(m_nRoundEnd != -1){

			strTmp.Format("Trivia score reset. Starting new round: %d questions", m_nRoundEnd);
		}
		else{

			strTmp	= "Trivia score reset.";
		}
		
		FloodSafeInput(m_dwTriviaID, strTmp);
		m_aAnswers.RemoveAll();
		m_strQuestion.Empty();
		m_nCurrentRow = 0;
		m_strLastName.Empty();
		m_strLastWinner.Empty();
		m_nCurrentWin	= 0;
		return;		
	}

	if(m_strQuestion.IsEmpty()){


		return;
	}

	for(int i = 0; i < m_aAnswers.GetSize(); i++){

		if(m_strQuestion.IsEmpty()) break;
		if(ContainsStringExact(strMessage, m_aAnswers[i], FALSE) >= 0){
		
			//int nDone = 0;
			
			strTmp = m_strCorrect;
			strTmp.Replace("%SCORE%", itocstr(IncreaseScore(strNickname, m_nPoints))); //, &nDone)));
			strTmp.Replace("%ANS%", m_aAnswers[i]);
			strTmp.Replace("%QUES%", m_strQuestion);
			strTmp.Replace("%TIME%",	itocstr(m_nTime));
			strTmp.Replace("%POINTS%", itocstr(m_nPoints));
			strTmp.Replace("%NAME%", strNickname);

			FloodSafeInput(m_dwTriviaID, strTmp);

			if(m_strLastName == GetBaseName(strNickname)){

				m_nCurrentRow++;
				if((m_nCurrentRow % m_nRowWin) == 0){

					strTmp = m_strStreakMsg;
					strTmp.Replace("%NAME%", strNickname);
					strTmp.Replace("%STREAK%", itocstr(m_nCurrentRow));
					FloodSafeInput(m_dwTriviaID, strTmp);
				}
			}
			else{

				m_strLastName = GetBaseName(strNickname);
				m_nCurrentRow = 0;
			}

			if((m_nRoundEnd != -1) && (m_nCurrentQuestion >= m_nRoundEnd+1)){

				FinishRound(dwID); //, strNickname);
			}
			m_strQuestion.Empty();
			m_aAnswers.RemoveAll();
			break;
		}
	}
}