Categorized latejoin menu and made it into VueUI, improved crew manifest logic and made Verb manifest same as VueUI program, Job fixes (#10470)

This commit is contained in:
Jiří Barouš
2020-11-12 17:08:31 +01:00
committed by GitHub
parent 6d9241f194
commit 37cbb8fdb8
42 changed files with 856 additions and 483 deletions
@@ -2,9 +2,10 @@
/mob/abstract/new_player
var/ready = 0
var/spawning = 0//Referenced when you want to delete the new_player later on in the code.
var/totalPlayers = 0 //Player counts for the Lobby tab
var/spawning = 0 //Referenced when you want to delete the new_player later on in the code
var/totalPlayers = 0 //Player counts for the Lobby tab
var/totalPlayersReady = 0
var/datum/late_choices/late_choices_ui = null
universal_speak = 1
invisibility = 101
@@ -22,6 +23,10 @@ INITIALIZE_IMMEDIATE(/mob/abstract/new_player)
. = ..()
dead_mob_list -= src
/mob/abstract/new_player/Destroy()
QDEL_NULL(late_choices_ui)
return ..()
/mob/abstract/new_player/Stat()
..()
@@ -295,50 +300,11 @@ INITIALIZE_IMMEDIATE(/mob/abstract/new_player)
global_announcer.autosay("A new[rank ? " [rank]" : " visitor" ] [join_message ? join_message : "has arrived on the station"].", "Arrivals Announcement Computer")
/mob/abstract/new_player/proc/LateChoices()
var/name = client.prefs.real_name
var/dat = "<center>"
dat += "<b>Welcome, [name].<br></b>"
dat += "Round Duration: [get_round_duration_formatted()]<br>"
dat += "Alert Level: [capitalize(get_security_level())]<br>"
if(emergency_shuttle) //In case Nanotrasen decides reposess CentComm's shuttles.
if(emergency_shuttle.going_to_centcom()) //Shuttle is going to centcomm, not recalled
dat += "<span class='warning'><b>The station has been evacuated.</b></span><br>"
if(emergency_shuttle.online())
if (emergency_shuttle.evac) // Emergency shuttle is past the point of no recall
dat += "<span class='warning'>The station is currently undergoing evacuation procedures.</span><br>"
else // Crew transfer initiated
dat += "<span class='warning'>The station is currently undergoing crew transfer procedures.</span><br>"
var/unique_role_available = FALSE
for(var/ghost_role in SSghostroles.spawners)
var/datum/ghostspawner/G = SSghostroles.spawners[ghost_role]
if(!G.show_on_job_select)
continue
if(G.cant_see(src))
continue
unique_role_available = TRUE
break
if(unique_role_available)
dat += "<font color='[COLOR_BRIGHT_GREEN]'><b>A unique ghost role is available:</b></font><br>"
dat += "<a href='byond://?src=\ref[src];ghostspawner=1'>Ghost Spawner Menu</A><br>"
dat += "Choose from the following open/valid positions:<br>"
for(var/datum/job/job in SSjobs.occupations)
if(job && IsJobAvailable(job.title))
var/active = 0
// Only players with the job assigned and AFK for less than 10 minutes count as active
for(var/mob/M in player_list) //Added isliving check here, so it won't check ghosts and qualify them as active
if(isliving(M) && M.mind && M.client && M.mind.assigned_role == job.title && M.client.inactivity <= 10 MINUTES)
active++
dat += "<a href='byond://?src=\ref[src];SelectedJob=[job.title]'>[client.prefs.GetPlayerAltTitle(job)] ([job.current_positions]) (Active: [active])</a><br>"
dat += "</center>"
send_theme_resources(src)
src << browse(enable_ui_theme(src, dat), "window=latechoices;size=300x640;can_close=1")
if(!istype(late_choices_ui))
late_choices_ui = new(src)
else // if the UI exists force refresh it
late_choices_ui.ui_refresh()
late_choices_ui.ui_open()
/mob/abstract/new_player/proc/create_character()
spawning = 1
@@ -408,14 +374,13 @@ INITIALIZE_IMMEDIATE(/mob/abstract/new_player)
return new_character
/mob/abstract/new_player/proc/ViewManifest()
open_crew_manifest(src, OOC = TRUE)
SSrecords.open_manifest_vueui(src)
/mob/abstract/new_player/Move()
return 0
/mob/abstract/new_player/proc/close_spawn_windows()
src << browse(null, "window=latechoices") //closes late choices window)
src << browse(null, "window=playersetup") //closes the player setup window)
src << browse(null, "window=playersetup") //closes the player setup window
/mob/abstract/new_player/proc/has_admin_rights()
return check_rights(R_ADMIN, 0, src)
@@ -221,11 +221,11 @@
var/list/leftovers = list()
var/list/used_slots = list()
if((equip_preview_mob & EQUIP_PREVIEW_LOADOUT) && !(previewJob && (equip_preview_mob & EQUIP_PREVIEW_JOB) && (previewJob.type == /datum/job/ai || previewJob.type == /datum/job/cyborg)))
SSjobs.EquipCustom(mannequin, previewJob, src, leftovers, null, used_slots)
if((equip_preview_mob & EQUIP_PREVIEW_JOB) && previewJob)
if((equip_preview_mob & EQUIP_PREVIEW_JOB) && previewJob)
previewJob.equip_preview(mannequin, player_alt_titles[previewJob.title])
if(equip_preview_mob & EQUIP_PREVIEW_LOADOUT && leftovers.len)
@@ -237,11 +237,15 @@
else
mannequin.update_icon()
/datum/preferences/proc/update_preview_icon()
/datum/preferences/proc/update_mannequin()
var/mob/living/carbon/human/dummy/mannequin/mannequin = SSmob.get_mannequin(client.ckey)
mannequin.delete_inventory(TRUE)
mannequin.species.create_organs(mannequin)
if(gender)
mannequin.change_gender(gender)
dress_preview_mob(mannequin)
update_character_previews(new /mutable_appearance(mannequin))
return mannequin
/datum/preferences/proc/update_preview_icon()
var/mannequin = update_mannequin()
update_character_previews(new /mutable_appearance(mannequin))
@@ -585,7 +585,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
/mob/abstract/observer/verb/view_manifest()
set name = "Show Crew Manifest"
set category = "Ghost"
open_crew_manifest(src, OOC = TRUE)
SSrecords.open_manifest_vueui(usr)
//This is called when a ghost is drag clicked to something.
/mob/abstract/observer/MouseDrop(atom/over)