-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathValleyLevel.cpp
More file actions
126 lines (98 loc) · 3.14 KB
/
Copy pathValleyLevel.cpp
File metadata and controls
126 lines (98 loc) · 3.14 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
116
117
118
119
120
121
122
123
124
125
126
#include "headers.h"
#include "ValleyLevel.h"
//Constructors / Descructors
ValleyLevel::ValleyLevel(PopUpText* popUpText) :
Level{popUpText}
{
tileMapNumber = 1;
levelType = Type::Valley;
monstersToKill = 4;
m_popUpText->showText("Kill All Monsters", 1900.0f, true);
doorsPosition = sf::Vector2f{ 40 * Constants::gridSizeF, 19 * Constants::gridSizeF };
playerSpawnPosition = sf::Vector2f{ 8 * Constants::gridSizeF, 26 * Constants::gridSizeF };
}
ValleyLevel::~ValleyLevel()
{
}
//Public functions
void ValleyLevel::initBackground(sf::RectangleShape& background, sf::Texture& backgroundTexture)
{
sf::VideoMode screenSize{ sf::VideoMode::getDesktopMode() };
if (!backgroundTexture.loadFromFile("Textures/GameStateBackground.jpg"))
{
std::cout << "ERROR::ValleyLevel::Background texture could not load\n";
}
background.setSize(sf::Vector2f{
static_cast<float>(screenSize.width) * 1.5f,
static_cast<float>(screenSize.height) * 1.5f
}
);
//this->moveBackgroundProportionallyToMap();
background.setTexture(&backgroundTexture);
}
// @ UPDATE @
void ValleyLevel::update()
{
}
// @ RENDER @
void ValleyLevel::render(sf::RenderTarget* target, const sf::Vector2f& lightSource,
const sf::Vector2f& viewCenter)
{
}
bool ValleyLevel::isLevelCompleted()
{
if (killedMonsters >= monstersToKill)
{
return true;
}
else
{
return false;
}
}
void ValleyLevel::resetLevel()
{
killedMonsters = 0;
}
Enemy* ValleyLevel::spawnEnemies(Timer& spawnTimer, std::vector<Enemy*>& enemies)
{
if (spawnTimer.getElapsedTime() > spawnTimer.getTimeMAX())
{
int spawnRandomEnemy{ getRandomInt(1,100) };
if (spawnRandomEnemy < 25)
{
enemies.push_back(new Enemy{ *GameResources::batTexture });
enemies.back()->setBasicFrame(sf::IntRect{ 2,4,139,69 });
enemies.back()->setScale(Constants::batScale);
enemies.back()->giveEnemyType(Enemy::Type::flying);
enemies.back()->setMaxHP(Constants::batMaxHP);
enemies.back()->whatIsThisEnemy(Enemy::AllEnemies::bat);
enemies.back()->setSingleAnimationBounds(210.0f, 300.0f, 300.0f);
}
else if (spawnRandomEnemy >= 25 && spawnRandomEnemy < 50)
{
enemies.push_back(new Enemy{ *GameResources::ninjaTexture });
enemies.back()->setBasicFrame(sf::IntRect{ 2,2,45,43 });
enemies.back()->setJumpingAndFallingFrame(sf::IntRect{ 1,46,45,43 }, sf::IntRect{ 1,99,45,43 });
enemies.back()->setAnimationStateBounds(50.0f, 330.0f, 1.0f, 50.0f, 20.0f, 154.0f);
enemies.back()->setScale(Constants::ninjaScale);
enemies.back()->setMaxHP(Constants::ninjaMaxHP);
enemies.back()->giveEnemyType(Enemy::Type::walking);
enemies.back()->whatIsThisEnemy(Enemy::AllEnemies::ninja);
}
else if (spawnRandomEnemy >= 50)
{
enemies.push_back(new Enemy{ *GameResources::birdTexture });
enemies.back()->setBasicFrame(sf::IntRect{ 1,1,65,63 });
enemies.back()->setScale(Constants::birdScale);
enemies.back()->setMaxHP(Constants::birdMaxHP);
enemies.back()->giveEnemyType(Enemy::Type::flying);
enemies.back()->whatIsThisEnemy(Enemy::AllEnemies::bird);
enemies.back()->setSingleAnimationBounds(70.0f, 640.0f, 100.0f);
}
spawnTimer.restart();
return enemies.back();
}
else
return nullptr;
}