File: BasicMapDamage.h

package info (click to toggle)
spring 0.81.2.1%2Bdfsg1-6
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 28,496 kB
  • ctags: 37,096
  • sloc: cpp: 238,659; ansic: 13,784; java: 12,175; awk: 3,428; python: 1,159; xml: 738; perl: 405; sh: 297; makefile: 267; pascal: 228; objc: 192
file content (58 lines) | stat: -rw-r--r-- 1,139 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#ifndef BASICMAPDAMAGE_H
#define BASICMAPDAMAGE_H

#include "MapDamage.h"

#include <deque>
#include <vector>

class CUnit;

class CBasicMapDamage : public IMapDamage
{
public:
	CBasicMapDamage(void);
	~CBasicMapDamage(void);

	struct ExploBuilding {
		int id;			//searching for building pointers inside these on dependentdied could be messy so we use the id
		float dif;		//how much to move the building and the ground under it
		int tx1,tx2,tz1,tz2;
	};

	struct Explo {
		float3 pos;
		float strength;
		float radius;
		std::vector<float> squares;
		std::vector<ExploBuilding> buildings;
		int ttl;
		int x1,x2,y1,y2;
	};

	std::deque<Explo*> explosions;

	struct RelosSquare{
		int x;
		int y;
		int neededUpdate;
		int numUnits;
	};
	std::deque<RelosSquare> relosQue;

	bool* inRelosQue;
	int relosSize;
	int neededLosUpdate;
	std::deque<int> relosUnits;

	float craterTable[10000];
	float invHardness[/*CMapInfo::NUM_TERRAIN_TYPES*/ 256];

	void Explosion(const float3& pos, float strength,float radius);
	void RecalcArea(int x1, int x2, int y1, int y2);
	void Update(void);

	void UpdateLos(void);
};

#endif /* BASICMAPDAMAGE_H */