Files
factorio-scenario-ExpCluster/Addons/Guis/announcements.lua
2018-01-12 20:14:49 +00:00

99 lines
3.5 KiB
Lua

--[[
Explosive Gaming
This file can be used with permission but this and the credit below must remain in the file.
Contact a member of management on our discord to seek permission to use our code.
Any changes that you may make to the code are yours but that does not make the script yours.
Discord: https://discord.gg/r6dC2uK
]]
--Please Only Edit Below This Line-----------------------------------------------------------
local function _ranks(player)
local ranks = {'Select Rank'}
local _rank = Ranking.get_rank(player)
for _,rank in pairs(Ranking._ranks()) do
if rank.power >= _rank.power then
table.insert(ranks,rank.name)
end
end
return ranks
end
local rank_drop_down = Gui.inputs.add_drop_down('rank-drop-down-annoncements',_ranks,1,function(player,selected,items,element)
element.parent.rank.caption = selected
if selected == 'Select Rank' then element.parent['send-annoncement'].style.visible = false
else element.parent['send-annoncement'].style.visible = true end
end)
local send_popup = Gui.inputs.add{
type='button',
name='send-annoncement',
caption='utility/export_slot'
}:on_event('click',function(event)
local meta_data = Ranking._presets().meta
local default = Ranking.get_rank(meta_data.default)
local player = Game.get_player(event)
local rank = Ranking.get_rank(player)
local _rank = Ranking.get_rank(event.element.parent.rank.caption); if not _rank then return end
local sent_by = {'announcements.sent-by',player.name,rank.name}
local rank_name = _rank.name..'s'; if rank_name == default.name..'s' then rank_name = 'Everyone' end
local sent_to = {'announcements.sent-to',rank_name}
local message = event.element.parent.parent.message.text
for power,__rank in pairs(Ranking._ranks()) do
if power <= _rank.power then
Gui.popup.open('announcements',{sent_by=sent_by,sent_to=sent_to,message=message},__rank:get_players(true))
event.element.parent.parent.message.text = ''
end
end
end)
Gui.popup.add{
name='announcements',
caption={'announcements.name'},
draw=function(frame,data)
frame.style.right_padding = 5
frame.style.bottom_padding = 5
frame.add{type='label',caption=data.sent_by,style='caption_label'}
frame.add{type='label',caption=data.sent_to,style='caption_label'}
local text_box = frame.add{type='text-box'}
text_box.text = data.message
text_box.style.width = 400
text_box.read_only = true
text_box.word_wrap = true
text_box.selectable = true
end
}:add_left{
caption='item/programmable-speaker',
tooltip={'announcements.tooltip'},
draw=function(frame)
frame.caption = {'announcements.name'}
local frame = frame.add{
type='flow',
direction='vertical'
}
local text_box = frame.add{
type='text-box',
name='message'
}
text_box.style.width = 400
text_box.style.minimal_height = 100
text_box.read_only = false
text_box.word_wrap = true
text_box.selectable = true
local flow = frame.add{type='flow'}
flow.add{
type='label',
caption={'announcements.select-rank'}
}
rank_drop_down:draw(flow)
local btn = send_popup:draw(flow)
btn.style.visible = false
btn.style.height = 25
btn.style.width = 25
flow.add{
type='label',
name='rank',
caption=''
}.style.visible = false
end
}