mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-05-19 13:20:47 +01:00
7c84aaee4b
* to subsystem * wip subsystem pain * some big recoding * seperated * oop * fucking lua * working on tgui foundation * compile fixes * nice and clean * type * inviting works * unit testing * agony * test good * typo * that should be the basics * Complete recode of pai saving * restore fluff text * migration * pai notification automation * swap * length * more fixes * pai sprite datums * type 13 uses all four directions * eye handling * use accessors * working on icontests * fix * hologram eye test * oop * wait that doesn't work at all * text * eye colors and holo eyes * lots of fixes * fix those up * organized * belly cap * that too * death sprites * resting eyes * resting flag * bad check here * fixing icon files * proper file * garble * fix some states * pai death * collapse pai files into single file * allow some restricted pai interactions * lamp * block invites button * collapse in remaining vr file * this is actually needed * documenting and organizing * update to TGprefs * remove gun toggle verb on pai * forbid default name joins * pai cable retraction * various pai fixes * icon forge pai * pai eyes * type 13 iconstate * directionless * small fix * pai dir fix * missing icon * no fresh pais * oops * fixed pai join * fixed change chassis * pai UI * . * . * reuse * . * . * . * push that * Horro rmasks * pai invite data change * splitting * use refs * initial * with PAI * soem more * . * . * . * . * ugh * next * pai invite * only preview * that * use from char pref * fixed pai invite not working * small tgui fixes * remove temp code * . * pai comments properly sent * ooc * horror * need to use this for now * . * fix * lol * raw mob spawn fix * pai software * push --------- Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
182 lines
6.5 KiB
Plaintext
182 lines
6.5 KiB
Plaintext
/mob/new_player/proc/initialize_lobby_screen()
|
|
if(!client)
|
|
return
|
|
|
|
var/datum/tgui/ui = SStgui.get_open_ui(src, src)
|
|
if(ui)
|
|
ui.close()
|
|
|
|
winset(src, "lobby_browser", "is-disabled=false;is-visible=true")
|
|
// winset(src, "mapwindow.status_bar", "is-visible=false")
|
|
lobby_window = new(client, "lobby_browser")
|
|
lobby_window.initialize(
|
|
assets = list(
|
|
get_asset_datum(/datum/asset/simple/tgui)
|
|
)
|
|
)
|
|
|
|
tgui_interact(src)
|
|
|
|
/mob/new_player/tgui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui, custom_state)
|
|
. = ..()
|
|
|
|
ui = SStgui.try_update_ui(user, src, ui)
|
|
if(!ui)
|
|
ui = new(user, src, "LobbyMenu", window = lobby_window)
|
|
ui.closeable = FALSE
|
|
ui.open(preinitialized = TRUE)
|
|
|
|
/mob/new_player/tgui_state(mob/user)
|
|
return GLOB.tgui_always_state
|
|
|
|
/mob/new_player/ui_assets(mob/user)
|
|
. = ..()
|
|
. += get_asset_datum(/datum/asset/simple/lobby_files)
|
|
|
|
/mob/new_player/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
|
|
var/list/data = ..()
|
|
|
|
var/displayed_name = world.name
|
|
if(config && CONFIG_GET(string/servername))
|
|
displayed_name = CONFIG_GET(string/servername)
|
|
|
|
data["server_name"] = displayed_name
|
|
data["map"] = using_map.full_name
|
|
data["station_time"] = stationtime2text()
|
|
data["display_loading"] = SSticker.current_state == GAME_STATE_STARTUP
|
|
data["round_start"] = !SSticker.mode || SSticker.current_state <= GAME_STATE_PREGAME
|
|
data["round_time"] = roundduration2text()
|
|
data["ready"] = ready
|
|
data["new_news"] = client?.check_for_new_server_news()
|
|
data["can_submit_feedback"] = SSsqlite.can_submit_feedback(client)
|
|
data["show_station_news"] = GLOB.news_data.station_newspaper
|
|
data["new_station_news"] = client.prefs.lastlorenews != GLOB.news_data.newsindex
|
|
data["new_changelog"] = read_preference(/datum/preference/text/lastchangelog) != GLOB.changelog_hash
|
|
data["can_start_now"] = client.is_localhost() && check_rights_for(client, R_SERVER)
|
|
data["immediate_start"] = SSticker.start_immediately || SSticker.current_state > GAME_STATE_PREGAME
|
|
|
|
return data
|
|
|
|
/mob/new_player/tgui_static_data(mob/user)
|
|
var/list/data = ..()
|
|
|
|
data["bg"] = 'icons/misc/loading.dmi'
|
|
data["bg_state"] = "loading"
|
|
|
|
return data
|
|
|
|
/mob/new_player/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
|
|
. = ..()
|
|
if(.)
|
|
return
|
|
|
|
switch(action)
|
|
if("character_setup")
|
|
client.prefs.ShowChoices(src)
|
|
return TRUE
|
|
if("ready")
|
|
if(!SSticker || SSticker.current_state <= GAME_STATE_PREGAME)
|
|
ready = !ready
|
|
else
|
|
ready = 0
|
|
return TRUE
|
|
if("manifest")
|
|
ViewManifest()
|
|
return TRUE
|
|
if("late_join")
|
|
if(!SSticker || SSticker.current_state != GAME_STATE_PLAYING)
|
|
to_chat(usr, span_red("The round is either not ready, or has already finished..."))
|
|
return TRUE
|
|
|
|
var/time_till_respawn = time_till_respawn()
|
|
if(time_till_respawn == -1) // Special case, never allowed to respawn
|
|
to_chat(usr, span_warning("Respawning is not allowed!"))
|
|
else if(time_till_respawn) // Nonzero time to respawn
|
|
to_chat(usr, span_warning("You can't respawn yet! You need to wait another [round(time_till_respawn/10/60, 0.1)] minutes."))
|
|
return TRUE
|
|
LateChoices()
|
|
return TRUE
|
|
if("observe")
|
|
if(QDELETED(src))
|
|
return FALSE
|
|
if(!SSticker || SSticker.current_state == GAME_STATE_STARTUP)
|
|
to_chat(src, span_warning("The game is still setting up, please try again later."))
|
|
return TRUE
|
|
if(tgui_alert(src,"Are you sure you wish to observe? If you do, make sure to not use any knowledge gained from observing if you decide to join later.","Observe Round?",list("Yes","No")) == "Yes")
|
|
if(QDELETED(src) || !client)
|
|
return TRUE
|
|
|
|
//Make a new mannequin quickly, and allow the observer to take the appearance
|
|
var/mob/living/carbon/human/dummy/mannequin = get_mannequin(client.ckey)
|
|
client.prefs.dress_preview_mob(mannequin)
|
|
var/mob/observer/dead/observer = new(mannequin)
|
|
observer.moveToNullspace() //Let's not stay in our doomed mannequin
|
|
|
|
spawning = 1
|
|
if(client.media)
|
|
client.media.stop_music() // MAD JAMS cant last forever yo
|
|
|
|
observer.started_as_observer = 1
|
|
close_spawn_windows()
|
|
var/obj/O = locate("landmark*Observer-Start")
|
|
if(istype(O))
|
|
to_chat(src, span_notice("Now teleporting."))
|
|
observer.forceMove(O.loc)
|
|
else
|
|
to_chat(src, span_danger("Could not locate an observer spawn point. Use the Teleport verb to jump to the station map."))
|
|
|
|
announce_ghost_joinleave(src)
|
|
|
|
if(client.prefs.read_preference(/datum/preference/toggle/human/name_is_always_random))
|
|
client.prefs.update_preference_by_type(/datum/preference/name/real_name, random_name(client.prefs.read_preference(/datum/preference/choiced/gender/identifying)))
|
|
observer.real_name = client.prefs.read_preference(/datum/preference/name/real_name)
|
|
observer.name = observer.real_name
|
|
if(!check_rights_for(client, R_HOLDER) && !CONFIG_GET(flag/antag_hud_allowed)) // For new ghosts we remove the verb from even showing up if it's not allowed.
|
|
remove_verb(observer, /mob/observer/dead/verb/toggle_antagHUD) // Poor guys, don't know what they are missing!
|
|
|
|
observer.key = key
|
|
|
|
observer.set_respawn_timer(time_till_respawn()) // Will keep their existing time if any, or return 0 and pass 0 into set_respawn_timer which will use the defaults
|
|
observer.client.init_verbs()
|
|
QDEL_NULL(mind)
|
|
qdel(src)
|
|
|
|
// pAI notify if we have be pAI invite on
|
|
SSpai.clear_pai_block_delay(REF(observer)) // Reset invite cooldown if we cancelled all invites for the round
|
|
if(SSpai.invite_valid(observer))
|
|
observer.pai_card_ping()
|
|
|
|
return TRUE
|
|
if("shownews")
|
|
handle_server_news()
|
|
return TRUE
|
|
if("give_feedback")
|
|
if(!SSsqlite.can_submit_feedback(persistent_client.client))
|
|
return
|
|
|
|
if(client.feedback_form)
|
|
client.feedback_form.display() // In case they closed the form early.
|
|
else
|
|
client.feedback_form = new(client)
|
|
return TRUE
|
|
if("open_station_news")
|
|
show_latest_news(GLOB.news_data.station_newspaper)
|
|
return TRUE
|
|
if("open_changelog")
|
|
write_preference_directly(/datum/preference/text/lastchangelog, GLOB.changelog_hash)
|
|
client.changes()
|
|
return TRUE
|
|
if("keyboard")
|
|
if(!SSsounds.initialized)
|
|
return
|
|
|
|
playsound_local(ui.user, get_sfx("keyboard"), vol = 20)
|
|
return TRUE
|
|
if("start_immediately")
|
|
if(!ui.user.client.is_localhost() || !check_rights_for(ui.user.client, R_SERVER))
|
|
return FALSE
|
|
|
|
SSticker.start_immediately = TRUE
|
|
if(SSticker.current_state == GAME_STATE_STARTUP)
|
|
to_chat(usr, span_admin("The server is still setting up, but the round will be started as soon as possible."))
|