about summary refs log tree commit diff
diff options
context:
space:
mode:
authoroy <Tom_Adams@web.de>2010-10-16 18:50:05 +0200
committeroy <Tom_Adams@web.de>2010-10-16 18:50:05 +0200
commit0edad8e6407ea4768a7bfd14c7b7c27d2459b384 (patch)
treee2706ff2e12a039e0d4c1365e354aec6669f4d8f
parent85fd27284621d335dd76ee66da7349b19004adc1 (diff)
downloadzcatch-0edad8e6407ea4768a7bfd14c7b7c27d2459b384.tar.gz
zcatch-0edad8e6407ea4768a7bfd14c7b7c27d2459b384.zip
made it possible to specify which layers/groups should be saved within the map
-rw-r--r--src/game/editor/ed_editor.cpp17
-rw-r--r--src/game/editor/ed_editor.h3
-rw-r--r--src/game/editor/ed_io.cpp10
3 files changed, 25 insertions, 5 deletions
diff --git a/src/game/editor/ed_editor.cpp b/src/game/editor/ed_editor.cpp
index 1cf367d4..a3ff8e48 100644
--- a/src/game/editor/ed_editor.cpp
+++ b/src/game/editor/ed_editor.cpp
@@ -42,6 +42,7 @@ CLayerGroup::CLayerGroup()
 {
 	m_pName = "";
 	m_Visible = true;
+	m_SaveToMap = true;
 	m_GameGroup = false;
 	m_OffsetX = 0;
 	m_OffsetY = 0;
@@ -1765,7 +1766,7 @@ void CEditor::RenderLayers(CUIRect ToolBox, CUIRect ToolBar, CUIRect View)
 				continue;
 			}
 
-			CUIRect VisibleToggle;
+			CUIRect VisibleToggle, SaveCheck;
 			if(LayerCur >= LayerStartAt)
 			{
 				LayersBox.HSplitTop(12.0f, &Slot, &LayersBox);
@@ -1773,9 +1774,14 @@ void CEditor::RenderLayers(CUIRect ToolBox, CUIRect ToolBar, CUIRect View)
 				if(DoButton_Ex(&m_Map.m_lGroups[g]->m_Visible, m_Map.m_lGroups[g]->m_Visible?"V":"H", 0, &VisibleToggle, 0, Localize("Toggle group visibility"), CUI::CORNER_L))
 					m_Map.m_lGroups[g]->m_Visible = !m_Map.m_lGroups[g]->m_Visible;
 
+				Slot.VSplitRight(12.0f, &Slot, &SaveCheck);
+				if(DoButton_Ex(&m_Map.m_lGroups[g]->m_SaveToMap, "S", m_Map.m_lGroups[g]->m_SaveToMap, &SaveCheck, 0, Localize("Enable/disable group for saving"), CUI::CORNER_R))
+					if(!m_Map.m_lGroups[g]->m_GameGroup)
+						m_Map.m_lGroups[g]->m_SaveToMap = !m_Map.m_lGroups[g]->m_SaveToMap;
+
 				str_format(aBuf, sizeof(aBuf),"#%d %s", g, m_Map.m_lGroups[g]->m_pName);
 				if(int Result = DoButton_Ex(&m_Map.m_lGroups[g], aBuf, g==m_SelectedGroup, &Slot,
-					BUTTON_CONTEXT, Localize("Select group. Right click for properties."), CUI::CORNER_R))
+					BUTTON_CONTEXT, Localize("Select group. Right click for properties."), 0))
 				{
 					m_SelectedGroup = g;
 					m_SelectedLayer = 0;
@@ -1806,9 +1812,14 @@ void CEditor::RenderLayers(CUIRect ToolBox, CUIRect ToolBar, CUIRect View)
 				if(DoButton_Ex(&m_Map.m_lGroups[g]->m_lLayers[i]->m_Visible, m_Map.m_lGroups[g]->m_lLayers[i]->m_Visible?"V":"H", 0, &VisibleToggle, 0, Localize("Toggle layer visibility"), CUI::CORNER_L))
 					m_Map.m_lGroups[g]->m_lLayers[i]->m_Visible = !m_Map.m_lGroups[g]->m_lLayers[i]->m_Visible;
 
+				Button.VSplitRight(12.0f, &Button, &SaveCheck);
+				if(DoButton_Ex(&m_Map.m_lGroups[g]->m_lLayers[i]->m_SaveToMap, "S", m_Map.m_lGroups[g]->m_lLayers[i]->m_SaveToMap, &SaveCheck, 0, Localize("Enable/disable layer for saving"), CUI::CORNER_R))
+					if(m_Map.m_lGroups[g]->m_lLayers[i] != m_Map.m_pGameLayer)
+						m_Map.m_lGroups[g]->m_lLayers[i]->m_SaveToMap = !m_Map.m_lGroups[g]->m_lLayers[i]->m_SaveToMap;
+
 				str_format(aBuf, sizeof(aBuf),"#%d %s ", i, m_Map.m_lGroups[g]->m_lLayers[i]->m_pTypeName);
 				if(int Result = DoButton_Ex(m_Map.m_lGroups[g]->m_lLayers[i], aBuf, g==m_SelectedGroup&&i==m_SelectedLayer, &Button,
-					BUTTON_CONTEXT, Localize("Select layer. Right click for properties."), CUI::CORNER_R))
+					BUTTON_CONTEXT, Localize("Select layer. Right click for properties."), 0))
 				{
 					m_SelectedLayer = i;
 					m_SelectedGroup = g;
diff --git a/src/game/editor/ed_editor.h b/src/game/editor/ed_editor.h
index 2c8cc730..fb4cd50e 100644
--- a/src/game/editor/ed_editor.h
+++ b/src/game/editor/ed_editor.h
@@ -124,6 +124,7 @@ public:
 		m_pTypeName = "(invalid)";
 		m_Visible = true;
 		m_Readonly = false;
+		m_SaveToMap = true;
 		m_Flags = 0;
 		m_pEditor = 0;
 	}
