/* If one or two player will collide, this function will call another function for winning/losing animation.
	Check Collision
		Resets game if collision detected
		Draw Box of black to wipe game screen
	Else
		Update Player Positions

	Update Screen

*/
void UpdateGame( struct Player* Player1, struct Player* Player2, int** Grid, int *GameStatus, alt_up_pixel_buffer_dma_dev* pixel_buffer) {
	int terminate =0;
	//===========================================================
	// Check Collision
	terminate = CheckPlayerCollision( Player1, Player2, Grid);


	if (terminate != 0){

		//===========================================================
		// If collision detected
		*GameStatus = 0;
		GameReset(Player1, Player2, Grid);

		//===========================================================
		// Draws black box to clear the positions
		alt_up_pixel_buffer_dma_draw_box(pixel_buffer, 150, 45, 299, 194, 0, 0);

		// Display win or lose

	}

	else{
		//===========================================================
		// Updating the grid
		UpdatePositions( Player1, Player2, Grid);

		//===========================================================
		// Draw pixels where the players are
		UpdateScreen(Player1, Player2, pixel_buffer);
	}
}
Exemple #2
0
void CGameWorld::GameStart()
{
    GameReset();

    m_nSelArr[0] = m_nSelArr[1] = -1;
    MakeMap();
    CreateElemGUI();
    m_bGameStarted = true;
    BGMChannel = Engine->Effect_PlayEx(BGM, 100, 0, 1.0, true);

    //搜索一次地图
    ToSearchMap();

    m_thisTime = 0;
}
Exemple #3
0
void CGameStats::OnGameplayEvent(IEntity *pEntity, const GameplayEvent &event)
{
/*	for(int i=0;i<gEventNamesNum;++i)
	{
		if(gEventNames[i].key == event.event)
		{
			CryLog("GameStats : Event %s",gEventNames[i].name);
		}
	}*/

	int e_id = pEntity ? (int) pEntity->GetId() : 0;
	switch(event.event)
	{
	case eGE_GameStarted:
		StartGame(event.value!=0);
		break;
	case eGE_GameEnd:
		EndGame(event.value!=0);
		break;
	case eGE_SuddenDeath:
		SuddenDeath(event.value!=0);
		break;
	case eGE_RoundEnd:
		EndRound(event.value!=0, atoi(event.description));
		break;
	case eGE_Renamed:
		SetName(e_id, event.description);
		break;
	case eGE_Scored:
		SetScore(e_id, event.description, (int)event.value);
		break;
	case eGE_Kill:
		OnKill(e_id, (EntityId*)event.extra);
		if(pEntity)
			ProcessPlayerStat(pEntity,event);
		break;
	case eGE_Death:
		OnDeath(e_id, (int)(TRUNCATE_PTR)event.extra);
		if(pEntity)
			ProcessPlayerStat(pEntity,event);
		break;
  case eGE_WeaponShot:
	case eGE_WeaponHit:
	case eGE_SuitModeChanged:
	case eGE_WeaponMelee:
	case eGE_LeftVehicle:
	case eGE_EnteredVehicle:
	case eGE_ItemSelected:
	case eGE_WeaponReload:
	case eGE_Damage:
	case eGE_Revive:
	case eGE_WeaponFireModeChanged:
	case eGE_ZoomedIn:
	case eGE_ZoomedOut:
		if(pEntity)
			ProcessPlayerStat(pEntity,event);
		break;
	case eGE_Connected:
		{
			bool restored = event.value!=0.0f;

			struct SExtraData
			{
					int status[2];
			};

			SExtraData* pExtra = static_cast<SExtraData*>(event.extra);
			NewPlayer(e_id, pExtra->status[0], pExtra->status[1]!=0, restored);
		}
		break;
  case eGE_ChangedTeam:
    SetTeam(e_id,(int)event.value);
    break;
  case eGE_Spectator:
    SetSpectator(e_id,(int)event.value);
		if(pEntity)
			ProcessPlayerStat(pEntity,event);
    break;
	case eGE_Disconnected:
		RemovePlayer(e_id, event.value!=0);
		break;
	case eGE_ScoreReset:
		ResetScore(e_id);
		break;
  case eGE_Rank:
    SetRank(e_id,(int)event.value);
    break;
	case eGE_GameReset:
		GameReset();
		break;
	default:
		break;
	}
}