#define COMMON_LIGHT_H aaa
//------------------------------------------------------------------------------------------
//  @brief
//        свет
//        
    
//  2007Nov30 created. Zmanovsky Peter.
//  (C) 2007    Sigma-Team
//------------------------------------------------------------------------------------------

#define NIGHT_VSN_GAMMA      0x7F0E7F


//------------------------------------------------------------------------------------------
bool gbNightVisionIsOn = false;
bool gbSpotLightIsOn = false;
//
bool gbLightChangeKeyPressed = false;
//
static int SpotLight=0;         //ссылка на световое пятно фонарика
//
static int StartLight=0;//время начала включения света
//static int GammaLight;//финальная гамма к которой будет сдвигаться гамма
static int StartGammaLight;//гамма от которой будет сдвигаться гамма


//------------------------------------------------------------------------------------------
GetGammaIntensive(int gamma)
{
  int r=0,g=0,b=0,i=0;
  b=gamma&255;
  g=(gamma>>8)&255;
  r=(gamma>>16)&255;
  i=0;
  if( r&128 )
    i=i-(255-r)*(255-r);
  else 
    i=i+r*r;
  if( g&128 )
    i=i-(255-g)*(255-g);
  else 
    i=i+g*g;
  if( b&128 )
    i=i-(255-b)*(255-b);
  else 
    i=i+b*b;
  return i;
}

//------------------------------------------------------------------------------------------
SetLevelGamma(int iGamma)
{
	CurrentGamma = iGamma;
	if(!gbNightVisionIsOn)
		SetGamma(CurrentGamma);
}


//------------------------------------------------------------------------------------------
NightVisionTurn(bool bTurnOn)
{
	if(bTurnOn)
	{
		if(PlayerItem[9] && !gbNightVisionIsOn)
		{
			SetGamma(NIGHT_VSN_GAMMA);
			gbNightVisionIsOn = true;
		}
	}
	else
	{
		SetGamma(CurrentGamma);
		gbNightVisionIsOn = false;
	}
}


//------------------------------------------------------------------------------------------
// включить фонарик или ночное видение
SpotLightTurn(bool bTurnOn)
{
	if(bTurnOn)
	{
		if(PlayerItem[8] && !gbSpotLightIsOn)//если есть фонарик
		{
			if(!SpotLight)
				SpotLight = CreateSprite(165,GetX(Flagman(0)),GetY(Flagman(0)),11);
			gbSpotLightIsOn = true;
		}
	}
	else
	{
		if(SpotLight)
		{
			Destroy(SpotLight);
			SpotLight = 0;
		}
		gbSpotLightIsOn = false;
	}
}



//---------------------------------------------------------------------------------------
LightChangeKeyPressed()
{
	gbLightChangeKeyPressed = true;
	//
	if(gbSpotLightIsOn)
	{
		SpotLightTurn(false);
	}
	else
	if(gbNightVisionIsOn)
	{
		NightVisionTurn(false);
		SpotLightTurn(true);
	}
	else
	{
		NightVisionTurn(true);
		if(!gbNightVisionIsOn)
			SpotLightTurn(true);
	}
}


//------------------------------------------------------------------------------------------
LightTact()
{
    if( Flagman(0) && (GetKey()=='f' || GetKey()=='F') )
      LightChangeKeyPressed();
	//
	if(StartLight)
	{
		if( GetTime()-StartLight < 1024 )
		{
			if(!gbNightVisionIsOn)
				SetGamma(CountGamma(StartGammaLight,CurrentGamma,(GetTime()-StartLight)/4)); 
		}
		else
		{
			StartLight = 0;
			if(!gbNightVisionIsOn)
				SetGamma(CurrentGamma);
		}
	}
	if(OneTimeInQuarterSecond())
		TurnOnFlashIfNeed();
	//
	if(SpotLight)
	{
		int i = GetDirection( Action(Flagman(0),ACT_GET_LINK) );
		Action(SpotLight,ACT_CHANGE_COOR,GetX(Flagman(0))+Sin(i)/10,GetY(Flagman(0))-Cos(i)/10,11);
	}
}


//------------------------------------------------------------------------------------------
TurnOnFlashIfNeed()
{
	if(FlashAutoChange && !gbLightChangeKeyPressed)
	{
		if( GetGammaIntensive(GetGamma()) > FLASH_ON_INTENSIVE)//зажечь фонарик
			SpotLightTurn(true);
	}
}


//------------------------------------------------------------------------------------------
LightOn(int new_gamma)
{
//  PlaySFX(0);//звук включающегося генератора
	StartLight      = GetTime();
	StartGammaLight = GetGamma();
	CurrentGamma    = new_gamma;
}


//------------------------------------------------------------------------------------------
LightOff(int new_gamma)
{
//  PlaySFX(0);//звук выключающегося генератора
	StartLight      = GetTime();
	StartGammaLight = GetGamma();
	CurrentGamma    = new_gamma;
}


