From 3c20b53bd329457c92ca626beb3fce2f7d2b15b5 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 7 Oct 2021 18:55:09 +0200 Subject: [PATCH] [MIRROR] Replaces the Mafia button with the Minigames button. Adds tgui panels for selecting minigames and for CTF [MDB IGNORE] (#8659) * Replaces the Mafia button with the Minigames button. Adds tgui panels for selecting minigames and for CTF (#61638) This PR replaces the Mafia button on the observer HUD with a minigames button that allows you to access both CTF and Mafia. It also adds a CTF menu that allows you to view current scores, players needed to start a game, and joining a ctf game without needing to move to the spawner. Co-authored-by: Jared-Fogle <35135081+Mothblocks@ users.noreply.github.com> * Replaces the Mafia button with the Minigames button. Adds tgui panels for selecting minigames and for CTF Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com> Co-authored-by: Jared-Fogle <35135081+Mothblocks@ users.noreply.github.com> --- code/_onclick/hud/_defines.dm | 2 +- code/_onclick/hud/ghost.dm | 18 ++--- code/datums/minigames_menu.dm | 47 ++++++++++++ code/modules/capture_the_flag/_defines.dm | 1 + code/modules/capture_the_flag/ctf_game.dm | 2 - .../capture_the_flag/ctf_map_loading.dm | 2 +- code/modules/capture_the_flag/ctf_panel.dm | 52 ++++++++++++++ code/modules/mob/dead/observer/observer.dm | 19 ++++- icons/hud/screen_ghost.dmi | Bin 22206 -> 24393 bytes strings/tips.txt | 2 +- tgstation.dme | 3 + tgui/packages/tgui/interfaces/CTFPanel.js | 68 ++++++++++++++++++ .../packages/tgui/interfaces/MinigamesMenu.js | 40 +++++++++++ 13 files changed, 241 insertions(+), 15 deletions(-) create mode 100644 code/datums/minigames_menu.dm create mode 100644 code/modules/capture_the_flag/_defines.dm create mode 100644 code/modules/capture_the_flag/ctf_panel.dm create mode 100644 tgui/packages/tgui/interfaces/CTFPanel.js create mode 100644 tgui/packages/tgui/interfaces/MinigamesMenu.js diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 5e9116c8696..d8357fd0208 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -185,7 +185,7 @@ #define ui_ghost_reenter_corpse "SOUTH:6,CENTER-1:24" #define ui_ghost_teleport "SOUTH:6,CENTER:24" #define ui_ghost_pai "SOUTH: 6, CENTER+1:24" -#define ui_ghost_mafia "SOUTH: 6, CENTER+2:24" +#define ui_ghost_minigames "SOUTH: 6, CENTER+2:24" #define ui_ghost_language_menu "SOUTH: 22, CENTER+3:8" //Blobbernauts diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm index 7efab81cc42..eeb8dccb933 100644 --- a/code/_onclick/hud/ghost.dm +++ b/code/_onclick/hud/ghost.dm @@ -45,13 +45,13 @@ var/mob/dead/observer/G = usr G.register_pai() -/atom/movable/screen/ghost/mafia - name = "Mafia Signup" - icon_state = "mafia" - -/atom/movable/screen/ghost/mafia/Click() - var/mob/dead/observer/G = usr - G.mafia_signup() +/atom/movable/screen/ghost/minigames_menu + name ="Minigames" + icon_state = "minigames" + +/atom/movable/screen/ghost/minigames_menu/Click() + var/mob/dead/observer/observer = usr + observer.open_minigames_menu() /datum/hud/ghost/New(mob/owner) ..() @@ -82,8 +82,8 @@ using.hud = src static_inventory += using - using = new /atom/movable/screen/ghost/mafia() - using.screen_loc = ui_ghost_mafia + using = new /atom/movable/screen/ghost/minigames_menu() + using.screen_loc = ui_ghost_minigames using.hud = src static_inventory += using diff --git a/code/datums/minigames_menu.dm b/code/datums/minigames_menu.dm new file mode 100644 index 00000000000..9a058024b23 --- /dev/null +++ b/code/datums/minigames_menu.dm @@ -0,0 +1,47 @@ +/datum/minigames_menu + var/mob/dead/observer/owner + +/datum/minigames_menu/New(mob/dead/observer/new_owner) + if(!istype(new_owner)) + qdel(src) + owner = new_owner + +/datum/minigames_menu/Destroy() + owner = null + return ..() + +/datum/minigames_menu/ui_state(mob/user) + return GLOB.observer_state + +/datum/minigames_menu/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "MinigamesMenu") + ui.open() + +/datum/minigames_menu/ui_act(action, params, datum/tgui/ui) + . = ..() + if(.) + return + + switch(action) + if("mafia") + ui.close() + mafia() + return TRUE + if("ctf") + ui.close() + ctf() + return TRUE + +/datum/minigames_menu/proc/mafia() + var/datum/mafia_controller/game = GLOB.mafia_game //this needs to change if you want multiple mafia games up at once. + if(!game) + game = create_mafia_game("mafia") + game.ui_interact(usr) + +/datum/minigames_menu/proc/ctf() + var/datum/ctf_panel/ctf_panel + if(!ctf_panel) + ctf_panel = new(src) + ctf_panel.ui_interact(usr) diff --git a/code/modules/capture_the_flag/_defines.dm b/code/modules/capture_the_flag/_defines.dm new file mode 100644 index 00000000000..96079739950 --- /dev/null +++ b/code/modules/capture_the_flag/_defines.dm @@ -0,0 +1 @@ +#define CTF_REQUIRED_PLAYERS 4 diff --git a/code/modules/capture_the_flag/ctf_game.dm b/code/modules/capture_the_flag/ctf_game.dm index fe8fac882e4..5b2e31cef0a 100644 --- a/code/modules/capture_the_flag/ctf_game.dm +++ b/code/modules/capture_the_flag/ctf_game.dm @@ -6,7 +6,6 @@ #define FLAG_RETURN_TIME 200 // 20 seconds #define INSTAGIB_RESPAWN 50 //5 seconds #define DEFAULT_RESPAWN 150 //15 seconds -#define CTF_REQUIRED_PLAYERS 4 /obj/item/ctf name = "banner" @@ -638,4 +637,3 @@ #undef FLAG_RETURN_TIME #undef INSTAGIB_RESPAWN #undef DEFAULT_RESPAWN -#undef CTF_REQUIRED_PLAYERS diff --git a/code/modules/capture_the_flag/ctf_map_loading.dm b/code/modules/capture_the_flag/ctf_map_loading.dm index 8efaaa751d3..60212cd8b44 100644 --- a/code/modules/capture_the_flag/ctf_map_loading.dm +++ b/code/modules/capture_the_flag/ctf_map_loading.dm @@ -54,7 +54,7 @@ GLOBAL_DATUM(ctf_spawner, /obj/effect/landmark/ctf) description = "The original CTF map." mappath = "_maps/map_files/CTF/classic.dmm" -/datum/map_template/ctf/fourSide +/datum/map_template/ctf/four_side name = "Four Side" description = "A CTF map created to demonstrate 4 team CTF, features a single centred flag rather than one per team." mappath = "_maps/map_files/CTF/fourSide.dmm" diff --git a/code/modules/capture_the_flag/ctf_panel.dm b/code/modules/capture_the_flag/ctf_panel.dm new file mode 100644 index 00000000000..a12eeaa08dc --- /dev/null +++ b/code/modules/capture_the_flag/ctf_panel.dm @@ -0,0 +1,52 @@ +GLOBAL_DATUM_INIT(ctf_panel, /datum/ctf_panel, new()) + +/datum/ctf_panel + +/datum/ctf_panel/ui_state(mob/user) + return GLOB.observer_state + +/datum/ctf_panel/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "CTFPanel") + ui.open() + +/datum/ctf_panel/ui_data(mob/user) + var/list/data = list() + data["teams"] = list() + data["enabled"] = "" + for(var/obj/machinery/capture_the_flag/team in GLOB.machines) + var/list/this = list() + this["name"] = team + this["color"] = team.team + this["score"] = team.points + team.control_points + this["team_size"] = team.team_members.len + this["refs"] += "[REF(team)]" + data["teams"] += list(this) + if(!data["enabled"]) + if(team.ctf_enabled) + data["enabled"] = "CTF is currently running!" + else + data["enabled"] = "CTF needs [CTF_REQUIRED_PLAYERS] players to start, currently [team.people_who_want_to_play.len]/[CTF_REQUIRED_PLAYERS] have signed up!" + return data + + +/datum/ctf_panel/ui_act(action, params, datum/tgui/ui) + .= ..() + if(.) + return + var/mob/user = ui.user + + switch(action) + if("jump") + var/obj/machinery/capture_the_flag/ctf_spawner = locate(params["refs"]) + if(istype(ctf_spawner)) + user.forceMove(get_turf(ctf_spawner)) + return TRUE + if("join") + var/obj/machinery/capture_the_flag/ctf_spawner = locate(params["refs"]) + if(istype(ctf_spawner)) + if(ctf_spawner.ctf_enabled) + user.forceMove(get_turf(ctf_spawner)) + ctf_spawner.attack_ghost(user) + return TRUE diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index bd4ea297b93..65f5eee14a1 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -60,6 +60,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) // of the mob var/deadchat_name var/datum/spawners_menu/spawners_menu + var/datum/minigames_menu/minigames_menu /mob/dead/observer/Initialize(mapload) set_invisibility(GLOB.observer_default_invisibility) @@ -67,7 +68,8 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) add_verb(src, list( /mob/dead/observer/proc/dead_tele, /mob/dead/observer/proc/open_spawners_menu, - /mob/dead/observer/proc/tray_view)) + /mob/dead/observer/proc/tray_view, + /mob/dead/observer/proc/open_minigames_menu)) if(icon_state in GLOB.ghost_forms_with_directions_list) ghostimage_default = image(src.icon,src,src.icon_state + "_nodir") @@ -176,6 +178,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) updateallghostimages() QDEL_NULL(spawners_menu) + QDEL_NULL(minigames_menu) return ..() /* @@ -1000,6 +1003,20 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp spawners_menu.ui_interact(src) +/mob/dead/observer/proc/open_minigames_menu() + set name = "Minigames Menu" + set desc = "See all currently available minigames" + set category = "Ghost" + if(!client) + return + if(!isobserver(src)) + to_chat(usr, span_warning("You must be a ghost to play minigames!")) + return + if(!minigames_menu) + minigames_menu = new(src) + + minigames_menu.ui_interact(src) + /mob/dead/observer/proc/tray_view() set category = "Ghost" set name = "T-ray view" diff --git a/icons/hud/screen_ghost.dmi b/icons/hud/screen_ghost.dmi index c7f5d7d5d1169148506b72293bca4883a3ad67a0..532fee175a847784a09489c75229a8a4c7b03942 100644 GIT binary patch literal 24393 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 Y1DlJgh5I?+ZhVlAh90a!%{KV|05r~F5C8xG literal 22206 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 diff --git a/strings/tips.txt b/strings/tips.txt index 3a4c045fdfe..7eeb9be0646 100644 --- a/strings/tips.txt +++ b/strings/tips.txt @@ -237,7 +237,7 @@ As a Morph, you can talk while disguised, but your words have a chance of being As a Drone, you can ping other drones to alert them of areas in the station in need of repair. As a Ghost, you can see the inside of a container on the ground by clicking on it. As a Ghost, you can double click on just about anything to follow it. Or just warp around! -As a Ghost, you can both start and join capture the flag games by clicking on one of the team spawners, which can be found under the "Misc" section of the orbit menu. +As a Ghost, you can both start and join capture the flag games through the minigames menu, or by clicking on one of the team spawners, which can be found under the "Misc" section of the orbit menu. As a Security Officer, remember that correlation does not equal causation. Someone may have just been at the wrong place at the wrong time! As a Security Officer, remember that you can attach a sec-lite to your disabler or your helmet! You can swap floor tiles by holding a crowbar in one hand and a stack of tiles in the other. diff --git a/tgstation.dme b/tgstation.dme index 26ab4f4456e..3914d8b48c4 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -492,6 +492,7 @@ #include "code\datums\hud.dm" #include "code\datums\map_config.dm" #include "code\datums\mind.dm" +#include "code\datums\minigames_menu.dm" #include "code\datums\movement_detector.dm" #include "code\datums\mutable_appearance.dm" #include "code\datums\numbered_display.dm" @@ -2101,10 +2102,12 @@ #include "code\modules\buildmode\submodes\smite.dm" #include "code\modules\buildmode\submodes\throwing.dm" #include "code\modules\buildmode\submodes\variable_edit.dm" +#include "code\modules\capture_the_flag\_defines.dm" #include "code\modules\capture_the_flag\ctf_classes.dm" #include "code\modules\capture_the_flag\ctf_equipment.dm" #include "code\modules\capture_the_flag\ctf_game.dm" #include "code\modules\capture_the_flag\ctf_map_loading.dm" +#include "code\modules\capture_the_flag\ctf_panel.dm" #include "code\modules\capture_the_flag\medieval_sim\medisim_classes.dm" #include "code\modules\capture_the_flag\medieval_sim\medisim_game.dm" #include "code\modules\cargo\bounty.dm" diff --git a/tgui/packages/tgui/interfaces/CTFPanel.js b/tgui/packages/tgui/interfaces/CTFPanel.js new file mode 100644 index 00000000000..d9c9bdf25d3 --- /dev/null +++ b/tgui/packages/tgui/interfaces/CTFPanel.js @@ -0,0 +1,68 @@ +import { useBackend } from '../backend'; +import { Box, Button, Section, Flex, Stack, Divider } from '../components'; +import { Window } from '../layouts'; + +export const CTFPanel = (props, context) => { + const { act, data } = useBackend(context); + const teams = data.teams || []; + const enabled = data.enabled || []; + return ( + + + + {enabled} + + + + + + {teams.map(team => ( + +
+ + + + {team.team_size} member + {team.team_size === 1 ? "" : "s"} + + + + + + {team.score} point + {team.score === 1 ? "" : "s"} + + + + +
+
+ ))} +
+
+
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/MinigamesMenu.js b/tgui/packages/tgui/interfaces/MinigamesMenu.js new file mode 100644 index 00000000000..4c8bb9ebd7e --- /dev/null +++ b/tgui/packages/tgui/interfaces/MinigamesMenu.js @@ -0,0 +1,40 @@ +import { useBackend } from '../backend'; +import { Button, Section, Stack } from '../components'; +import { Window } from '../layouts'; + +export const MinigamesMenu = (props, context) => { + const { act } = useBackend(context); + return ( + + +
+ + +
+
+
+ ); +};