12 ref array<ref SCR_ScenarioFrameworkTaskType> m_aTaskTypesAvailable;
15 int m_iMaxNumberOfTasks;
18 ref array<ref SCR_ScenarioFrameworkActionBase> m_aAfterTasksInitActions;
21 ref array<ref SCR_ScenarioFrameworkDebugAction> m_aDebugActions;
23 [
Attribute(
desc:
"List of Core Areas that are essential for the Scenario to spawn alongside Debug Areas",
category:
"Debug")]
24 ref array<string> m_aCoreAreas;
26 [
Attribute(
desc:
"List of Areas that will be spawned (Optionally with desired Layer Task) as opposed to leaving it to random generation",
category:
"Debug")]
27 ref array<ref SCR_ScenarioFrameworkDebugArea> m_aDebugAreas;
29 [
Attribute(
desc:
"Should the dynamic Spawn/Despawn based on distance from player characters be enabled for the whole GameMode?",
category:
"Dynamic Spawn/Despawn")]
30 bool m_bDynamicDespawn;
35 [
Attribute(
desc:
"Config with voice over data for whole scenario",
params:
"conf class=SCR_VoiceoverData")]
40 bool m_bIsWorldLoadInit;
41 bool m_bIsSaveGameLoad;
45 static ref ScriptInvokerBase<ScriptInvokerScenarioFrameworkSlotAIMethod> m_OnSlotAISpawned;
53 ref array<SCR_ScenarioFrameworkArea>
m_aAreas = {};
64 ref array<ref Tuple3<SCR_ScenarioFrameworkArea, vector, int>>
m_aSpawnedAreas = {};
96 if (!m_OnSlotAISpawned)
97 m_OnSlotAISpawned =
new ScriptInvokerBase<ScriptInvokerScenarioFrameworkSlotAIMethod>();
99 return m_OnSlotAISpawned;
105 if (m_OnSlotAISpawned)
106 m_OnSlotAISpawned.Invoke(
layer, entity);
132 if (!signalComponent)
135 signalComponent.SetSignalValue(signalComponent.FindSignal(signalName), val);
172 pSndComp.SoundEvent(sSndName);
182 entity =
GetGame().GetGameMode();
211 pSndComp.SoundEvent(sSndName);
221 entity =
GetGame().GetGameMode();
256 PlayerController playerController =
GetGame().GetPlayerController();
257 if (!playerController)
260 if (playerID != playerController.GetPlayerId())
272 entity = playerManager.GetPlayerControlledEntity(playerID);
283 signalComp.SetSignalValue(signalComp.AddOrFindSignal(
"PlanName"), 0);
287 signalComp.SetSignalValue(signalComp.AddOrFindSignal(
"PlanName"),
Math.RandomIntInclusive(0, 2));
295 signalComp.SetSignalValue(signalComp.AddOrFindSignal(
"Objective1"), 1);
300 signalComp.SetSignalValue(signalComp.AddOrFindSignal(
"Objective2"), 2);
305 signalComp.SetSignalValue(signalComp.AddOrFindSignal(
"Objective3"), 3);
310 signalComp.SetSignalValue(signalComp.AddOrFindSignal(
"Objective4"), 4);
315 signalComp.SetSignalValue(signalComp.AddOrFindSignal(
"Objective5"), 5);
320 signalComp.SetSignalValue(signalComp.AddOrFindSignal(
"Objective6"), 6);
326 soundComp.SoundEvent(eventName);
342 SCR_AudioSourceConfiguration audioConfig =
new SCR_AudioSourceConfiguration();
343 audioConfig.m_sSoundProject = soundFile;
344 audioConfig.m_sSoundEventName = soundEventName;
358 if (!objectID.IsValid())
419 array<string> factionKeys = {};
424 SCR_ScenarioFrameworkLayerTask layerTask = sfTask.
GetLayerTask();
428 string titleParam = layerTask.GetOverridenObjectDisplayName();
430 titleParam = layerTask.m_SlotTask.GetSpawnedEntityDisplayName();
432 foreach (
string factionKey : factionKeys)
434 PopUpMessage(layerTask.GetTaskTitle(),
"#AR-CampaignTasks_NewObjectivesAvailable-UC", factionKey, titleParam1:titleParam);
456 SCR_ScenarioFrameworkLayerTask layerTask = frameworkTask.
GetLayerTask();
460 SCR_ScenarioFrameworkSlotTask slotTask = layerTask.GetSlotTask();
468 slotTask.OnTaskStateChanged(taskState);
470 array<string> factionKeys = {};
475 if (m_bIsSaveGameLoad)
478 string titleParam = layerTask.GetOverridenObjectDisplayName();
480 titleParam = slotTask.GetSpawnedEntityDisplayName();
482 foreach (
string factionKey : factionKeys)
490 PopUpMessage(layerTask.GetTaskTitle(),
"#AR-Tasks_StatusFinished-UC", factionKey, titleParam1:titleParam);
495 PopUpMessage(layerTask.GetTaskTitle(),
"#AR-Tasks_StatusFailed-UC", factionKey, titleParam1:titleParam);
500 PopUpMessage(layerTask.GetTaskTitle(),
"#AR-Tasks_StatusCancelled-UC", factionKey, titleParam1:titleParam);
505 PopUpMessage(layerTask.GetTaskTitle(),
"#AR-Workshop_ButtonUpdate", factionKey, titleParam1:titleParam);
539 if (!m_OnAllAreasInitiated)
542 return m_OnAllAreasInitiated;
559 float fMinDistance =
float.MAX;
561 for (
int i = 0, count =
m_aAreas.Count(); i < count; i++)
563 if (!
m_aAreas[i].GetIsTaskSuitableForArea(eTaskType))
567 if (fDistance < fMinDistance)
569 fMinDistance = fDistance;
582 BaseGameMode gameMode =
GetGame().GetGameMode();
586 RplComponent comp = RplComponent.Cast(gameMode.FindComponent(RplComponent));
590 return !comp.IsProxy();
616 SCR_GameModeSFManager sfManager = SCR_GameModeSFManager.Cast(
GetGame().
GetGameMode().FindComponent(SCR_GameModeSFManager));
620 m_aTaskTypesAvailable = sfManager.m_aTaskTypesAvailable;
621 m_iMaxNumberOfTasks = sfManager.m_iMaxNumberOfTasks;
622 m_aAfterTasksInitActions = sfManager.m_aAfterTasksInitActions;
623 m_aDebugActions = sfManager.m_aDebugActions;
624 m_aCoreAreas = sfManager.m_aCoreAreas;
625 m_aDebugAreas = sfManager.m_aDebugAreas;
626 m_bDynamicDespawn = sfManager.m_bDynamicDespawn;
627 m_iUpdateRate = sfManager.m_iUpdateRate;
628 m_sVoiceOverDataConfig = sfManager.m_sVoiceOverDataConfig;
640 if (!scenarioFrameworkHeader)
643 if (scenarioFrameworkHeader.m_iMaxNumberOfTasks != -1)
644 m_iMaxNumberOfTasks = scenarioFrameworkHeader.m_iMaxNumberOfTasks;
646 if (!scenarioFrameworkHeader.m_aTaskTypesAvailable.IsEmpty())
648 m_aTaskTypesAvailable.Clear();
649 foreach (SCR_ScenarioFrameworkTaskType taskType : scenarioFrameworkHeader.m_aTaskTypesAvailable)
651 m_aTaskTypesAvailable.Insert(taskType);
655 if (!scenarioFrameworkHeader.m_aDebugAreas.IsEmpty())
657 m_aDebugAreas.Clear();
660 m_aDebugAreas.Insert(debugArea);
664 if (scenarioFrameworkHeader.m_iDynamicDespawn != -1)
666 if (scenarioFrameworkHeader.m_iDynamicDespawn == 0)
667 m_bDynamicDespawn =
false;
669 m_bDynamicDespawn =
true;
672 if (scenarioFrameworkHeader.m_iUpdateRate != -1)
673 m_iUpdateRate = scenarioFrameworkHeader.m_iUpdateRate;
684 DiagMenu.RegisterBool(
SCR_DebugMenuID.DEBUGUI_SCENARIO_FRAMEWORK_REGISTERED_AREAS,
"",
"Log Registered Areas",
"ScenarioFramework");
685 DiagMenu.RegisterBool(
SCR_DebugMenuID.DEBUGUI_SCENARIO_FRAMEWORK_DEBUG_AREAS,
"",
"Log Debug Areas",
"ScenarioFramework");
686 DiagMenu.RegisterBool(
SCR_DebugMenuID.DEBUGUI_SCENARIO_FRAMEWORK_LAYER_INSPECTOR,
"",
"Log Layer Inspector",
"ScenarioFramework");
687 DiagMenu.RegisterBool(
SCR_DebugMenuID.DEBUGUI_SCENARIO_FRAMEWORK_ACTION_INSPECTOR,
"",
"Log Action Inspector",
"ScenarioFramework");
688 DiagMenu.RegisterBool(
SCR_DebugMenuID.DEBUGUI_SCENARIO_FRAMEWORK_LOGIC_INSPECTOR,
"",
"Log Logic Inspector",
"ScenarioFramework");
689 DiagMenu.RegisterBool(
SCR_DebugMenuID.DEBUGUI_SCENARIO_FRAMEWORK_PLUGIN_INSPECTOR,
"",
"Log Plugin Inspector",
"ScenarioFramework");
690 DiagMenu.RegisterBool(
SCR_DebugMenuID.DEBUGUI_SCENARIO_FRAMEWORK_CONDITION_INSPECTOR,
"",
"Log Condition Inspector",
"ScenarioFramework");
691 DiagMenu.RegisterBool(
SCR_DebugMenuID.DEBUGUI_SCENARIO_FRAMEWORK_DEBUG_ACTIONS,
"",
"Log Debug Actions",
"ScenarioFramework");
692 DiagMenu.RegisterBool(
SCR_DebugMenuID.DEBUGUI_SCENARIO_FRAMEWORK_FINISH_TASK,
"",
"Cheat Finish Current Task",
"ScenarioFramework");
705 m_bIsWorldLoadInit =
true;
709 m_bIsWorldLoadInit =
false;
710 m_bIsSaveGameLoad =
false;
731 m_bDebugInit =
false;
734 if (m_aDebugAreas.IsEmpty())
738 if (!area || area.GetDynamicDespawnEnabled())
747 SCR_ScenarioFrameworkLayerTask layerTask;
748 SCR_ScenarioFrameworkSlotTask slotTask;
751 area = debugArea.GetForcedArea();
758 if (!area.GetDynamicDespawnEnabled())
761 layerTask = debugArea.GetForcedLayerTask();
765 slotTask = debugArea.GetForcedSlotTask();
777 foreach (
string coreArea : m_aCoreAreas)
787 if (area && !area.GetDynamicDespawnEnabled())
793 if (m_OnAllAreasInitiated)
794 m_OnAllAreasInitiated.Invoke();
810 BaseGameMode gameMode =
GetGame().GetGameMode();
815 if (!scriptedGameMode)
842 for (
int i = 0; i < count; i++)
855 if (countSafe >= m_iMaxNumberOfTasks)
887 layerTask.SetParentLayer(layerTask.GetParentLayer());
889 area.SetLayerTask(layerTask);
907 Print(
string.Format(
"ScenarioFramework: Creating area %1 with Layer Task %2", area.GetOwner().GetName(), layerTask.GetOwner().GetName()),
LogLevel.NORMAL);
914 if (m_aTaskTypesAvailable.IsEmpty())
916 Print(
"ScenarioFramework: Available tasks are empty, no new tasks will be generated.",
LogLevel.NORMAL);
922 Print(
"ScenarioFramework: There are no Areas to generate tasks from",
LogLevel.NORMAL);
926 Print(
"ScenarioFramework: ---------------------- Generating tasks -------------------",
LogLevel.NORMAL);
936 Print(
"ScenarioFramework: ---------------------- Generation of tasks completed -------------------",
LogLevel.NORMAL);
944 array<SCR_ScenarioFrameworkLayerTask> layerTasksToRandomize = {};
945 array<SCR_ScenarioFrameworkLayerTask> layerTasks = {};
946 if (m_aDebugAreas.IsEmpty())
953 area.GetAllLayerTasks(layerTasks);
954 layerTasksToRandomize.InsertAll(layerTasks);
963 forcedArea = debugArea.GetForcedArea();
968 if (debugArea.GetForcedLayerTask())
971 forcedArea.GetAllLayerTasks(layerTasks);
972 layerTasksToRandomize.InsertAll(layerTasks);
977 foreach (SCR_ScenarioFrameworkTaskType taskTypeClass : m_aTaskTypesAvailable)
983 for (
int i = layerTasksToRandomize.Count() - 1; i >= 0; i--)
986 layerTasksToRandomize.Remove(i);
990 for (
int i = layerTasksToRandomize.Count() - 1; i >= 0; i--)
993 layerTasksToRandomize.Remove(i);
999 bool invalidType =
true;
1004 invalidType =
false;
1018 for (
int i = 0; i < m_iMaxNumberOfTasks; i++)
1042 Print(
string.Format(
"ScenarioFramework: Available areas do not have any other tasks to generate. Only %1 out of %2 was generated",
m_aLayerTasksToBeInitialized, m_iMaxNumberOfTasks),
LogLevel.NORMAL);
1045 Print(
"ScenarioFramework: ---------------------- Generation of tasks completed -------------------",
LogLevel.NORMAL);
1097 Print(
string.Format(
"Variable %1 is not set in this scenario", key),
LogLevel.NORMAL);
1111 array<string> stringValues = {};
1112 SCR_Enum.GetEnumNames(targetEnum, stringValues);
1114 int index = stringValues.Find(targetString);
1132 if (m_bDynamicDespawn && (layerTask.m_bDynamicDespawn || parentArea.m_bDynamicDespawn) && !layerTask.GetDynamicDespawnExcluded())
1138 afterTasksInitActions.Init(
m_aAreas.GetRandomElement().GetOwner());
1158 SCR_ScenarioFrameworkLayerTask taskComponent = SCR_ScenarioFrameworkLayerTask.Cast(layerEntity.
FindComponent(SCR_ScenarioFrameworkLayerTask));
1179 SCR_ScenarioFrameworkSlotTask slotComponent;
1184 slotComponent = SCR_ScenarioFrameworkSlotTask.Cast(slotEntity.
FindComponent(SCR_ScenarioFrameworkSlotTask));
1190 area.Create(taskComponent, slotComponent);
1191 Print(
string.Format(
"ScenarioFramework: Creating area %1", area.GetOwner().GetName()),
LogLevel.NORMAL);
1192 Print(
"ScenarioFramework: ---------------------------------------------------------------",
LogLevel.NORMAL);
1205 array<SCR_ScenarioFrameworkArea> aAreasCopy = {};
1207 for (
int i = 0, count =
m_aAreas.Count(); i < count; i++)
1209 selectedArea = aAreasCopy.GetRandomElement();
1213 return selectedArea;
1217 aAreasCopy.RemoveItem(selectedArea);
1252 area.SetDynamicDespawnEnabled(
true);
1253 area.SetDynamicDespawnRange(despawnRange);
1273 area.SetDynamicDespawnEnabled(
false);
1282 if (area == areaInfo.param1)
1289 if (area == areaInfo.param1)
1298 if (!m_bDynamicDespawn)
1305 if (!area || !area.GetDynamicDespawnEnabled())
1308 int despawnRange = area.GetDynamicDespawnRange();
1311 area.DynamicDespawn(null);
1322 array<int> playerIds = {};
1325 SCR_DamageManagerComponent damageManager;
1326 playerManager.GetPlayers(playerIds);
1328 foreach (
int playerId : playerIds)
1330 player = playerManager.GetPlayerControlledEntity(playerId);
1334 damageManager = SCR_DamageManagerComponent.GetDamageManager(player);
1335 if (damageManager && damageManager.GetState() !=
EDamageState.DESTROYED)
1351 if (!areaInfo.param1)
1356 if (
vector.DistanceSqXZ(observerPos, areaInfo.param2) < areaInfo.param3)
1358 areaInfo.param1.DynamicReinit();
1375 if (!areaInfo.param1)
1378 bool observerInRange;
1381 if (
vector.DistanceSqXZ(observerPos, areaInfo.param2) < areaInfo.param3)
1383 observerInRange =
true;
1388 if (!observerInRange)
1390 areaInfo.param1.DynamicDespawn(null);
1404 void ShowHint(
string sTitle,
string sSubtitle,
int timeOut,
FactionKey factionKey =
"",
int playerID = -1)
1407 RpcDo_ShowHint(sTitle, sSubtitle, timeOut, factionKey, playerID);
1431 PlayerController playerController =
GetGame().GetPlayerController();
1432 if (!playerController)
1435 if (playerID != playerController.GetPlayerId())
1441 SCR_HintManagerComponent.ShowHint(info);
1472 PlayerController playerController =
GetGame().GetPlayerController();
1473 if (!playerController)
1476 if (playerID != playerController.GetPlayerId())
1480 SCR_HintManagerComponent.HideHint();
1489 void PopUpMessage(
string sTitle,
string sSubtitle,
FactionKey factionKey =
"",
int playerID = -1,
string titleParam1 =
"",
string titleParam2 =
"",
string subtitleParam1 =
"",
string subtitleParam2 =
"")
1491 Rpc(
RpcDo_PopUpMessage, sTitle, sSubtitle, factionKey, playerID, titleParam1, titleParam2, subtitleParam1, subtitleParam2);
1492 RpcDo_PopUpMessage(sTitle, sSubtitle, factionKey, playerID, titleParam1, titleParam2, subtitleParam1, subtitleParam2);
1502 void RpcDo_PopUpMessage(
string sTitle,
string sSubtitle,
FactionKey factionKey,
int playerID,
string titleParam1,
string titleParam2,
string subtitleParam1,
string subtitleParam2)
1509 const FactionManager fm =
GetGame().GetFactionManager();
1510 if (!fm ||
SCR_FactionManager.SGetLocalPlayerFaction() != fm.GetFactionByKey(factionKey))
1516 PlayerController playerController =
GetGame().GetPlayerController();
1517 if (!playerController)
1520 if (playerID != playerController.GetPlayerId())
1543 layer.m_bShowDebugShapesDuringRuntime = draw;
1544 layer.m_fDebugShapeRadius = radius;
1579 layer.m_bShowDebugShapesDuringRuntime = draw;
1580 layer.m_fDebugShapeRadius = radius;
1596 void ShowLayout(
int playerId = -1,
EntityID actionOwnerEntId =
EntityID.INVALID,
int layoutId = -1,
float fadeIn = -1,
float fadeOut = -1,
float visibilityTime = -1,
float opacity = -1)
1598 Rpc(
RpcDo_ShowLayout, playerId, actionOwnerEntId, layoutId, fadeIn, fadeOut, visibilityTime, opacity);
1599 RpcDo_ShowLayout(playerId, actionOwnerEntId, layoutId, fadeIn, fadeOut, visibilityTime, opacity);
1612 void RpcDo_ShowLayout(
int playerID,
EntityID actionOwnerEntId,
int layoutId,
float fadeIn,
float fadeOut,
float visibilityTime,
float opacity)
1620 PlayerController playerController =
GetGame().GetPlayerController();
1621 if (!playerController)
1624 if (playerID != playerController.GetPlayerId())
1628 if (!actionOwnerEntity)
1636 if (!actionShowLayout)
1638 PrintFormat(
"ScenarioFramework Action: Action ShowLayout with ID %1 wasn't found at layer %2.", layoutId, layerBase,
LogLevel.ERROR);
1647 Widget imgWidget = rootWidget.FindAnyWidget(
"Image");
1654 imgWidget.SetOpacity(0);
1660 animVal = 1 / fadeIn;
1673 animVal = 1 / fadeOut;
1682 array<ref SCR_ScenarioFrameworkActionBase> activationActions = layerBase.GetActivationActions();
1687 if (actionShowLayout && actionShowLayout.
m_iID == layoutId)
1688 return actionShowLayout;
1691 if (actionShowLayout)
1692 return actionShowLayout;
1695 array<ref SCR_ScenarioFrameworkPlugin> plugins = layerBase.GetSpawnedPlugins();
1698 array<ref SCR_ScenarioFrameworkActionBase> pluginActions = plugin.GetActions();
1702 if (actionShowLayout && actionShowLayout.
m_iID == layoutId)
1703 return actionShowLayout;
1706 if (actionShowLayout)
1707 return actionShowLayout;
1711 return actionShowLayout;
1718 array<ref SCR_ScenarioFrameworkActionBase> subAtions = action.GetSubActions();
1725 if (actionShowLayout && actionShowLayout.
m_iID == layoutId)
1726 return actionShowLayout;
1731 return actionShowLayout;
1738 return instance && instance.m_bIsSaveGameLoad;
1745 return instance && instance.m_bIsWorldLoadInit;
1751 float timeSlice = args.GetTimeSliceSeconds();
1765 override event protected void OnDiag(
float timeSlice)
1767 super.OnDiag(timeslice);
ArmaReforgerScripted GetGame()
RplMode
Mode of replication.
EAudioSourceConfigurationFlag
SCR_BaseGameMode GetGameMode()
SCR_DestructionSynchronizationComponentClass ScriptComponentClass int index
SCR_ECombatOps_Everon_Tasks
SCR_ETaskNotificationSettings
void SCR_FactionManager(IEntitySource src, IEntity parent)
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
SCR_ScenarioFrameworkEActivationType
SCR_ScenarioFrameworkEActivationType GetActivationType()
SCR_ScenarioFrameworkArea GetParentArea()
void SCR_ScenarioFrameworkLayerBase(IEntityComponentSource src, IEntity ent, IEntity parent)
SCR_ESFTaskType GetTaskType()
ScriptInvokerBase< ScriptInvokerScenarioFrameworkSlotAIMethod > ScriptInvokerScenarioFrameworkSlotAI
void SCR_Task(IEntitySource src, IEntity parent)
proto external Managed FindComponent(typename typeName)
proto external vector GetOrigin()
proto external BaseWorld GetWorld()
proto external EntityID GetID()
proto external IEntity GetParent()
Replication item identifier.
void EndGameMode(SCR_GameModeEndData endData)
ScriptInvokerBase< SCR_BaseGameMode_PlayerId > GetOnPlayerConnected()
static SCR_HUDManagerComponent GetHUDManager()
Widget CreateLayout(ResourceName path, EHudLayers layer, int zOrder=0)
static SCR_HintUIInfo CreateInfo(string description, string name, float duration, EHint type, EFieldManualEntryId fieldManualEntry, bool isTimerVisible)
static int GetLocalPlayerId()
Returns either a valid ID of local player or 0.
Takes care of dynamic and static onscreen popups.
void PopupMsg(string text, float duration=DEFAULT_DURATION, string text2="", int prio=-1, string param1="", string param2="", string param3="", string param4="", string text2param1="", string text2param2="", string text2param3="", string text2param4="", string sound="", SCR_EPopupMsgFilter category=SCR_EPopupMsgFilter.ALL, WorldTimestamp progressStart=null, WorldTimestamp progressEnd=null)
static SCR_PopUpNotification GetInstance()
ResourceName GetLayoutResource()
override void DynamicDespawn(SCR_ScenarioFrameworkLayerBase layer)
void SetAreaSelected(bool bSet)
override void Init(SCR_ScenarioFrameworkArea area=null, SCR_ScenarioFrameworkEActivationType activation=SCR_ScenarioFrameworkEActivationType.SAME_AS_PARENT)
bool GetIsTaskSuitableForArea(SCR_ESFTaskType eTaskType)
static ScriptCallQueue GetCallQueueNonPausable()
static bool IsWorldLoadInit()
void ~SCR_ScenarioFrameworkSystem()
Clears CallQueue after destruction of this system.
ref array< string > m_aLayersTaskToSpawn
void SetVariableValue(string key, string value)
Set a value to global variable at the scenario.
SCR_ScenarioFrameworkActionShowLayout GetLayoutComponent(SCR_ScenarioFrameworkLayerBase layerBase, int layoutId)
ref array< ref Tuple3< SCR_ScenarioFrameworkArea, vector, int > > m_aSpawnedAreas
void RpcDo_SetSignalOnEntity(EntityID pEntID, string signalName, int val)
ref array< ref Tuple3< SCR_ScenarioFrameworkArea, vector, int > > m_aDespawnedAreas
void AfterLayerTasksInit()
Executes AfterTasksInitActions after all Layer Tasks are finished spawning.
void GenerateTasks()
Main function responsible for selecting available tasks and spawning the areas related to the tasks.
SCR_ScenarioFrameworkArea GetParentArea(IEntity child)
static ScriptCallQueue GetCallQueuePausable()
ScriptInvoker GetOnAllAreasInitiated()
void ShowLayout(int playerId=-1, EntityID actionOwnerEntId=EntityID.INVALID, int layoutId=-1, float fadeIn=-1, float fadeOut=-1, float visibilityTime=-1, float opacity=-1)
static void InvokeSlotAISpawned(SCR_ScenarioFrameworkLayerBase layer, IEntity entity)
void RpcDo_PopUpMessage(string sTitle, string sSubtitle, FactionKey factionKey, int playerID, string titleParam1, string titleParam2, string subtitleParam1, string subtitleParam2)
void PrepareAreaSpecificDynamicDespawn(SCR_ScenarioFrameworkArea area, bool staySpawned=false, int despawnRange=0)
void OnInit()
Registers debug menus for ScenarioFramework in DiagMenu.
void RpcDo_SetVariableValue(string key, string value)
Set a value to global variable at the scenario.
ref array< vector > m_aObservers
ref array< int > m_aIntroVoicelineIndexes
void PlayCommunicationSoundOnEntity(IEntity entity, string sSndName)
void PlayIntroVoiceline(int playerID, string eventName, EntityID entityID)
SCR_TaskSystem m_TaskSystem
void PostInit()
Generates tasks for debug shape layers on player connect, if any.
void RpcDo_CreateVariableValue(string key, string value, int playerID)
Create a new global variable at the scenario.
void OnTaskUpdate(SCR_Task task, SCR_ETaskState taskState)
void RpcDo_ShowHint(string sTitle, string sSubtitle, int timeOut, FactionKey factionKey, int playerID)
static SCR_ScenarioFrameworkSystem GetInstance()
void ProcessVoicelineEnumAndString(typename targetEnum, string targetString)
ref array< SCR_ScenarioFrameworkLayerTask > m_aLayerTasksForRandomization
void CreateVariableValue(string key, string value)
Create a new global variable at the scenario.
override event bool ShouldBePaused()
Is this system should be paused while the simulation is paused?
void OnPlayerConnected(int playerID)
void PlaySoundOnEntityPosition(IEntity object, string soundFile, string soundEventName)
void SetSignalValue(IEntity entity, string signalName, int val)
void ShowHint(string sTitle, string sSubtitle, int timeOut, FactionKey factionKey="", int playerID=-1)
void GenerateSingleTask(int index)
void RpcDo_ManageLayerDebugShape(int playerID, EntityID id, bool draw, float radius)
void RpcDo_ShowLayout(int playerID, EntityID actionOwnerEntId, int layoutId, float fadeIn, float fadeOut, float visibilityTime, float opacity)
ref array< ref Tuple3< EntityID, bool, float > > m_aDebugShapesLayers
void RpcDo_PlaySoundOnEntity(EntityID pEntID, string sSndName)
void SpawnRandomTask(int countSafe=0)
bool GetVariable(string key, out string value)
Get value of given variable.
void OnTaskAddedCalledLater(SCR_Task task)
ref array< SCR_ScenarioFrameworkArea > m_aAreas
void RemoveAreaSpecificDynamicDespawn(SCR_ScenarioFrameworkArea area, bool staySpawned=false)
void UnregisterArea(SCR_ScenarioFrameworkArea area)
void CheckDistance()
Refreshes array of player characters and checks which areas should spawn/despawn.
static ScriptInvokerScenarioFrameworkSlotAI GetOnSlotAISpawned()
ref array< SCR_ESFTaskType > m_aESFTaskTypesAvailable
ref array< string > m_aAreasTasksToSpawn
void RpcDo_PlayIntroVoiceline(int playerID, string eventName, EntityID entityID)
void RpcDo_HideHint(FactionKey factionKey, int playerID)
void OnTaskAdded(SCR_Task task)
void DynamicDespawn()
Goes over spawned areas and checks whether or not said area should despawn.
SCR_Task GetLastFinishedTask()
void SyncDebugShapes(int playerID)
SCR_ScenarioFrameworkLayerBase m_LastFinishedTaskLayer
void RegisterArea(SCR_ScenarioFrameworkArea area)
void SetMissionEndScreen(EGameOverTypes GameOverType)
void ManageLayerDebugShape(EntityID id, bool draw, float radius, bool runtime)
FactionManager m_FactionManager
void OnDiag(float timeSlice)
void PlaySoundOnEntity(IEntity entity, string sSndName)
SCR_ScenarioFrameworkActionShowLayout CheckSubActions(SCR_ScenarioFrameworkActionBase action, int layoutId)
void FadeOut(Widget imgWidget, float fadeOut)
void PrepareDynamicDespawn()
Prepares dynamic spawn/despawn.
SCR_ScenarioFrameworkArea SelectRandomAreaByTaskType(SCR_ESFTaskType eTaskType)
ref array< SCR_ScenarioFrameworkArea > m_aSelectedAreas
void LoadComponentSettings()
Loads component settings from SCR_GameModeSFManager.
array< SCR_ScenarioFrameworkArea > GetAreas()
void LoadHeaderSettings()
Loads mission header settings.
EGameOverTypes m_eGameOverType
void OnUpdatePoint(WorldUpdatePointArgs args)
void DynamicSpawn()
Goes over despawned areas and checks whether or not said area should spawn.
SCR_ScenarioFrameworkLayerBase GetLastFinishedTaskLayer()
void PopUpMessage(string sTitle, string sSubtitle, FactionKey factionKey="", int playerID=-1, string titleParam1="", string titleParam2="", string subtitleParam1="", string subtitleParam2="")
void Finish()
Finishes current game mode, sets match over flag, and ends game mode with specified type.
void HideHint(FactionKey factionKey="", int playerID=-1)
void RpcDo_PlaySoundOnEntityPosition(RplId objectID, string soundFile, string soundEventName)
ref array< SCR_ScenarioFrameworkLayerTask > m_aLayerTasksToBeInitialized
static ref ScriptCallQueue s_CallQueuePausable
SCR_Task m_LastFinishedTask
ref map< string, string > m_mVariableMap
ref array< string > m_aSlotsTaskToSpawn
static bool IsSaveGameLoading()
void RpcDo_PlayCommunicationSoundOnEntity(EntityID pEntID, string sSndName)
SCR_ScenarioFrameworkArea SelectNearestAreaByTaskType(SCR_ESFTaskType eTaskType)
ref array< SCR_ESFTaskType > m_aESFTaskTypeForRandomization
SCR_ScenarioFrameworkLayerTask GetLayerTask()
SCR_ScenarioFrameworkSlotTask GetSlotTask()
SCR_ETaskNotificationSettings GetTaskNotificationSettings()
static bool IsEmptyOrWhiteSpace(string input)
ScriptCallQueue Class provide "lazy" calls - when we don't want to execute function immediately but l...
void Rpc(func method, void p0=NULL, void p1=NULL, void p2=NULL, void p3=NULL, void p4=NULL, void p5=NULL, void p6=NULL, void p7=NULL)
Structure holding world system meta-information required by the engine.
Structure holding extra data of WorldSystem update point.
WorldSystemPoint ESystemPoint
IEntity GetOwner()
Owner entity of the fuel tank.
proto void Print(void var, LogLevel level=LogLevel.NORMAL)
Prints content of variable to console/log.
LogLevel
Enum with severity of the logging message.
proto void PrintFormat(string fmt, void param1=NULL, void param2=NULL, void param3=NULL, void param4=NULL, void param5=NULL, void param6=NULL, void param7=NULL, void param8=NULL, void param9=NULL, LogLevel level=LogLevel.NORMAL)
SCR_FieldOfViewSettings Attribute
EntityEvent
Various entity events.
FactionManagerClass GenericEntityClass GetFactionByKey(FactionKey factionKey)
void RplRpc(RplChannel channel, RplRcver rcver, RplCondition condition=RplCondition.None, string customConditionName="")
RplChannel
Communication channel. Reliable is guaranteed to be delivered. Unreliable not.