From 977791bad2eebc9badc860c264bb6d6482a84733 Mon Sep 17 00:00:00 2001 From: Areloch Date: Wed, 22 Apr 2015 23:42:32 -0500 Subject: [PATCH] Fixes #1257 The editor didn't test that a mission area actually existed, so when you switched to the editor, it would trigger the crash. It now tests if there is a mission area when switching to the editor tool, and if there is not, prompts for the creation of a new one, similar to the auto-prompt for creating terrain blocks. --- .../game/tools/missionAreaEditor/main.cs | 21 +++++++++++++++++++ .../missionAreaEditorGui.ed.cs | 13 +++++++----- .../Full/game/tools/missionAreaEditor/main.cs | 21 +++++++++++++++++++ .../missionAreaEditorGui.ed.cs | 13 +++++++----- 4 files changed, 58 insertions(+), 10 deletions(-) diff --git a/Templates/Empty/game/tools/missionAreaEditor/main.cs b/Templates/Empty/game/tools/missionAreaEditor/main.cs index 196a2d515..000197bc6 100644 --- a/Templates/Empty/game/tools/missionAreaEditor/main.cs +++ b/Templates/Empty/game/tools/missionAreaEditor/main.cs @@ -99,6 +99,27 @@ function MissionAreaEditorPlugin::onDeactivated( %this ) Parent::onDeactivated(%this); } +function MissionAreaEditorPlugin::setEditorFunction( %this ) +{ + %missionAreaExists = isObject(getMissionAreaServerObject()); + + if( %missionAreaExists == false ) + MessageBoxYesNoCancel("No Mission Area","Would you like to create a New Mission Area?", "MissionAreaEditorPlugin.createNewMissionArea();"); + + return %missionAreaExists; +} + +function MissionAreaEditorPlugin::createNewMissionArea(%this) +{ + %newMissionArea = new MissionArea(); + %newMissionArea.area = "-256 -256 512 512"; + + MissionGroup.add(%newMissionArea); + + EditorGui.setEditor(MissionAreaEditorPlugin); + + EWorldEditor.isDirty = true; +} //----------------------------------------------------------------------------- // Settings //----------------------------------------------------------------------------- diff --git a/Templates/Empty/game/tools/missionAreaEditor/missionAreaEditorGui.ed.cs b/Templates/Empty/game/tools/missionAreaEditor/missionAreaEditorGui.ed.cs index 81c39eda3..7d8e79225 100644 --- a/Templates/Empty/game/tools/missionAreaEditor/missionAreaEditorGui.ed.cs +++ b/Templates/Empty/game/tools/missionAreaEditor/missionAreaEditorGui.ed.cs @@ -25,11 +25,14 @@ function MissionAreaEditorGui::onEditorActivated( %this ) EWorldEditor.clearSelection(); %ma = getMissionAreaServerObject(); - EWorldEditor.selectObject( %ma ); - EWorldEditor.syncGui(); - MissionAreaEditorTerrainEditor.updateTerrain(); - %this.setSelectedMissionArea( %ma ); - %this.onMissionAreaSelected( %this.getSelectedMissionArea() ); + if( isObject( %ma ) ) + { + EWorldEditor.selectObject( %ma ); + EWorldEditor.syncGui(); + MissionAreaEditorTerrainEditor.updateTerrain(); + %this.setSelectedMissionArea( %ma ); + %this.onMissionAreaSelected( %this.getSelectedMissionArea() ); + } } function MissionAreaEditorGui::onEditorDeactivated( %this ) diff --git a/Templates/Full/game/tools/missionAreaEditor/main.cs b/Templates/Full/game/tools/missionAreaEditor/main.cs index 196a2d515..000197bc6 100644 --- a/Templates/Full/game/tools/missionAreaEditor/main.cs +++ b/Templates/Full/game/tools/missionAreaEditor/main.cs @@ -99,6 +99,27 @@ function MissionAreaEditorPlugin::onDeactivated( %this ) Parent::onDeactivated(%this); } +function MissionAreaEditorPlugin::setEditorFunction( %this ) +{ + %missionAreaExists = isObject(getMissionAreaServerObject()); + + if( %missionAreaExists == false ) + MessageBoxYesNoCancel("No Mission Area","Would you like to create a New Mission Area?", "MissionAreaEditorPlugin.createNewMissionArea();"); + + return %missionAreaExists; +} + +function MissionAreaEditorPlugin::createNewMissionArea(%this) +{ + %newMissionArea = new MissionArea(); + %newMissionArea.area = "-256 -256 512 512"; + + MissionGroup.add(%newMissionArea); + + EditorGui.setEditor(MissionAreaEditorPlugin); + + EWorldEditor.isDirty = true; +} //----------------------------------------------------------------------------- // Settings //----------------------------------------------------------------------------- diff --git a/Templates/Full/game/tools/missionAreaEditor/missionAreaEditorGui.ed.cs b/Templates/Full/game/tools/missionAreaEditor/missionAreaEditorGui.ed.cs index 81c39eda3..7d8e79225 100644 --- a/Templates/Full/game/tools/missionAreaEditor/missionAreaEditorGui.ed.cs +++ b/Templates/Full/game/tools/missionAreaEditor/missionAreaEditorGui.ed.cs @@ -25,11 +25,14 @@ function MissionAreaEditorGui::onEditorActivated( %this ) EWorldEditor.clearSelection(); %ma = getMissionAreaServerObject(); - EWorldEditor.selectObject( %ma ); - EWorldEditor.syncGui(); - MissionAreaEditorTerrainEditor.updateTerrain(); - %this.setSelectedMissionArea( %ma ); - %this.onMissionAreaSelected( %this.getSelectedMissionArea() ); + if( isObject( %ma ) ) + { + EWorldEditor.selectObject( %ma ); + EWorldEditor.syncGui(); + MissionAreaEditorTerrainEditor.updateTerrain(); + %this.setSelectedMissionArea( %ma ); + %this.onMissionAreaSelected( %this.getSelectedMissionArea() ); + } } function MissionAreaEditorGui::onEditorDeactivated( %this )