Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions [gameplay]/internetradio/config/ShRadioConfig.lua
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
-- #######################################

RADIO_CREATE_SPEAKER_DELAY = 1000
RADIO_VOLUME_DELAY = 200
RADIO_TOGGLE_SPEAKER_DELAY = 1500
RADIO_DESTROY_SPEAKER_DELAY = 1500
RADIO_ALLOW_CUSTOM_URLS = true
Expand Down
13 changes: 8 additions & 5 deletions [gameplay]/internetradio/logic/gui/CRadioGUI.lua
Original file line number Diff line number Diff line change
Expand Up @@ -20,23 +20,26 @@ local function initializeRadioGUI()
RADIO_GUI["Radio window"] = guiCreateWindow(radioWindowPosX, radioWindowPosY, radioWindowSizeX, radioWindowSizeY, "SPEAKER MUSIC (RADIO/MP3)", false)
RADIO_GUI["Stream URLs gridlist"] = guiCreateGridList(10, 54, 304, 139, false, RADIO_GUI["Radio window"])
RADIO_GUI["Stream URL edit"] = guiCreateEdit(10, 25, 304, 26, "http://stream.antenne.de:80/80er-kulthits", false, RADIO_GUI["Radio window"])
RADIO_GUI["Create speaker button"] = guiCreateButton(10, 200, 150, 30, "CREATE SPEAKER", false, RADIO_GUI["Radio window"])
RADIO_GUI["Destroy speaker button"] = guiCreateButton(162, 200, 150, 30, "DESTROY SPEAKER", false, RADIO_GUI["Radio window"])
RADIO_GUI["Play/pause button"] = guiCreateButton(10, 235, 150, 30, "Play - Pause", false, RADIO_GUI["Radio window"])
RADIO_GUI["Close button"] = guiCreateButton(162, 235, 150, 30, "Close", false, RADIO_GUI["Radio window"])
RADIO_GUI["Volume"] = guiCreateScrollBar(10, 200, 302, 20, true, false, RADIO_GUI["Radio window"])
RADIO_GUI["Create speaker button"] = guiCreateButton(10, 230, 150, 30, "CREATE SPEAKER", false, RADIO_GUI["Radio window"])
RADIO_GUI["Destroy speaker button"] = guiCreateButton(162, 230, 150, 30, "DESTROY SPEAKER", false, RADIO_GUI["Radio window"])
RADIO_GUI["Play/pause button"] = guiCreateButton(10, 265, 150, 30, "Play - Pause", false, RADIO_GUI["Radio window"])
RADIO_GUI["Close button"] = guiCreateButton(162, 265, 150, 30, "Close", false, RADIO_GUI["Radio window"])

RADIO_GUI["Toggle remote speakers checkbox"] = guiCreateCheckBox(15, 345, 180, 17, "Allow other players speakers", allowRemoteSpeakers, false, RADIO_GUI["Radio window"])
RADIO_GUI["Toggle remote speakers label"] = guiCreateLabel(167, 345, 150, 17, "", false, RADIO_GUI["Radio window"])
RADIO_GUI["Radio station URL column"] = guiGridListAddColumn(RADIO_GUI["Stream URLs gridlist"], "Radio station", 0.8)

guiSetVisible(RADIO_GUI["Radio window"], false)
guiEditSetMaxLength(RADIO_GUI["Stream URL edit"], RADIO_STREAM_URL_MAX_LENGTH)
guiWindowSetSizable(RADIO_GUI["Radio window"], false)
guiGridListSetSortingEnabled(RADIO_GUI["Stream URLs gridlist"], false)
guiScrollBarSetScrollPosition(RADIO_GUI["Volume"], 100)

loadRadioStations()

addEventHandler("onClientGUIClick", RADIO_GUI["Stream URLs gridlist"], onClientGUIClickLoadStationStreamURL, false)
addEventHandler("onClientGUIScroll", RADIO_GUI["Volume"], onClientGUIScrollVolume, false)
addEventHandler("onClientGUIClick", RADIO_GUI["Create speaker button"], onClientGUIClickCreateSpeaker, false)
addEventHandler("onClientGUIClick", RADIO_GUI["Play/pause button"], onClientGUIClickToggleSpeaker, false)
addEventHandler("onClientGUIClick", RADIO_GUI["Destroy speaker button"], onClientGUIClickDestroySpeaker, false)
Expand Down
35 changes: 33 additions & 2 deletions [gameplay]/internetradio/logic/handle_radio/CHandleRadio.lua
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ function toggleSpeakerSounds(playerElement, toggleOn)
local speakerDimension = getElementDimension(speakerBox)
local speakerSoundMaxDistance = speakerData.speakerSoundMaxDistance
local speakerStreamURL = speakerData.speakerStreamURL
local speakerVolume = speakerData.speakerVolume
local speakerNewSound = playSound3D(speakerStreamURL, speakerBoxPosX, speakerBoxPosY, speakerBoxPosZ, true, false)

