void CPlayerMindGameBeamEffectLinkedEffect::Update()
{
	if (m_LightningID != -1)
	{
		const float remainingDelay = m_RestartDelay - gEnv->pTimer->GetFrameTime();
		if (remainingDelay <= 0.0f)
		{
			m_RestartDelay = 0.0f;
			StopEmitter(); // Note: the effect will be restarted when needed again
			// (so this will be during the next call to BetweenPoints()).
		}
		else
		{
			m_RestartDelay = remainingDelay;
		}
	}
}
void CPlayerMindGameBeamEffectLinkedEffect::ReleaseAll()
{
	StopEmitter();
}
void CPlayerMindGameBeamEffectLinkedEffect::SetLightningEffect(const CPlayerMindGameBeamEffectLinkedEffectConfig* effectConfig)
{
	StopEmitter();
	assert(effectConfig != NULL);
	m_EffectConfig = effectConfig;
}
bool SceneBasement::ObjectClicked(const char *szObjectName, float x, float y)
{
   // Interrupteur
   if ( strcmp(szObjectName, "switch") == 0)
   {
      if (!TaskResolved("task_house_basement_changebulb")) {
         _lpSceneDirector->getSequencer()->VoiceOver(szObjectName, KStr("HOUSE_BASEMENT_ASHLEY_BULBBROK"),"");
      } else {
         if (TaskResolved("task_house_basement_light")) {
            _lpSceneDirector->getSequencer()->VoiceOver(szObjectName, KStr("HOUSE_BASEMENT_ASHLEY_LIGHT"),"");
         } else {
            ESoundBank::getSound("reveal")->playSample();
            ResolveObjective("house","basementlight");
            ResolveTask("task_house_basement_light");
            AddTask("task_house_basement_natsumineed");
            setAdditionalName("light");
            Init();
         }
      }

      return true;
   }
   if ( strcmp(szObjectName, "bulbbroken") == 0)
   {
      _lpSceneDirector->getSequencer()->Talk(szObjectName, CHARACTER_POSX, CHARACTER_POSY, KStr("HOUSE_BASEMENT_ASHLEY_CUT"), "", true);         
      return true;
   }
   if ( strcmp(szObjectName, "nobulb") == 0)
   {
      _lpSceneDirector->getSequencer()->Talk(szObjectName, CHARACTER_POSX, CHARACTER_POSY, KStr("HOUSE_BASEMENT_ASHLEY_MISSBULB"), "", true);         
      return true;
   }
   if ( strcmp(szObjectName, "basement_rope") == 0)
   {
      PickupMultiple(szObjectName, "inv_house_rope",-1);
      StopEmitter("flake_rope");
      return true;
   }
   if ( strcmp(szObjectName, "basement_screwdriver") == 0)
   {
      PickupSimple(szObjectName, "inv_house_basement_screwdriver");
      return true;
   }
   if ( strcmp(szObjectName, "basement_grip") == 0)
   {
      PickupMultiple(szObjectName, "inv_house_basement_gripbroken",-1);
//      _lpSceneDirector->getSequencer()->Talk(NULL, CHARACTER_POSX, CHARACTER_POSY, KStr("HOUSE_BASEMENT_ASHLEY_WRISTBROK"), "", true);         
      return true;
   }
   if ( strcmp(szObjectName, "basement_hammer") == 0)
   {
      PickupSimple(szObjectName, "inv_house_basement_hammer");
      return true;
   }
   if ( strcmp(szObjectName, "basement_paper") == 0)
   {
      PickupSimple(szObjectName, "inv_house_basement_paper");
      return true;
   }
   if ( strcmp(szObjectName, "basement_sketch") == 0)
   {
      PickupSimple(szObjectName, "inv_house_basement_sketch");
      _lpSceneDirector->getSequencer()->Talk(szObjectName, CHARACTER_POSX, CHARACTER_POSY, KStr("HOUSE_BASEMENT_ASHLEY_DRAWING"), "", true);         
      return true;
   }
   if ( strcmp(szObjectName, "basement_bonzai") == 0)
   {
      if (TaskResolved("task_house_basement_givepaper") && TaskResolved("task_house_basement_givecharcoal")) {
         _lpSceneDirector->getSequencer()->Talk(szObjectName, CHARACTER_POSX, CHARACTER_POSY, KStr("HOUSE_BASEMENT_ASHLEY_INEED2"), "", true);         
         return true;
      }
   }
   
   if ( strcmp(szObjectName, "envelope_basement") == 0)
   {
      PickupSimple(szObjectName, "ihm_envelope");
      _lpSceneDirector->getDiaryPtr()->beginCreatePage("letterpaper.png");
      _lpSceneDirector->getDiaryPtr()->addStringToPage("ENVELOPE_BASEMENT", FONT_DIARY_2, 0, 0);
      _lpSceneDirector->getDiaryPtr()->addImageToPage("logofraternity.png");
      _lpSceneDirector->getDiaryPtr()->endCreatePage();
      return true;
   }
   
   // Seau de charbon
   if ( strcmp(szObjectName, "basement_coalbucketup") == 0)
   {
      ResolveTask("task_house_basement_reversecoal");
      ESoundBank::getSound("success")->playSample();
      _lpSceneDirector->getSequencer()->ShowImage(NULL,"basement_coalbucketup",false);
      _lpSceneDirector->getSequencer()->ShowImage(NULL,"basement_coalbucketdown",true);
      _lpSceneDirector->getSequencer()->Talk(szObjectName, CHARACTER_POSX, CHARACTER_POSY, KStr("HOUSE_BASEMENT_ASHLEY_OUPSFALL"), "", true);         
   }

   // boite à outils
   if ( strcmp(szObjectName, "basement_toolboxclosed") == 0)
   {
      ResolveTask("task_house_basement_opentoolbox");
      ESoundBank::getSound("success")->playSample();
      _lpSceneDirector->getSequencer()->ShowImage(NULL,"basement_toolboxopen",true);
      _lpSceneDirector->getSequencer()->ShowImage(NULL,"basement_toolboxclosed",false);
      _lpSceneDirector->getSequencer()->ShowImage(NULL,"basement_hammer",true);
   }
   
   // Grille fermée
   if ( strcmp(szObjectName, "basement_gridclosed") == 0 || strcmp(szObjectName, "basement_gridopen") == 0)
   {
      _lpSceneDirector->GoToScene("basement_grid","",false);
      return true;
   }   
   
   // Fantome
   if ( strcmp(szObjectName, "basement_ghosthidden") == 0)
   {
      // 1ère communication
      if (!TaskResolved("task_house_meetnatsumi")) {
         ResolveTask("task_house_meetnatsumi");
      }
      
      int x,y;
      GetObjectPosition("basement_ghostup", x, y);
      _lpSceneDirector->getSequencer()->PlaySound(NULL, "ghostappear");
      _lpSceneDirector->getSequencer()->ShowImage(NULL,"basement_ghosthidden",false);
      _lpSceneDirector->getSequencer()->ShowEmitter(NULL, "creeping_static_hidden", false);
      _lpSceneDirector->getSequencer()->ShowEmitter(NULL, "creeping_static_up", true);
      _lpSceneDirector->getSequencer()->ShowImage(NULL,"basement_ghostup",true);
      // On a donné les 2 objets attendus
      if (TaskResolved("task_house_basement_givepaper") && TaskResolved("task_house_basement_givecharcoal")) {
         _lpSceneDirector->getSequencer()->Talk("canu", x, y, KStr("HOUSE_BASEMENT_NATSUMI_CANYOUBONZ"), "", false, false, _lpGhostVoice);
         _lpTimerGhost->startCounter(0.0f, 1.0f, 0, 10000, K_COUNTER_LINEAR);
      }
      else {
         if (!TaskToResolve("task_house_basement_givepaper")) {
            AddTask("task_house_basement_givepaper");
         }
         if (!TaskToResolve("task_house_basement_givecharcoal")) {
            AddTask("task_house_basement_givecharcoal");
         }
         _lpSceneDirector->getSequencer()->Talk("doyouhave", x, y, KStr("HOUSE_BASEMENT_NATSUMI_DOYOUHAVE"), "", true, false, _lpGhostVoice);
         _lpTimerGhost->startCounter(0.0f, 1.0f, 0, 10000, K_COUNTER_LINEAR);
      }
      return true;
   }   
   if ( strcmp(szObjectName, "basement_ghostup") == 0)
   {
      int x,y;
      GetObjectPosition("basement_ghostup", x, y);
      _lpSceneDirector->getSequencer()->Talk(szObjectName, x, y, KStr("HOUSE_BASEMENT_NATSUMI_DOYOUHAVE2"), "", true, false, _lpGhostVoice);
      return true;
   }
   
#ifdef BFG_TEASING
   if ( strcmp(szObjectName, "gotostairs") == 0 && TaskResolved("task_japan_universeresolved"))
   {
      _lpSceneDirector->getSequencer()->GoToScene(NULL, "teasing", "", false);
      return true;
   }
#endif
   
   return false;
}