Пример #1
0
void CLocalPlayer::DoDeathCheck()
{
	// Have we not yet processed the death and is the local player dead?
	if(!CLocalPlayer::m_bIsDead && IsDead())
	{
		// Get the kill info
		EntityId playerId = INVALID_ENTITY_ID;
		EntityId vehicleId = INVALID_ENTITY_ID;
		EntityId weaponId = INVALID_ENTITY_ID;
		GetKillInfo(&playerId, &vehicleId,&weaponId);

		CLogFile::Printf("HandleDeath(LocalPlayer, %d, %d, %d)", playerId, vehicleId, weaponId);
		g_pCore->GetChat()->Outputf(false, "HandleDeath(LocalPlayer, %d, %d, %d)", playerId, vehicleId, weaponId);

		// Send the death notification to the server
		BitStream bsSend;
		bsSend.WriteCompressed(playerId);
		bsSend.WriteCompressed(vehicleId);
		bsSend.WriteCompressed(weaponId);
		g_pCore->GetNetworkManager()->Call(GET_RPC_CODEX(RPC_PLAYER_DEATH), &bsSend, HIGH_PRIORITY, RELIABLE_ORDERED, true);

		// Mark ourselves as dead
		CLocalPlayer::m_bIsDead = true;

		// Delete the object
		CIVScript::DeleteObject(&m_pObj);

		// Reset vehicle entry/exit flags
		SetExitFlag(true);
		ResetVehicleEnterExit();

		// Get current day time so we don't have to set the time always..
		CGameFunction::GetTime(&m_iRespawnTime[0], &m_iRespawnTime[1]);
	}
}
Пример #2
0
int KMonster::UnInit()
{
    SetExitFlag();

    if (m_nThreadFlag)
    {
        m_WorkThread.Destroy();
        m_nThreadFlag = FALSE;
    }

    DestroySimulator(m_piOperator);
    m_piOperator = NULL;

    m_Eyeshot.UnInit();
    m_PlayerClient.UnInit();
    m_BishopClient.UnInit();

    m_pRole = NULL;

    return TRUE;
}
Пример #3
0
// 次のシーンを作る
bool SceneMgr::CreateScene(){
	std::shared_ptr<BaseScene> tmpScene = nullptr;

	switch (nextScene){
	case eScene_Title:
		tmpScene = std::make_shared<Title>(this);
		break;
	case eScene_Menu:
		tmpScene = std::make_shared<Menu>(this);
		break;
	case eScene_Game:
		tmpScene = std::make_shared<GameMgrScene>(this);
		break;
	case eScene_GameClear1:
		tmpScene = std::make_shared<GameClear1>(this);
		break;
	case eScene_GameExit:
		SetExitFlag();
		nextScene = eScene_None;
		return true;
	case eScene_None:
		break;
	default:
		break;
	}

	nextScene = eScene_None;

	// 確保に失敗したらfalseを返す
	if (tmpScene == nullptr){
		return false;
	} else {
		allSceneSrack.push_front(tmpScene);
		return true;
	}
}