AddCSLuaFile()

ENT.Type                     = "anim"
ENT.Base                     = "base_entity"
ENT.RenderGroup              = RENDERGROUP_TRANSLUCENT

ENT.PrintName                = "Frag Grenade (Ammo)"
ENT.Category                 = "Tactical RP"

ENT.AdminOnly = false
ENT.Spawnable                = true
ENT.Model                    = "models/weapons/tacint/frag.mdl"

ENT.Ammo = "grenade"
ENT.GrenadeProxy = "tacrp_nade_frag"

function ENT:Initialize()
    self:SetModel(self.Model)

    if SERVER then
        self:SetMaterial(self.Material or "")

        self:PhysicsInit(SOLID_VPHYSICS)
        self:SetMoveType(MOVETYPE_VPHYSICS)
        self:SetSolid(SOLID_VPHYSICS)
        self:SetCollisionGroup(COLLISION_GROUP_WEAPON)
        self:SetUseType(CONTINUOUS_USE)
        self:PhysWake()

        self:SetTrigger(true) -- Enables Touch() to be called even when not colliding
        self:UseTriggerBounds(true, 24)
    end
end

function ENT:ApplyAmmo(ply)
    if self.Used then return end

    self.Used = true
    ply:GiveAmmo(1, self.Ammo)
    self:Remove()
end

ENT.CollisionSoundsHard = {
    "physics/metal/weapon_impact_hard1.wav",
    "physics/metal/weapon_impact_hard2.wav",
    "physics/metal/weapon_impact_hard3.wav",
}

ENT.CollisionSoundsSoft = {
    "physics/metal/weapon_impact_soft1.wav",
    "physics/metal/weapon_impact_soft2.wav",
    "physics/metal/weapon_impact_soft3.wav",
}

function ENT:PhysicsCollide(data)
    if data.DeltaTime < 0.1 then return end

    if data.Speed > 25 then
        self:EmitSound(self.CollisionSoundsHard[math.random(#self.CollisionSoundsHard)])
    else
        self:EmitSound(self.CollisionSoundsSoft[math.random(#self.CollisionSoundsSoft)])
    end
end

if SERVER then

    function ENT:Use(ply)
        if !ply:IsPlayer() then return end
        self:ApplyAmmo(ply)
        if self.GrenadeProxy then
            ply:Give(self.GrenadeProxy, true)
        end
    end

elseif CLIENT then

    function ENT:DrawTranslucent()
        self:Draw()
    end

    function ENT:Draw()
        self:DrawModel()
    end

end
