void ASamuraiRocketGameMode::RespawnPlayer(AController* pc) { if (pc == NULL) return; if (pc->PlayerState->Score <= -10) { int nbPlayer = 0; for (TActorIterator<ASamuraiRocketCharacter> it(GetWorld()); it; ++it) { ++nbPlayer; } UE_LOG(LogGM, Log, TEXT("Player logged %i"), nbPlayer); if (pc->PlayerState->Score <= -10 && nbPlayer <= 2) { GameEnded(); } return; } APawn* pawn = this->SpawnDefaultPawnFor(pc, this->ChoosePlayerStart(pc)); if (pawn == NULL) return; pc->UnPossess(); pc->Possess(pawn); pc->PlayerState->Score = pc->PlayerState->Score - 1; ASamuraiRocketCharacter* src = Cast<ASamuraiRocketCharacter>(pawn); if (src != NULL) { src->GetMesh()->SetSkeletalMesh(_mapController[pc]); } }
void GooRoomClient::FlushGameInfo() { GooRoomClient::Instance().GetCloudMap().ClearCloudMap(); Stage* stage = GooRoomClient::Instance().GetStage(); PlayerMap& playerMap = stage->GetPlayerMap(); std::for_each(playerMap.begin(), playerMap.end(), [this](PlayerMap::value_type pair) { Player* player = pair.second; if(player->GetActorID() != GooRoomClient::Instance().GetMyActorID()) { GooRoomClient::Instance().RemoveJumpMessageDataQueue(player->GetActorID()); } delete player; }); playerMap.clear(); GameEnded(); m_BoostGauge = 0.f; m_MyActorID = ActorID_None; m_ComboStack = 0; }