spacebuild/spacebuild

View on GitHub
lua/caf/stools/ls3_other.lua

Summary

Maintainability
Test Coverage
TOOL.Category = "Life Support"
TOOL.Name = "#Special Devices"

TOOL.DeviceName = "Special Device"
TOOL.DeviceNamePlural = "Special Devices"
TOOL.ClassName = "ls3_other"

TOOL.DevSelect = true
TOOL.CCVar_type = "other_screen"
TOOL.CCVar_sub_type = "Small"
TOOL.CCVar_model = "models/SnakeSVx/small_screen_ls_1.mdl"

TOOL.Limited = true
TOOL.LimitName = "ls3_other"
TOOL.Limit = 30

CAFToolSetup.SetLang("Life Support Special Devices", "Create Special Devices attached to any surface.", "Left-Click: Spawn a Device.  Reload: Repair Device.")

function TOOL.EnableFunc()
    if not CAF then
        return false;
    end
    if not CAF.GetAddon("Resource Distribution") or not CAF.GetAddon("Resource Distribution").GetStatus() then
        return false;
    end
    return true;
end

TOOL.ExtraCCVars = {}

function TOOL.ExtraCCVarsCP(tool, panel)
end

function TOOL:GetExtraCCVars()
    local Extra_Data = {}
    return Extra_Data
end

local function screen_func(ent, type, sub_type, devinfo, Extra_Data, ent_extras)
    local volume_mul = 1 --Change to be 0 by default later on
    local base_volume = 11829 --Change to the actual base volume later on
    local base_mass = 20
    local base_health = 60
    CAF.GetAddon("Resource Distribution").RegisterNonStorageDevice(ent)
    local phys = ent:GetPhysicsObject()
    if phys:IsValid() and phys.GetVolume then
        local vol = phys:GetVolume()
        MsgN("Ent Physics Object Volume: ", vol)
        vol = math.Round(vol)
        volume_mul = vol / base_volume
    end
    ent:SetMultiplier(volume_mul)
    local mass = math.Round(base_mass * volume_mul)
    ent.mass = mass
    local maxhealth = math.Round(base_health * volume_mul)
    return mass, maxhealth
end



TOOL.Devices = {
    other_screen = {
        Name = "LS Info Screens",
        type = "other_screen",
        class = "other_screen",
        func = screen_func,
        devices = {
            s_small = {
                Name = "Tiny Screen",
                model = "models/SnakeSVx/s_small_screen_ls_1.mdl",
            },
            small = {
                Name = "Small Screen",
                model = "models/SnakeSVx/small_screen_ls_1.mdl",
            },
            medium = {
                Name = "Medium Screen",
                model = "models/SnakeSVx/medium_screen_ls_1.mdl",
            },
            large = {
                Name = "Large Screen",
                model = "models/SnakeSVx/large_screen_ls_1.mdl",
            },
        }
    },
}