4242
4343// FORWARD DECLARATIONS ///////////////////////////////////////////////////////
4444class MapObject ;
45+ class PolygonTrigger ;
4546
4647// TYPE DEFINES ///////////////////////////////////////////////////////////////
4748typedef std::list<MapObject*> ListMapObjectPtr;
4849typedef ListMapObjectPtr::iterator ListMapObjectPtrIt;
4950
51+ typedef std::list<PolygonTrigger*> ListPolygonTriggerPtr;
52+ typedef ListPolygonTriggerPtr::iterator ListPolygonTriggerPtrIt;
53+
5054struct Layer
5155{
5256 AsciiString layerName;
5357 ListMapObjectPtr objectsInLayer;
58+ ListPolygonTriggerPtr polygonTriggersInLayer;
5459 Bool show;
5560};
5661
@@ -86,9 +91,12 @@ class LayersList : public CDialog
8691
8792 void resetLayers ();
8893 void addMapObjectToLayersList (IN MapObject *objToAdd, AsciiString layerToAddTo = AsciiString(TheDefaultLayerName.c_str()));
94+ void addPolygonTriggerToLayersList (IN PolygonTrigger *triggerToAdd, AsciiString layerToAddTo = AsciiString(TheDefaultLayerName.c_str()));
8995 AsciiString removeMapObjectFromLayersList (IN MapObject *objToRemove);
96+ AsciiString removePolygonTriggerFromLayersList (IN PolygonTrigger *triggerToRemove);
9097
9198 void changeMapObjectLayer (IN MapObject *objToChange, AsciiString layerToPlaceOn);
99+ void changePolygonTriggerLayer (IN PolygonTrigger *triggerToChange, AsciiString layerToPlaceOn);
92100
93101 void addLayerNamed (IN AsciiString layerToAdd);
94102 void removeLayerNamed (IN AsciiString layerToRemove);
@@ -105,29 +113,40 @@ class LayersList : public CDialog
105113 const ListLayer& GetAllLayers () const { return mLayers ; }
106114
107115 static MapObject *findObjectByUID (AsciiString objectIDToFind);
116+ static PolygonTrigger *findPolygonTriggerByUID (AsciiString objectIDToFind);
117+ static Bool findAndSelectMapObject (AsciiString selectedItemAsciiString);
118+ static Bool findAndSelectPolygonTrigger (AsciiString selectedItemAsciiString);
119+ static void unselectAllMapObjects ();
120+ static void unselectAllPolygonTriggers ();
121+
122+ public:
123+ // This is a string because making it an AsciiString makes us barf on construction. :-(
124+ static std::string TheDefaultLayerName;
125+ static std::string ThePolygonTriggerLayerName;
126+ static std::string TheDefaultNewLayerName;
127+ static std::string TheActiveLayerName;
128+ static const std::string TheUnmutableDefaultLayerName;
108129
109130 protected:
110131 AsciiString mCurrentlyEditingLabel ;
132+
111133 ListLayer mLayers ;
112134 CLLTreeCtrl *mTree ;
113135 CImageList mImageList ;
114136 Bool m_performUpdates;
137+ Bool m_activatedLayer;
115138
116139
117140 HTREEITEM findTreeLayerNamed (const AsciiString& nameToFind);
118141 HTREEITEM findTreeObjectNamed (const AsciiString& objectToFind, HTREEITEM layerItem);
119142
120- // This is a string because making it an AsciiString makes us barf on construction. :-(
121- static std::string TheDefaultLayerName;
122- static std::string TheDefaultNewLayerName;
123- static const std::string TheUnmutableDefaultLayerName;
124-
125143 // This function takes an MapObject, and does one of the following:
126144 // 1) Return true if the MapObject can be found, and
127145 // layerIt points to a valid layer iterator in which the MapObject was found
128146 // MapObjectIt points to a valid MapObject iterator on the layerIts MapObjectsInLayer member
129147 // 2) Returns false if the MapObject cannot be found.
130148 Bool findMapObjectAndList (IN MapObject *MapObjectToFind, OUT ListLayerIt *layerIt = nullptr , OUT ListMapObjectPtrIt *MapObjectIt = nullptr );
149+ Bool findPolygonTriggerAndList (IN PolygonTrigger *PolygonTriggerToFind, OUT ListLayerIt *layerIt = nullptr , OUT ListPolygonTriggerPtrIt *PolygonTriggerIt = nullptr );
131150
132151 // This function takes a layer name, and does one of the following:
133152 // 1) Return true if the layer can be found, and
@@ -136,7 +155,11 @@ class LayersList : public CDialog
136155 Bool findLayerNamed (IN AsciiString layerName, OUT ListLayerIt *layerIt = nullptr );
137156
138157 void addMapObjectToLayer (IN MapObject *objToAdd, IN ListLayerIt *layerIt);
158+ void addPolygonTriggerToLayer (IN PolygonTrigger *objToAdd, IN ListLayerIt *layerIt);
139159 void removeMapObjectFromLayer (IN MapObject *objToRemove, IN ListLayerIt *layerIt = nullptr , IN ListMapObjectPtrIt *MapObjectIt = nullptr );
160+ void removePolygonTriggerFromLayer (IN PolygonTrigger *triggerToRemove, IN ListLayerIt *layerIt = nullptr , IN ListPolygonTriggerPtrIt *PolygonTriggerIt = nullptr );
161+ void updateObjectRenderFlags (IN ListLayerIt *layerIt);
162+ void updateTreeImages ();
140163
141164 protected:
142165 virtual void OnOK () override ;
@@ -149,8 +172,10 @@ class LayersList : public CDialog
149172 afx_msg void OnMergeLayer (UINT commandID);
150173 afx_msg void OnMergeObject (UINT commandID);
151174 afx_msg void OnMergeViewSelection (UINT commandID);
175+ afx_msg void OnSelectActiveLayer ();
152176
153177
178+ afx_msg void OnSelectLayerObject ();
154179 afx_msg void OnNewLayer ();
155180 afx_msg void OnDeleteLayer ();
156181 afx_msg void OnHideShowLayer ();
0 commit comments