79 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| ---@class VoiceClient
 | |
| ---@field Player ServerPlayer
 | |
| ---@field TeamSpeakName string
 | |
| ---@field VoiceRange number
 | |
| ---@field IsAlive boolean
 | |
| ---@field IsRadioSpeakerEnabled boolean
 | |
| VoiceClient = {}
 | |
| VoiceClient.__index = VoiceClient
 | |
| 
 | |
| function VoiceClient.new(player, teamSpeakName, voiceRange, isAlive)
 | |
|   local self = {
 | |
|     Player = player,
 | |
|     TeamSpeakName = teamSpeakName,
 | |
|     VoiceRange = voiceRange,
 | |
|     IsAlive = isAlive,
 | |
|     IsRadioSpeakerEnabled = nil,
 | |
|     getters = {},
 | |
|     setters = {}
 | |
|   }
 | |
| 
 | |
|   local meta = {
 | |
|     __index = function(list, key)
 | |
|       if list.getters[key] and type(list.getters[key]) == "function" then
 | |
|         return list.getters[key]()
 | |
|       end
 | |
|     end,
 | |
| 
 | |
|     __newindex = function(list, key, value)
 | |
|       if list.setters[key] and type(list.setters[key]) == "function" then
 | |
|         return list.setters[key](value)
 | |
|       else
 | |
|         rawset(list, key, value)
 | |
|       end
 | |
|     end
 | |
|   }
 | |
| 
 | |
|   setmetatable(self, meta)
 | |
| 
 | |
|   self.getters.VoiceRange = function()
 | |
|     return self.Player.State[State.SaltyChat_VoiceRange] or 0.0
 | |
|   end
 | |
|   self.setters.VoiceRange = function(value)
 | |
|     self.Player.State[State.SaltyChat_VoiceRange] = value
 | |
|   end
 | |
| 
 | |
|   self.getters.IsAlive = function()
 | |
|     return self.Player.State[State.SaltyChat_IsAlive] == true
 | |
|   end
 | |
|   self.setters.IsAlive = function(value)
 | |
|     self.Player.State[State.SaltyChat_IsAlive] = value
 | |
|   end
 | |
| 
 | |
|   self.TriggerEvent = function (self, eventName, ...)
 | |
|     self.Player.TriggerEvent(eventName, ...)
 | |
|   end
 | |
| 
 | |
|   self.SetPhoneSpeakerEnabled = function (_self, isEnabled)
 | |
|     for _, phoneCallMembership in pairs(VoiceManager.Instance:GetPlayerPhoneCallMembership(_self)) do
 | |
|       phoneCallMembership.PhoneCall:SetSpeaker(self, isEnabled)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   self.Player.State[State.SaltyChat_TeamSpeakName] = teamSpeakName
 | |
| 
 | |
|   return self
 | |
| end
 | |
| 
 | |
| -- ---@param eventName string
 | |
| -- ---@param args any
 | |
| -- function VoiceClient:TriggerEvent(eventName, ...)
 | |
| --   self.Player.TriggerEvent(eventName, ...)
 | |
| -- end
 | |
| 
 | |
| ---@param isEnabled boolean
 | |
| function VoiceClient:SetPhoneSpeakerEnabled(isEnabled)
 | |
|   for _, phoneCallMember in pairs(VoiceManager.Instance:GetPlayerPhoneCallMembership(self)) do
 | |
|     phoneCallMember.PhoneCall:SetSpeaker(self, isEnabled)
 | |
|   end
 | |
| end
 | 