if (not speakerNewSound) then
Expand All @@ -106,7 +107,7 @@ function toggleSpeakerSounds(playerElement, toggleOn)

setSoundPaused(speakerNewSound, speakerPaused)
setSoundMaxDistance(speakerNewSound, speakerSoundMaxDistance)
setSoundVolume(speakerNewSound, 1)
setSoundVolume(speakerNewSound, speakerVolume)
attachElements(speakerNewSound, speakerBox)
end

Expand All @@ -130,6 +131,7 @@ end

function onClientGUIClickCreateSpeaker()
local streamURL, errorCode = getStreamURLFromEdit()
local volume = guiScrollBarGetScrollPosition(RADIO_GUI["Volume"]) / 100

if (not streamURL) then
local textToDisplay = errorCode or "SPEAKER: Invalid URL, please check your input!"
Expand All @@ -145,7 +147,18 @@ function onClientGUIClickCreateSpeaker()
return false
end

triggerServerEvent("onServerCreateSpeaker", localPlayer, streamURL)
triggerServerEvent("onServerCreateSpeaker", localPlayer, streamURL, volume)
end

function onClientGUIScrollVolume()
local volume = guiScrollBarGetScrollPosition(RADIO_GUI["Volume"]) / 100
local createDelayPassed = getOrSetPlayerDelay(localPlayer, "volume", RADIO_VOLUME_DELAY)

if (not createDelayPassed) then
return false
end

triggerServerEvent("onServerEditVolume", localPlayer, volume)
end

function onClientGUIClickToggleSpeaker()
Expand Down Expand Up @@ -208,6 +221,18 @@ function setPlayerSpeakerData(playerElement, speakerData)
return true
end

function setPlayerSpeakerVolume(playerElement, volume)
local validElement = isElement(playerElement)
local speakerSound = speakerSounds[playerElement]

if (not validElement or not speakerSound) then
return false
end

setSoundVolume(speakerSound, volume)
return true
end

function setPlayerSpeakerPaused(playerElement, pauseState)
local playerSpeakerData = getPlayerSpeakerData(playerElement)

Expand Down Expand Up @@ -319,6 +344,12 @@ end
addEvent("onClientCreateSpeaker", true)
addEventHandler("onClientCreateSpeaker", root, onClientCreateSpeaker)

function onClientUpdateVolume(volume)
setPlayerSpeakerVolume(source, volume)
end
addEvent("onClientUpdateVolume", true)
addEventHandler("onClientUpdateVolume", root, onClientUpdateVolume)

function onClientToggleSpeaker(pauseState)
setPlayerSpeakerPaused(source, pauseState)
end
Expand Down
36 changes: 35 additions & 1 deletion [gameplay]/internetradio/logic/handle_radio/SHandleRadio.lua
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,17 @@ function setPlayerSpeakerData(playerElement, speakerData)
return true
end

function updateSpeakerVolume(playerElement, volume)
local playerSpeakerData = getPlayerSpeakerData(playerElement)

if (not playerSpeakerData) then
return false
end

playerSpeakerData.speakerVolume = volume
triggerClientEvent(root, "onClientUpdateVolume", playerElement, volume)
end

function getPlayerSpeakerData(playerElement)
local validElement = isElement(playerElement)

Expand Down Expand Up @@ -74,7 +85,7 @@ function isObjectSpeaker(objectElement)
return false
end

function onServerCreateSpeaker(streamURL)
function onServerCreateSpeaker(streamURL, volume)
if (not client) then
return false
end
Expand Down Expand Up @@ -117,13 +128,36 @@ function onServerCreateSpeaker(streamURL)
speakerStreamURL = streamURL,
speakerSoundMaxDistance = RADIO_MAX_SOUND_DISTANCE,
speakerPaused = false,
speakerVolume = volume
}

setPlayerSpeakerData(client, speakerData)
end
addEvent("onServerCreateSpeaker", true)
addEventHandler("onServerCreateSpeaker", root, onServerCreateSpeaker)

function onServerEditVolume(volume)
if (not client or client ~= source) then
return false
end

local createDelayPassed = getOrSetPlayerDelay(client, "volume", RADIO_VOLUME_DELAY)

if (not createDelayPassed) then
return false
end

local speakerData = playerSpeakers[client]

if (not speakerData or not speakerData.speakerBox) then
return false
end

updateSpeakerVolume(client, volume)
end
addEvent("onServerEditVolume", true)
addEventHandler("onServerEditVolume", root, onServerEditVolume)

function onServerToggleSpeaker()
if (not client) then
return false
Expand Down