OpenClonk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
C4Landscape.h
Go to the documentation of this file.
1 /*
2  * OpenClonk, http://www.openclonk.org
3  *
4  * Copyright (c) 1998-2000, Matthes Bender
5  * Copyright (c) 2001-2009, RedWolf Design GmbH, http://www.clonk.de/
6  * Copyright (c) 2009-2016, The OpenClonk Team and contributors
7  *
8  * Distributed under the terms of the ISC license; see accompanying file
9  * "COPYING" for details.
10  *
11  * "Clonk" is a registered trademark of Matthes Bender, used with permission.
12  * See accompanying file "TRADEMARK" for details.
13  *
14  * To redistribute this file separately, substitute the full license texts
15  * for the above references.
16  */
17 
18 /* Handles landscape and sky */
19 
20 #ifndef INC_C4Landscape
21 #define INC_C4Landscape
22 
23 #include "C4Prototypes.h"
24 #include "config/C4Constants.h"
25 
26 const int32_t C4MaxMaterial = 125;
27 
28 const int32_t C4LS_MaxRelights = 50;
29 
30 enum class LandscapeMode
31 {
32  Undefined = 0,
33  Dynamic = 1,
34  Static = 2,
35  Exact = 3
36 };
37 
39 {
40  struct P;
41  std::unique_ptr<P> p;
42 
43 public:
44  C4Landscape();
45  ~C4Landscape();
46 
47  // Use this with the various drawing functions to keep current material for
48  // either foreground or background map. We can use C4M_MaxTexIndex as a value
49  // here because this value is reserved anyway for the differential landscape
50  // encoding.
51  static const uint8_t Transparent = C4M_MaxTexIndex;
52 
53  void Default();
54  void Clear(bool fClearMapCreator=true, bool fClearSky=true, bool fClearRenderer=true);
55  void Execute();
56  void Synchronize();
57  void Draw(C4TargetFacet &cgo, class C4FoWRegion *pLight = nullptr);
58  void ScenarioInit();
59 
60  void ScanSideOpen();
61 
62  void DrawMaterialRect(int32_t mat, int32_t tx, int32_t ty, int32_t wdt, int32_t hgt);
63 
64  void RaiseTerrain(int32_t tx, int32_t ty, int32_t wdt);
65  void FindMatTop(int32_t mat, int32_t &x, int32_t &y, bool distant_first) const;
66  BYTE GetMapIndex(int32_t iX, int32_t iY) const;
67  BYTE GetBackMapIndex(int32_t iX, int32_t iY) const;
68  bool Load(C4Group &hGroup, bool fLoadSky, bool fSavegame);
69  bool Save(C4Group &hGroup) const;
70  bool SaveDiff(C4Group &hGroup, bool fSyncSave) const;
71  bool SaveMap(C4Group &hGroup) const;
72  bool SaveInitial();
73  bool SaveTextures(C4Group &hGroup) const;
74  bool Init(C4Group &hGroup, bool fOverloadCurrent, bool fLoadSky, bool &rfLoaded, bool fSavegame);
75  bool HasMap() const;
76  bool MapToLandscape();
77  bool ApplyDiff(C4Group &hGroup);
78 
79  void SetMode(LandscapeMode iMode);
80  LandscapeMode GetMode() const;
81 
82  bool SetPix2(int32_t x, int32_t y, BYTE fgPix, BYTE bgPix); // set landscape pixel (bounds checked)
83  bool _SetPix2(int32_t x, int32_t y, BYTE fgPix, BYTE bgPix); // set landsape pixel (bounds not checked)
84  void _SetPix2Tmp(int32_t x, int32_t y, BYTE fgPix, BYTE bgPix); // set landsape pixel (bounds not checked, no material count updates, no landscape relighting). Material must be reset to original value with this function before modifying landscape in any other way. Only used for temporary pixel changes by SolidMask (C4SolidMask::RemoveTemporary, C4SolidMask::PutTemporary).
85  bool InsertMaterialOutsideLandscape(int32_t tx, int32_t ty, int32_t mdens); // return whether material insertion would be successful on an out-of-landscape position. Does not actually insert material.
86  bool InsertMaterial(int32_t mat, int32_t *tx, int32_t *ty, int32_t vx = 0, int32_t vy = 0, bool query_only=false); // modifies tx/ty to actual insertion position
87  bool InsertDeadMaterial(int32_t mat, int32_t tx, int32_t ty);
88  bool FindMatPath(int32_t &fx, int32_t &fy, int32_t ydir, int32_t mdens, int32_t mslide) const;
89  bool FindMatSlide(int32_t &fx, int32_t &fy, int32_t ydir, int32_t mdens, int32_t mslide) const;
90  bool FindMatPathPush(int32_t &fx, int32_t &fy, int32_t mdens, int32_t mslide, bool liquid) const;
91  bool Incinerate(int32_t x, int32_t y, int32_t cause_player);
92  bool DrawBrush(int32_t iX, int32_t iY, int32_t iGrade, const char *szMaterial, const char *szTexture, const char *szBackMaterial, const char *szBackTexture);
93  bool DrawLine(int32_t iX1, int32_t iY1, int32_t iX2, int32_t iY2, int32_t iGrade, const char *szMaterial, const char *szTexture, const char *szBackMaterial, const char *szBackTexture);
94  bool DrawBox(int32_t iX1, int32_t iY1, int32_t iX2, int32_t iY2, int32_t iGrade, const char *szMaterial, const char *szTexture, const char *szBackMaterial, const char *szBackTexture);
95  bool DrawChunks(int32_t tx, int32_t ty, int32_t wdt, int32_t hgt, int32_t icntx, int32_t icnty, const char *szMaterial, const char *szTexture, bool bIFT);
96  bool DrawQuad(int32_t iX1, int32_t iY1, int32_t iX2, int32_t iY2, int32_t iX3, int32_t iY3, int32_t iX4, int32_t iY4, const char *szMaterial, const char *szBackMaterial, bool fDrawBridge);
97  bool DrawPolygon(int *vtcs, int length, const char *szMaterial, const char *szBackMaterial, bool fDrawBridge);
98  CStdPalette *GetPal() const;
99 
100  int32_t GetWidth() const;
101  int32_t GetHeight() const;
102  int32_t GetMapZoom() const;
103  C4Real GetGravity() const;
104  void SetGravity(C4Real g);
105 
106  BYTE _GetPix(int32_t x, int32_t y) const; // get landscape pixel (bounds not checked)
107  BYTE GetPix(int32_t x, int32_t y) const;
108 
109  int32_t _GetMat(int32_t x, int32_t y) const;
110  int32_t _GetDensity(int32_t x, int32_t y) const;
111  int32_t _GetPlacement(int32_t x, int32_t y) const;
112  int32_t GetMat(int32_t x, int32_t y) const;
113  int32_t GetDensity(int32_t x, int32_t y) const;
114  int32_t GetPlacement(int32_t x, int32_t y) const;
115 
116  BYTE _GetBackPix(int32_t x, int32_t y) const;
117  BYTE GetBackPix(int32_t x, int32_t y) const;
118  int32_t _GetBackMat(int32_t x, int32_t y) const;
119  int32_t _GetBackDensity(int32_t x, int32_t y) const;
120  int32_t _GetBackPlacement(int32_t x, int32_t y) const;
121  int32_t GetBackMat(int32_t x, int32_t y) const;
122  int32_t GetBackDensity(int32_t x, int32_t y) const;
123  int32_t GetBackPlacement(int32_t x, int32_t y) const;
124 
125  bool GetLight(int32_t x, int32_t y);
126  bool _GetLight(int32_t x, int32_t y);
127 
128  bool _FastSolidCheck(int32_t x, int32_t y) const;
129  static int32_t FastSolidCheckNextX(int32_t x);
130  int32_t GetPixMat(BYTE byPix) const;
131  int32_t GetPixDensity(BYTE byPix) const;
132  bool _PathFree(int32_t x, int32_t y, int32_t x2, int32_t y2) const; // quickly checks wether there *might* be pixel in the path.
133  int32_t GetMatHeight(int32_t x, int32_t y, int32_t iYDir, int32_t iMat, int32_t iMax) const;
134 
135  int32_t AreaSolidCount(int32_t x, int32_t y, int32_t wdt, int32_t hgt) const;
136  int32_t ExtractMaterial(int32_t fx, int32_t fy, bool distant_first);
137  bool DrawMap(int32_t iX, int32_t iY, int32_t iWdt, int32_t iHgt, const char *szMapDef, bool ignoreSky = false); // creates and draws a map section using MapCreatorS2
138  bool ClipRect(int32_t &rX, int32_t &rY, int32_t &rWdt, int32_t &rHgt) const; // clip given rect by landscape size; return whether anything is left unclipped
139  bool DrawDefMap(int32_t iX, int32_t iY, int32_t iWdt, int32_t iHgt, const char *szMapDef, bool ignoreSky = false); // creates and draws a map section using MapCreatorS2 and a map from the loaded Landscape.txt
140  bool SetModulation(DWORD dwWithClr);
141  DWORD GetModulation() const;
142  bool PostInitMap(); // do script callbacks of MapCreatorS2 in finished landscape
143  bool ReplaceMapColor(BYTE iOldIndex, BYTE iNewIndex); // find every occurance of iOldIndex in map; replace it by new index
144  bool SetTextureIndex(const char *szMatTex, BYTE iNewIndex, bool fInsert); // change color index of map texture, or insert a new one
145  void SetMapChanged();
146  void HandleTexMapUpdate();
147  void UpdatePixMaps();
148  bool DoRelights();
150 
151  class C4Sky &GetSky();
152 
153  bool HasFoW() const;
154  class C4FoW *GetFoW();
155 
156  int32_t GetMatCount(int material) const;
157  int32_t GetEffectiveMatCount(int material) const;
158 
159  int32_t DigFreeShape(int *vtcs, int length, C4Object *by_object = nullptr, bool no_dig2objects = false, bool no_instability_check = false);
160  void BlastFreeShape(int *vtcs, int length, C4Object *by_object = nullptr, int32_t by_player = NO_OWNER, int32_t iMaxDensity = C4M_Vehicle);
161 
162  void ClearFreeRect(int32_t tx, int32_t ty, int32_t wdt, int32_t hgt);
163  int32_t DigFreeRect(int32_t tx, int32_t ty, int32_t wdt, int32_t hgt, C4Object *by_object = nullptr, bool no_dig2objects = false, bool no_instability_check = false);
164  int32_t DigFree(int32_t tx, int32_t ty, int32_t rad, C4Object *by_object = nullptr, bool no_dig2objects = false, bool no_instability_check = false);
165  void ShakeFree(int32_t tx, int32_t ty, int32_t rad);
166  void BlastFree(int32_t tx, int32_t ty, int32_t rad, int32_t caused_by = NO_OWNER, C4Object *by_object = nullptr, int32_t iMaxDensity = C4M_Vehicle);
167 
168  void CheckInstabilityRange(int32_t tx, int32_t ty);
169  bool CheckInstability(int32_t tx, int32_t ty, int32_t recursion_count=0);
170 
171  bool ClearPix(int32_t tx, int32_t ty); // also used by mass mover (corrode)
172 
173  void ClearPointers(C4Object *pObj);
174 
175  void CompileFunc(StdCompiler *pComp); // without landscape bitmaps and sky
176 };
177 
178 extern C4Landscape Landscape;
179 
180 /* Some global landscape functions */
181 
182 bool AboveSolid(int32_t &rx, int32_t &ry);
183 bool AboveSemiSolid(int32_t &rx, int32_t &ry);
184 bool SemiAboveSolid(int32_t &rx, int32_t &ry);
185 bool FindSolidGround(int32_t &rx, int32_t &ry, int32_t width);
186 bool FindLiquid(int32_t &rx, int32_t &ry, int32_t width, int32_t height);
187 bool FindTunnel(int32_t &rx, int32_t &ry, int32_t width, int32_t height);
188 bool FindSurfaceLiquid(int32_t &rx, int32_t &ry, int32_t width, int32_t height);
189 bool FindLevelGround(int32_t &rx, int32_t &ry, int32_t width, int32_t hrange);
190 bool FindConSiteSpot(int32_t &rx, int32_t &ry, int32_t wdt, int32_t hgt, int32_t hrange=-1);
191 bool FindThrowingPosition(int32_t iTx, int32_t iTy, C4Real fXDir, C4Real fYDir, int32_t iHeight, int32_t &rX, int32_t &rY);
192 bool PathFree(int32_t x1, int32_t y1, int32_t x2, int32_t y2);
193 bool PathFree(int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t *ix, int32_t *iy);
194 bool PathFreeIgnoreVehicle(int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t *ix=nullptr, int32_t *iy=nullptr);
195 bool FindClosestFree(int32_t &rX, int32_t &rY, int32_t iAngle1, int32_t iAngle2, int32_t iExcludeAngle1, int32_t iExcludeAngle2);
196 bool ConstructionCheck(C4PropList *, int32_t iX, int32_t iY, C4Object *pByObj=nullptr);
197 int32_t PixCol2Mat(BYTE pixc);
198 
199 inline bool DensitySolid(int32_t dens)
200 {
201  return (dens>=C4M_Solid);
202 }
203 
204 inline bool DensitySemiSolid(int32_t dens)
205 {
206  return (dens>=C4M_SemiSolid);
207 }
208 
209 inline bool DensityLiquid(int32_t dens)
210 {
211  return ((dens>=C4M_Liquid) && (dens<C4M_Solid));
212 }
213 
214 inline int32_t PixCol2Tex(BYTE pixc)
215 {
216  // Validate
217  if (pixc >= C4M_MaxTexIndex) return 0;
218  // Done
219  return pixc;
220 }
221 
222 inline int32_t GBackMat(int32_t x, int32_t y)
223 {
225 }
226 
227 inline int32_t GBackDensity(int32_t x, int32_t y)
228 {
230 }
231 
232 inline bool GBackSolid(int32_t x, int32_t y)
233 {
234  return DensitySolid(GBackDensity(x,y));
235 }
236 
237 inline bool GBackSemiSolid(int32_t x, int32_t y)
238 {
239  return DensitySemiSolid(GBackDensity(x,y));
240 }
241 
242 inline bool GBackLiquid(int32_t x, int32_t y)
243 {
244  return DensityLiquid(GBackDensity(x,y));
245 }
246 #endif
BYTE _GetBackPix(int32_t x, int32_t y) const
bool FindMatPathPush(int32_t &fx, int32_t &fy, int32_t mdens, int32_t mslide, bool liquid) const
BYTE _GetPix(int32_t x, int32_t y) const
bool FindTunnel(int32_t &rx, int32_t &ry, int32_t width, int32_t height)
bool FindLiquid(int32_t &rx, int32_t &ry, int32_t width, int32_t height)
bool DrawBox(int32_t iX1, int32_t iY1, int32_t iX2, int32_t iY2, int32_t iGrade, const char *szMaterial, const char *szTexture, const char *szBackMaterial, const char *szBackTexture)
static int32_t FastSolidCheckNextX(int32_t x)
const int32_t C4M_Vehicle
Definition: C4Constants.h:172
bool Init(C4Group &hGroup, bool fOverloadCurrent, bool fLoadSky, bool &rfLoaded, bool fSavegame)
int32_t _GetBackDensity(int32_t x, int32_t y) const
void Synchronize()
DWORD GetModulation() const
int32_t PixCol2Mat(BYTE pixc)
bool Incinerate(int32_t x, int32_t y, int32_t cause_player)
bool ApplyDiff(C4Group &hGroup)
bool AboveSemiSolid(int32_t &rx, int32_t &ry)
int32_t GetMatHeight(int32_t x, int32_t y, int32_t iYDir, int32_t iMat, int32_t iMax) const
int32_t DigFree(int32_t tx, int32_t ty, int32_t rad, C4Object *by_object=nullptr, bool no_dig2objects=false, bool no_instability_check=false)
const int32_t C4LS_MaxRelights
Definition: C4Landscape.h:28
void HandleTexMapUpdate()
C4Landscape Landscape
bool InsertDeadMaterial(int32_t mat, int32_t tx, int32_t ty)
bool SetTextureIndex(const char *szMatTex, BYTE iNewIndex, bool fInsert)
int32_t GetBackPlacement(int32_t x, int32_t y) const
void Execute()
bool DrawLine(int32_t iX1, int32_t iY1, int32_t iX2, int32_t iY2, int32_t iGrade, const char *szMaterial, const char *szTexture, const char *szBackMaterial, const char *szBackTexture)
bool PostInitMap()
void _SetPix2Tmp(int32_t x, int32_t y, BYTE fgPix, BYTE bgPix)
bool _FastSolidCheck(int32_t x, int32_t y) const
bool CheckInstability(int32_t tx, int32_t ty, int32_t recursion_count=0)
bool HasMap() const
void ClearPointers(C4Object *pObj)
bool HasFoW() const
void RaiseTerrain(int32_t tx, int32_t ty, int32_t wdt)
int32_t DigFreeRect(int32_t tx, int32_t ty, int32_t wdt, int32_t hgt, C4Object *by_object=nullptr, bool no_dig2objects=false, bool no_instability_check=false)
class C4FoW * GetFoW()
bool InsertMaterialOutsideLandscape(int32_t tx, int32_t ty, int32_t mdens)
uint8_t BYTE
bool AboveSolid(int32_t &rx, int32_t &ry)
bool SetModulation(DWORD dwWithClr)
int32_t GetPlacement(int32_t x, int32_t y) const
bool _PathFree(int32_t x, int32_t y, int32_t x2, int32_t y2) const
void BlastFreeShape(int *vtcs, int length, C4Object *by_object=nullptr, int32_t by_player=NO_OWNER, int32_t iMaxDensity=C4M_Vehicle)
int32_t DigFreeShape(int *vtcs, int length, C4Object *by_object=nullptr, bool no_dig2objects=false, bool no_instability_check=false)
int32_t GetMatCount(int material) const
bool InsertMaterial(int32_t mat, int32_t *tx, int32_t *ty, int32_t vx=0, int32_t vy=0, bool query_only=false)
bool DensitySemiSolid(int32_t dens)
Definition: C4Landscape.h:204
void ScenarioInit()
int32_t GetBackDensity(int32_t x, int32_t y) const
Definition: C4Sky.h:29
void ScanSideOpen()
bool SaveTextures(C4Group &hGroup) const
bool DrawBrush(int32_t iX, int32_t iY, int32_t iGrade, const char *szMaterial, const char *szTexture, const char *szBackMaterial, const char *szBackTexture)
Definition: C4Real.h:58
bool Load(C4Group &hGroup, bool fLoadSky, bool fSavegame)
bool FindConSiteSpot(int32_t &rx, int32_t &ry, int32_t wdt, int32_t hgt, int32_t hrange=-1)
bool SaveDiff(C4Group &hGroup, bool fSyncSave) const
bool FindSurfaceLiquid(int32_t &rx, int32_t &ry, int32_t width, int32_t height)
int32_t GetDensity(int32_t x, int32_t y) const
int32_t _GetBackPlacement(int32_t x, int32_t y) const
int32_t GetEffectiveMatCount(int material) const
bool ClipRect(int32_t &rX, int32_t &rY, int32_t &rWdt, int32_t &rHgt) const
int32_t _GetMat(int32_t x, int32_t y) const
bool DensityLiquid(int32_t dens)
Definition: C4Landscape.h:209
bool MapToLandscape()
void ShakeFree(int32_t tx, int32_t ty, int32_t rad)
void CheckInstabilityRange(int32_t tx, int32_t ty)
const int C4M_MaxTexIndex
Definition: C4Constants.h:51
BYTE GetBackMapIndex(int32_t iX, int32_t iY) const
void SetMode(LandscapeMode iMode)
void RemoveUnusedTexMapEntries()
bool SemiAboveSolid(int32_t &rx, int32_t &ry)
bool DrawDefMap(int32_t iX, int32_t iY, int32_t iWdt, int32_t iHgt, const char *szMapDef, bool ignoreSky=false)
bool Save(C4Group &hGroup) const
class C4Sky & GetSky()
bool DrawChunks(int32_t tx, int32_t ty, int32_t wdt, int32_t hgt, int32_t icntx, int32_t icnty, const char *szMaterial, const char *szTexture, bool bIFT)
void UpdatePixMaps()
const int NO_OWNER
Definition: C4Constants.h:138
BYTE GetPix(int32_t x, int32_t y) const
C4Real GetGravity() const
bool DrawPolygon(int *vtcs, int length, const char *szMaterial, const char *szBackMaterial, bool fDrawBridge)
int32_t GetMat(int32_t x, int32_t y) const
int32_t _GetPlacement(int32_t x, int32_t y) const
bool FindMatSlide(int32_t &fx, int32_t &fy, int32_t ydir, int32_t mdens, int32_t mslide) const
bool SetPix2(int32_t x, int32_t y, BYTE fgPix, BYTE bgPix)
const int32_t C4M_Solid
Definition: C4Constants.h:173
bool PathFreeIgnoreVehicle(int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t *ix=nullptr, int32_t *iy=nullptr)
LandscapeMode GetMode() const
bool DrawMap(int32_t iX, int32_t iY, int32_t iWdt, int32_t iHgt, const char *szMapDef, bool ignoreSky=false)
int32_t GetBackMat(int32_t x, int32_t y) const
int32_t GetHeight() const
BYTE GetMapIndex(int32_t iX, int32_t iY) const
bool FindClosestFree(int32_t &rX, int32_t &rY, int32_t iAngle1, int32_t iAngle2, int32_t iExcludeAngle1, int32_t iExcludeAngle2)
int32_t ExtractMaterial(int32_t fx, int32_t fy, bool distant_first)
void DrawMaterialRect(int32_t mat, int32_t tx, int32_t ty, int32_t wdt, int32_t hgt)
Definition: C4FoW.h:101
bool DrawQuad(int32_t iX1, int32_t iY1, int32_t iX2, int32_t iY2, int32_t iX3, int32_t iY3, int32_t iX4, int32_t iY4, const char *szMaterial, const char *szBackMaterial, bool fDrawBridge)
bool PathFree(int32_t x1, int32_t y1, int32_t x2, int32_t y2)
BYTE GetBackPix(int32_t x, int32_t y) const
int32_t GetPixMat(BYTE byPix) const
LandscapeMode
Definition: C4Landscape.h:30
int32_t GetPixDensity(BYTE byPix) const
bool GBackSemiSolid(int32_t x, int32_t y)
Definition: C4Landscape.h:237
int32_t GBackDensity(int32_t x, int32_t y)
Definition: C4Landscape.h:227
bool SaveInitial()
int32_t GetMapZoom() const
int32_t AreaSolidCount(int32_t x, int32_t y, int32_t wdt, int32_t hgt) const
void Draw(C4TargetFacet &cgo, class C4FoWRegion *pLight=nullptr)
void ClearFreeRect(int32_t tx, int32_t ty, int32_t wdt, int32_t hgt)
CStdPalette * GetPal() const
const int32_t C4M_SemiSolid
Definition: C4Constants.h:174
void Clear(bool fClearMapCreator=true, bool fClearSky=true, bool fClearRenderer=true)
bool FindMatPath(int32_t &fx, int32_t &fy, int32_t ydir, int32_t mdens, int32_t mslide) const
bool ClearPix(int32_t tx, int32_t ty)
const int32_t C4MaxMaterial
Definition: C4Landscape.h:26
void SetGravity(C4Real g)
void CompileFunc(StdCompiler *pComp)
bool FindThrowingPosition(int32_t iTx, int32_t iTy, C4Real fXDir, C4Real fYDir, int32_t iHeight, int32_t &rX, int32_t &rY)
bool DoRelights()
bool ReplaceMapColor(BYTE iOldIndex, BYTE iNewIndex)
bool SaveMap(C4Group &hGroup) const
const int32_t C4M_Liquid
Definition: C4Constants.h:175
void FindMatTop(int32_t mat, int32_t &x, int32_t &y, bool distant_first) const
uint32_t DWORD
bool FindSolidGround(int32_t &rx, int32_t &ry, int32_t width)
int32_t _GetBackMat(int32_t x, int32_t y) const
static const uint8_t Transparent
Definition: C4Landscape.h:51
bool FindLevelGround(int32_t &rx, int32_t &ry, int32_t width, int32_t hrange)
bool GetLight(int32_t x, int32_t y)
int32_t _GetDensity(int32_t x, int32_t y) const
bool _GetLight(int32_t x, int32_t y)
void SetMapChanged()
bool DensitySolid(int32_t dens)
Definition: C4Landscape.h:199
int32_t GBackMat(int32_t x, int32_t y)
Definition: C4Landscape.h:222
bool GBackLiquid(int32_t x, int32_t y)
Definition: C4Landscape.h:242
bool ConstructionCheck(C4PropList *, int32_t iX, int32_t iY, C4Object *pByObj=nullptr)
int32_t GetWidth() const
int32_t PixCol2Tex(BYTE pixc)
Definition: C4Landscape.h:214
bool GBackSolid(int32_t x, int32_t y)
Definition: C4Landscape.h:232
void BlastFree(int32_t tx, int32_t ty, int32_t rad, int32_t caused_by=NO_OWNER, C4Object *by_object=nullptr, int32_t iMaxDensity=C4M_Vehicle)
bool _SetPix2(int32_t x, int32_t y, BYTE fgPix, BYTE bgPix)