@@ -156,6 +157,7 @@ public:
 
 	bool m_Readonly;
 	bool m_Visible;
+	bool m_SaveToMap;
 };
 
 class CLayerGroup
@@ -180,6 +182,7 @@ public:
 	const char *m_pName;
 	bool m_GameGroup;
 	bool m_Visible;
+	bool m_SaveToMap;
 	
 	CLayerGroup();
 	~CLayerGroup();
diff --git a/src/game/editor/ed_io.cpp b/src/game/editor/ed_io.cpp
index 1d77a7de..6684a4a9 100644
--- a/src/game/editor/ed_io.cpp
+++ b/src/game/editor/ed_io.cpp
@@ -240,10 +240,13 @@ int CEditorMap::Save(class IStorage *pStorage, const char *pFileName)
 	}
 	
 	// save layers
-	int LayerCount = 0;
+	int LayerCount = 0, GroupCount = 0;
 	for(int g = 0; g < m_lGroups.size(); g++)
 	{
 		CLayerGroup *pGroup = m_lGroups[g];
+		if(!pGroup->m_SaveToMap)
+			continue;
+
 		CMapItemGroup GItem;
 		GItem.m_Version = CMapItemGroup::CURRENT_VERSION;
 		
@@ -261,6 +264,9 @@ int CEditorMap::Save(class IStorage *pStorage, const char *pFileName)
 		
 		for(int l = 0; l < pGroup->m_lLayers.size(); l++)
 		{
+			if(!pGroup->m_lLayers[l]->m_SaveToMap)
+				continue;
+
 			if(pGroup->m_lLayers[l]->m_Type == LAYERTYPE_TILES)
 			{
 				m_pEditor->Console()->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "editor", "saving tiles layer");
@@ -316,7 +322,7 @@ int CEditorMap::Save(class IStorage *pStorage, const char *pFileName)
 			}
 		}
 		
-		df.AddItem(MAPITEMTYPE_GROUP, g, sizeof(GItem), &GItem);
+		df.AddItem(MAPITEMTYPE_GROUP, GroupCount++, sizeof(GItem), &GItem);
 	}
 	
 	// save envelopes