From 9f4f996b19c983499a8fbc8b2f14a54e51d58d13 Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Thu, 26 Aug 2021 12:34:05 +1000 Subject: [PATCH 1/2] Merge pull request #8209 from Cerebulon/news_popup Prevents Pop-up for Already Seen Lore News --- .../client/preference_setup/global/02_settings.dm | 2 ++ .../client/preference_setup/global/setting_datums.dm | 7 +++++++ code/modules/client/preferences.dm | 1 + code/modules/lore_codex/news_data/main.dm | 6 ++++++ code/modules/mob/new_player/new_player.dm | 12 ++++++++++-- code/modules/news/news_init.dm | 5 +++++ 6 files changed, 31 insertions(+), 2 deletions(-) diff --git a/code/modules/client/preference_setup/global/02_settings.dm b/code/modules/client/preference_setup/global/02_settings.dm index 8f047985c7..16dc0f91bd 100644 --- a/code/modules/client/preference_setup/global/02_settings.dm +++ b/code/modules/client/preference_setup/global/02_settings.dm @@ -9,6 +9,7 @@ /datum/category_item/player_setup_item/player_global/settings/load_preferences(var/savefile/S) S["lastchangelog"] >> pref.lastchangelog S["lastnews"] >> pref.lastnews + S["lastlorenews"] >> pref.lastlorenews S["default_slot"] >> pref.default_slot S["preferences"] >> pref.preferences_enabled S["preferences_disabled"] >> pref.preferences_disabled @@ -16,6 +17,7 @@ /datum/category_item/player_setup_item/player_global/settings/save_preferences(var/savefile/S) S["lastchangelog"] << pref.lastchangelog S["lastnews"] << pref.lastnews + S["lastlorenews"] << pref.lastlorenews S["default_slot"] << pref.default_slot S["preferences"] << pref.preferences_enabled S["preferences_disabled"] << pref.preferences_disabled diff --git a/code/modules/client/preference_setup/global/setting_datums.dm b/code/modules/client/preference_setup/global/setting_datums.dm index 718f030746..334d0fcdb0 100644 --- a/code/modules/client/preference_setup/global/setting_datums.dm +++ b/code/modules/client/preference_setup/global/setting_datums.dm @@ -319,6 +319,13 @@ var/list/_client_preferences_by_type var/datum/plane_holder/PH = preference_mob.plane_holder PH.set_vis(VIS_STATUS, enabled) +/datum/client_preference/show_lore_news + description = "Lore News Popup" + key = "NEWS_POPUP" + enabled_by_default = TRUE + enabled_description = "Popup New On Login" + disabled_description = "Do Nothing" + /******************** * Staff Preferences * ********************/ diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 3a4adff1c4..81347394ba 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -147,6 +147,7 @@ var/list/preferences_datums = list() var/datum/browser/panel var/lastnews // Hash of last seen lobby news content. + var/lastlorenews //ID of last seen lore news article. var/examine_text_mode = 0 // Just examine text, include usage (description_info), switch to examine panel. var/multilingual_mode = 0 // Default behaviour, delimiter-key-space, delimiter-key-delimiter, off diff --git a/code/modules/lore_codex/news_data/main.dm b/code/modules/lore_codex/news_data/main.dm index 3a89f5cf6e..16270733cf 100644 --- a/code/modules/lore_codex/news_data/main.dm +++ b/code/modules/lore_codex/news_data/main.dm @@ -112,6 +112,12 @@ /datum/lore/codex/page/about_news, ) + var/newsindex + +/datum/lore/codex/category/main_news/New() + ..() + newsindex = LAZYLEN(children) + /datum/lore/codex/page/about_news name = "About the Publisher" data = "The Daedalus Pocket Newscaster is produced and maintained by Occulum Broadcast, the foremost authority on media distribution \ diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 43f2cef8ce..0dcbf617e5 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -76,12 +76,20 @@ output += "

[href(src, list("give_feedback" = 1), "Give Feedback")]

" if(GLOB.news_data.station_newspaper) - output += "Show [using_map.station_name] News" + if(client.prefs.lastlorenews == GLOB.news_data.newsindex) + output += "

Show [using_map.station_name] News

" + else + output += "

Show [using_map.station_name] News (NEW!)

" output += "" - if(GLOB.news_data.station_newspaper && !client.seen_news) + if (client.prefs.lastlorenews == GLOB.news_data.newsindex) + client.seen_news = 1 + + if(GLOB.news_data.station_newspaper && !client.seen_news && client.is_preference_enabled(/datum/client_preference/show_lore_news)) show_latest_news(GLOB.news_data.station_newspaper) + client.prefs.lastlorenews = GLOB.news_data.newsindex + SScharacter_setup.queue_preferences_save(client.prefs) panel = new(src, "Welcome","Welcome", 210, 300, src) // VOREStation Edit panel.set_window_options("can_close=0") diff --git a/code/modules/news/news_init.dm b/code/modules/news/news_init.dm index 2c78e4baf8..cc92668343 100644 --- a/code/modules/news/news_init.dm +++ b/code/modules/news/news_init.dm @@ -7,6 +7,7 @@ GLOBAL_DATUM_INIT(news_data, /datum/lore/news, new) /datum/lore/news var/datum/feed_channel/station_newspaper var/datum/lore/codex/category/main_news/news_codex = new() + var/newsindex /datum/lore/news/New() ..() @@ -17,6 +18,10 @@ GLOBAL_DATUM_INIT(news_data, /datum/lore/news, new) break spawn(300) // Yes, again. fill_codex_news() + if (!news_codex.newsindex) + return + else + newsindex = news_codex.newsindex /datum/lore/news/proc/fill_codex_news() if(!news_network)