-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCUfo.cpp
More file actions
executable file
·115 lines (97 loc) · 1.62 KB
/
CUfo.cpp
File metadata and controls
executable file
·115 lines (97 loc) · 1.62 KB
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include "CUfo.h"
#include "CRules.h"
CUfo::CUfo() : CAnimate()
{
mNextBomb = 0;
mNextEgg = 0;
mDropEgg = false;
mBombRate = 3000;
ResetBomb();
ResetEgg();
mWeaponsFree = false;
mEgg=NULL;
mBomb = NULL;
}
void CUfo::DropEgg(bool b)
{
mDropEgg = b;
}
void CUfo::EggHatch(bool b)
{
if (mEgg != NULL)
{
mEgg->EggHatch(b);
}
}
void CUfo::AddBomb(CBomb *bomb)
{
mBomb = bomb;
}
void CUfo::AddEgg(CEgg *egg)
{
mEgg = egg;
}
void CUfo::SetBombRate(int rate)
{
mBombRate = rate;
}
void CUfo::Transition()
{
if (mState == 1)
{
//printf("Ufo transition\n");
mState = 0;
Start(0, true);
}
}
void CUfo::ResetBomb()
{
float f = CRules::GetRandom();
mNextBomb = (int)((float)mBombRate * f);
}
void CUfo::ResetEgg()
{
mNextEgg = (int)((float)mBombRate * CRules::GetRandom());
}
bool CUfo::Tick()
{
if (mActive && mWeaponsFree)
{
if (mBomb != NULL && !mBomb->mActive && mNextBomb == 0)
{
int x, y;
y = mYPos + GetHeight();
x = mXPos + GetWidth() / 2 - (mBomb->GetWidth()) / 2;
mBomb->SetPos(x, y);
mBomb->mActive = true;
mBomb->SetMoverState(true);
mBomb->Start(0, true);
ResetBomb();
}
else if (mNextBomb > 0)
{
mNextBomb--;
}
if (mDropEgg && mEgg != NULL && !mEgg->mActive && mNextEgg == 0)
{
int x, y;
y = mYPos + GetHeight();
x = mXPos + GetWidth() / 2 - (mEgg->GetWidth()) / 2;
mEgg->SetPos(x, y);
mEgg->SetState(0);
mEgg->mActive = true;
mEgg->SetMoverState(true);
mEgg->Start(0, false);
ResetEgg();
}
else if (mNextEgg > 0)
{
mNextEgg--;
}
}
return(CAnimate::Tick());
}
void CUfo::SetVelocity(int v)
{
CAnimate::SetVelocity(v);
}