Skip to content

Commit e093abc

Browse files
committed
When using the File -> Import, you can now import other world files / plugins
1 parent 8dc8238 commit e093abc

File tree

8 files changed

+14
-13
lines changed

8 files changed

+14
-13
lines changed

dialogs/ImportXMLdlg.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ void CImportXMLdlg::ImportArchive (CArchive & ar)
195195

196196
// do it
197197
m_pDoc->Load_World_XML (ar,
198-
iMask | XML_NO_PLUGINS,
198+
iMask | XML_NO_PLUGINS | XML_IMPORT_MAIN_FILE_ONLY,
199199
0, // load flags
200200
&iTriggers,
201201
&iAliases,

dialogs/world_prefs/genpropertypage.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1794,7 +1794,7 @@ CString strContents;
17941794

17951795
try
17961796
{
1797-
iCount = m_doc->Load_World_XML (ar, m_iMask | XML_NO_PLUGINS | XML_PASTE_DUPLICATE);
1797+
iCount = m_doc->Load_World_XML (ar, m_iMask | XML_NO_PLUGINS | XML_PASTE_DUPLICATE | XML_IMPORT_MAIN_FILE_ONLY);
17981798
}
17991799
catch (CArchiveException* e)
18001800
{

dialogs/world_prefs/prefspropertypages.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7831,7 +7831,7 @@ CArchive * ar = NULL;
78317831

78327832
if (IsArchiveXML (*ar))
78337833
{
7834-
iCount = m_doc->Load_World_XML (*ar, XML_VARIABLES | XML_NO_PLUGINS, false);
7834+
iCount = m_doc->Load_World_XML (*ar, XML_VARIABLES | XML_NO_PLUGINS | XML_IMPORT_MAIN_FILE_ONLY, false);
78357835
delete ar; // delete archive
78367836
ar = NULL;
78377837
delete xmlf; // delete file

doc.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1556,6 +1556,7 @@ class CMUSHclientDoc : public CDocument
15561556
#define XML_NO_PLUGINS 0x0800
15571557
#define XML_OVERWRITE 0x1000
15581558
#define XML_PASTE_DUPLICATE 0x2000
1559+
#define XML_IMPORT_MAIN_FILE_ONLY 0x4000
15591560

15601561
// XML saving
15611562
void Save_World_XML (CArchive& ar,

evaluate.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -605,27 +605,27 @@ CArchive * ar = NULL;
605605
case TRIGGER:
606606
if (replace)
607607
DELETE_MAP (m_TriggerMap, CTrigger);
608-
Load_World_XML (*ar, XML_TRIGGERS | XML_NO_PLUGINS);
608+
Load_World_XML (*ar, XML_TRIGGERS | XML_NO_PLUGINS | XML_IMPORT_MAIN_FILE_ONLY);
609609
break;
610610

611611
case ALIAS:
612612
if (replace)
613613
DELETE_MAP (m_AliasMap, CAlias);
614-
Load_World_XML (*ar, XML_ALIASES | XML_NO_PLUGINS);
614+
Load_World_XML (*ar, XML_ALIASES | XML_NO_PLUGINS | XML_IMPORT_MAIN_FILE_ONLY);
615615
break;
616616

617617
case COLOUR:
618-
Load_World_XML (*ar, XML_COLOURS | XML_NO_PLUGINS);
618+
Load_World_XML (*ar, XML_COLOURS | XML_NO_PLUGINS | XML_IMPORT_MAIN_FILE_ONLY);
619619
break;
620620

621621
case MACRO:
622-
Load_World_XML (*ar, XML_MACROS | XML_NO_PLUGINS);
622+
Load_World_XML (*ar, XML_MACROS | XML_NO_PLUGINS | XML_IMPORT_MAIN_FILE_ONLY);
623623
break;
624624

625625
case TIMER:
626626
if (replace)
627627
DELETE_MAP (m_TimerMap, CTimer);
628-
Load_World_XML (*ar, XML_TIMERS | XML_NO_PLUGINS);
628+
Load_World_XML (*ar, XML_TIMERS | XML_NO_PLUGINS | XML_IMPORT_MAIN_FILE_ONLY);
629629
break;
630630

631631
} // end of switch

scripting/methods/methods_xml.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ long iCount = 0;
5757
// do it
5858
Load_World_XML (ar,
5959
// don't load plugins or general world config here (note, this sets XML_OVERWRITE)
60-
(unsigned long) ~(XML_PLUGINS | XML_NO_PLUGINS | XML_GENERAL | XML_PASTE_DUPLICATE),
60+
(unsigned long) ~(XML_PLUGINS | XML_NO_PLUGINS | XML_GENERAL | XML_PASTE_DUPLICATE | XML_IMPORT_MAIN_FILE_ONLY),
6161
0, // load flags
6262
&iTriggers,
6363
&iAliases,

xml/xml_load_world.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -391,13 +391,13 @@ LONGLONG iCounterFrequency = large_int_frequency.QuadPart;
391391
m_strCurrentIncludeFileList.AddTail (strFileName);
392392
}
393393

394-
if (iMask & XML_NO_PLUGINS)
394+
if ((iMask & XML_NO_PLUGINS) && !(iMask & XML_IMPORT_MAIN_FILE_ONLY))
395395
{
396396
if (FindNode (*pMuClientElement, "plugin"))
397397
ThrowErrorException ("Plugin not expected here. Use File -> Plugins to load plugins");
398398
}
399399

400-
if (iMask & XML_PLUGINS)
400+
if ((iMask & XML_PLUGINS) && !(iMask & XML_IMPORT_MAIN_FILE_ONLY))
401401
if (!(iMask & XML_NO_PLUGINS))
402402
{ // plugin expected now
403403
Load_Plugin_XML (*pMuClientElement); // get <plugin> details
@@ -459,7 +459,7 @@ LONGLONG iCounterFrequency = large_int_frequency.QuadPart;
459459
{
460460
// we have to do plugins later, so that we know the world ID, amongst other things
461461
// now load include files that include plugins
462-
if (!ar.GetFile ()->GetFilePath ().IsEmpty ())
462+
if (!ar.GetFile ()->GetFilePath ().IsEmpty () && !(iMask & XML_IMPORT_MAIN_FILE_ONLY))
463463
Load_Includes_XML (*pMuClientElement,
464464
iMask,
465465
iFlags,

xml/xml_serialize.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ void CMUSHclientDoc::Serialize_World_XML (CArchive& ar)
4747
}
4848
else
4949
{ // loading
50-
Load_World_XML (ar, (unsigned long) ~(XML_PLUGINS | XML_NO_PLUGINS | XML_PASTE_DUPLICATE)); // load all options, except plugins
50+
Load_World_XML (ar, (unsigned long) ~(XML_PLUGINS | XML_NO_PLUGINS | XML_PASTE_DUPLICATE | XML_IMPORT_MAIN_FILE_ONLY)); // load all options, except plugins
5151
m_bLoaded = true; // this world has been loaded from disk
5252
}
5353

0 commit comments

Comments
 (0)