diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 7e146a8fc4e..26fb60335c8 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -55,6 +55,8 @@ #define ui_alien_storage_l "CENTER-2:14,SOUTH:5"//alien #define ui_alien_storage_r "CENTER+1:18,SOUTH:5"//alien +#define ui_alien_language_menu "EAST-3:25,SOUTH+1:7"//alien +#define ui_alienlarva_language_menu "EAST-3:26,SOUTH:5"//alien //Lower right, persistant menu //#define ui_dropbutton "11:22,1:5" @@ -66,10 +68,12 @@ #define ui_acti_alt "EAST-1:28,SOUTH:5" //alternative intent switcher for when the interface is hidden (F12) #define ui_crafting "EAST:-5,SOUTH+2:7" +#define ui_language_menu "EAST:-22,SOUTH+2:7" #define ui_borg_pull "EAST-2:26,SOUTH+1:7" #define ui_borg_radio "EAST-1:28,SOUTH+1:7" #define ui_borg_intents "EAST-2:26,SOUTH:5" +#define ui_borg_lanugage_menu "EAST-2:26,SOUTH+1:7" //Upper-middle right (alerts) #define ui_alert1 "EAST-1:28,CENTER+5:27" diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm index 0a3ca11f315..c8864f36d8a 100644 --- a/code/_onclick/hud/ai.dm +++ b/code/_onclick/hud/ai.dm @@ -150,6 +150,10 @@ var/obj/screen/using + using = new /obj/screen/language_menu + using.screen_loc = ui_borg_lanugage_menu + static_inventory += using + //AI core using = new /obj/screen/ai/aicore() using.screen_loc = ui_ai_core diff --git a/code/_onclick/hud/alien.dm b/code/_onclick/hud/alien.dm index 70d121a190b..79d109c0c57 100644 --- a/code/_onclick/hud/alien.dm +++ b/code/_onclick/hud/alien.dm @@ -36,6 +36,10 @@ var/obj/screen/using var/obj/screen/inventory/inv_box + using = new /obj/screen/language_menu + using.screen_loc = ui_alien_language_menu + static_inventory += using + using = new /obj/screen/act_intent/alien() using.icon_state = (mymob.a_intent == "hurt" ? "harm" : mymob.a_intent) using.screen_loc = ui_acti diff --git a/code/_onclick/hud/alien_larva.dm b/code/_onclick/hud/alien_larva.dm index 6ab416259e7..c4f453077ef 100644 --- a/code/_onclick/hud/alien_larva.dm +++ b/code/_onclick/hud/alien_larva.dm @@ -30,6 +30,10 @@ mymob.pullin.screen_loc = ui_pull_resist hotkeybuttons += mymob.pullin + using = new /obj/screen/language_menu + using.screen_loc = ui_alienlarva_language_menu + static_inventory += using + mymob.zone_sel = new /obj/screen/zone_sel/alien() mymob.zone_sel.update_icon(mymob) static_inventory += mymob.zone_sel \ No newline at end of file diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 3f5ea2dcb94..d543ce9c416 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -60,7 +60,13 @@ var/obj/screen/using var/obj/screen/inventory/inv_box - using = new /obj/screen/inventory/craft + using = new /obj/screen/craft + using.icon = ui_style + using.color = ui_color + using.alpha = ui_alpha + static_inventory += using + + using = new /obj/screen/language_menu using.icon = ui_style using.color = ui_color using.alpha = ui_alpha diff --git a/code/_onclick/hud/monkey.dm b/code/_onclick/hud/monkey.dm index 6c69063e0b8..e5d1e15512a 100644 --- a/code/_onclick/hud/monkey.dm +++ b/code/_onclick/hud/monkey.dm @@ -24,6 +24,12 @@ static_inventory += using move_intent = using + using = new /obj/screen/language_menu + using.icon = ui_style + using.color = ui_color + using.alpha = ui_alpha + static_inventory += using + using = new /obj/screen/drop() using.icon = ui_style using.screen_loc = ui_drop_throw diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index b95bacd06e2..b735d05c3da 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -97,6 +97,11 @@ var/obj/screen/using var/mob/living/silicon/robot/mymobR = mymob +//Language menu + using = new /obj/screen/language_menu + using.screen_loc = ui_borg_lanugage_menu + static_inventory += using + //Radio using = new /obj/screen/robot/radio() using.screen_loc = ui_borg_radio diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 6fe0e4a8532..cf0247e847a 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -346,16 +346,28 @@ /obj/screen/zone_sel/robot icon = 'icons/mob/screen_robot.dmi' -/obj/screen/inventory/craft +/obj/screen/craft name = "crafting menu" icon = 'icons/mob/screen_midnight.dmi' icon_state = "craft" screen_loc = ui_crafting -/obj/screen/inventory/craft/Click() +/obj/screen/craft/Click() var/mob/living/M = usr M.OpenCraftingMenu() +/obj/screen/language_menu + name = "language menu" + icon = 'icons/mob/screen_midnight.dmi' + icon_state = "talk_wheel" + screen_loc = ui_language_menu + +/obj/screen/language_menu/Click() + var/mob/M = usr + if(!istype(M)) + return + M.check_languages() + /obj/screen/inventory var/slot_id //The indentifier for the slot. It has nothing to do with ID cards. layer = 19 diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 61bd133efef..4b43c8cbeaa 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -618,34 +618,34 @@ return (universal_speak || (speaking && speaking.flags & INNATE) || speaking in languages) //TBD +/mob/proc/check_lang_data() + . = "" + + for(var/datum/language/L in languages) + if(!(L.flags & NONGLOBAL)) + . += "[L.name] (:[L.key])
[L.desc]

