2022-03-08 23:05:31 +01:00
|
|
|
#include "backend/looped/looped.hpp"
|
|
|
|
#include "natives.hpp"
|
|
|
|
#include "script_global.hpp"
|
2022-12-06 16:12:02 +00:00
|
|
|
#include "gta/joaat.hpp"
|
|
|
|
#include "services/players/player_service.hpp"
|
2022-12-22 21:23:32 +00:00
|
|
|
#include "core/scr_globals.hpp"
|
2022-03-08 23:05:31 +01:00
|
|
|
|
|
|
|
// Credits: QuickNET
|
|
|
|
namespace big
|
|
|
|
{
|
2022-12-06 16:12:02 +00:00
|
|
|
constexpr char transition_states[][48] =
|
|
|
|
{
|
2022-03-08 23:05:31 +01:00
|
|
|
"TRANSITION_STATE_EMPTY",
|
|
|
|
"Singleplayer Swoop Up",
|
|
|
|
"Multiplayer Swoop Up",
|
|
|
|
"Creator Swoop Up",
|
|
|
|
"Pre-HUD Checks",
|
|
|
|
"Wait HUD Exit",
|
|
|
|
"Wait For Summon",
|
|
|
|
"Singleplayer Swoop Down",
|
|
|
|
"Multiplayer Swoop Down",
|
|
|
|
"Cancel Joining",
|
|
|
|
"Retry Loading",
|
|
|
|
"Retry Loading Slot 1",
|
|
|
|
"Retry Loading Slot 2",
|
|
|
|
"Retry Loading Slot 3",
|
|
|
|
"Retry Loading Slot 4",
|
|
|
|
"Wait On Invite",
|
|
|
|
"Prejoining Freemode Session Checks",
|
|
|
|
"Look For Fresh Join Freemode",
|
|
|
|
"Look To Join Another Session Freemode",
|
|
|
|
"Confirm Freemode Session Joining",
|
|
|
|
"Wait Join Freemode Session",
|
|
|
|
"Creation Enter Session",
|
|
|
|
"Pre-Freemode Launch Script",
|
|
|
|
"Freemode Teamfull Check",
|
|
|
|
"Start Freemode Launch Script",
|
|
|
|
"Freemode Transition Create Player",
|
|
|
|
"Is Freemode And Transition Ready",
|
|
|
|
"Freemode Swoop Down",
|
|
|
|
"Post Bink Video Warp",
|
|
|
|
"Freemode Final Setup Player",
|
|
|
|
"Move Freemode To Running State",
|
|
|
|
"Freemode How To Terminate",
|
|
|
|
"Start Creator Pre-Launch Script Check",
|
|
|
|
"Start Creator Launch Script",
|
|
|
|
"Creator Transition Create Player",
|
|
|
|
"Is Creator And Transition Ready",
|
|
|
|
"Creator Swoop Down",
|
|
|
|
"Creator Final Setup Player",
|
|
|
|
"Move Creator To Running State",
|
|
|
|
"Prejoining Testbed Session Checks",
|
|
|
|
"Look For Fresh Join Testbed",
|
|
|
|
"Look For Fresh Host Testbed",
|
|
|
|
"Look To Join Another Session Testbed",
|
|
|
|
"Look To Host Session Testbed",
|
|
|
|
"Confirm Testbed Session Joining",
|
|
|
|
"Wait Join Testbed Session",
|
|
|
|
"Start Testbed Launch Script",
|
|
|
|
"Testbed Transition Create Player",
|
|
|
|
"Is Testbed And Transition Ready",
|
|
|
|
"Testbed Swoop Down",
|
|
|
|
"Testbed Final Setup Player",
|
|
|
|
"Move Testbed To Running State",
|
|
|
|
"Testbed How To Terminate",
|
|
|
|
"Quit Current Session Prompt",
|
|
|
|
"Wait For Transition Session To Setup",
|
|
|
|
"Terminate Singleplayer",
|
|
|
|
"Wait Terminate Singleplayer",
|
|
|
|
"Kick Terminate Session",
|
|
|
|
"Terminate Session",
|
|
|
|
"Wait Terminate Session",
|
|
|
|
"Terminate Session And Hold",
|
|
|
|
"Terminate Session And Move Into Holding State",
|
|
|
|
"Team Swapping Checks",
|
|
|
|
"Return To Singleplayer",
|
|
|
|
"Wait For Singleplayer To Start",
|
|
|
|
"Waiting For External Termination Call",
|
|
|
|
"Terminate Maintransition",
|
|
|
|
"Wait For Dirty Load Confirm",
|
|
|
|
"DLC Intro Bink",
|
2022-11-13 16:34:44 +00:00
|
|
|
"Spawn Into Personal Vehicle"
|
2022-03-08 23:05:31 +01:00
|
|
|
};
|
|
|
|
|
2022-07-02 15:12:50 -04:00
|
|
|
eTransitionState last_state = eTransitionState::TRANSITION_STATE_EMPTY;
|
2022-03-08 23:05:31 +01:00
|
|
|
void looped::hud_transition_state()
|
|
|
|
{
|
2022-12-17 14:47:01 +00:00
|
|
|
const auto state = *scr_globals::transition_state.as<eTransitionState*>();
|
2022-03-08 23:05:31 +01:00
|
|
|
|
2022-12-06 16:12:02 +00:00
|
|
|
if (SCRIPT::GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(RAGE_JOAAT("maintransition")) == 0)
|
|
|
|
return;
|
|
|
|
|
2022-03-23 18:44:21 +01:00
|
|
|
// When freemode script loaded remove loading screen.
|
2022-07-02 15:12:50 -04:00
|
|
|
if (state == eTransitionState::TRANSITION_STATE_WAIT_JOIN_FM_SESSION
|
|
|
|
&& DLC::GET_IS_LOADING_SCREEN_ACTIVE())
|
|
|
|
{
|
2022-03-23 18:44:21 +01:00
|
|
|
SCRIPT::SHUTDOWN_LOADING_SCREEN();
|
2022-07-02 15:12:50 -04:00
|
|
|
}
|
2022-03-23 18:44:21 +01:00
|
|
|
|
2022-07-02 15:12:50 -04:00
|
|
|
if (last_state == state
|
|
|
|
|| state == eTransitionState::TRANSITION_STATE_EMPTY
|
2022-12-06 16:12:02 +00:00
|
|
|
|| state > eTransitionState::TRANSITION_STATE_SPAWN_INTO_PERSONAL_VEHICLE)
|
2022-07-02 15:12:50 -04:00
|
|
|
{
|
2022-03-08 23:05:31 +01:00
|
|
|
return;
|
2022-07-02 15:12:50 -04:00
|
|
|
}
|
2022-03-08 23:05:31 +01:00
|
|
|
|
|
|
|
if (HUD::BUSYSPINNER_IS_ON())
|
2022-07-02 15:12:50 -04:00
|
|
|
{
|
2022-03-08 23:05:31 +01:00
|
|
|
HUD::BUSYSPINNER_OFF();
|
2022-07-02 15:12:50 -04:00
|
|
|
}
|
2022-03-08 23:05:31 +01:00
|
|
|
|
2022-11-13 16:34:44 +00:00
|
|
|
if ((int)state > 0 && (int)state < std::size(transition_states))
|
2022-07-02 15:12:50 -04:00
|
|
|
{
|
|
|
|
HUD::BEGIN_TEXT_COMMAND_BUSYSPINNER_ON("STRING");
|
2022-10-24 14:08:37 +02:00
|
|
|
auto const spinner_text = std::format("{} | {}", transition_states[(int)state], static_cast<int>(state));
|
2022-07-02 15:12:50 -04:00
|
|
|
HUD::ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(spinner_text.c_str());
|
|
|
|
HUD::END_TEXT_COMMAND_BUSYSPINNER_ON(5);
|
|
|
|
}
|
2022-03-08 23:05:31 +01:00
|
|
|
|
|
|
|
last_state = state;
|
|
|
|
}
|
2022-07-02 15:12:50 -04:00
|
|
|
}
|