Skip to content

Commit 09aa190

Browse files
committed
unify(worldbuilder): Merge WorldBuilder
1 parent 628bfe3 commit 09aa190

89 files changed

Lines changed: 7923 additions & 2236 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Generals/Code/Tools/WorldBuilder/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ set(WORLDBUILDER_SRC
6060
"src/RampTool.cpp"
6161
"src/RoadOptions.cpp"
6262
"src/RoadTool.cpp"
63+
"src/RulerOptions.cpp"
64+
"src/RulerTool.cpp"
6365
"src/SaveMap.cpp"
6466
"src/ScorchOptions.cpp"
6567
"src/ScorchTool.cpp"
@@ -75,6 +77,7 @@ set(WORLDBUILDER_SRC
7577
"src/TeamBehavior.cpp"
7678
"src/TeamGeneric.cpp"
7779
"src/TeamIdentity.cpp"
80+
"src/TeamObjectProperties.cpp"
7881
"src/TeamReinforcement.cpp"
7982
"src/teamsdialog.cpp"
8083
"src/TerrainMaterial.cpp"
@@ -156,6 +159,8 @@ set(WORLDBUILDER_SRC
156159
"include/RampTool.h"
157160
"include/RoadOptions.h"
158161
"include/RoadTool.h"
162+
"include/RulerOptions.h"
163+
"include/RulerTool.h"
159164
"include/SaveMap.h"
160165
"include/ScorchOptions.h"
161166
"include/ScorchTool.h"
@@ -171,6 +176,7 @@ set(WORLDBUILDER_SRC
171176
"include/TeamBehavior.h"
172177
"include/TeamGeneric.h"
173178
"include/TeamIdentity.h"
179+
"include/TeamObjectProperties.h"
174180
"include/TeamReinforcement.h"
175181
"include/teamsdialog.h"
176182
"include/TerrainMaterial.h"
@@ -184,6 +190,7 @@ set(WORLDBUILDER_SRC
184190
"include/WaypointTool.h"
185191
"include/WBFrameWnd.h"
186192
"include/WBHeightMap.h"
193+
"include/WBPopupSlider.h"
187194
"include/wbview.h"
188195
"include/wbview3d.h"
189196
"include/WHeightMapEdit.h"

Generals/Code/Tools/WorldBuilder/include/CUndoable.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,3 +384,27 @@ class DeletePolygonUndoable : public Undoable
384384
virtual void Do() override;
385385
virtual void Undo() override;
386386
};
387+
388+
/// MultipleUndoable
389+
/**
390+
* An undoable that doesn't do anything; it just consolidates a number of other
391+
* Undoables in a single logical undo step.
392+
*/
393+
class MultipleUndoable : public Undoable
394+
{
395+
protected:
396+
Undoable * m_undoableList; //< The head of the list of undoables, in the order they should be done. Reverse order for undoes
397+
public:
398+
MultipleUndoable();
399+
// destructor.
400+
virtual ~MultipleUndoable() override;
401+
402+
/** Add other undoables in the order you would want them UNdone; e.g. in the reverse order you want them done
403+
* The MultipleUndoable object will then own the pointers.
404+
*/
405+
void addUndoable( Undoable * undoable );
406+
407+
virtual void Do() override;
408+
virtual void Undo() override;
409+
virtual void Redo() override;
410+
};

Generals/Code/Tools/WorldBuilder/include/CameraOptions.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ class CameraOptions : public CDialog, public PopupSliderOwner
5353
// Generated message map functions
5454
//{{AFX_MSG(CameraOptions)
5555
afx_msg void OnCameraReset();
56+
afx_msg void OnDropWaypointButton();
57+
afx_msg void OnCenterOnSelectedButton();
5658
afx_msg void OnMove(int x, int y);
5759
virtual BOOL OnInitDialog() override;
5860
afx_msg void OnChangePitchEdit();

Generals/Code/Tools/WorldBuilder/include/DrawObject.h

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
class MeshClass;
3535
class PolygonTrigger;
3636
class WaterRenderObjClass;
37+
class MapObject;
38+
class Render2DClass;
3739
//
3840
// DrawObject: Draws 3d feedback for tools & objects.
3941
//
@@ -77,12 +79,14 @@ class DrawObject : public RenderObjClass
7779
// void Set_Flag(unsigned int flag, Bool onoff) { Flags &= (~flag); if (onoff) Flags |= flag; }
7880

7981
Int freeMapResources();
82+
int initData();
8083

81-
void setDrawObjects(Bool val, Bool waypoints, Bool poly) { m_drawObjects = val; m_drawWaypoints=waypoints; m_drawPolygonAreas = poly;}
84+
void setDrawObjects(Bool val, Bool waypoints, Bool poly, Bool bounding, Bool sight, Bool weapon, Bool sound, Bool testart, Bool letterbox) { m_drawObjects = val; m_drawWaypoints=waypoints; m_drawPolygonAreas = poly; m_drawBoundingBoxes = bounding; m_drawSightRanges = sight; m_drawWeaponRanges = weapon; m_drawSoundRanges = sound; m_drawTestArtHighlight = testart, m_drawLetterbox = letterbox;}
8285
static void setDoBrushFeedback(Bool val) { m_toolWantsFeedback = val; m_meshFeedback=false;}
8386
static void setDoMeshFeedback(Bool val) { m_meshFeedback = val; }
8487
static void setDoRampFeedback(Bool val) { m_rampFeedback = val; }
8588
static void setDoBoundaryFeedback(Bool val) { m_boundaryFeedback = val; }
89+
8690
static void setDoAmbientSoundFeedback(Bool val) { m_ambientSoundFeedback = val; }
8791

8892
static void setBrushFeedbackParms(Bool square, Int width, Int featherWidth)
@@ -122,6 +126,12 @@ class DrawObject : public RenderObjClass
122126
Bool m_drawObjects;
123127
Bool m_drawWaypoints;
124128
Bool m_drawPolygonAreas;
129+
Bool m_drawBoundingBoxes;
130+
Bool m_drawSightRanges;
131+
Bool m_drawWeaponRanges;
132+
Bool m_drawSoundRanges;
133+
Bool m_drawTestArtHighlight;
134+
Bool m_drawLetterbox;
125135

126136
DX8VertexBufferClass *m_vertexFeedback; ///< Vertex buffer for brush feedback.
127137
DX8IndexBufferClass *m_indexFeedback; ///< indices defining a triangle strip for the feedback on terrain
@@ -132,6 +142,8 @@ class DrawObject : public RenderObjClass
132142

133143
MeshClass *m_moldMesh; ///< W3D mesh model for the mold.
134144
SphereClass m_moldMeshBounds; ///< Bounding sphere for mold mesh.
145+
Render2DClass *m_lineRenderer; //< Used to render 2D lines for bounding boxes.
146+
CPoint m_winSize; //< Holds the size of the window.
135147

136148
protected: // static state vars.
137149
static Bool m_squareFeedback; ///< True for square brush feedback, false for round.
@@ -155,7 +167,7 @@ class DrawObject : public RenderObjClass
155167
static Real m_rampWidth;
156168

157169
protected:
158-
int initData();
170+
void addCircleToLineRenderer( const Coord3D & center, Real radius, Real width, unsigned long color, CameraClass* camera );
159171
Int updateVB(DX8VertexBufferClass *vertexBufferTile, Int color, Bool doArrow, Bool doDiamond);
160172
void updatePolygonVB(PolygonTrigger *pTrig, Bool selected, Bool isOpen);
161173
void updateFeedbackVB();
@@ -165,6 +177,12 @@ class DrawObject : public RenderObjClass
165177
void updateForWater();
166178
void updateBoundaryVB();
167179
void updateAmbientSoundVB();
180+
void updateVBWithBoundingBox(MapObject *pMapObj, CameraClass* camera);
181+
void updateVBWithSightRange(MapObject *pMapObj, CameraClass* camera);
182+
void updateVBWithWeaponRange(MapObject *pMapObj, CameraClass* camera);
183+
void updateVBWithTestArtHighlight(MapObject *pMapObj, CameraClass* camera);
184+
void updateVBWithSoundRanges(MapObject *pMapObj, CameraClass* camera);
185+
bool worldToScreen(const Coord3D *w, ICoord2D *s, CameraClass* camera);
168186

169187
};
170188

Generals/Code/Tools/WorldBuilder/include/EditAction.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class EditAction : public CDialog
6262
CRichEditCtrl m_myEditCtrl;
6363
CHARRANGE m_curLinkChrg;
6464
Int m_curEditParameter;
65+
CTreeCtrl m_actionTreeView;
6566

6667
protected:
6768

Generals/Code/Tools/WorldBuilder/include/EditCondition.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@
2424

2525
class Condition;
2626
class SidesList;
27+
28+
class CMyTreeCtrl : public CTreeCtrl
29+
{
30+
public:
31+
virtual LRESULT WindowProc( UINT message, WPARAM wParam, LPARAM lParam ) override;
32+
};
33+
2734
/////////////////////////////////////////////////////////////////////////////
2835
// EditCondition dialog
2936

@@ -61,6 +68,7 @@ class EditCondition : public CDialog
6168
CRichEditCtrl m_myEditCtrl;
6269
CHARRANGE m_curLinkChrg;
6370
Int m_curEditParameter;
71+
CTreeCtrl m_conditionTreeView;
6472

6573
protected:
6674

Generals/Code/Tools/WorldBuilder/include/EditObjectParameter.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ friend class EditParameter;
4444
//{{AFX_VIRTUAL(EditObjectParameter)
4545
protected:
4646
virtual void DoDataExchange(CDataExchange* pDX) override; // DDX/DDV support
47+
virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) override;
4748
//}}AFX_VIRTUAL
4849

4950
// Implementation

Generals/Code/Tools/WorldBuilder/include/EditParameter.h

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ class EditParameter : public CDialog
5050
// Implementation
5151

5252
public:
53-
static Int edit( Parameter *pParm, AsciiString unitName = AsciiString::TheEmptyString );
54-
static AsciiString getWarningText(Parameter *pParm);
53+
static Int edit( Parameter *pParm, Int keyPressed, AsciiString unitName = AsciiString::TheEmptyString );
54+
static AsciiString getWarningText(Parameter *pParm, Bool isAction);
5555
static AsciiString getInfoText(Parameter *pParm);
5656
static void setCurSidesList(SidesList *sidesListP) {m_sidesListP = sidesListP;};
5757
static Bool loadScripts(CComboBox *pCombo, Bool subr, AsciiString match = AsciiString::TheEmptyString);
@@ -93,10 +93,10 @@ class EditParameter : public CDialog
9393
static Bool loadEmoticons( CComboBox *pCombo, AsciiString match = AsciiString::TheEmptyString );
9494
static AsciiString getCreatedUnitTemplateName(AsciiString unitName);
9595

96-
void loadCounters(CComboBox *pCombo);
97-
void loadConditionParameter(Script *pScr, Parameter::ParameterType type, CComboBox *pCombo);
98-
void loadActionParameter(Script *pScr, Parameter::ParameterType type, CComboBox *pCombo);
99-
void loadFlags(CComboBox *pCombo);
96+
static Bool loadCounters(CComboBox *pCombo, AsciiString match = AsciiString::TheEmptyString);
97+
static void loadConditionParameter(Script *pScr, Parameter::ParameterType type, CComboBox *pCombo);
98+
static Bool loadActionParameter(Script *pScr, Parameter::ParameterType type, CComboBox *pCombo, AsciiString match);
99+
static Bool loadFlags(CComboBox *pCombo, AsciiString match = AsciiString::TheEmptyString);
100100

101101

102102
protected:
@@ -106,11 +106,15 @@ class EditParameter : public CDialog
106106
Int m_int;
107107
Real m_real;
108108

109+
Int m_key; // key pressed to invoke the edit parameter dialog.
110+
109111
static SidesList *m_sidesListP;
110112
static AsciiString m_selectedLocalizedString;
111113

112114
protected:
115+
Bool scanReal(CEdit *pEdit, Real scale);
113116

117+
protected:
114118
// Generated message map functions
115119
//{{AFX_MSG(EditParameter)
116120
afx_msg void OnChangeEdit();

Generals/Code/Tools/WorldBuilder/include/ExportScriptsOptions.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,14 @@ class ExportScriptsOptions : public CDialog
5050
static Bool m_waypoints;
5151
static Bool m_triggers;
5252
static Bool m_allScripts;
53+
static Bool m_sides;
5354

5455
public:
5556
Bool getDoUnits() {return m_units;}
5657
Bool getDoWaypoints() {return m_waypoints;}
5758
Bool getDoTriggers() {return m_triggers;}
5859
Bool getDoAllScripts() {return m_allScripts;}
60+
Bool getDoSides() {return m_sides;}
5961

6062
protected:
6163

Generals/Code/Tools/WorldBuilder/include/LayersList.h

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,20 @@
4242

4343
// FORWARD DECLARATIONS ///////////////////////////////////////////////////////
4444
class MapObject;
45+
class PolygonTrigger;
4546

4647
// TYPE DEFINES ///////////////////////////////////////////////////////////////
4748
typedef std::list<MapObject*> ListMapObjectPtr;
4849
typedef ListMapObjectPtr::iterator ListMapObjectPtrIt;
4950

51+
typedef std::list<PolygonTrigger*> ListPolygonTriggerPtr;
52+
typedef ListPolygonTriggerPtr::iterator ListPolygonTriggerPtrIt;
53+
5054
struct 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

Comments
 (0)