if SERVER then

   AddCSLuaFile( "shared.lua" )

   resource.AddFile( "materials/vgui/ttt/icon_sg552.vmt" )

end



if CLIENT then

   SWEP.PrintName = "SG-552"

   SWEP.Slot = 2

   SWEP.Icon = "vgui/ttt/icon_sg552"

end



-- Always derive from weapon_tttbase

SWEP.Base = "weapon_tttbase"



-- Standard GMod values

SWEP.HoldType = "ar2"



SWEP.Primary.Ammo = "357"

SWEP.Primary.Delay = 0.15

SWEP.Primary.Recoil = 1.5

SWEP.Primary.Cone = 0.02

SWEP.Primary.Damage = 20

SWEP.Primary.Automatic = true

SWEP.Primary.ClipSize = 20

SWEP.Primary.ClipMax = 40

SWEP.Primary.DefaultClip = 20

SWEP.Primary.Sound = Sound( "Weapon_SG552.Single" )

SWEP.Secondary.Sound = Sound( "Default.Zoom" )



-- Model settings

SWEP.UseHands = true

SWEP.ViewModelFlip = false

SWEP.ViewModelFOV = 59

SWEP.ViewModel = "models/weapons/cstrike/c_rif_sg552.mdl"

SWEP.WorldModel = "models/weapons/w_rif_sg552.mdl"



SWEP.IronSightsPos = Vector( 5, -15, -2 )

SWEP.IronSightsAng = Vector( 2.6, 1.37, 3.5 )



--- TTT config values



-- Kind specifies the category this weapon is in. Players can only carry one of

-- each. Can be: WEAPON_... MELEE, PISTOL, HEAVY, NADE, CARRY, EQUIP1, EQUIP2 or ROLE.

-- Matching SWEP.Slot values: 0      1       2     3      4      6       7        8

SWEP.Kind = WEAPON_HEAVY



-- If AutoSpawnable is true and SWEP.Kind is not WEAPON_EQUIP1/2, then this gun can

-- be spawned as a random weapon.

SWEP.AutoSpawnable = true



-- The AmmoEnt is the ammo entity that can be picked up when carrying this gun.

SWEP.AmmoEnt = "item_ammo_357_ttt"



-- InLoadoutFor is a table of ROLE_* entries that specifies which roles should

-- receive this weapon as soon as the round starts. In this case, none.

SWEP.InLoadoutFor = { nil }



-- If AllowDrop is false, players can't manually drop the gun with Q

SWEP.AllowDrop = true



-- If IsSilent is true, victims will not scream upon death.

SWEP.IsSilent = false



-- If NoSights is true, the weapon won't have ironsights

SWEP.NoSights = false



function SWEP:SetZoom(state)

    if CLIENT then 

       return

    elseif IsValid(self.Owner) and self.Owner:IsPlayer() then

       if state then

          self.Owner:SetFOV(20, 0.3)

       else

          self.Owner:SetFOV(0, 0.2)

       end

    end

end



-- Add some zoom to ironsights for this gun

function SWEP:SecondaryAttack()

    if not self.IronSightsPos then return end

    if self:GetNextSecondaryFire() > CurTime() then return end

    

    bIronsights = not self:GetIronsights()

    

    self:SetIronsights( bIronsights )

    

    if SERVER then

        self:SetZoom(bIronsights)

     else

        self:EmitSound(self.Secondary.Sound)

    end

    

    self:SetNextSecondaryFire( CurTime() + 0.3)

end



function SWEP:PreDrop()

    self:SetZoom( false )

    self:SetIronsights( false )

    return self.BaseClass.PreDrop(self)

end



function SWEP:Reload()

	if ( self:Clip1() == self.Primary.ClipSize or self.Owner:GetAmmoCount( self.Primary.Ammo ) <= 0 ) then return end

    self:DefaultReload( ACT_VM_RELOAD )

    self:SetIronsights( false )

    self:SetZoom( false )

end



function SWEP:Holster()

    self:SetIronsights( false )

    self:SetZoom( false )

    return true

end



if CLIENT then

   local scope = surface.GetTextureID("sprites/scope")

   function SWEP:DrawHUD()

      if self:GetIronsights() then

         surface.SetDrawColor( 0, 0, 0, 255 )

         

         local x = ScrW() / 2.0

         local y = ScrH() / 2.0

         local scope_size = ScrH()



         -- crosshair

         local gap = 80

         local length = scope_size

         surface.DrawLine( x - length, y, x - gap, y )

         surface.DrawLine( x + length, y, x + gap, y )

         surface.DrawLine( x, y - length, x, y - gap )

         surface.DrawLine( x, y + length, x, y + gap )



         gap = 0

         length = 50

         surface.DrawLine( x - length, y, x - gap, y )

         surface.DrawLine( x + length, y, x + gap, y )

         surface.DrawLine( x, y - length, x, y - gap )

         surface.DrawLine( x, y + length, x, y + gap )





         -- cover edges

         local sh = scope_size / 2

         local w = (x - sh) + 2

         surface.DrawRect(0, 0, w, scope_size)

         surface.DrawRect(x + sh - 2, 0, w, scope_size)



         surface.SetDrawColor(255, 0, 0, 255)

         surface.DrawLine(x, y, x + 1, y + 1)



         -- scope

         surface.SetTexture(scope)

         surface.SetDrawColor(255, 255, 255, 255)



         surface.DrawTexturedRectRotated(x, y, scope_size, scope_size, 0)



      else

         return self.BaseClass.DrawHUD(self)

      end

   end



   function SWEP:AdjustMouseSensitivity()

      return (self:GetIronsights() and 0.2) or nil

   end

end