1
0
Fork 0
forked from Simnation/Main
Main/resources/[voice]/saltychat/client/models/Radio.lua

137 lines
3.4 KiB
Lua
Raw Normal View History

2025-06-07 08:51:21 +02:00
---@class RadioTower
---@field Towers Tower[]
RadioTower = {}
RadioTower.__index = RadioTower
---@param towers Tower[]
---@return RadioTower
function RadioTower.new(towers)
local self = setmetatable({}, RadioTower)
self.Towers = towers
return self
end
---@class Tower
---@field X number
---@field Y number
---@field Z number
---@field Range number
Tower = {}
Tower.__index = Tower
---@param x number
---@param y number
---@param z number
---@param range number?
---@return Tower
function Tower.new(x, y, z, range)
local self = setmetatable({}, Tower)
self.X = x
self.Y = y
self.Z = z
self.Range = range or 8000.0
return self
end
---@class RadioCommunication
---@field Name string
---@field SenderRadioType RadioType
---@field OwnRadioType RadioType
---@field PlayMicClick boolean
---@field Volume number?
---@field Direct boolean
---@field Secondary boolean
---@field RelayedBy string[]
RadioCommunication = {}
RadioCommunication.__index = RadioCommunication
---@param name string
---@param senderRadioType RadioType
---@param ownRadioType RadioType
---@param playMicClick boolean
---@param direct boolean
---@param isSecondary boolean
---@param relayedBy string[]?
---@param volume number?
---@return RadioCommunication
function RadioCommunication.new(name, senderRadioType, ownRadioType, playMicClick, direct, isSecondary, relayedBy, volume)
local self = setmetatable({}, RadioCommunication)
self.Name = name
self.SenderRadioType = senderRadioType
self.OwnRadioType = ownRadioType
self.PlayMicClick = playMicClick
self.Direct = direct
self.Secondary = isSecondary
if relayedBy and #relayedBy > 0 then
self.RelayedBy = relayedBy
else
-- self.RelayedBy = {}
end
if volume ~= 1.0 then self.Volume = volume end
return self
end
---@class RadioChannelMember
---@field PlayerName string
---@field IsPrimaryChannel boolean
RadioChannelMember = {
PlayerName = "",
IsPrimaryChannel = true
}
---@class RadioChannelMemberUpdate
---@field PlayerNames string[]
---@field IsPrimaryChannel boolean
RadioChannelMemberUpdate = {}
RadioChannelMemberUpdate.__index = RadioChannelMemberUpdate
---@param members string[]
---@param isPrimary boolean
---@return RadioChannelMemberUpdate
function RadioChannelMemberUpdate.new(members, isPrimary)
local self = setmetatable({}, RadioChannelMemberUpdate)
self.PlayerNames = members
self.IsPrimaryChannel = isPrimary
return self
end
---@class RadioTrafficState
---@field Name string
---@field IsSending boolean
---@field IsPrimaryChannel boolean
---@field ActiveRelay string
RadioTrafficState = {
Name = nil,
IsSending = nil,
IsPrimaryChannel = nil,
ActiveRelay = nil
}
---@class RadioTraffic
---@field Name string
---@field IsSending boolean
---@field RadioChannelName string
---@field SenderRadioType RadioType
---@field ReceiverRadioType RadioType
---@field Relays string[]
RadioTraffic = {}
RadioTraffic.__index = RadioTraffic
---@param playerName string
---@param isSending boolean
---@param radioChannelName string
---@param senderType RadioType
---@param receiverType RadioType
---@param relays string[]
---@return RadioTraffic
function RadioTraffic.new(playerName, isSending, radioChannelName, senderType, receiverType, relays)
local self = setmetatable({}, RadioTraffic)
self.Name = playerName
self.IsSending = isSending
self.RadioChannelName = radioChannelName
self.SenderRadioType = senderType
self.ReceiverRadioType = receiverType
self.Relays = relays
return self
end