From 079989dd7b9693bfed31f8c81c9b153b809bb02b Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Fri, 24 Nov 2023 02:38:24 +0000 Subject: [PATCH 1/5] radials --- .../mob/living/carbon/xenomorph/Evolution.dm | 14 ++++++++++++-- .../mob/living/carbon/xenomorph/xeno_defines.dm | 5 +++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/Evolution.dm b/code/modules/mob/living/carbon/xenomorph/Evolution.dm index 332f8d1778dd..f577dffbebd6 100644 --- a/code/modules/mob/living/carbon/xenomorph/Evolution.dm +++ b/code/modules/mob/living/carbon/xenomorph/Evolution.dm @@ -23,11 +23,21 @@ if(GLOB.xeno_datum_list[caste].minimum_evolve_time > ROUND_TIME) castes_available -= caste + var/list/castes_select = list() + for(var/caste in castes_available) + if(caste in hive.evolve_pictures) + castes_select[caste] = hive.evolve_pictures[caste] + else + castes_select[caste] = null + if(!length(castes_available)) to_chat(src, SPAN_WARNING("The Hive is not capable of supporting any castes you can evolve to yet.")) return - - var/castepick = tgui_input_list(usr, "You are growing into a beautiful alien! It is time to choose a caste.", "Evolve", castes_available, theme="hive_status") + var/castepick + if(client.prefs && client.prefs.no_radials_preference) + castepick = tgui_input_list(usr, "You are growing into a beautiful alien! It is time to choose a caste.", "Evolve", castes_available, theme="hive_status") + else + castepick = show_radial_menu(src, src.client?.eye, castes_select) if(!castepick) //Changed my mind return diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 79f73631c7b1..9c344435a65a 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -329,6 +329,7 @@ var/list/list/hive_structures = list() //Stringref list of structures that have been built var/list/list/hive_constructions = list() //Stringref list of structures that are being built + var/list/evolve_pictures var/datum/hive_status_ui/hive_ui var/datum/mark_menu_ui/mark_ui var/datum/hive_faction_ui/faction_ui @@ -377,6 +378,10 @@ if(hivenumber != XENO_HIVE_NORMAL) return + evolve_pictures = list("Drone" = image(icon = 'icons/mob/xenos/drone.dmi', icon_state = "Normal Drone Running"), "Burrower" = image(icon = 'icons/mob/xenos/burrower.dmi', icon_state = "Burrower Walking")) + + + RegisterSignal(SSdcs, COMSIG_GLOB_POST_SETUP, PROC_REF(post_setup)) /datum/hive_status/proc/post_setup() From 42af07fce854d2471f5024aea88bd439455c7f06 Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Fri, 24 Nov 2023 14:59:46 +0000 Subject: [PATCH 2/5] converts xeno evolution menu to radial menu --- .../mob/living/carbon/xenomorph/Evolution.dm | 15 ++++++--------- .../living/carbon/xenomorph/xeno_defines.dm | 17 +++++++++++++---- icons/mob/xenos/radial_xenos.dmi | Bin 0 -> 4965 bytes 3 files changed, 19 insertions(+), 13 deletions(-) create mode 100644 icons/mob/xenos/radial_xenos.dmi diff --git a/code/modules/mob/living/carbon/xenomorph/Evolution.dm b/code/modules/mob/living/carbon/xenomorph/Evolution.dm index f577dffbebd6..23c1df65f08c 100644 --- a/code/modules/mob/living/carbon/xenomorph/Evolution.dm +++ b/code/modules/mob/living/carbon/xenomorph/Evolution.dm @@ -23,21 +23,18 @@ if(GLOB.xeno_datum_list[caste].minimum_evolve_time > ROUND_TIME) castes_available -= caste - var/list/castes_select = list() - for(var/caste in castes_available) - if(caste in hive.evolve_pictures) - castes_select[caste] = hive.evolve_pictures[caste] - else - castes_select[caste] = null - if(!length(castes_available)) to_chat(src, SPAN_WARNING("The Hive is not capable of supporting any castes you can evolve to yet.")) return var/castepick - if(client.prefs && client.prefs.no_radials_preference) + if((client.prefs && client.prefs.no_radials_preference) || !hive.evolution_menu_images) castepick = tgui_input_list(usr, "You are growing into a beautiful alien! It is time to choose a caste.", "Evolve", castes_available, theme="hive_status") else - castepick = show_radial_menu(src, src.client?.eye, castes_select) + var/list/fancy_caste_list = list() + for(var/caste in castes_available) + fancy_caste_list[caste] = hive.evolution_menu_images[caste] + + castepick = show_radial_menu(src, src.client?.eye, fancy_caste_list) if(!castepick) //Changed my mind return diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 9c344435a65a..22d7354d72f8 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -329,7 +329,6 @@ var/list/list/hive_structures = list() //Stringref list of structures that have been built var/list/list/hive_constructions = list() //Stringref list of structures that are being built - var/list/evolve_pictures var/datum/hive_status_ui/hive_ui var/datum/mark_menu_ui/mark_ui var/datum/hive_faction_ui/faction_ui @@ -366,6 +365,9 @@ var/datum/tacmap/drawing/xeno/tacmap var/minimap_type = MINIMAP_FLAG_XENO + ///Stores the image()'s for the xeno evolution radial menu + var/static/list/evolution_menu_images + /datum/hive_status/New() mutators.hive = src hive_ui = new(src) @@ -378,12 +380,19 @@ if(hivenumber != XENO_HIVE_NORMAL) return - evolve_pictures = list("Drone" = image(icon = 'icons/mob/xenos/drone.dmi', icon_state = "Normal Drone Running"), "Burrower" = image(icon = 'icons/mob/xenos/burrower.dmi', icon_state = "Burrower Walking")) - - + if(!evolution_menu_images) + evolution_menu_images = list() + generate_evo_menu_images() RegisterSignal(SSdcs, COMSIG_GLOB_POST_SETUP, PROC_REF(post_setup)) +///Generate the image()'s requried for the evolution radial menu. +/datum/hive_status/proc/generate_evo_menu_images() + for(var/datum/caste_datum/caste as anything in subtypesof(/datum/caste_datum)) + var/datum/caste_datum/new_caste = new caste() + evolution_menu_images[new_caste.caste_type] = image('icons/mob/xenos/radial_xenos.dmi', new_caste.caste_type) + qdel(new_caste) + /datum/hive_status/proc/post_setup() SIGNAL_HANDLER diff --git a/icons/mob/xenos/radial_xenos.dmi b/icons/mob/xenos/radial_xenos.dmi new file mode 100644 index 0000000000000000000000000000000000000000..2832f42fda33e5cdaaeebc5dbcd486ce72b17db7 GIT binary patch literal 4965 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 literal 0 HcmV?d00001 From 4f66588ec1de84fea101224a1b776549203b92c6 Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Fri, 24 Nov 2023 19:48:50 +0000 Subject: [PATCH 3/5] doc --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 22d7354d72f8..5f1c79d6c05f 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -365,7 +365,11 @@ var/datum/tacmap/drawing/xeno/tacmap var/minimap_type = MINIMAP_FLAG_XENO - ///Stores the image()'s for the xeno evolution radial menu + /*Stores the image()'s for the xeno evolution radial menu + To add an image for your caste - add an icon to icons/mob/xenos/radial_xenos.dmi + Icon size should be 32x32, to make them fit within the radial menu border size your icon 22x22 and leave 10px transparent border. + The name of the icon should be the same as the XENO_CASTE_ define for that caste eg. #define XENO_CASTE_DRONE "Drone" + */ var/static/list/evolution_menu_images /datum/hive_status/New() From bae4d3eceb61dd643e1794b41ceecd0e2e7796d6 Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Sat, 25 Nov 2023 17:18:42 +0000 Subject: [PATCH 4/5] Update code/modules/mob/living/carbon/xenomorph/xeno_defines.dm Co-authored-by: harryob --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 5f1c79d6c05f..b0e3064b9f35 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -393,9 +393,7 @@ ///Generate the image()'s requried for the evolution radial menu. /datum/hive_status/proc/generate_evo_menu_images() for(var/datum/caste_datum/caste as anything in subtypesof(/datum/caste_datum)) - var/datum/caste_datum/new_caste = new caste() - evolution_menu_images[new_caste.caste_type] = image('icons/mob/xenos/radial_xenos.dmi', new_caste.caste_type) - qdel(new_caste) + evolution_menu_images[initial(new_caste.caste_type)] = image('icons/mob/xenos/radial_xenos.dmi', initial(new_caste.caste_type)) /datum/hive_status/proc/post_setup() SIGNAL_HANDLER From 2bf267341e207ec8d885845f744e0255632d02c1 Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Sat, 25 Nov 2023 17:21:27 +0000 Subject: [PATCH 5/5] Update code/modules/mob/living/carbon/xenomorph/xeno_defines.dm Co-authored-by: harryob --- code/modules/mob/living/carbon/xenomorph/xeno_defines.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index b0e3064b9f35..f00b3625ed4b 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -393,7 +393,7 @@ ///Generate the image()'s requried for the evolution radial menu. /datum/hive_status/proc/generate_evo_menu_images() for(var/datum/caste_datum/caste as anything in subtypesof(/datum/caste_datum)) - evolution_menu_images[initial(new_caste.caste_type)] = image('icons/mob/xenos/radial_xenos.dmi', initial(new_caste.caste_type)) + evolution_menu_images[initial(caste.caste_type)] = image('icons/mob/xenos/radial_xenos.dmi', initial(caste.caste_type)) /datum/hive_status/proc/post_setup() SIGNAL_HANDLER