[MIRROR] Ports the Ore Redemption Machine to TGUI (#1414)

* Ports the Ore Redemption Machine to TGUI

* Update tgui.css

* Update tgui.js

* Delete tgui.css.rej

* Delete tgui.js.rej
This commit is contained in:
CitadelStationBot
2017-06-28 02:24:55 -05:00
committed by Poojawa
parent 789064a3a5
commit 65736b7e23
9 changed files with 276 additions and 134 deletions
+133 -121
View File
@@ -17,7 +17,7 @@
var/ore_pickup_rate = 15
var/sheet_per_ore = 1
var/point_upgrade = 1
var/list/ore_values = list("sand" = 1, "iron" = 1, "plasma" = 15, "silver" = 16, "gold" = 18, "titanium" = 30, "uranium" = 30, "diamond" = 50, "bluespace crystal" = 50, "bananium" = 60)
var/list/ore_values = list(MAT_GLASS = 1, MAT_METAL = 1, MAT_PLASMA = 15, MAT_SILVER = 16, MAT_GOLD = 18, MAT_TITANIUM = 30, MAT_URANIUM = 30, MAT_DIAMOND = 50, MAT_BLUESPACE = 50, MAT_BANANIUM = 60)
speed_process = 1
var/message_sent = FALSE
var/list/ore_buffer = list()
@@ -94,7 +94,7 @@
if(!M || !redemption_mat)
return 0
var/smeltable_sheets = round(redemption_mat.amount / M)
var/smeltable_sheets = Floor(redemption_mat.amount / M)
if(!smeltable_sheets)
return 0
@@ -194,6 +194,12 @@
inserted_disk = W
return TRUE
if(istype(W, /obj/item/stack/sheet))
var/obj/item/stack/sheet/S = W
var/inserted = materials.insert_stack(S, S.amount)
to_chat(user, "<span class='notice'>You add [inserted] [S] sheets to \the [src].</span>")
return
return ..()
/obj/machinery/mineral/ore_redemption/on_deconstruction()
@@ -205,142 +211,148 @@
return
interact(user)
/obj/machinery/mineral/ore_redemption/interact(mob/user)
var/dat = "This machine only accepts ore. Gibtonite and Slag are not accepted.<br><br>"
dat += "Current unclaimed points: [points]<br>"
/obj/machinery/mineral/ore_redemption/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "ore_redemption_machine", "Ore Redemption Machine", 440, 650, master_ui, state)
ui.open()
/obj/machinery/mineral/ore_redemption/ui_data(mob/user)
var/list/data = list()
data["unclaimedPoints"] = points
if(inserted_id)
dat += "You have [inserted_id.mining_points] mining points collected. <A href='?src=\ref[src];eject_id=1'>Eject ID.</A><br>"
dat += "<A href='?src=\ref[src];claim=1'>Claim points.</A><br><br>"
else
dat += "No ID inserted. <A href='?src=\ref[src];insert_id=1'>Insert ID.</A><br><br>"
data["hasID"] = TRUE
data["claimedPoints"] = inserted_id.mining_points
data["materials"] = list()
for(var/mat_id in materials.materials)
var/datum/material/M = materials.materials[mat_id]
if(M.amount)
var/sheet_amount = M.amount / MINERAL_MATERIAL_AMOUNT
dat += "[capitalize(M.name)]: [sheet_amount] "
if(sheet_amount >= 1)
dat += "<A href='?src=\ref[src];release=[mat_id]'>Release</A><br>"
else
dat += "<span class='linkOff'>Release</span><br>"
dat += "<br><b>Alloys: </b><br>"
var/sheet_amount = M.amount ? M.amount / MINERAL_MATERIAL_AMOUNT : "0"
data["materials"] += list(list("name" = M.name, "id" = M.id, "amount" = sheet_amount, "value" = ore_values[M.id] * point_upgrade))
data["alloys"] = list()
for(var/v in files.known_designs)
var/datum/design/D = files.known_designs[v]
if(can_smelt_alloy(D))
dat += "[D.name]: <A href='?src=\ref[src];alloy=[D.id]'>Smelt</A><br>"
else
dat += "[D.name]: <span class='linkOff'>Smelt</span><br>"
dat += "<br><div class='statusDisplay'><b>Mineral Value List:</b><br>[get_ore_values()]</div>"
data["alloys"] += list(list("name" = D.name, "id" = D.id, "amount" = can_smelt_alloy(D)))
data["diskDesigns"] = list()
if(inserted_disk)
dat += "<A href='?src=\ref[src];eject_disk=1'>Eject disk</A><br>"
dat += "<div class='statusDisplay'><b>Uploadable designs: </b><br>"
data["hasDisk"] = TRUE
if(inserted_disk.blueprints.len)
var/index = 1
for (var/datum/design/thisdesign in inserted_disk.blueprints)
if(thisdesign)
data["diskDesigns"] += list(list("name" = thisdesign.name, "index" = index, "canupload" = thisdesign.build_type&SMELTER))
index++
CHECK_TICK
return data
for(var/i in 1 to inserted_disk.max_blueprints)
if(inserted_disk.blueprints[i])
var/datum/design/D = inserted_disk.blueprints[i]
if(D.build_type & SMELTER)
dat += "Name: [D.name] <A href='?src=\ref[src];upload=[i]'>Upload to smelter</A>"
dat += "</div><br>"
else
dat += "<A href='?src=\ref[src];insert_disk=1'>Insert design disk</A><br><br>"
var/datum/browser/popup = new(user, "ore_redemption_machine", "Ore Redemption Machine", 400, 500)
popup.set_content(dat)
popup.open()
return
/obj/machinery/mineral/ore_redemption/proc/get_ore_values()
var/dat = "<table border='0' width='300'>"
for(var/ore in ore_values)
var/value = ore_values[ore]
dat += "<tr><td>[capitalize(ore)]</td><td>[value * point_upgrade]</td></tr>"
dat += "</table>"
return dat
/obj/machinery/mineral/ore_redemption/Topic(href, href_list)
/obj/machinery/mineral/ore_redemption/ui_act(action, params)
if(..())
return
if(href_list["eject_id"])
usr.put_in_hands(inserted_id)
inserted_id = null
if(href_list["claim"])
if(inserted_id)
if(req_access_reclaim in inserted_id.access)
switch(action)
if("Eject")
if(!inserted_id)
return
usr.put_in_hands(inserted_id)
inserted_id = null
return TRUE
if("Insert")
var/obj/item/weapon/card/id/I = usr.get_active_held_item()
if(istype(I))
if(!usr.transferItemToLoc(I,src))
return
inserted_id = I
else
to_chat(usr, "<span class='warning'>Not a valid ID!</span>")
return TRUE
if("Claim")
if(inserted_id)
inserted_id.mining_points += points
points = 0
return TRUE
if("Release")
if(check_access(inserted_id) || allowed(usr)) //Check the ID inside, otherwise check the user
var/out = get_step(src, output_dir)
if(params["id"] == "all")
materials.retrieve_all(out)
else
var/mat_id = params["id"]
if(!materials.materials[mat_id])
return
var/datum/material/mat = materials.materials[mat_id]
var/stored_amount = mat.amount / MINERAL_MATERIAL_AMOUNT
if(!stored_amount)
return
var/desired = 0
if (params["sheets"])
desired = text2num(params["sheets"])
else
desired = input("How many sheets?", "How many sheets would you like to smelt?", 1) as null|num
var/sheets_to_remove = round(min(desired,50,stored_amount))
materials.retrieve_sheets(sheets_to_remove, mat_id, out)
else
to_chat(usr, "<span class='warning'>Required access not found.</span>")
else if(href_list["insert_id"])
var/obj/item/weapon/card/id/I = usr.get_active_held_item()
if(istype(I))
if(!usr.transferItemToLoc(I,src))
return
inserted_id = I
else
to_chat(usr, "<span class='warning'>Not a valid ID!</span>")
if(href_list["eject_disk"])
if(inserted_disk)
inserted_disk.forceMove(loc)
inserted_disk = null
if(href_list["insert_disk"])
var/obj/item/weapon/disk/design_disk/D = usr.get_active_held_item()
if(istype(D))
if(!usr.transferItemToLoc(D,src))
return
inserted_disk = D
if(href_list["upload"])
var/n = text2num(href_list["upload"])
if(inserted_disk && inserted_disk.blueprints && inserted_disk.blueprints[n])
files.AddDesign2Known(inserted_disk.blueprints[n])
if(href_list["release"])
if(check_access(inserted_id) || allowed(usr)) //Check the ID inside, otherwise check the user
var/mat_id = href_list["release"]
if(!materials.materials[mat_id])
return
var/datum/material/mat = materials.materials[mat_id]
var/stored_amount = mat.amount / MINERAL_MATERIAL_AMOUNT
if(!stored_amount)
return
var/desired = input("How many sheets?", "How many sheets to eject?", 1) as null|num
var/sheets_to_remove = round(min(desired,50,stored_amount))
var/out = get_step(src, output_dir)
materials.retrieve_sheets(sheets_to_remove, mat_id, out)
else
to_chat(usr, "<span class='warning'>Required access not found.</span>")
if(href_list["alloy"])
var/alloy_id = href_list["alloy"]
var/datum/design/alloy = files.FindDesignByID(alloy_id)
if((check_access(inserted_id) || allowed(usr)) && alloy)
var/desired = input("How many sheets?", "How many sheets would you like to smelt?", 1) as null|num
var/smelt_amount = can_smelt_alloy(alloy)
var/amount = round(min(desired,50,smelt_amount))
materials.use_amount(alloy.materials, amount)
var/output = new alloy.build_path(src)
if(istype(output, /obj/item/stack/sheet))
var/obj/item/stack/sheet/mineral/produced_alloy = output
produced_alloy.amount = amount
unload_mineral(produced_alloy)
return TRUE
if("diskInsert")
var/obj/item/weapon/disk/design_disk/disk = usr.get_active_held_item()
if(istype(disk))
if(!usr.transferItemToLoc(disk,src))
return
inserted_disk = disk
else
unload_mineral(output)
else
to_chat(usr, "<span class='warning'>Required access not found.</span>")
updateUsrDialog()
return
to_chat(usr, "<span class='warning'>Not a valid Design Disk!</span>")
return TRUE
if("diskEject")
if(inserted_disk)
usr.put_in_hands(inserted_disk)
inserted_disk = null
return TRUE
if("diskUpload")
var/n = text2num(params["design"])
if(inserted_disk && inserted_disk.blueprints && inserted_disk.blueprints[n])
files.AddDesign2Known(inserted_disk.blueprints[n])
return TRUE
if("Smelt")
var/alloy_id = params["id"]
var/datum/design/alloy = files.FindDesignByID(alloy_id)
if((check_access(inserted_id) || allowed(usr)) && alloy)
var/smelt_amount = can_smelt_alloy(alloy)
var/desired = 0
if (params["sheets"])
desired = text2num(params["sheets"])
else
desired = input("How many sheets?", "How many sheets would you like to smelt?", 1) as null|num
var/amount = round(min(desired,50,smelt_amount))
materials.use_amount(alloy.materials, amount)
var/output = new alloy.build_path(src)
if(istype(output, /obj/item/stack/sheet))
var/obj/item/stack/sheet/produced_alloy = output
produced_alloy.amount = amount
unload_mineral(produced_alloy)
else
unload_mineral(output)
else
to_chat(usr, "<span class='warning'>Required access not found.</span>")
return TRUE
if("SmeltAll")
var/alloy_id = params["id"]
var/datum/design/alloy = files.FindDesignByID(alloy_id)
if((check_access(inserted_id) || allowed(usr)) && alloy)
var/smelt_amount = can_smelt_alloy(alloy)
while(smelt_amount > 0)
materials.use_amount(alloy.materials)
smelt_amount--
var/output = new alloy.build_path(src)
unload_mineral(output)
CHECK_TICK
else
to_chat(usr, "<span class='warning'>Required access not found.</span>")
return TRUE
/obj/machinery/mineral/ore_redemption/ex_act(severity, target)
do_sparks(5, TRUE, src)
@@ -216,7 +216,7 @@
/datum/design/rglass
name = "Reinforced Glass"
id = "rglass"
build_type = AUTOLATHE
build_type = AUTOLATHE | SMELTER
materials = list(MAT_METAL = 1000, MAT_GLASS = MINERAL_MATERIAL_AMOUNT)
build_path = /obj/item/stack/sheet/rglass
category = list("initial","Construction")
@@ -791,7 +791,7 @@
materials = list(MAT_METAL = 2000, MAT_GLASS = 1000)
build_path = /obj/item/device/modular_computer/tablet
category = list("initial","Misc")
/datum/design/slime_scanner
name = "Slime Scanner"
id = "slime_scanner"
@@ -799,4 +799,3 @@
materials = list(MAT_METAL = 300, MAT_GLASS = 200)
build_path = /obj/item/device/slime_scanner
category = list("initial", "Misc")
+1 -1
View File
File diff suppressed because one or more lines are too long
+6 -7
View File
File diff suppressed because one or more lines are too long
+3 -1
View File
@@ -34,7 +34,9 @@ span.button
&.gridable
width: 125px
margin: 2px 0
&.center
text-align: center
width:75px
span:not(.button) + span.button
margin-left: 5px
+4
View File
@@ -2,6 +2,10 @@ div.display
width: 100%
padding: 4px
margin: 6px 0
&.tabular
padding 0px
margin 0px
background-color: display-color-background // Transparent background.
box-shadow: inset 0 0 5px display-color-shadow
+4 -1
View File
@@ -9,8 +9,11 @@ input
color: input-color-text
background-color: input-color-background
border: 1px solid input-color-border
&.number
width: 40px
&::placeholder
color: input-color-placeholder
&::-ms-clear
display: none
+11
View File
@@ -31,3 +31,14 @@ section
.line
@extend $cell
width: 100%
.cell
@extend $cell
&:not(:first-child)
text-align: center
padding-top 0px
span.button
width: 75px
&:not(:last-child)
padding-right: 4px
@@ -0,0 +1,112 @@
<ui-display>
<ui-section>
This machine only accepts ore. Gibtonite and Slag are not accepted.
</ui-section>
<ui-section>
Current unclaimed points: {{data.unclaimedPoints}}
{{#if data.unclaimedPoints}}
<ui-button action='Claim'>
Claim Points
</ui-button>
{{/if}}
</ui-section>
<ui-section>
{{#if data.hasID}}
<ui-button action='Eject'>
Eject ID
</ui-button>
You have {{data.claimedPoints}} mining points collected.
{{else}}
<ui-button action='Insert'>
Insert ID
</ui-button>
{{/if}}
</ui-section>
</ui-display>
<ui-display>
{{#if data.hasDisk}}
<ui-section>
<ui-button action="diskEject" icon="eject">
Eject Disk
</ui-button>
</ui-section>
{{#each data.diskDesigns}}
<ui-section class=candystripe>
<ui-button action="diskUpload" state={{(canupload) ? null : 'disabled'}} icon="upload" align="right" params='{ "design" : "{{index}}" }'>
Upload
</ui-button>
File {{index}}: {{name}}
</ui-section>
{{/each}}
{{else}}
<ui-section>
<ui-button action="diskInsert" icon="floppy-o">
Insert Disk
</ui-button>
</ui-section>
{{/if}}
</ui-display>
<div class="display tabular">
<section class="candystripe">
<section class="cell">
Mineral
</section>
<section class="cell">
Sheets
</section>
<section class="cell">
</section>
<section class="cell">
<ui-button class='center mineral' grid action='Release' params='{"id" : "all"}'>
Release All
</ui-button>
</section>
<section class="cell">
Ore Value
</section>
</section>
{{#each data.materials}}
<section class="candystripe">
<section class="cell">
{{name}}
</section>
<section class="cell" align='right'>
{{amount}}
</section>
<section class="cell">
<input value={{sheets}} placeholder='###' class="number"/>
</section>
<section class="cell" align='right'>
<ui-button class='center' grid action='Release' state={{(amount >= 1) ? null : 'disabled'}} params='{ "id" : {{id}}, "sheets" : {{sheets}} }' >
Release
</ui-button>
</section>
<section class="cell" align='right'>
{{value}}
</section>
</section>
{{/each}}
{{#each data.alloys}}
<section class="candystripe">
<section class="cell">
{{name}}
</section>
<section class="cell" align='right'>
{{amount}}
</section>
<section class="cell">
<input value={{sheets}} placeholder='###' class="number"/>
</section>
<section class="cell" align='right'>
<ui-button class='center' grid action='Smelt' state={{ (amount >= 1) ? null : 'disabled'}} params='{ "id" : {{id}}, "sheets" : {{sheets}} }'>
Smelt
</ui-button>
</section>
<section class="cell" align='right'>
<ui-button class='center' grid action='SmeltAll' state={{ (amount >= 1) ? null : 'disabled'}} params='{ "id" : {{id}} }'>
Smelt All
</ui-button>
</section>
</section>
{{/each}}
</div>