File: weapon_beam.cpp

package info (click to toggle)
rafkill 1.2.2-3.3
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 13,268 kB
  • sloc: cpp: 13,508; makefile: 64; sh: 14
file content (46 lines) | stat: -rw-r--r-- 1,064 bytes parent folder | download | duplicates (12)
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
#include "hull.h"
#include "weapon_damage.h"
#include "weapon_beam.h"
#include "explode.h"
#include "ebox.h"
#include "defs.h"

Beam::Beam(int qx, int qy, double kx, double ky, int dam, HullObject * hnew, int al ):
Damage_Weapon(qx,qy,kx,ky,dam,hnew,al) {
}


bool Beam::Damage( double much ) {
	return false;
}

void Beam::Collided( SpaceObject * who, ExplosionClass ** explr, int M_EX ) {

	int mw = getMaxX() / 2;
	int mh = getMaxY() / 2;
	
	int mx1 = getX() - mw;
	int mx2 = getX() + mw;
	int my1 = getY() - mh;
	int my2 = getY() + mh;

	int aw = who->getMaxX() / 2;
	int ah = who->getMaxY() / 2;

	int ax1 = who->getX() - aw;;
	int ay1 = who->getY() - ah;
	int ax2 = who->getX() + aw;
	int ay2 = who->getY() + ah;

	int x1 = ax1 > mx1 ? ax1 : mx1;
	int x2 = mx2 < ax2 ? mx2 : ax2;
	int y1 = ay1 > my1 ? ay1 : my1;
	int y2 = ay2 < ay2 ? my2 : ay2;

	for ( int x = x1; x < x2; x += Util::rnd(5)+7 )
		for ( int y = y1; y < y2; y += Util::rnd(5)+7 )
			addExplode( explr, M_EX, new ExplosionClass(x,y,0,-20,Util::rnd(6) + 3 ) );


	// this->addCollide( who );
}