" + +/mob/living/check_lang_data() + . = "" + + if(default_language) + . += "Current default language: [default_language] - reset

" + + for(var/datum/language/L in languages) + if(!(L.flags & NONGLOBAL)) + if(L == default_language) + . += "[L.name] (:[L.key]) - default - reset
[L.desc]

" + else + . += "[L.name] (:[L.key]) - set default
[L.desc]

" + /mob/verb/check_languages() set name = "Check Known Languages" set category = "IC" set src = usr - var/dat = "Known Languages

" - - for(var/datum/language/L in languages) - if(!(L.flags & NONGLOBAL)) - dat += "[L.name] (:[L.key])
[L.desc]

" - - src << browse(dat, "window=checklanguage") - return - -/mob/living/check_languages() - var/dat = "Known Languages

" - - if(default_language) - dat += "Current default language: [default_language] - reset

" - - for(var/datum/language/L in languages) - if(!(L.flags & NONGLOBAL)) - if(L == default_language) - dat += "[L.name] (:[L.key]) - default - reset
[L.desc]

" - else - dat += "[L.name] (:[L.key]) - set default
[L.desc]

" - - src << browse(dat, "window=checklanguage") + var/datum/browser/popup = new(src, "checklanguage", "Known Languages", 420, 470) + popup.set_content(check_lang_data()) + popup.open() /mob/living/Topic(href, href_list) if(href_list["default_lang"]) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index f9849e9b6cc..d7435fdff5a 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -167,15 +167,11 @@ if(L.name == rem_language) speech_synthesizer_langs -= L -/mob/living/silicon/check_languages() - set name = "Check Known Languages" - set category = "IC" - set src = usr - - var/dat = "Known Languages

" +/mob/living/silicon/check_lang_data() + . = "" if(default_language) - dat += "Current default language: [default_language] - reset

" + . += "Current default language: [default_language] - reset

" for(var/datum/language/L in languages) if(!(L.flags & NONGLOBAL)) @@ -186,10 +182,8 @@ default_str = " - set default" var/synth = (L in speech_synthesizer_langs) - dat += "[L.name] (:[L.key])[synth ? default_str : null]
Speech Synthesizer: [synth ? "YES" : "NOT SUPPORTED"]
[L.desc]

" + . += "[L.name] (:[L.key])[synth ? default_str : null]
Speech Synthesizer: [synth ? "YES" : "NOT SUPPORTED"]
[L.desc]

" - src << browse(dat, "window=checklanguage") - return // this function displays the stations manifest in a separate window /mob/living/silicon/proc/show_station_manifest() diff --git a/icons/mob/screen_midnight.dmi b/icons/mob/screen_midnight.dmi index 2dab86ef7f9..a5f9caa6a90 100644 Binary files a/icons/mob/screen_midnight.dmi and b/icons/mob/screen_midnight.dmi differ diff --git a/icons/mob/screen_operative.dmi b/icons/mob/screen_operative.dmi index 8d90aa7c3b3..0bb1a0b9d44 100644 Binary files a/icons/mob/screen_operative.dmi and b/icons/mob/screen_operative.dmi differ diff --git a/icons/mob/screen_plasmafire.dmi b/icons/mob/screen_plasmafire.dmi index cca826d272c..81453caddef 100644 Binary files a/icons/mob/screen_plasmafire.dmi and b/icons/mob/screen_plasmafire.dmi differ diff --git a/icons/mob/screen_retro.dmi b/icons/mob/screen_retro.dmi index 77aefd6a16b..1568e701222 100644 Binary files a/icons/mob/screen_retro.dmi and b/icons/mob/screen_retro.dmi differ diff --git a/icons/mob/screen_slimecore.dmi b/icons/mob/screen_slimecore.dmi index 3af866db6bd..3b2392cb8fc 100644 Binary files a/icons/mob/screen_slimecore.dmi and b/icons/mob/screen_slimecore.dmi differ diff --git a/icons/mob/screen_white.dmi b/icons/mob/screen_white.dmi index 8288217dcd0..361611cf4e0 100644 Binary files a/icons/mob/screen_white.dmi and b/icons/mob/screen_white.dmi differ