Ejemplo n.º 1
0
ArrowClientSkillEffect::ArrowClientSkillEffect(FLOAT3 _position, unsigned int _targetId, unsigned int _masterId)
{
	m_active = true;
	m_targetId = _targetId;
	m_graphicalEffect = g_graphicsEngine->createModel("Arrow", _position);
	m_graphicalEffect->setAlpha(0.999f);

	Entity* master = ClientEntityHandler::getEntity(_masterId);
	if(master != NULL)
	{
		master->m_model->getAnimation()->PlayLoop("RangeAttack");
	}
	
	D3DXVECTOR3 newPos = D3DXVECTOR3(_position.x, _position.y, _position.z);
	this->m_particleSystem = g_graphicsEngine->createParticleEngine(D3DXVECTOR4(newPos, 1), D3DXQUATERNION(0, 0, 0, 1), D3DXVECTOR2(1.0f, 1.0f));

	// Play sound
	int sound;
	switch(random(0, 2))
	{
	case 0:
		sound = createSoundHandle("attacks/rangeAttack_0", false, true, _position);
		break;
	case 1:
		sound = createSoundHandle("attacks/rangeAttack_1", false, true, _position);
		break;
	case 2:
		sound = createSoundHandle("attacks/rangeAttack_2", false, true, _position);
		break;
	}
	playSound(sound);
	deactivateSound(sound);
}
ChainStrikeClientSkillEffect::ChainStrikeClientSkillEffect(unsigned int _lastTarget, unsigned int _target, FLOAT3 _position)
{
	m_superPos = _position;
	m_lifetime = 0.0f;

	this->m_lastTarget = _lastTarget;
	this->m_target = _target;
	this->m_percentToTarget = 0;

	pe[0] = g_graphicsEngine->createParticleEngine("test", D3DXVECTOR4(0, 0, 0, 1), D3DXQUATERNION(0, 0, 0, 1), D3DXVECTOR2(1, 1));
	pe[1] = g_graphicsEngine->createParticleEngine("test2", D3DXVECTOR4(0, 0, 0, 1), D3DXQUATERNION(0, 0, 0, 1), D3DXVECTOR2(1, 1));
	pe[2] = g_graphicsEngine->createParticleEngine("test3", D3DXVECTOR4(0, 0, 0, 1), D3DXQUATERNION(0, 0, 0, 1), D3DXVECTOR2(1, 1));

	int sound = createSoundHandle("skills/chain_strike.wav", false, true, _position, 0.5f);
	playSound(sound);
	deactivateSound(sound);

	Entity *e = ClientEntityHandler::getEntity(_lastTarget);
	if(e != NULL && e->m_type == ServerEntity::HeroType)
	{
		e->m_model->getAnimation()->Play("ChainLight");
	}
	m_orig = D3DXVECTOR3(0, 0, 0);
	m_eOrig = NULL;
	m_eOrig = ClientEntityHandler::getEntity(m_lastTarget);
	if(m_eOrig)
		m_orig = D3DXVECTOR3(m_eOrig->m_model->getPosition().x, m_eOrig->m_model->getPosition().y, m_eOrig->m_model->getPosition().z);
}
TargetAcquiredClientSkillEffect::TargetAcquiredClientSkillEffect(unsigned int _masterId, FLOAT3 position)
{
	this->m_lifetime = 5.0f;

	Entity* e = ClientEntityHandler::getEntity(_masterId);
	if(e)
	{
		int sound = createSoundHandle("skills/target_acquired_permission_to_fire.wav", false, true, e->m_startPos);
		playSound(sound);
		deactivateSound(sound);
	}
	m_firePos = position;
	m_firePos.y = 10;
	m_fireTwoPos = position;
	m_fireTwoPos.y = 10;
	m_icePos = position;
	m_icePos.y = 8;
	m_lightningPos = position;
	m_lightningPos.y = 10;
	
	m_bfireOne = false;
	m_bfireTwo = false;
	m_biceOne = false;
	m_blightningOne = false;

	m_fire = NULL;
	m_fireTwo = NULL;
	m_ice = NULL;
	m_lightning = NULL;
}
AmbientSoundsManager::AmbientSoundsManager()
{
    m_thunderSounds[0] = createSoundHandle("ambient/thunder0.wav", false, false);
    m_thunderSounds[1] = createSoundHandle("ambient/thunder1.wav", false, false);
    m_thunderSounds[2] = createSoundHandle("ambient/thunder2.wav", false, false);
    m_thunderSounds[3] = createSoundHandle("ambient/thunder3.wav", false, false);
    m_thunderSounds[4] = createSoundHandle("ambient/thunder4.wav", false, false);
    m_thunderSoundsTimer = THUNDER_SOUNDS_DELAY;

    m_screamSounds[0] = createSoundHandle("ambient/CPUScream0.wav", false, false);
    m_screamSounds[1] = createSoundHandle("ambient/CPUScream1.wav", false, false);
    m_screamSounds[2] = createSoundHandle("ambient/scream0.wav", false, false);
    m_screamSounds[3] = createSoundHandle("ambient/scream1.wav", false, false);
    m_screamSounds[4] = createSoundHandle("ambient/scream2.wav", false, false);
    m_screamSoundsTimer = SCREAM_SOUNDS_DELAY;
}
CloudOfDarknessClientSkillEffect::CloudOfDarknessClientSkillEffect(unsigned int _masterId, FLOAT3 _position)
{
    m_position = _position;
    //m_graphicalEffects[0] = g_graphicsEngine->createModel("CloudOfDarkness", FLOAT3(_position.x, 0.1f, _position.z), "color2");
    //m_graphicalEffects[1] = g_graphicsEngine->createModel("CloudOfDarkness", FLOAT3(_position.x, 0.2f, _position.z), "color1");
    //m_graphicalEffects[2] = g_graphicsEngine->createModel("CloudOfDarkness", FLOAT3(_position.x, 0.3f, _position.z), "color");
    //m_graphicalEffects[0]->setScale(0.5f, 0.5f, 0.5f);
    //m_graphicalEffects[2]->setScale(0.5f, 0.5f, 0.5f);
    //m_graphicalEffects[1]->setScale(0.5f, 0.5f, 0.5f);
    //m_graphicalEffects[0]->setAlpha(0.999f);
    //m_graphicalEffects[1]->setAlpha(0.999f);
    //m_graphicalEffects[2]->setAlpha(0.999f);
    //m_graphicalEffects[0]->neutralize();
    //m_graphicalEffects[1]->neutralize();
    //m_graphicalEffects[2]->neutralize();
    m_lifetime = 0.0f;

    m_cloud = g_graphicsEngine->createParticleEngine("CloudOfDarkness", D3DXVECTOR4(_position.toD3DXVector(), 1), D3DXQUATERNION(0, 0, 0, 1), D3DXVECTOR2(1, 1));

    int sound = createSoundHandle("skills/codWindStartEnd.wav", false, true, _position);
    playSound(sound);
    deactivateSound(sound);
    m_masterId = _masterId;

    Entity *e = ClientEntityHandler::getEntity(_masterId);
    if(e != NULL)
    {
        e->m_model->getAnimation()->Play("Spell");
        m_weapon = e->m_model->getRightHand();
        e->m_model->SetRightHand(NULL);
    }
}
Ejemplo n.º 6
0
ClientHandler::ClientHandler(HWND _hWnd)
{
    // Init globals for the people
    g_graphicsEngine = new GraphicsHandler(_hWnd, g_configFile);
    g_mouse = new Mouse(500, 500, _hWnd);
    g_keyboard = new Keyboard();

    this->m_serverThread = NULL;
    this->m_client = new Client();

    m_menuMusic = createSoundHandle("music/menu.wav", true, false);
}
Ejemplo n.º 7
0
WallClientSkillEffect::WallClientSkillEffect(unsigned int _masterId, FLOAT3 _position)
{
	Entity *master = ClientEntityHandler::getEntity(_masterId);

	if(master != NULL)
	{
		master->m_model->getAnimation()->Play("Spell");
	}

	// Play sound
	int sound = createSoundHandle("skills/wallStartGroundShake.wav", false, true, _position);
	playSound(sound);
	deactivateSound(sound);
}
TeleportClientSkillEffect::TeleportClientSkillEffect(unsigned int _casterId, const FLOAT3& _position)
{
	int sound = createSoundHandle("skills/teleport.wav", false, true, _position);
	playSound(sound);
	deactivateSound(sound);
	m_lifeTime = 0;

	this->m_casterId = _casterId;
	this->m_position = _position;

	m_origTele = NULL;
	m_targetTele = NULL;

	Entity* e = ClientEntityHandler::getEntity(_casterId);
	if(e != NULL)
		m_origTele = g_graphicsEngine->createParticleEngine("Teleport", D3DXVECTOR4(e->m_model->getPosition().toD3DXVector(), 1), D3DXQUATERNION(0, 0, 0, 1), D3DXVECTOR2(1, 1));

	m_targetTele = g_graphicsEngine->createParticleEngine("Teleport", D3DXVECTOR4(m_position.toD3DXVector(), 1), D3DXQUATERNION(0, 0, 0, 1), D3DXVECTOR2(1, 1));
}
SimonsEvilClientSkillEffect::SimonsEvilClientSkillEffect(unsigned int _masterId)
{
	m_masterId = _masterId;
	Entity* master = ClientEntityHandler::getEntity(_masterId);
	if(master)
	{
		m_timer = 0.0f;

		D3DXVECTOR3 newPos = D3DXVECTOR3(master->m_startPos.x, master->m_startPos.y, master->m_startPos.z);
		this->m_particleSystem = g_graphicsEngine->createParticleEngine("HealingAura", D3DXVECTOR4(newPos, 1), D3DXQUATERNION(0, 0, 0, 1), D3DXVECTOR2(1.0f, 1.0f));

		// Play sound
		int sound = createSoundHandle("skills/healing_aura.wav", false, true, master->m_startPos);
		playSound(sound);
		deactivateSound(sound);
	}
	else
	{
		m_timer = SimonsEvilEffect::LIFETIME;
		m_particleSystem = NULL;
	}
}
Ejemplo n.º 10
0
MeleeAOEClientSkillEffect::MeleeAOEClientSkillEffect(unsigned int _masterId, unsigned int _targetId, PLAYER_INFO _playerInfo)
{
	this->m_lifetime = 1.0f;
	Entity* master = ClientEntityHandler::getEntity(_masterId);
	
	if(master != NULL)
	{
		master->m_model->getAnimation()->PlayLoop("2Hattack");

		Entity* target = ClientEntityHandler::getEntity(_targetId);
		if(target)
		{
			if(master->m_type == ServerEntity::HeroType)
			{
				// Play impact sound
				int impactSound;
				switch(random(0, 2))
				{
				case 0:
					impactSound = createSoundHandle("attacks/twoHandedAttack_0.wav", false, true, target->m_startPos);
					break;
				case 1:
					impactSound = createSoundHandle("attacks/twoHandedAttack_1.wav", false, true, target->m_startPos);
					break;
				case 2:
					impactSound = createSoundHandle("attacks/twoHandedAttack_2.wav", false, true, target->m_startPos);
					break;
				}

				playSound(impactSound);
				deactivateSound(impactSound);
			}

			// Play damage sound.
			int sound;
			switch(target->m_type)
			{
			case ServerEntity::HeroType:
				switch(_playerInfo.heroType)
				{
				case Hero::RED_KNIGHT:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("red_knight/RedKnight_Damage_0.wav", false, true, target->m_startPos);
						break;
					case 1:
						sound = createSoundHandle("red_knight/RedKnight_Damage_1.wav", false, true, target->m_startPos);
						break;
					case 2:
						sound = createSoundHandle("red_knight/RedKnight_Damage_2.wav", false, true, target->m_startPos);
						break;
					}
					break;
				case Hero::ENGINEER:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("engineer/Engineer_Damage_0.wav", false, true, target->m_startPos);
						break;
					case 1:
						sound = createSoundHandle("engineer/Engineer_Damage_1.wav", false, true, target->m_startPos);
						break;
					case 2:
						sound = createSoundHandle("engineer/Engineer_Damage_2.wav", false, true, target->m_startPos);
						break;
					}
					break;
				case Hero::THE_MENTALIST:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("mentalist/Mentalist_Damage_0.wav", false, true, target->m_startPos);
						break;
					case 1:
						sound = createSoundHandle("mentalist/Mentalist_Damage_1.wav", false, true, target->m_startPos);
						break;
					case 2:
						sound = createSoundHandle("mentalist/Mentalist_Damage_2.wav", false, true, target->m_startPos);
						break;
					}
					break;
				case Hero::OFFICER:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("officer/Officer_Damage_0.wav", false, true, target->m_startPos);
						break;
					case 1:
						sound = createSoundHandle("officer/Officer_Damage_1.wav", false, true, target->m_startPos);
						break;
					case 2:
						sound = createSoundHandle("officer/Officer_Damage_2.wav", false, true, target->m_startPos);
						break;
					}
					break;
				case Hero::DOCTOR:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("doctor/Doctor_Damage_0.wav", false, true, target->m_startPos);
						break;
					case 1:
						sound = createSoundHandle("doctor/Doctor_Damage_1.wav", false, true, target->m_startPos);
						break;
					case 2:
						sound = createSoundHandle("doctor/Doctor_Damage_2.wav", false, true, target->m_startPos);
						break;
					}
					break;
				}
				break;

			case ServerEntity::EnemyType:
				switch(target->m_subtype)
				{
				case Enemy::IMP:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("enemy/Monster_Imp_Damage_0.wav", false, true, target->m_startPos);
						break;
					case 1:
						sound = createSoundHandle("enemy/Monster_Imp_Damage_1.wav", false, true, target->m_startPos);
						break;
					case 2:
						sound = createSoundHandle("enemy/Monster_Imp_Damage_2.wav", false, true, target->m_startPos);
						break;
					}
					break;
				case Enemy::SHADE:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("enemy/Monster_Shade_Damage_0.wav", false, true, target->m_startPos);
						break;
					case 1:
						sound = createSoundHandle("enemy/Monster_Shade_Damage_1.wav", false, true, target->m_startPos);
						break;
					case 2:
						sound = createSoundHandle("enemy/Monster_Shade_Damage_2.wav", false, true, target->m_startPos);
						break;
					}
					break;
				case Enemy::FROST_DEMON:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("enemy/Monster_Frost_Damage_0.wav", false, true, target->m_startPos);
						break;
					case 1:
						sound = createSoundHandle("enemy/Monster_Frost_Damage_1.wav", false, true, target->m_startPos);
						break;
					case 2:
						sound = createSoundHandle("enemy/Monster_Frost_Damage_2.wav", false, true, target->m_startPos);
						break;
					}
					break;
				case Enemy::SPITTING_DEMON:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("enemy/Monster_Spitting_Damage_0.wav", false, true, target->m_startPos);
						break;
					case 1:
						sound = createSoundHandle("enemy/Monster_Spitting_Damage_1.wav", false, true, target->m_startPos);
						break;
					case 2:
						sound = createSoundHandle("enemy/Monster_Spitting_Damage_2.wav", false, true, target->m_startPos);
						break;
					}
					break;
				case Enemy::HELLFIRE_STEED:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("enemy/Beast_Damage_0.wav", false, true, target->m_startPos);
						break;
					case 1:
						sound = createSoundHandle("enemy/Beast_Damage_1.wav", false, true, target->m_startPos);
						break;
					case 2:
						sound = createSoundHandle("enemy/Beast_Damage_2.wav", false, true, target->m_startPos);
						break;
					}
					break;
				case Enemy::SOUL_EATER_STEED:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("enemy/Beast_Damage_0.wav", false, true, target->m_startPos);
						break;
					case 1:
						sound = createSoundHandle("enemy/Beast_Damage_1.wav", false, true, target->m_startPos);
						break;
					case 2:
						sound = createSoundHandle("enemy/Beast_Damage_2.wav", false, true, target->m_startPos);
						break;
					}
					break;
				case Enemy::THUNDERSTEED:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("enemy/Beast_Damage_0.wav", false, true, target->m_startPos);
						break;
					case 1:
						sound = createSoundHandle("enemy/Beast_Damage_1.wav", false, true, target->m_startPos);
						break;
					case 2:
						sound = createSoundHandle("enemy/Beast_Damage_2.wav", false, true, target->m_startPos);
						break;
					}
					break;
				case Enemy::BRUTE_STEED:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("enemy/Beast_Damage_0.wav", false, true, target->m_startPos);
						break;
					case 1:
						sound = createSoundHandle("enemy/Beast_Damage_1.wav", false, true, target->m_startPos);
						break;
					case 2:
						sound = createSoundHandle("enemy/Beast_Damage_2.wav", false, true, target->m_startPos);
						break;
					}
					break;
				}
				break;
			}

			SpeechManager::speak(_targetId, sound);
			deactivateSound(sound);
		}
	}
}
Ejemplo n.º 11
0
void ArrowClientSkillEffect::update(float _dt)
{
	Entity* target = ClientEntityHandler::getEntity(m_targetId);
	if(target && target->m_health > 0)
	{
		D3DXVECTOR3 newPos = D3DXVECTOR3(m_graphicalEffect->getPosition().x, m_graphicalEffect->getPosition().y, m_graphicalEffect->getPosition().z);
		this->m_particleSystem->setPosition(newPos);

		FLOAT3 dist = target->m_model->getPosition()-m_graphicalEffect->getPosition();
		FLOAT3 movement = dist/dist.length()*RangedAttack::VELOCITY*_dt;

		if(dist.length() > movement.length())
		{
			m_graphicalEffect->move(movement);
			m_graphicalEffect->setRotation(FLOAT3(atan2(-movement.x, -movement.z), 0.0f, 0.0f));
		}
		else
		{
			m_active = false;
			if(target->m_type == UnitEntity::EnemyType)
			{
				int sound;

				switch(random(0, 2))
				{
				case 0:
					sound = createSoundHandle("enemy/Monster_Imp_Damage_0.wav", false, false);
					break;
				case 1:
					sound = createSoundHandle("enemy/Monster_Imp_Damage_1.wav", false, false);
					break;
				case 2:
					sound = createSoundHandle("enemy/Monster_Imp_Damage_2.wav", false, false);
					break;
				}
					
				SpeechManager::speak(m_targetId, sound); // The unit must be killed on the client before on the server for this sound solution to actually work.
				deactivateSound(sound);
			}
			else if(target->m_type == UnitEntity::HeroType)
			{
				int sound;

				switch(target->m_subtype)
				{
				case Hero::RED_KNIGHT:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("red_knight/RedKnight_Damage_0.wav", false, false);
						break;
					case 1:
						sound = createSoundHandle("red_knight/RedKnight_Damage_1.wav", false, false);
						break;
					case 2:
						sound = createSoundHandle("red_knight/RedKnight_Damage_2.wav", false, false);
						break;
					}
					break;
				case Hero::ENGINEER:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("engineer/Engineer_Damage_0.wav", false, false);
						break;
					case 1:
						sound = createSoundHandle("engineer/Engineer_Damage_1.wav", false, false);
						break;
					case 2:
						sound = createSoundHandle("engineer/Engineer_Damage_2.wav", false, false);
						break;
					}
					break;
				case Hero::THE_MENTALIST:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("mentalist/Mentalist_Damage_0.wav", false, false);
						break;
					case 1:
						sound = createSoundHandle("mentalist/Mentalist_Damage_1.wav", false, false);
						break;
					case 2:
						sound = createSoundHandle("mentalist/Mentalist_Damage_2.wav", false, false);
						break;
					}
					break;
				case Hero::OFFICER:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("officer/Officer_Damage_0.wav", false, false);
						break;
					case 1:
						sound = createSoundHandle("officer/Officer_Damage_1.wav", false, false);
						break;
					case 2:
						sound = createSoundHandle("officer/Officer_Damage_2.wav", false, false);
						break;
					}
					break;
				case Hero::DOCTOR:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("doctor/Doctor_Damage_0.wav", false, false);
						break;
					case 1:
						sound = createSoundHandle("doctor/Doctor_Damage_1.wav", false, false);
						break;
					case 2:
						sound = createSoundHandle("doctor/Doctor_Damage_2.wav", false, false);
						break;
					}
					break;
				}

				SpeechManager::speak(m_targetId, sound); // The unit must be killed on the client before on the server for this sound solution to actually work.
				deactivateSound(sound);
			}
		}
	}
	else
	{
		m_active = false;
	}
}
Ejemplo n.º 12
0
void ClientHandler::update(float _dt)
{
    this->m_state->update(_dt);
    if(this->m_state->isDone())
    {
        State* tempState = this->m_state;

        switch(this->m_state->nextState())
        {
        case State::INTRO:
            this->m_state = new IntroState();
            break;
        case State::MAIN_MENU:
            if(tempState->getType() == State::END || tempState->getType() == State::LORE)
            {
                m_menuMusic = createSoundHandle("music/menu.wav", true, false);
                loopSound(m_menuMusic);
            }
            else if(tempState->getType() == State::LOBBY)
            {
                ClientEntityHandler::removeAllEntities();
                this->m_client->disconnect();
                delete this->m_serverThread;
                this->m_serverThread = NULL;
            }

            this->m_state = new MainMenuState();
            break;
        case State::CREATE_GAME:
            this->m_state = new CreateGameState();
            break;
        case State::JOIN_GAME:
            this->m_state = new JoinGameState(this->m_client);
            break;
        case State::LOBBY:
            if(tempState->getType() == State::CREATE_GAME)
            {
                CreateGameState *tempCreateState = (CreateGameState*)tempState;

                this->m_serverThread = new ServerThread(tempCreateState->getPort(), tempCreateState->getMapName());
                this->m_serverThread->Launch();

                this->m_client->connect(tempCreateState->getIP(), tempCreateState->getPort());

                //sends le player name, code 1337, hardcoded
                sf::Packet playerName;
                playerName << (int)NetworkMessage::setPlayerName << tempCreateState->getPlayerName();
                this->m_client->sendPacket(playerName);
            }
            else
            {
                JoinGameState *tempJoinState = (JoinGameState*)tempState;
                //sends le player name, code 1337, hardcoreporn
                sf::Packet playerName;
                playerName << (int)NetworkMessage::setPlayerName << tempJoinState->getPlayerName();
                this->m_client->sendPacket(playerName);
            }

            this->m_state = new LobbyState(this->m_client);
            break;
        case State::LORE:
            stopSound(m_menuMusic);
            deactivateSound(m_menuMusic);
            this->m_state = new LoreState();
            break;
        case State::GAME:
            if(tempState->getType() == State::LOADING)
            {
                LoadingState *tempLoadingState = (LoadingState*)tempState;
                this->m_state = new GameState(this->m_client, tempLoadingState->getMapName());
            }
            else
            {
                this->m_state = new GameState(this->m_client, "levelone");
            }
            break;
        case State::SETTINGS:
            this->m_state = new SettingsState();
            break;
        case State::CREDITS:
            this->m_state = new CreditState();
            break;
        case State::END:
            ClientEntityHandler::removeAllEntities();
            this->m_client->disconnect();
            delete this->m_serverThread;
            this->m_serverThread = NULL;
            this->m_state = new EndState(((GameState*)tempState)->getEndGameMessage(),((GameState*)tempState)->getMissionEndMessage());
            break;
        case State::LOADING:
            stopSound(m_menuMusic);
            deactivateSound(m_menuMusic);

            {
                LobbyState *tempLobbyState = (LobbyState*)tempState;
                string temp = tempLobbyState->getMapName();
                delete tempState;
                tempState = NULL;
                this->m_state = new LoadingState(m_client, temp);
            }
            break;
        case State::EXIT:
            this->m_state = NULL;
            PostQuitMessage(WM_QUIT);
            break;
        }

        delete tempState;
    }

    D3DXVECTOR3 camPos = g_graphicsEngine->getCamera()->getPos();
    updateSoundEngine(FLOAT3(camPos.x, camPos.y, camPos.z));

    g_mouse->update(); // Must be last! WHY?! - Because otherwise the mouse buttons will NEVER be "pressed"
    g_keyboard->update();
}
DeathClientSkillEffect::DeathClientSkillEffect(unsigned int _masterId, FLOAT3 _position)
{
	this->m_masterId = _masterId;
	this->m_lifetime = LIFETIME;
	this->m_sink = false;
	this->m_model = NULL;
	this->m_lanternLight = NULL;

	Entity *e = ClientEntityHandler::getEntity(this->m_masterId);
	
	
	//g_graphicsEngine->createPointLight(_position, FLOAT3(1.0f, 1.0f, 1.0f), FLOAT3(1.0f, 1.0f, 1.0f), FLOAT3(1.0f, 1.0f, 1.0f), 5.0f, true, false, FLOAT3(0.0f, 1.0f, 0.0f));

	if(e != NULL)
	{
		this->m_model = g_graphicsEngine->createModel(e->m_model, false);
		this->m_model->setPosition(_position);
		this->m_model->setScale(e->m_model->getScale());
		this->m_model->getAnimation()->Play("death", true);
		this->m_model->setGlowIndex("glowIntensity1");
		this->m_model->SetHat(e->m_model->getHat());
		this->m_model->SetLeftHand(e->m_model->getLeftHand());
		this->m_model->SetRightHand(e->m_model->getRightHand());

		m_model->setColor(D3DXVECTOR4(0, 1, 1, 0.4f));
		if(e->m_type == ServerEntity::EnemyType)
		{
			this->m_sink = true;
			m_model->setColor(D3DXVECTOR4(1, 0, 0, 0.4f));
		}
		

		if(e->m_lanternLight != NULL)
		{
			this->m_lanternLight = g_graphicsEngine->createPointLight(this->m_model->getLeftHandPosition(), e->m_lanternLight->getAmbientColor(), e->m_lanternLight->getDiffuseColor(), e->m_lanternLight->getSpecularColor(), e->m_lanternLight->getRadius(), true, false, FLOAT3(0.0f, 1.0f, 0.0f));
			this->m_originalDiffuse = this->m_lanternLight->getDiffuseColor();
			this->m_originalSpecular = this->m_lanternLight->getSpecularColor();
		}

		// Play death sound.
		int sound;
		switch(e->m_type)
		{
		case ServerEntity::HeroType:
			switch(e->m_subtype)
			{
			case Hero::RED_KNIGHT:
				switch(random(0, 2))
				{
				case 0:
					sound = createSoundHandle("red_knight/RedKnight_Death_0.wav", false, true, e->m_startPos);
					break;
				case 1:
					sound = createSoundHandle("red_knight/RedKnight_Death_1.wav", false, true, e->m_startPos);
					break;
				case 2:
					sound = createSoundHandle("red_knight/RedKnight_Death_2.wav", false, true, e->m_startPos);
					break;
				}
				break;
			case Hero::ENGINEER:
				switch(random(0, 2))
				{
				case 0:
					sound = createSoundHandle("engineer/Engineer_Death_0.wav", false, true, e->m_startPos);
					break;
				case 1:
					sound = createSoundHandle("engineer/Engineer_Death_1.wav", false, true, e->m_startPos);
					break;
				case 2:
					sound = createSoundHandle("engineer/Engineer_Death_2.wav", false, true, e->m_startPos);
					break;
				}
				break;
			case Hero::THE_MENTALIST:
				switch(random(0, 2))
				{
				case 0:
					sound = createSoundHandle("mentalist/Mentalist_Death_0.wav", false, true, e->m_startPos);
					break;
				case 1:
					sound = createSoundHandle("mentalist/Mentalist_Death_1.wav", false, true, e->m_startPos);
					break;
				case 2:
					sound = createSoundHandle("mentalist/Mentalist_Death_2.wav", false, true, e->m_startPos);
					break;
				}
				break;
			case Hero::OFFICER:
				switch(random(0, 2))
				{
				case 0:
					sound = createSoundHandle("officer/Officer_Death_0.wav", false, true, e->m_startPos);
					break;
				case 1:
					sound = createSoundHandle("officer/Officer_Death_1.wav", false, true, e->m_startPos);
					break;
				case 2:
					sound = createSoundHandle("officer/Officer_Death_2.wav", false, true, e->m_startPos);
					break;
				}
				break;
			case Hero::DOCTOR:
				switch(random(0, 2))
				{
				case 0:
					sound = createSoundHandle("doctor/Doctor_Death_0.wav", false, true, e->m_startPos);
					break;
				case 1:
					sound = createSoundHandle("doctor/Doctor_Death_1.wav", false, true, e->m_startPos);
					break;
				case 2:
					sound = createSoundHandle("doctor/Doctor_Death_2.wav", false, true, e->m_startPos);
					break;
				}
				break;
			}
			break;

		case ServerEntity::EnemyType:
			switch(e->m_subtype)
			{
			case Enemy::IMP:
				sound = createSoundHandle("enemy/Monster_Imp_Death_0.wav", false, true, e->m_startPos);
				break;
			case Enemy::SHADE:
				sound = createSoundHandle("enemy/Monster_Shade_Death_0.wav", false, true, e->m_startPos);
				break;
			case Enemy::FROST_DEMON:
				sound = createSoundHandle("enemy/Monster_Frost_Death_0.wav", false, true, e->m_startPos);
				break;
			case Enemy::SPITTING_DEMON:
				sound = createSoundHandle("enemy/Monster_Spitting_Death_0.wav", false, true, e->m_startPos);
				break;
			case Enemy::HELLFIRE_STEED:
				sound = createSoundHandle("enemy/Beast_Dying_0.wav", false, true, e->m_startPos);
				break;
			case Enemy::SOUL_EATER_STEED:
				sound = createSoundHandle("enemy/Beast_Dying_0.wav", false, true, e->m_startPos);
				break;
			case Enemy::THUNDERSTEED:
				sound = createSoundHandle("enemy/Beast_Dying_0.wav", false, true, e->m_startPos);
				break;
			case Enemy::BRUTE_STEED:
				sound = createSoundHandle("enemy/Beast_Dying_0.wav", false, true, e->m_startPos);
				break;
			case Enemy::BOSS:
				sound = createSoundHandle("enemy/Beast_Dying_0.wav", false, true, e->m_startPos);
				break;
			}
			break;
		}

		SpeechManager::speakUltimate(_masterId, sound);
		deactivateSound(sound);
	}
}