mirror of
https://github.com/Heretek-AI/GDevelop.git
synced 2026-07-25 12:25:52 -04:00
75bfa5cb45
- Global or scene variables can be used with a unique action and condition. - Object variables can be used with a unique action and condition. - Variables need to be declared following the same logic as the new expression syntax. - Local variable can be declared on events - Extensions have their own variables - Show a diagnostic report when a preview is launched and there are missing scene variables, object variables or behaviors. - This is especially useful if external events are shared between several scenes.
103 lines
4.1 KiB
C++
103 lines
4.1 KiB
C++
#include "ProjectScopedContainers.h"
|
|
|
|
#include "GDCore/IDE/EventsFunctionTools.h"
|
|
#include "GDCore/Project/EventsFunctionsExtension.h"
|
|
#include "GDCore/Project/EventsBasedBehavior.h"
|
|
#include "GDCore/Project/EventsBasedObject.h"
|
|
#include "GDCore/Project/ObjectsContainer.h"
|
|
#include "GDCore/Events/Event.h"
|
|
|
|
namespace gd {
|
|
|
|
ProjectScopedContainers
|
|
ProjectScopedContainers::MakeNewProjectScopedContainersForFreeEventsFunction(
|
|
const gd::Project &project, const gd::EventsFunctionsExtension &eventsFunctionsExtension,
|
|
const gd::EventsFunction &eventsFunction,
|
|
gd::ObjectsContainer ¶meterObjectsContainer) {
|
|
|
|
gd::EventsFunctionTools::FreeEventsFunctionToObjectsContainer(
|
|
project, eventsFunctionsExtension, eventsFunction, parameterObjectsContainer);
|
|
|
|
ProjectScopedContainers projectScopedContainers(
|
|
ObjectsContainersList::MakeNewObjectsContainersListForContainer(
|
|
parameterObjectsContainer),
|
|
VariablesContainersList::
|
|
MakeNewVariablesContainersListForEventsFunctionsExtension(eventsFunctionsExtension),
|
|
PropertiesContainersList::MakeNewEmptyPropertiesContainersList());
|
|
|
|
projectScopedContainers.AddParameters(
|
|
eventsFunction.GetParametersForEvents(eventsFunctionsExtension));
|
|
|
|
return projectScopedContainers;
|
|
};
|
|
|
|
ProjectScopedContainers
|
|
ProjectScopedContainers::MakeNewProjectScopedContainersForBehaviorEventsFunction(
|
|
const gd::Project &project, const gd::EventsFunctionsExtension &eventsFunctionsExtension,
|
|
const gd::EventsBasedBehavior& eventsBasedBehavior,
|
|
const gd::EventsFunction &eventsFunction,
|
|
gd::ObjectsContainer ¶meterObjectsContainer) {
|
|
|
|
gd::EventsFunctionTools::BehaviorEventsFunctionToObjectsContainer(
|
|
project,
|
|
eventsBasedBehavior,
|
|
eventsFunction,
|
|
parameterObjectsContainer);
|
|
|
|
ProjectScopedContainers projectScopedContainers(
|
|
ObjectsContainersList::MakeNewObjectsContainersListForContainer(
|
|
parameterObjectsContainer),
|
|
VariablesContainersList::
|
|
MakeNewVariablesContainersListForEventsFunctionsExtension(eventsFunctionsExtension),
|
|
PropertiesContainersList::MakeNewEmptyPropertiesContainersList());
|
|
|
|
projectScopedContainers.AddPropertiesContainer(
|
|
eventsBasedBehavior.GetSharedPropertyDescriptors());
|
|
projectScopedContainers.AddPropertiesContainer(
|
|
eventsBasedBehavior.GetPropertyDescriptors());
|
|
projectScopedContainers.AddParameters(eventsFunction.GetParametersForEvents(
|
|
eventsBasedBehavior.GetEventsFunctions()));
|
|
|
|
return projectScopedContainers;
|
|
}
|
|
|
|
ProjectScopedContainers
|
|
ProjectScopedContainers::MakeNewProjectScopedContainersForObjectEventsFunction(
|
|
const gd::Project &project,
|
|
const gd::EventsFunctionsExtension &eventsFunctionsExtension,
|
|
const gd::EventsBasedObject &eventsBasedObject,
|
|
const gd::EventsFunction &eventsFunction,
|
|
gd::ObjectsContainer ¶meterObjectsContainer) {
|
|
|
|
gd::EventsFunctionTools::ObjectEventsFunctionToObjectsContainer(
|
|
project, eventsBasedObject, eventsFunction, parameterObjectsContainer);
|
|
|
|
ProjectScopedContainers projectScopedContainers(
|
|
ObjectsContainersList::MakeNewObjectsContainersListForContainer(
|
|
parameterObjectsContainer),
|
|
VariablesContainersList::
|
|
MakeNewVariablesContainersListForEventsFunctionsExtension(
|
|
eventsFunctionsExtension),
|
|
PropertiesContainersList::MakeNewEmptyPropertiesContainersList());
|
|
|
|
projectScopedContainers.AddPropertiesContainer(
|
|
eventsBasedObject.GetPropertyDescriptors());
|
|
projectScopedContainers.AddParameters(eventsFunction.GetParametersForEvents(
|
|
eventsBasedObject.GetEventsFunctions()));
|
|
|
|
return projectScopedContainers;
|
|
}
|
|
|
|
ProjectScopedContainers
|
|
ProjectScopedContainers::MakeNewProjectScopedContainersWithLocalVariables(
|
|
const ProjectScopedContainers &projectScopedContainers,
|
|
const gd::BaseEvent &event) {
|
|
ProjectScopedContainers newProjectScopedContainers = projectScopedContainers;
|
|
newProjectScopedContainers.variablesContainersList =
|
|
VariablesContainersList::MakeNewVariablesContainersListPushing(
|
|
projectScopedContainers.GetVariablesContainersList(),
|
|
event.GetVariables());
|
|
return newProjectScopedContainers;
|
|
}
|
|
|
|
} // namespace gd
|