From 8f4fd998a9af3d4d02f71967e007b7507ef50e70 Mon Sep 17 00:00:00 2001 From: Matt Date: Tue, 19 Apr 2016 22:05:43 +0200 Subject: [PATCH] Fixes and prizes --- code/game/machinery/constructable_frame.dm | 9 ++++ code/game/machinery/gameboard.dm | 48 +++++++++++++++++++--- code/modules/client/asset_cache.dm | 3 +- html/browser/boardui.js | 6 ++- html/chess.html | 9 +++- 5 files changed, 65 insertions(+), 10 deletions(-) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 200b21d441d..43c42ac19bf 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -890,6 +890,15 @@ obj/item/weapon/circuitboard/rdserver /obj/item/weapon/stock_parts/manipulator = 1, /obj/item/weapon/stock_parts/console_screen = 1) +/obj/item/weapon/circuitboard/gameboard + name = "circuit board (Virtual Gameboard)" + build_path = /obj/machinery/gameboard + board_type = "machine" + origin_tech = "programming=2" + req_components = list( + /obj/item/weapon/stock_parts/micro_laser = 1, + /obj/item/stack/cable_coil = 3, + /obj/item/stack/sheet/glass = 1) //Selectable mode board, like vending machine boards /obj/item/weapon/circuitboard/logic_gate diff --git a/code/game/machinery/gameboard.dm b/code/game/machinery/gameboard.dm index a3870b40d76..b331930b325 100644 --- a/code/game/machinery/gameboard.dm +++ b/code/game/machinery/gameboard.dm @@ -7,6 +7,15 @@ anchored = 1 use_power = 1 +/obj/machinery/gameboard/New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/gameboard(null) + component_parts += new /obj/item/weapon/stock_parts/micro_laser(null) + component_parts += new /obj/item/stack/cable_coil(null, 3) + component_parts += new /obj/item/stack/sheet/glass(null, 1) + RefreshParts() + /obj/machinery/gameboard/power_change() . = ..() update_icon() @@ -19,25 +28,52 @@ /obj/machinery/gameboard/attack_hand(mob/user) . = ..() - if (.) + if(.) + return + if(src.in_use) + to_chat(user, "This gameboard is already in use!") return interact(user) /obj/machinery/gameboard/interact(mob/user) . = ..() - if (.) + if(.) return var/dat - dat = file2text('html/chess.html') + dat = replacetext(file2text('html/chess.html'), "\[hsrc]", "\ref[src]") var/datum/asset/simple/chess/assets = get_asset_datum(/datum/asset/simple/chess) assets.send(user) - var/datum/browser/popup = new(user, "SpessChess", name, 500, 800) + var/datum/browser/popup = new(user, "SpessChess", name, 500, 800, src) popup.set_content(dat) popup.add_stylesheet("chess.css", 'html/browser/chess.css') popup.add_script("garbochess.js", 'html/browser/garbochess.js') - popup.add_script("boardui.js", 'html/browser/boardui.js') + //popup.add_script("boardui.js", 'html/browser/boardui.js') popup.add_script("jquery-1.8.2.min.js", 'html/browser/jquery-1.8.2.min.js') popup.add_script("jquery-ui-1.8.24.custom.min.js", 'html/browser/jquery-ui-1.8.24.custom.min.js') - popup.open() \ No newline at end of file + popup.set_window_options("titlebar=0") + popup.open() + user.set_machine(src) + +/obj/machinery/gameboard/proc/close_game() //yes, shamelessly copied over from arcade_base + in_use = 0 + for(var/mob/user in viewers(world.view, src)) // I don't know who you are. + if(user.client && user.machine == src) // I will look for you, + user.unset_machine() // I will find you, + user << browse(null, "window=SpessChess") // And I will kill you. + return + +/obj/machinery/gameboard/Topic(var/href, var/list/href_list) + . = ..() + var/prize = /obj/item/stack/tickets + if (.) + return + + if (href_list["checkmate"]) + visible_message("[src.name] beeps, \"WINNER!\"") + new prize(get_turf(src), 80) + close_game() + + if (href_list["close"]) + close_game() \ No newline at end of file diff --git a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm index 79a4bb552ae..ac4a426fe08 100644 --- a/code/modules/client/asset_cache.dm +++ b/code/modules/client/asset_cache.dm @@ -221,7 +221,8 @@ proc/getFilesSlow(var/client/client, var/list/files, var/register_asset = TRUE) "sprites.png" = 'icons/chess_pieces/sprites.png', "blank.gif" = 'icons/chess_pieces/blank.gif', "background.png" = 'nano/images/uiBackground.png', - "garbochess.js" = 'html/browser/garbochess.js' + "garbochess.js" = 'html/browser/garbochess.js', + "boardui.js" = 'html/browser/boardui.js' ) /datum/asset/nanoui diff --git a/html/browser/boardui.js b/html/browser/boardui.js index b8e1166e941..68ee667a355 100644 --- a/html/browser/boardui.js +++ b/html/browser/boardui.js @@ -29,6 +29,10 @@ function UINewGame() { } } +function UIClose() { + window.location = "byond://?src=" + hSrc + ";close=1"; +} + function EnsureAnalysisStopped() { if (g_analyzing && g_backgroundEngine != null) { g_backgroundEngine.terminate(); @@ -95,7 +99,7 @@ function FinishMove(bestMove, value, timeTaken, ply) { if (bestMove != null) { UIPlayMove(bestMove, BuildPVMessage(bestMove, value, timeTaken, ply)); } else { - alert("Checkmate!"); + window.location = "byond://?src=" + hSrc + ";checkmate=1"; } } diff --git a/html/chess.html b/html/chess.html index 7bf08d04034..d135be94ac7 100644 --- a/html/chess.html +++ b/html/chess.html @@ -1,3 +1,5 @@ + +