diff --git a/include/core/event.h b/include/core/event.h index af8f2224..3e3c92c9 100644 --- a/include/core/event.h +++ b/include/core/event.h @@ -19,6 +19,7 @@ public: static QString HealLocation; }; +class Project; class Event { public: @@ -56,15 +57,15 @@ public: values.insert(key, value); } - static Event* createNewEvent(QString, QString); - static Event* createNewObjectEvent(); + static Event* createNewEvent(QString, QString, Project*); + static Event* createNewObjectEvent(Project*); static Event* createNewWarpEvent(QString); static Event* createNewHealLocationEvent(QString); - static Event* createNewTriggerEvent(); - static Event* createNewWeatherTriggerEvent(); - static Event* createNewSignEvent(); - static Event* createNewHiddenItemEvent(); - static Event* createNewSecretBaseEvent(); + static Event* createNewTriggerEvent(Project*); + static Event* createNewWeatherTriggerEvent(Project*); + static Event* createNewSignEvent(Project*); + static Event* createNewHiddenItemEvent(Project*); + static Event* createNewSecretBaseEvent(Project*); QJsonObject buildObjectEventJSON(); QJsonObject buildWarpEventJSON(QMap*); diff --git a/include/project.h b/include/project.h index c63ff766..f3068a07 100644 --- a/include/project.h +++ b/include/project.h @@ -4,6 +4,7 @@ #include "map.h" #include "blockdata.h" #include "heallocation.h" +#include "event.h" #include #include diff --git a/src/core/event.cpp b/src/core/event.cpp index f6a8c4b2..767d85d5 100644 --- a/src/core/event.cpp +++ b/src/core/event.cpp @@ -1,5 +1,6 @@ #include "event.h" #include "map.h" +#include "project.h" QString EventType::Object = "event_object"; QString EventType::Warp = "event_warp"; @@ -24,25 +25,25 @@ Event::Event(QJsonObject obj, QString type) this->readCustomValues(obj); } -Event* Event::createNewEvent(QString event_type, QString map_name) +Event* Event::createNewEvent(QString event_type, QString map_name, Project *project) { Event *event = new Event; if (event_type == EventType::Object) { - event = createNewObjectEvent(); + event = createNewObjectEvent(project); } else if (event_type == EventType::Warp) { event = createNewWarpEvent(map_name); } else if (event_type == EventType::HealLocation) { event = createNewHealLocationEvent(map_name); } else if (event_type == EventType::Trigger) { - event = createNewTriggerEvent(); + event = createNewTriggerEvent(project); } else if (event_type == EventType::WeatherTrigger) { - event = createNewWeatherTriggerEvent(); + event = createNewWeatherTriggerEvent(project); } else if (event_type == EventType::Sign) { - event = createNewSignEvent(); + event = createNewSignEvent(project); } else if (event_type == EventType::HiddenItem) { - event = createNewHiddenItemEvent(); + event = createNewHiddenItemEvent(project); } else if (event_type == EventType::SecretBase) { - event = createNewSecretBaseEvent(); + event = createNewSecretBaseEvent(project); } event->setX(0); @@ -51,13 +52,13 @@ Event* Event::createNewEvent(QString event_type, QString map_name) return event; } -Event* Event::createNewObjectEvent() +Event* Event::createNewObjectEvent(Project *project) { Event *event = new Event; event->put("event_group_type", "object_event_group"); event->put("event_type", EventType::Object); - event->put("sprite", "EVENT_OBJ_GFX_BOY_1"); - event->put("movement_type", "MOVEMENT_TYPE_LOOK_AROUND"); + event->put("sprite", project->getEventObjGfxConstants().keys().first()); + event->put("movement_type", project->movementTypes->first()); event->put("radius_x", 0); event->put("radius_y", 0); event->put("script_label", "NULL"); @@ -87,52 +88,52 @@ Event* Event::createNewHealLocationEvent(QString map_name) return event; } -Event* Event::createNewTriggerEvent() +Event* Event::createNewTriggerEvent(Project *project) { Event *event = new Event; event->put("event_group_type", "coord_event_group"); event->put("event_type", EventType::Trigger); event->put("script_label", "NULL"); - event->put("script_var", "VAR_TEMP_0"); + event->put("script_var", project->varNames->first()); event->put("script_var_value", "0"); return event; } -Event* Event::createNewWeatherTriggerEvent() +Event* Event::createNewWeatherTriggerEvent(Project *project) { Event *event = new Event; event->put("event_group_type", "coord_event_group"); event->put("event_type", EventType::WeatherTrigger); - event->put("weather", "COORD_EVENT_WEATHER_SUNNY"); + event->put("weather", project->coordEventWeatherNames->first()); return event; } -Event* Event::createNewSignEvent() +Event* Event::createNewSignEvent(Project *project) { Event *event = new Event; event->put("event_group_type", "bg_event_group"); event->put("event_type", EventType::Sign); - event->put("player_facing_direction", "BG_EVENT_PLAYER_FACING_ANY"); + event->put("player_facing_direction", project->bgEventFacingDirections->first()); event->put("script_label", "NULL"); return event; } -Event* Event::createNewHiddenItemEvent() +Event* Event::createNewHiddenItemEvent(Project *project) { Event *event = new Event; event->put("event_group_type", "bg_event_group"); event->put("event_type", EventType::HiddenItem); - event->put("item", "ITEM_POTION"); - event->put("flag", "FLAG_TEMP_1"); + event->put("item", project->itemNames->first()); + event->put("flag", project->flagNames->first()); return event; } -Event* Event::createNewSecretBaseEvent() +Event* Event::createNewSecretBaseEvent(Project *project) { Event *event = new Event; event->put("event_group_type", "bg_event_group"); event->put("event_type", EventType::SecretBase); - event->put("secret_base_id", "SECRET_BASE_RED_CAVE2_1"); + event->put("secret_base_id", project->secretBaseIds->first()); return event; } diff --git a/src/core/map.cpp b/src/core/map.cpp index e31825b3..0cd166f9 100644 --- a/src/core/map.cpp +++ b/src/core/map.cpp @@ -1,7 +1,7 @@ #include "history.h" #include "historyitem.h" #include "map.h" -#include "project.h" +//#include "project.h" #include "imageproviders.h" #include diff --git a/src/editor.cpp b/src/editor.cpp index 5674721b..bc70915c 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -1237,7 +1237,7 @@ void Editor::selectMapEvent(DraggablePixmapItem *object, bool toggle) { DraggablePixmapItem* Editor::addNewEvent(QString event_type) { if (project && map) { - Event *event = Event::createNewEvent(event_type, map->name); + Event *event = Event::createNewEvent(event_type, map->name, project); event->put("map_name", map->name); if (event_type == "event_heal_location") { HealLocation hl = HealLocation::fromEvent(event); diff --git a/src/project.cpp b/src/project.cpp index 60ff3273..934de678 100644 --- a/src/project.cpp +++ b/src/project.cpp @@ -6,7 +6,6 @@ #include "parseutil.h" #include "tile.h" #include "tileset.h" -#include "event.h" #include #include