mirror of
https://github.com/Citadel-Station-13/Citadel-Station-13-RP.git
synced 2026-08-21 07:36:32 +01:00
datumizes and standardizes all emotes because that file is in the fucking way of my saycode rewrite adds vocal cues
99 lines
3.9 KiB
Plaintext
99 lines
3.9 KiB
Plaintext
/datum/browser/modal/listpicker
|
|
var/valueslist = list()
|
|
|
|
/datum/browser/modal/listpicker/New(User,Message,Title,Button1="Ok",Button2,Button3,StealFocus = 1, Timeout = FALSE,list/values,inputtype="checkbox", width, height, slidecolor)
|
|
if (!User)
|
|
return
|
|
|
|
var/output = {"<form><input type="hidden" name="src" value="[REF(src)]"><ul class="sparse">"}
|
|
if (inputtype == "checkbox" || inputtype == "radio")
|
|
for (var/i in values)
|
|
var/div_slider = slidecolor
|
|
if(!i["allowed_edit"])
|
|
div_slider = "locked"
|
|
var/entry_name = html_encode(i["name"])
|
|
var/entry_checked = i["checked"]
|
|
output += {"<li>
|
|
<label class="switch">
|
|
<input type="[inputtype]" value="1" name="[entry_name]"[entry_checked ? " checked" : ""][i["allowed_edit"] ? "" : " onclick='return false' onkeydown='return false'"] />
|
|
<div class="slider [div_slider ? "[div_slider]" : ""]"></div>
|
|
<span>[i["name"]]</span>
|
|
</label>
|
|
</li>"}
|
|
else
|
|
for (var/i in values)
|
|
var/entry_name = html_encode(i["name"])
|
|
output += {"<li><input id="name="[i["name"]]"" style="width: 50px" type="[type]" name="[entry_name]" value="[i["value"]]" />
|
|
<label for="[i["name"]]">[i["name"]]</label></li>"}
|
|
output += {"</ul><div style="text-align:center">
|
|
<button type="submit" name="button" value="1" style="font-size:large;float:[( Button2 ? "left" : "right" )]">[Button1]</button>"}
|
|
|
|
if (Button2)
|
|
output += {"<button type="submit" name="button" value="2" style="font-size:large;[( Button3 ? "" : "float:right" )]">[Button2]</button>"}
|
|
|
|
if (Button3)
|
|
output += {"<button type="submit" name="button" value="3" style="font-size:large;float:right">[Button3]</button>"}
|
|
|
|
output += {"</form></div>"}
|
|
..(User, ckey("[User]-[Message]-[Title]-[world.time]-[rand(1,10000)]"), Title, width, height, src, StealFocus, Timeout)
|
|
set_content(output)
|
|
|
|
/datum/browser/modal/listpicker/Topic(href,href_list)
|
|
if (href_list["close"] || !user || !user.client)
|
|
opentime = 0
|
|
return
|
|
if (href_list["button"])
|
|
var/button = text2num(href_list["button"])
|
|
if (button <= 3 && button >= 1)
|
|
selectedbutton = button
|
|
for (var/item in href_list)
|
|
switch(item)
|
|
if ("close", "button", "src")
|
|
continue
|
|
else
|
|
valueslist[item] = href_list[item]
|
|
opentime = 0
|
|
close()
|
|
|
|
/proc/presentpicker(mob/User,Message, Title, Button1="Ok", Button2, Button3, StealFocus = 1,Timeout = 6000,list/values, inputtype = "checkbox", width, height, slidecolor)
|
|
if (!istype(User))
|
|
if (istype(User, /client/))
|
|
var/client/C = User
|
|
User = C.mob
|
|
else
|
|
return
|
|
var/datum/browser/modal/listpicker/A = new(User, Message, Title, Button1, Button2, Button3, StealFocus,Timeout, values, inputtype, width, height, slidecolor)
|
|
A.open()
|
|
A.wait()
|
|
if (A.selectedbutton)
|
|
return list("button" = A.selectedbutton, "values" = A.valueslist)
|
|
|
|
/proc/input_bitfield(mob/User, title, datum/bitfield/bitfield, current_value, nwidth = 350, nheight = 350, nslidecolor, allowed_edit_list = null)
|
|
if(!User)
|
|
return
|
|
var/list/pickerlist = list()
|
|
for(var/i in 1 to bitfield.get_declared_count())
|
|
var/bit = bitfield.bits[i]
|
|
var/name = bitfield.names[i]
|
|
var/can_edit = 1
|
|
if(allowed_edit_list && !(allowed_edit_list & bit))
|
|
can_edit = 0
|
|
if (current_value & bit)
|
|
pickerlist += list(list("checked" = 1, "value" = bit, "name" = name, "allowed_edit" = can_edit))
|
|
else
|
|
pickerlist += list(list("checked" = 0, "value" = bit, "name" = name, "allowed_edit" = can_edit))
|
|
var/list/result = presentpicker(User, "", title, Button1="Save", Button2 = "Cancel", Timeout=FALSE, values = pickerlist, width = nwidth, height = nheight, slidecolor = nslidecolor)
|
|
if (islist(result))
|
|
if (result["button"] == 2) // If the user pressed the cancel button
|
|
return
|
|
. = 0
|
|
for (var/flag in result["values"])
|
|
// TODO: efficient-er reverse lookup
|
|
for(var/i in 1 to bitfield.get_declared_count())
|
|
var/bit = bitfield.bits[i]
|
|
var/name = bitfield.names[i]
|
|
if(name == flag)
|
|
. |= bit
|
|
else
|
|
return
|