Skip to content

Commit

Permalink
tweak, refactor: корректное вычисление времени титров, замена трека н…
Browse files Browse the repository at this point in the history
…а ремастер (#468)

## Синхронизация титров с синематиком

Теперь не будет такого что бы фон пропадал раньше чем закончатся титры.
Теперь вместо обычной версии Space Assholes играет ремикс.
Теперь титры идут снизу вверх пропадая за экраном клиента.

## Почему это хорошо для игры

Многие просили переделать исчезновение титров вверху на их полный пролет

## Тестирование
Протестировал с нюкой и без нюки, протестировал титры с большим
количеством текста

## Changelog

:cl:
tweak: Теперь титры пролетают через весь экран, а не исчезают
fix: Теперь титры всегда сопровождаются фоном
wip: Какие-либо наработки в процессе
soundadd: теперь играет ремастер Space Asshole
/:cl:

---------

Co-authored-by: Gaxeer <[email protected]>
  • Loading branch information
2 people authored and Furrior committed Oct 22, 2023
1 parent 457c786 commit 173dec2
Show file tree
Hide file tree
Showing 3 changed files with 209 additions and 78 deletions.
Binary file modified config/credits/sounds/space_asshole.ogg
Binary file not shown.
27 changes: 19 additions & 8 deletions modular_ss220/cinematics/code/cinematics/credits.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
/datum/cinematic/credits
cleanup_time = 40 SECONDS
is_global = TRUE
backdrop_type = /obj/screen/fullscreen/cinematic_backdrop/credits

Expand All @@ -8,23 +7,35 @@
screen = new/obj/screen/cinematic/credits(src)

/datum/cinematic/credits/start_cinematic(list/watchers)
watching = watchers
if(SEND_GLOBAL_SIGNAL(COMSIG_GLOB_PLAY_CINEMATIC, src) & COMPONENT_GLOB_BLOCK_CINEMATIC)
RegisterSignal(SSdcs, COMSIG_GLOB_CINEMATIC_STOPPED_PLAYING, PROC_REF(queue_gone))
return
. = ..()
if(!(SEND_GLOBAL_SIGNAL(COMSIG_GLOB_PLAY_CINEMATIC, src) & COMPONENT_GLOB_BLOCK_CINEMATIC))
. = ..()
RegisterSignal(SSdcs, COMSIG_GLOB_CINEMATIC_STOPPED_PLAYING, PROC_REF(queue_gone))
for(var/mob/watching_mob in watchers)
if(watching_mob.client)
watching += watching_mob

/datum/cinematic/credits/proc/queue_gone(datum/source, datum/cinematic/other)
SIGNAL_HANDLER

UnregisterSignal(SSdcs, COMSIG_GLOB_CINEMATIC_STOPPED_PLAYING)
start_cinematic(src.watching)

/datum/cinematic/credits/play_cinematic()
play_cinematic_sound(sound(SScredits.title_music))
play_cinematic_sound(sound(SScredits.title_music, volume = 20))

SScredits.roll_credits_for_clients(watching)

cleanup_time = SScredits.end_titles.playing_time + 3 SECONDS

special_callback?.Invoke()

/datum/cinematic/credits/stop_cinematic()
for(var/client/client in watching)
SScredits.clear_credits(client)

UnregisterSignal(SSdcs, COMSIG_GLOB_CINEMATIC_STOPPED_PLAYING)

. = ..()

/obj/screen/cinematic/credits
icon_state = "blank"

Expand Down
Loading

0 comments on commit 173dec2

Please sign in to comment.