+bool MapState::CheckMoveTrigger() {
+ Trigger *trigger(map->TriggerAt(Vector<int>(controlled->Position())));
+ if (!trigger || int(trigger->GetType()) != nextDirection) return false;
+ RunTrigger(*trigger);
+ return true;
+}
+
+void MapState::RunTrigger(Trigger &trigger) {
+ // TODO: run trigger script
+ if (trigger.map) {
+ ctrl->PushState(new ColorFade(this, 0, 500, true));
+ ctrl->PushState(new TransitionState(this, trigger.map, trigger.target));
+ ColorFade *fadeOut(new ColorFade(this, 0, 500, false));
+ fadeOut->SetLeadOutTime(500);
+ ctrl->PushState(fadeOut);
+ }
+}
+