aboutsummaryrefslogtreecommitdiff
path: root/game
diff options
context:
space:
mode:
Diffstat (limited to 'game')
-rw-r--r--game/GameScene.cpp20
-rw-r--r--game/Random.cpp1
-rw-r--r--game/Random.h2
-rw-r--r--game/StartGameScript.cpp2
-rw-r--r--game/enemy/BattleScript.cpp52
-rw-r--r--game/enemy/BattleScript.h19
-rw-r--r--game/enemy/EnemyBulletPool.cpp2
-rw-r--r--game/enemy/EnemyBulletPool.h1
-rw-r--r--game/enemy/EnemyBulletScript.cpp28
-rw-r--r--game/enemy/EnemyBulletScript.h12
-rw-r--r--game/enemy/EnemyBulletSubScene.cpp38
-rw-r--r--game/enemy/EnemyPool.cpp2
-rw-r--r--game/enemy/EnemyPool.h1
-rw-r--r--game/enemy/EnemyScript.cpp98
-rw-r--r--game/enemy/EnemyScript.h16
-rw-r--r--game/enemy/EnemySubScene.cpp42
-rw-r--r--game/enemy/EnemySubScene.h2
-rw-r--r--game/main.cpp2
-rw-r--r--game/player/PlayerBulletPool.cpp2
-rw-r--r--game/player/PlayerBulletPool.h1
-rw-r--r--game/player/PlayerBulletScript.cpp30
-rw-r--r--game/player/PlayerBulletScript.h12
-rw-r--r--game/player/PlayerBulletSubScene.cpp41
-rw-r--r--game/player/PlayerBulletSubScene.h2
-rw-r--r--game/player/PlayerScript.cpp32
-rw-r--r--game/player/PlayerScript.h7
-rw-r--r--game/player/PlayerSubScene.cpp3
27 files changed, 242 insertions, 228 deletions
diff --git a/game/GameScene.cpp b/game/GameScene.cpp
index f09272d..4d3c8af 100644
--- a/game/GameScene.cpp
+++ b/game/GameScene.cpp
@@ -6,20 +6,21 @@
#include "coins/CoinSystemScript.h"
#include "background/BackgroundSubScene.h"
+#include "enemy/BattleScript.h"
+#include "enemy/EnemyBulletPool.h"
+#include "enemy/EnemyPool.h"
+#include "enemy/EnemySubScene.h"
#include "hud/HudScript.h"
#include "hud/HudSubScene.h"
#include "hud/SpeedScript.h"
#include "menus/endgame/EndGameSubScene.h"
-#include "player/PlayerSubScene.h"
#include "player/PlayerBulletPool.h"
#include "player/PlayerBulletSubScene.h"
-#include "enemy/EnemyPool.h"
-#include "enemy/EnemySubScene.h"
-#include "enemy/EnemyBulletPool.h"
-#include "enemy/BattleScript.h"
+#include "player/PlayerSubScene.h"
#include "workers/WorkersSubScene.h"
#include <cmath>
+#include <crepe/api/AI.h>
#include <crepe/api/Animator.h>
#include <crepe/api/Asset.h>
#include <crepe/api/AudioSource.h>
@@ -29,7 +30,6 @@
#include <crepe/api/Color.h>
#include <crepe/api/Event.h>
#include <crepe/api/GameObject.h>
-#include <crepe/api/AI.h>
#include <crepe/api/ParticleEmitter.h>
#include <crepe/api/Rigidbody.h>
#include <crepe/api/Script.h>
@@ -44,7 +44,7 @@ void GameScene::load_scene() {
BackgroundSubScene background(*this);
GameObject camera = new_object("camera", "camera", vec2(650, 0));
- Camera& camera_cam = camera.add_component<Camera>(
+ Camera & camera_cam = camera.add_component<Camera>(
ivec2(990, 720), vec2(VIEWPORT_X, VIEWPORT_Y),
Camera::Data {
.bg_color = Color::RED,
@@ -56,11 +56,11 @@ void GameScene::load_scene() {
camera.add_component<BehaviorScript>().set_script<SpeedScript>();
camera.add_component<BehaviorScript>().set_script<BattleScript>();
camera.add_component<Rigidbody>(Rigidbody::Data {});
- AI& enemy_path_1 = camera.add_component<AI>(400);
+ AI & enemy_path_1 = camera.add_component<AI>(400);
enemy_path_1.make_oval_path(100, 100, camera.transform.position, 1.5708, true);
- AI& enemy_path_2 = camera.add_component<AI>(400);
+ AI & enemy_path_2 = camera.add_component<AI>(400);
enemy_path_2.make_oval_path(100, 100, {0, 0}, 1.5708, true);
- AI& enemy_path_3 = camera.add_component<AI>(400);
+ AI & enemy_path_3 = camera.add_component<AI>(400);
enemy_path_3.make_oval_path(100, 100, {0, 0}, 1.5708, true);
// camer.add_component<AI>
PlayerSubScene player(*this);
diff --git a/game/Random.cpp b/game/Random.cpp
index 59be3c5..ace6245 100644
--- a/game/Random.cpp
+++ b/game/Random.cpp
@@ -25,4 +25,3 @@ unsigned Random::u(unsigned upper, unsigned lower) {
unsigned x = rand() % range;
return x + lower;
}
-
diff --git a/game/Random.h b/game/Random.h
index cf05e87..8af9669 100644
--- a/game/Random.h
+++ b/game/Random.h
@@ -6,6 +6,4 @@ public:
static double d(double upper = 1.0, double lower = 0.0);
static int i(int upper, int lower = 0);
static unsigned u(unsigned upper, unsigned lower = 0);
-
};
-
diff --git a/game/StartGameScript.cpp b/game/StartGameScript.cpp
index 8fbc17d..77a8598 100644
--- a/game/StartGameScript.cpp
+++ b/game/StartGameScript.cpp
@@ -1,7 +1,7 @@
-#include <iostream>
#include "StartGameScript.h"
#include "Config.h"
#include "api/BehaviorScript.h"
+#include <iostream>
#include <crepe/api/Animator.h>
#include <crepe/api/AudioSource.h>
diff --git a/game/enemy/BattleScript.cpp b/game/enemy/BattleScript.cpp
index 2564e3d..dde8da1 100644
--- a/game/enemy/BattleScript.cpp
+++ b/game/enemy/BattleScript.cpp
@@ -1,51 +1,51 @@
#include "BattleScript.h"
-#include <crepe/api/AI.h>
#include "EnemyScript.h"
+#include <crepe/api/AI.h>
#include <crepe/api/BehaviorScript.h>
#include <crepe/api/Metadata.h>
-#include "EnemyScript.h"
using namespace std;
using namespace crepe;
-BattleScript::BattleScript(){
- engine.seed(rd());
-}
-void BattleScript::init(){
- std::uniform_int_distribution<int> dist(2,10);
+BattleScript::BattleScript() { engine.seed(rd()); }
+void BattleScript::init() {
+ std::uniform_int_distribution<int> dist(2, 10);
int random_enemy_amount = dist(this->engine);
// this->create_battle(random_enemy_amount);
- this->subscribe<BattleStartEvent>([this](const BattleStartEvent& e) -> bool {
+ this->subscribe<BattleStartEvent>([this](const BattleStartEvent & e) -> bool {
return this->create_battle(e);
});
}
-void BattleScript::fixed_update(duration_t dt){
- if(!battle_active) return;
+void BattleScript::fixed_update(duration_t dt) {
+ if (!battle_active) return;
bool enemies_alive = false;
- RefVector<BehaviorScript> enemy_scripts = this->get_components_by_tag<BehaviorScript>("enemy");
-
- for(BehaviorScript& script : enemy_scripts){
- if(script.active){
+ RefVector<BehaviorScript> enemy_scripts
+ = this->get_components_by_tag<BehaviorScript>("enemy");
+
+ for (BehaviorScript & script : enemy_scripts) {
+ if (script.active) {
enemies_alive = true;
}
}
- if(!enemies_alive){
+ if (!enemies_alive) {
this->battle_active = false;
this->trigger_event<BattleWonEvent>();
}
}
-bool BattleScript::create_battle(const BattleStartEvent& e){
+bool BattleScript::create_battle(const BattleStartEvent & e) {
this->battle_active = true;
- RefVector<BehaviorScript> enemy_scripts = this->get_components_by_tag<BehaviorScript>("enemy");
- std::uniform_real_distribution<float> dist(10,30);
- for(int i = 0; i < e.num_enemies;i++){
- BehaviorScript& script = enemy_scripts[i];
+ RefVector<BehaviorScript> enemy_scripts
+ = this->get_components_by_tag<BehaviorScript>("enemy");
+ std::uniform_real_distribution<float> dist(10, 30);
+ for (int i = 0; i < e.num_enemies; i++) {
+ BehaviorScript & script = enemy_scripts[i];
script.active = true;
- this->trigger_event<SpawnEnemyEvent>(SpawnEnemyEvent{
- .speed = dist(engine),
- .column = i,
- },script.game_object_id);
-
+ this->trigger_event<SpawnEnemyEvent>(
+ SpawnEnemyEvent {
+ .speed = dist(engine),
+ .column = i,
+ },
+ script.game_object_id
+ );
}
return true;
}
-
diff --git a/game/enemy/BattleScript.h b/game/enemy/BattleScript.h
index f91c597..ddd0be1 100644
--- a/game/enemy/BattleScript.h
+++ b/game/enemy/BattleScript.h
@@ -1,25 +1,24 @@
#pragma once
-#include <crepe/api/Script.h>
#include <crepe/api/BehaviorScript.h>
#include <crepe/api/Event.h>
+#include <crepe/api/Script.h>
#include <random>
-struct BattleWonEvent : public crepe::Event{
+struct BattleWonEvent : public crepe::Event {};
-};
-
-struct BattleStartEvent : public crepe::Event{
- public:
+struct BattleStartEvent : public crepe::Event {
+public:
int num_enemies = 0;
};
-class BattleScript : public crepe::Script{
- public:
+class BattleScript : public crepe::Script {
+public:
BattleScript();
void init() override;
void fixed_update(crepe::duration_t dt) override;
- private:
+
+private:
bool battle_active = false;
std::random_device rd;
std::default_random_engine engine;
- bool create_battle(const BattleStartEvent& e);
+ bool create_battle(const BattleStartEvent & e);
};
diff --git a/game/enemy/EnemyBulletPool.cpp b/game/enemy/EnemyBulletPool.cpp
index 63afca3..3ee4816 100644
--- a/game/enemy/EnemyBulletPool.cpp
+++ b/game/enemy/EnemyBulletPool.cpp
@@ -1,5 +1,5 @@
-#include "EnemyBulletSubScene.h"
#include "EnemyBulletPool.h"
+#include "EnemyBulletSubScene.h"
using namespace std;
void EnemyBulletPool::create_bullets(crepe::Scene & scn) {
diff --git a/game/enemy/EnemyBulletPool.h b/game/enemy/EnemyBulletPool.h
index e0de02c..ee53fc4 100644
--- a/game/enemy/EnemyBulletPool.h
+++ b/game/enemy/EnemyBulletPool.h
@@ -5,6 +5,7 @@
class EnemyBulletPool {
public:
void create_bullets(crepe::Scene & scn);
+
private:
static constexpr int MAXIMUM_AMOUNT = 20;
};
diff --git a/game/enemy/EnemyBulletScript.cpp b/game/enemy/EnemyBulletScript.cpp
index 55160ab..65c0c23 100644
--- a/game/enemy/EnemyBulletScript.cpp
+++ b/game/enemy/EnemyBulletScript.cpp
@@ -1,39 +1,39 @@
-#include <iostream>
#include "EnemyBulletScript.h"
#include <crepe/api/Camera.h>
-#include <crepe/api/Rigidbody.h>
#include <crepe/api/Metadata.h>
+#include <crepe/api/Rigidbody.h>
+#include <iostream>
#include "EnemyConfig.h"
using namespace crepe;
using namespace std;
-void EnemyBulletScript::init(){
- this->subscribe<CollisionEvent>([this](const CollisionEvent& e) -> bool {
+void EnemyBulletScript::init() {
+ this->subscribe<CollisionEvent>([this](const CollisionEvent & e) -> bool {
return this->on_collide(e);
});
}
-void EnemyBulletScript::fixed_update(crepe::duration_t dt){
- Transform& transform = this->get_component<Transform>();
- Camera& camera = this->get_components_by_name<Camera>("camera").front();
- Transform& cam_transform = this->get_components_by_name<Transform>("camera").front();
- Rigidbody& bullet_body = this->get_component<Rigidbody>();
+void EnemyBulletScript::fixed_update(crepe::duration_t dt) {
+ Transform & transform = this->get_component<Transform>();
+ Camera & camera = this->get_components_by_name<Camera>("camera").front();
+ Transform & cam_transform = this->get_components_by_name<Transform>("camera").front();
+ Rigidbody & bullet_body = this->get_component<Rigidbody>();
//move
transform.position.x += bullet_body.data.linear_velocity.x * dt.count();
vec2 half_screen = camera.viewport_size / 2;
float despawn_location = cam_transform.position.x - half_screen.x - 50;
- if(transform.position.x < despawn_location){
+ if (transform.position.x < despawn_location) {
this->despawn_bullet();
}
}
-void EnemyBulletScript::despawn_bullet(){
- Transform& transform = this->get_component<Transform>();
- Rigidbody& bullet_body = this->get_component<Rigidbody>();
+void EnemyBulletScript::despawn_bullet() {
+ Transform & transform = this->get_component<Transform>();
+ Rigidbody & bullet_body = this->get_component<Rigidbody>();
bullet_body.active = false;
transform.position = ENEMY_BULLET_POOL_LOCATION;
}
-bool EnemyBulletScript::on_collide(const CollisionEvent& e){
+bool EnemyBulletScript::on_collide(const CollisionEvent & e) {
//cout << "collision happened with " << e.info.other.metadata.tag << endl;
this->despawn_bullet();
return false;
diff --git a/game/enemy/EnemyBulletScript.h b/game/enemy/EnemyBulletScript.h
index 822387f..7dab751 100644
--- a/game/enemy/EnemyBulletScript.h
+++ b/game/enemy/EnemyBulletScript.h
@@ -2,10 +2,10 @@
#include <crepe/api/BehaviorScript.h>
#include <crepe/api/Script.h>
-class EnemyBulletScript : public crepe::Script{
- public:
- void init() override;
- void fixed_update(crepe::duration_t dt) override;
- bool on_collide(const crepe::CollisionEvent& e);
- void despawn_bullet();
+class EnemyBulletScript : public crepe::Script {
+public:
+ void init() override;
+ void fixed_update(crepe::duration_t dt) override;
+ bool on_collide(const crepe::CollisionEvent & e);
+ void despawn_bullet();
};
diff --git a/game/enemy/EnemyBulletSubScene.cpp b/game/enemy/EnemyBulletSubScene.cpp
index 4f95ce4..edd8f0c 100644
--- a/game/enemy/EnemyBulletSubScene.cpp
+++ b/game/enemy/EnemyBulletSubScene.cpp
@@ -1,47 +1,49 @@
#include <string>
-#include <crepe/api/GameObject.h>
-#include <crepe/api/Scene.h>
+#include "../Config.h"
+#include "EnemyConfig.h"
+#include <crepe/api/AI.h>
+#include <crepe/api/Animator.h>
+#include <crepe/api/BehaviorScript.h>
#include <crepe/api/BoxCollider.h>
#include <crepe/api/CircleCollider.h>
+#include <crepe/api/GameObject.h>
#include <crepe/api/Rigidbody.h>
-#include <crepe/api/BehaviorScript.h>
-#include <crepe/api/Animator.h>
+#include <crepe/api/Scene.h>
#include <crepe/api/Sprite.h>
-#include <crepe/api/AI.h>
-#include "../Config.h"
-#include "EnemyConfig.h"
+#include "../Random.h"
+#include "EnemyBulletScript.h"
#include "EnemyBulletSubScene.h"
#include "EnemyScript.h"
-#include "EnemyBulletScript.h"
-#include "../Random.h"
using namespace crepe;
using namespace std;
-int EnemyBulletSubScene::create(Scene & scn, int counter){
+int EnemyBulletSubScene::create(Scene & scn, int counter) {
string unique_name = "enemy_bullet_" + to_string(counter++);
- GameObject bullet = scn.new_object(unique_name.c_str(),"enemy_bullet",ENEMY_BULLET_POOL_LOCATION,0,1);
-
- Rigidbody& bullet_body = bullet.add_component<Rigidbody>(Rigidbody::Data {
+ GameObject bullet = scn.new_object(
+ unique_name.c_str(), "enemy_bullet", ENEMY_BULLET_POOL_LOCATION, 0, 1
+ );
+
+ Rigidbody & bullet_body = bullet.add_component<Rigidbody>(Rigidbody::Data {
.gravity_scale = 0,
.body_type = Rigidbody::BodyType::KINEMATIC,
-
- .linear_velocity = vec2{-250,0},
+
+ .linear_velocity = vec2 {-250, 0},
.kinematic_collision = false,
.collision_layers = {COLL_LAY_MISSILE},
.collision_layer = COLL_LAY_BULLET
});
bullet_body.active = false;
- BoxCollider& bullet_collider = bullet.add_component<BoxCollider>(vec2(60, 30));
+ BoxCollider & bullet_collider = bullet.add_component<BoxCollider>(vec2(60, 30));
//bullet_collider.active = false;
Asset bullet_asset {"asset/other_effects/effect_smgbullet_x2.png"};
Sprite & bullet_sprite = bullet.add_component<Sprite>(
bullet_asset,
Sprite::Data {
- .flip = {true,false},
+ .flip = {true, false},
.sorting_in_layer = SORT_IN_LAY_OBSTACLES,
.order_in_layer = 1,
- .size = vec2(60,0),
+ .size = vec2(60, 0),
}
);
bullet.add_component<BehaviorScript>().set_script<EnemyBulletScript>();
diff --git a/game/enemy/EnemyPool.cpp b/game/enemy/EnemyPool.cpp
index 50d0e6a..a7179bf 100644
--- a/game/enemy/EnemyPool.cpp
+++ b/game/enemy/EnemyPool.cpp
@@ -1,5 +1,5 @@
-#include "EnemySubScene.h"
#include "EnemyPool.h"
+#include "EnemySubScene.h"
using namespace std;
void EnemyPool::create_enemies(crepe::Scene & scn) {
EnemySubScene enemy;
diff --git a/game/enemy/EnemyPool.h b/game/enemy/EnemyPool.h
index 916b930..f4d6765 100644
--- a/game/enemy/EnemyPool.h
+++ b/game/enemy/EnemyPool.h
@@ -5,6 +5,7 @@
class EnemyPool {
public:
void create_enemies(crepe::Scene & scn);
+
private:
static constexpr int MAXIMUM_AMOUNT = 10;
};
diff --git a/game/enemy/EnemyScript.cpp b/game/enemy/EnemyScript.cpp
index e87a58e..6558af5 100644
--- a/game/enemy/EnemyScript.cpp
+++ b/game/enemy/EnemyScript.cpp
@@ -1,109 +1,113 @@
-#include "../Config.h"
#include "EnemyScript.h"
+#include "../Config.h"
+#include "../Random.h"
+#include "EnemyConfig.h"
+#include <crepe/api/AI.h>
#include <crepe/api/Animator.h>
-#include <crepe/api/ParticleEmitter.h>
#include <crepe/api/BoxCollider.h>
-#include <crepe/api/AI.h>
+#include <crepe/api/ParticleEmitter.h>
#include <crepe/api/Rigidbody.h>
#include <crepe/api/Transform.h>
#include <crepe/types.h>
#include <random>
-#include "../Random.h"
-#include "EnemyConfig.h"
using namespace crepe;
using namespace std;
-EnemyScript::EnemyScript(){
+EnemyScript::EnemyScript() {
engine.seed(rd());
this->last_fired = std::chrono::steady_clock::now();
- this->shot_delay = std::chrono::duration<float>(3 + Random::f(1,0));
+ this->shot_delay = std::chrono::duration<float>(3 + Random::f(1, 0));
}
-void EnemyScript::init(){
- Metadata& meta = this->get_component<Metadata>();
- this->subscribe<SpawnEnemyEvent>([this](const SpawnEnemyEvent& e) -> bool{
- return this->spawn_enemy(e);
- },meta.game_object_id);
- this->subscribe<CollisionEvent>([this](const CollisionEvent& e) -> bool {
+void EnemyScript::init() {
+ Metadata & meta = this->get_component<Metadata>();
+ this->subscribe<SpawnEnemyEvent>(
+ [this](const SpawnEnemyEvent & e) -> bool { return this->spawn_enemy(e); },
+ meta.game_object_id
+ );
+ this->subscribe<CollisionEvent>([this](const CollisionEvent & e) -> bool {
return this->on_collide(e);
});
};
void EnemyScript::fixed_update(duration_t dt) {
- if(this->alive){
+ if (this->alive) {
return;
}
- Transform& transform = this->get_component<Transform>();
- Transform& player_transform = this->get_components_by_name<Transform>("player").front();
- Rigidbody& enemy_body = this->get_component<Rigidbody>();
- AI& ai_component = this->get_component<AI>();
-
+ Transform & transform = this->get_component<Transform>();
+ Transform & player_transform = this->get_components_by_name<Transform>("player").front();
+ Rigidbody & enemy_body = this->get_component<Rigidbody>();
+ AI & ai_component = this->get_component<AI>();
+
//transform.position += enemy_body.data.linear_velocity * dt.count();
- float direction_to_player_y = player_transform.position.y - transform.position.y;
+ float direction_to_player_y = player_transform.position.y - transform.position.y;
float distance_to_player_y = std::abs(direction_to_player_y);
float adjustment_speed = speed * (distance_to_player_y / MAX_DISTANCE);
adjustment_speed = std::clamp(adjustment_speed, MIN_SPEED, MAX_SPEED);
// Move the path nodes on the Y-axis
- for (vec2& path_node : ai_component.path) {
+ for (vec2 & path_node : ai_component.path) {
path_node.y += (direction_to_player_y > 0 ? 1 : -1) * adjustment_speed * dt.count();
}
//bullet fire logic:
auto now = std::chrono::steady_clock::now();
- std::chrono::duration<float> elapsed = now - last_fired;
+ std::chrono::duration<float> elapsed = now - last_fired;
if (elapsed > shot_delay) {
- this->shoot(transform.position,0);
+ this->shoot(transform.position, 0);
last_fired = now;
- this->shot_delay = std::chrono::duration<float>(Random::f(4,1));
+ this->shot_delay = std::chrono::duration<float>(Random::f(4, 1));
}
-
}
-bool EnemyScript::spawn_enemy(const SpawnEnemyEvent& e){
+bool EnemyScript::spawn_enemy(const SpawnEnemyEvent & e) {
this->speed = e.speed;
- AI& ai_component = this->get_component<AI>();
- Transform& transform = this->get_component<Transform>();
- Camera& camera = this->get_components_by_name<Camera>("camera").front();
- Transform& cam_transform = this->get_components_by_name<Transform>("camera").front();
+ AI & ai_component = this->get_component<AI>();
+ Transform & transform = this->get_component<Transform>();
+ Camera & camera = this->get_components_by_name<Camera>("camera").front();
+ Transform & cam_transform = this->get_components_by_name<Transform>("camera").front();
vec2 half_screen = camera.viewport_size / 2;
- float x_value = cam_transform.position.x + half_screen.x - 50 * (1 + e.column);
- uniform_real_distribution<float> dist(
+ float x_value = cam_transform.position.x + half_screen.x - 50 * (1 + e.column);
+ uniform_real_distribution<float> dist(
cam_transform.position.y - half_screen.y + 100,
cam_transform.position.y + half_screen.y - 100
- );
+ );
float random_height = dist(engine);
- vec2 spawn_location = {cam_transform.position.x + camera.viewport_size.x / 2 + 100,random_height};
+ vec2 spawn_location
+ = {cam_transform.position.x + camera.viewport_size.x / 2 + 100, random_height};
transform.position = spawn_location;
ai_component.path.clear();
- ai_component.make_oval_path(10, 10, vec2{x_value,random_height}, 1.5708, true);
+ ai_component.make_oval_path(10, 10, vec2 {x_value, random_height}, 1.5708, true);
ai_component.active = true;
this->last_fired = std::chrono::steady_clock::now();
return true;
}
-bool EnemyScript::on_collide(const CollisionEvent & e){
- if(e.info.other.metadata.tag == "player_bullet"){
+bool EnemyScript::on_collide(const CollisionEvent & e) {
+ if (e.info.other.metadata.tag == "player_bullet") {
this->despawn_enemy();
}
- BehaviorScript& enemy_script = this->get_component<BehaviorScript>();
+ BehaviorScript & enemy_script = this->get_component<BehaviorScript>();
enemy_script.active = false;
return false;
}
-void EnemyScript::despawn_enemy(){
- Transform& transform = this->get_component<Transform>();
+void EnemyScript::despawn_enemy() {
+ Transform & transform = this->get_component<Transform>();
transform.position = ENEMY_POOL_LOCATION;
- AI& ai_component = this->get_component<AI>();
+ AI & ai_component = this->get_component<AI>();
// Rigidbody& enemy_body
ai_component.active = false;
}
-void EnemyScript::shoot(const vec2& location,float angle){
- RefVector<Transform> bullet_transforms = this->get_components_by_tag<Transform>("enemy_bullet");
+void EnemyScript::shoot(const vec2 & location, float angle) {
+ RefVector<Transform> bullet_transforms
+ = this->get_components_by_tag<Transform>("enemy_bullet");
- for(Transform& bullet_pos : bullet_transforms){
- if(bullet_pos.position.x == 0 && bullet_pos.position.y == -750){
+ for (Transform & bullet_pos : bullet_transforms) {
+ if (bullet_pos.position.x == 0 && bullet_pos.position.y == -750) {
bullet_pos.position = location;
bullet_pos.position.x -= 20;
- Rigidbody& bullet_body = this->get_components_by_id<Rigidbody>(bullet_pos.game_object_id).front();
- BoxCollider bullet_collider = this->get_components_by_id<BoxCollider>(bullet_pos.game_object_id).front();
+ Rigidbody & bullet_body
+ = this->get_components_by_id<Rigidbody>(bullet_pos.game_object_id).front();
+ BoxCollider bullet_collider
+ = this->get_components_by_id<BoxCollider>(bullet_pos.game_object_id).front();
bullet_collider.active = true;
bullet_body.active = true;
return;
diff --git a/game/enemy/EnemyScript.h b/game/enemy/EnemyScript.h
index 7babe4d..42ecac4 100644
--- a/game/enemy/EnemyScript.h
+++ b/game/enemy/EnemyScript.h
@@ -1,24 +1,24 @@
#pragma once
+#include <chrono>
+#include <crepe/api/Camera.h>
#include <crepe/api/Event.h>
#include <crepe/api/Script.h>
-#include <crepe/api/Event.h>
-#include <crepe/api/Camera.h>
#include <random>
-#include <chrono>
-struct SpawnEnemyEvent : public crepe::Event{
+struct SpawnEnemyEvent : public crepe::Event {
float speed = 0;
int column = 0;
};
class EnemyScript : public crepe::Script {
- public:
+public:
EnemyScript();
void init() override;
void fixed_update(crepe::duration_t dt) override;
- void shoot(const crepe::vec2& position,float angle);
+ void shoot(const crepe::vec2 & position, float angle);
bool on_collide(const crepe::CollisionEvent & collisionData);
void despawn_enemy();
- bool spawn_enemy(const SpawnEnemyEvent& e);
- private:
+ bool spawn_enemy(const SpawnEnemyEvent & e);
+
+private:
std::random_device rd;
std::default_random_engine engine;
bool alive = false;
diff --git a/game/enemy/EnemySubScene.cpp b/game/enemy/EnemySubScene.cpp
index 82401a1..7d3e784 100644
--- a/game/enemy/EnemySubScene.cpp
+++ b/game/enemy/EnemySubScene.cpp
@@ -1,54 +1,53 @@
#include <string>
-
-#include <crepe/api/GameObject.h>
-#include <crepe/api/Scene.h>
+#include <crepe/api/AI.h>
+#include <crepe/api/Animator.h>
+#include <crepe/api/BehaviorScript.h>
#include <crepe/api/BoxCollider.h>
#include <crepe/api/CircleCollider.h>
+#include <crepe/api/GameObject.h>
#include <crepe/api/Rigidbody.h>
-#include <crepe/api/BehaviorScript.h>
-#include <crepe/api/Animator.h>
+#include <crepe/api/Scene.h>
#include <crepe/api/Sprite.h>
-#include <crepe/api/AI.h>
#include "../Config.h"
-#include "EnemySubScene.h"
-#include "EnemyScript.h"
#include "EnemyConfig.h"
+#include "EnemyScript.h"
+#include "EnemySubScene.h"
using namespace crepe;
using namespace std;
//#TODO add sound
-int EnemySubScene::create(Scene & scn,int enemy_counter){
+int EnemySubScene::create(Scene & scn, int enemy_counter) {
string unique_name = "enemy_" + to_string(enemy_counter++);
- GameObject enemy = scn.new_object(unique_name.c_str(),"enemy",ENEMY_POOL_LOCATION,0,1);
-
+ GameObject enemy = scn.new_object(unique_name.c_str(), "enemy", ENEMY_POOL_LOCATION, 0, 1);
+
enemy.add_component<Rigidbody>(Rigidbody::Data {
.gravity_scale = 0,
.body_type = Rigidbody::BodyType::DYNAMIC,
.max_linear_velocity = 400,
- .collision_layers = {COLL_LAY_BOT_TOP,COLL_LAY_PLAYER_BULLET},
+ .collision_layers = {COLL_LAY_BOT_TOP, COLL_LAY_PLAYER_BULLET},
.collision_layer = COLL_LAY_ENEMY,
-
+
});
Asset enemy_body_asset {"asset/workers/worker2Body.png"};
enemy.add_component<BoxCollider>(vec2(50, 50));
Sprite & enemy_body_sprite = enemy.add_component<Sprite>(
enemy_body_asset,
Sprite::Data {
- .flip = {true,false},
+ .flip = {true, false},
.sorting_in_layer = SORT_IN_LAY_WORKERS_FRONT,
.order_in_layer = 0,
.size = vec2(0, 50),
}
);
- Animator& body_animator = enemy.add_component<Animator>(
+ Animator & body_animator = enemy.add_component<Animator>(
enemy_body_sprite, ivec2(32, 32), uvec2(4, 8),
Animator::Data {
.fps = 5,
.col = 3,
.row = 1,
-
+
.looping = false,
}
);
@@ -58,7 +57,7 @@ int EnemySubScene::create(Scene & scn,int enemy_counter){
Sprite & enemy_head_sprite = enemy.add_component<Sprite>(
enemy_head_asset,
Sprite::Data {
- .flip = {true,false},
+ .flip = {true, false},
.sorting_in_layer = SORT_IN_LAY_WORKERS_FRONT,
.order_in_layer = 1,
.size = vec2(0, 50),
@@ -77,7 +76,7 @@ int EnemySubScene::create(Scene & scn,int enemy_counter){
Sprite & enemy_jetpack_sprite = enemy.add_component<Sprite>(
enemy_jetpack_asset,
Sprite::Data {
- .flip = {true,false},
+ .flip = {true, false},
.sorting_in_layer = SORT_IN_LAY_WORKERS_FRONT,
.order_in_layer = 2,
.size = vec2(0, 60),
@@ -92,10 +91,11 @@ int EnemySubScene::create(Scene & scn,int enemy_counter){
.looping = true,
}
);
-
- AI& ai_component = enemy.add_component<AI>(3000);
+
+ AI & ai_component = enemy.add_component<AI>(3000);
ai_component.path_follow_on();
- BehaviorScript& enemy_script = enemy.add_component<BehaviorScript>().set_script<EnemyScript>();
+ BehaviorScript & enemy_script
+ = enemy.add_component<BehaviorScript>().set_script<EnemyScript>();
enemy_script.active = false;
return enemy_counter;
}
diff --git a/game/enemy/EnemySubScene.h b/game/enemy/EnemySubScene.h
index 68bb9a1..3899250 100644
--- a/game/enemy/EnemySubScene.h
+++ b/game/enemy/EnemySubScene.h
@@ -6,5 +6,5 @@ class Scene;
class EnemySubScene {
public:
- int create(crepe::Scene & scn,int enemy_counter);
+ int create(crepe::Scene & scn, int enemy_counter);
};
diff --git a/game/main.cpp b/game/main.cpp
index 9b25444..858fad4 100644
--- a/game/main.cpp
+++ b/game/main.cpp
@@ -9,7 +9,7 @@ using namespace crepe;
int main() {
Engine gameloop;
-
+
gameloop.add_scene<MainMenuScene>();
gameloop.add_scene<ShopMenuScene>();
gameloop.add_scene<GameScene>();
diff --git a/game/player/PlayerBulletPool.cpp b/game/player/PlayerBulletPool.cpp
index 4cd115e..5285ec8 100644
--- a/game/player/PlayerBulletPool.cpp
+++ b/game/player/PlayerBulletPool.cpp
@@ -1,5 +1,5 @@
-#include "PlayerBulletSubScene.h"
#include "PlayerBulletPool.h"
+#include "PlayerBulletSubScene.h"
using namespace std;
void PlayerBulletPool::create_bullets(crepe::Scene & scn) {
diff --git a/game/player/PlayerBulletPool.h b/game/player/PlayerBulletPool.h
index a8ba2fb..9618d54 100644
--- a/game/player/PlayerBulletPool.h
+++ b/game/player/PlayerBulletPool.h
@@ -5,6 +5,7 @@
class PlayerBulletPool {
public:
void create_bullets(crepe::Scene & scn);
+
private:
static constexpr int MAXIMUM_AMOUNT = 20;
};
diff --git a/game/player/PlayerBulletScript.cpp b/game/player/PlayerBulletScript.cpp
index 6beb9f1..a76b7eb 100644
--- a/game/player/PlayerBulletScript.cpp
+++ b/game/player/PlayerBulletScript.cpp
@@ -1,41 +1,41 @@
#include <crepe/api/Camera.h>
-#include <crepe/api/Rigidbody.h>
#include <crepe/api/Metadata.h>
+#include <crepe/api/Rigidbody.h>
#include "PlayerBulletScript.h"
using namespace crepe;
using namespace std;
-void PlayerBulletScript::init(){
- this->subscribe<CollisionEvent>([this](const CollisionEvent& e) -> bool {
+void PlayerBulletScript::init() {
+ this->subscribe<CollisionEvent>([this](const CollisionEvent & e) -> bool {
return this->on_collide(e);
});
}
-void PlayerBulletScript::fixed_update(crepe::duration_t dt){
- Transform& transform = this->get_component<Transform>();
- Camera& camera = this->get_components_by_name<Camera>("camera").front();
- Transform& cam_transform = this->get_components_by_name<Transform>("camera").front();
- Rigidbody& bullet_body = this->get_component<Rigidbody>();
+void PlayerBulletScript::fixed_update(crepe::duration_t dt) {
+ Transform & transform = this->get_component<Transform>();
+ Camera & camera = this->get_components_by_name<Camera>("camera").front();
+ Transform & cam_transform = this->get_components_by_name<Transform>("camera").front();
+ Rigidbody & bullet_body = this->get_component<Rigidbody>();
transform.rotation += bullet_body.data.angular_velocity;
transform.position += bullet_body.data.linear_velocity * dt.count();
vec2 half_screen = camera.viewport_size / 2;
float despawn_location = cam_transform.position.x + half_screen.x + 50;
- if(transform.position.x > despawn_location){
+ if (transform.position.x > despawn_location) {
this->despawn_bullet();
}
}
-void PlayerBulletScript::despawn_bullet(){
- Transform& transform = this->get_component<Transform>();
- Rigidbody& bullet_body = this->get_component<Rigidbody>();
+void PlayerBulletScript::despawn_bullet() {
+ Transform & transform = this->get_component<Transform>();
+ Rigidbody & bullet_body = this->get_component<Rigidbody>();
bullet_body.active = false;
- BehaviorScript& bullet_script = this->get_component<BehaviorScript>();
+ BehaviorScript & bullet_script = this->get_component<BehaviorScript>();
bullet_script.active = false;
- transform.position = {0,-850};
+ transform.position = {0, -850};
}
-bool PlayerBulletScript::on_collide(const CollisionEvent& e){
+bool PlayerBulletScript::on_collide(const CollisionEvent & e) {
this->despawn_bullet();
return false;
}
diff --git a/game/player/PlayerBulletScript.h b/game/player/PlayerBulletScript.h
index 559b815..0637790 100644
--- a/game/player/PlayerBulletScript.h
+++ b/game/player/PlayerBulletScript.h
@@ -2,10 +2,10 @@
#include <crepe/api/BehaviorScript.h>
#include <crepe/api/Script.h>
-class PlayerBulletScript : public crepe::Script{
- public:
- void init() override;
- void fixed_update(crepe::duration_t dt) override;
- bool on_collide(const crepe::CollisionEvent& e);
- void despawn_bullet();
+class PlayerBulletScript : public crepe::Script {
+public:
+ void init() override;
+ void fixed_update(crepe::duration_t dt) override;
+ bool on_collide(const crepe::CollisionEvent & e);
+ void despawn_bullet();
};
diff --git a/game/player/PlayerBulletSubScene.cpp b/game/player/PlayerBulletSubScene.cpp
index 96c6b9a..62bcf3e 100644
--- a/game/player/PlayerBulletSubScene.cpp
+++ b/game/player/PlayerBulletSubScene.cpp
@@ -1,51 +1,52 @@
#include <string>
-#include <crepe/api/GameObject.h>
-#include <crepe/api/Scene.h>
+#include "../Config.h"
+#include <crepe/api/AI.h>
+#include <crepe/api/Animator.h>
+#include <crepe/api/BehaviorScript.h>
#include <crepe/api/BoxCollider.h>
#include <crepe/api/CircleCollider.h>
+#include <crepe/api/GameObject.h>
#include <crepe/api/Rigidbody.h>
-#include <crepe/api/BehaviorScript.h>
-#include <crepe/api/Animator.h>
+#include <crepe/api/Scene.h>
#include <crepe/api/Sprite.h>
-#include <crepe/api/AI.h>
-#include "../Config.h"
-
+#include "PlayerBulletScript.h"
#include "PlayerBulletSubScene.h"
#include "PlayerScript.h"
-#include "PlayerBulletScript.h"
using namespace crepe;
using namespace std;
-int PlayerBulletSubScene::create(Scene & scn,int counter){
+int PlayerBulletSubScene::create(Scene & scn, int counter) {
string unique_name = "player_bullet_" + to_string(counter++);
- GameObject player_bullet = scn.new_object(unique_name.c_str(),"player_bullet",vec2{0,-850},0,1);
-
- Rigidbody& player_bullet_body = player_bullet.add_component<Rigidbody>(Rigidbody::Data {
+ GameObject player_bullet
+ = scn.new_object(unique_name.c_str(), "player_bullet", vec2 {0, -850}, 0, 1);
+
+ Rigidbody & player_bullet_body = player_bullet.add_component<Rigidbody>(Rigidbody::Data {
.gravity_scale = 0,
.body_type = Rigidbody::BodyType::KINEMATIC,
- .linear_velocity = vec2{300,0},
+ .linear_velocity = vec2 {300, 0},
.angular_velocity = 150,
.kinematic_collision = false,
.collision_layers = {COLL_LAY_ENEMY},
-
+
.collision_layer = COLL_LAY_PLAYER_BULLET,
-
-
+
});
player_bullet_body.active = false;
- BoxCollider& player_bullet_collider = player_bullet.add_component<BoxCollider>(vec2(30, 30));
+ BoxCollider & player_bullet_collider
+ = player_bullet.add_component<BoxCollider>(vec2(30, 30));
Asset player_bullet_asset {"asset/other_effects/crepe.png"};
Sprite & player_bullet_sprite = player_bullet.add_component<Sprite>(
player_bullet_asset,
Sprite::Data {
- .flip = {true,false},
+ .flip = {true, false},
.sorting_in_layer = SORT_IN_LAY_OBSTACLES,
.order_in_layer = 1,
- .size = vec2(30,0),
+ .size = vec2(30, 0),
}
);
- player_bullet.add_component<BehaviorScript>().set_script<PlayerBulletScript>().active = false;
+ player_bullet.add_component<BehaviorScript>().set_script<PlayerBulletScript>().active
+ = false;
return counter;
}
diff --git a/game/player/PlayerBulletSubScene.h b/game/player/PlayerBulletSubScene.h
index 425d554..72eda62 100644
--- a/game/player/PlayerBulletSubScene.h
+++ b/game/player/PlayerBulletSubScene.h
@@ -6,5 +6,5 @@ class Scene;
class PlayerBulletSubScene {
public:
- int create(crepe::Scene & scn,int counter);
+ int create(crepe::Scene & scn, int counter);
};
diff --git a/game/player/PlayerScript.cpp b/game/player/PlayerScript.cpp
index 7bc5e55..d32da0b 100644
--- a/game/player/PlayerScript.cpp
+++ b/game/player/PlayerScript.cpp
@@ -4,9 +4,9 @@
#include "../enemy/BattleScript.h"
#include <crepe/api/Animator.h>
#include <crepe/api/AudioSource.h>
+#include <crepe/api/BoxCollider.h>
#include <crepe/api/ParticleEmitter.h>
#include <crepe/api/Rigidbody.h>
-#include <crepe/api/BoxCollider.h>
#include <crepe/api/Transform.h>
#include <crepe/types.h>
@@ -60,7 +60,8 @@ bool PlayerScript::on_collision(const CollisionEvent & ev) {
audio.play();
return false;
- } else if (ev.info.other.metadata.tag == "missile" || ev.info.other.metadata.tag == "enemy_bullet") {
+ } else if (ev.info.other.metadata.tag == "missile"
+ || ev.info.other.metadata.tag == "enemy_bullet") {
for (Animator & anim : animators) {
anim.active = true;
anim.set_anim(5);
@@ -91,19 +92,19 @@ void PlayerScript::fixed_update(crepe::duration_t dt) {
for (ParticleEmitter & emitter : emitters) {
emitter.data.boundary.offset = vec2(0, -transform.position.y);
}
-
+
Rigidbody & rb = this->get_components_by_name<Rigidbody>("player").front();
if (this->get_key_state(Keycode::P)) {
- this->trigger_event<BattleStartEvent>(BattleStartEvent{
+ this->trigger_event<BattleStartEvent>(BattleStartEvent {
.num_enemies = 5,
});
}
- if(this->get_key_state(Keycode::ENTER)){
+ if (this->get_key_state(Keycode::ENTER)) {
auto now = std::chrono::steady_clock::now();
std::chrono::duration<float> elapsed = now - last_fired;
if (elapsed > shot_delay) {
- this->shoot(transform.position,0);
+ this->shoot(transform.position, 0);
last_fired = now;
}
}
@@ -155,18 +156,23 @@ void PlayerScript::fixed_update(crepe::duration_t dt) {
}
}
-void PlayerScript::shoot(const vec2& location,float angle){
- RefVector<Transform> bullet_transforms = this->get_components_by_tag<Transform>("player_bullet");
+void PlayerScript::shoot(const vec2 & location, float angle) {
+ RefVector<Transform> bullet_transforms
+ = this->get_components_by_tag<Transform>("player_bullet");
- for(Transform& bullet_pos : bullet_transforms){
- if(bullet_pos.position.x == 0 && bullet_pos.position.y == -850){
+ for (Transform & bullet_pos : bullet_transforms) {
+ if (bullet_pos.position.x == 0 && bullet_pos.position.y == -850) {
bullet_pos.position = location;
bullet_pos.position.x += 20;
- Rigidbody& bullet_body = this->get_components_by_id<Rigidbody>(bullet_pos.game_object_id).front();
- BoxCollider bullet_collider = this->get_components_by_id<BoxCollider>(bullet_pos.game_object_id).front();
+ Rigidbody & bullet_body
+ = this->get_components_by_id<Rigidbody>(bullet_pos.game_object_id).front();
+ BoxCollider bullet_collider
+ = this->get_components_by_id<BoxCollider>(bullet_pos.game_object_id).front();
bullet_body.active = true;
- BehaviorScript& bullet_script = this->get_components_by_id<BehaviorScript>(bullet_pos.game_object_id).front();
+ BehaviorScript & bullet_script
+ = this->get_components_by_id<BehaviorScript>(bullet_pos.game_object_id)
+ .front();
bullet_script.active = true;
return;
}
diff --git a/game/player/PlayerScript.h b/game/player/PlayerScript.h
index 30f39c6..e7d860a 100644
--- a/game/player/PlayerScript.h
+++ b/game/player/PlayerScript.h
@@ -1,17 +1,18 @@
#pragma once
+#include <chrono>
#include <crepe/api/Event.h>
#include <crepe/api/Script.h>
-#include <chrono>
class PlayerScript : public crepe::Script {
public:
void init();
void fixed_update(crepe::duration_t dt);
-
+
private:
bool on_collision(const crepe::CollisionEvent & ev);
// bool on_key_up(const crepe::KeyReleaseEvent& ev);
- void shoot(const crepe::vec2& location,float angle);
+ void shoot(const crepe::vec2 & location, float angle);
+
private:
int prev_anim = 0;
std::chrono::time_point<std::chrono::steady_clock> last_fired;
diff --git a/game/player/PlayerSubScene.cpp b/game/player/PlayerSubScene.cpp
index 1203ca0..cf11162 100644
--- a/game/player/PlayerSubScene.cpp
+++ b/game/player/PlayerSubScene.cpp
@@ -149,7 +149,8 @@ PlayerSubScene::PlayerSubScene(Scene & scn) {
.body_type = Rigidbody::BodyType::DYNAMIC,
//.linear_velocity = vec2(PLAYER_SPEED * 0.02, 0),
.collision_layers
- = {COLL_LAY_BOT_TOP, COLL_LAY_ZAPPER, COLL_LAY_LASER, COLL_LAY_MISSILE,COLL_LAY_BULLET},
+ = {COLL_LAY_BOT_TOP, COLL_LAY_ZAPPER, COLL_LAY_LASER, COLL_LAY_MISSILE, COLL_LAY_BULLET
+ },
.collision_layer = COLL_LAY_PLAYER,
});
player.add_component<BehaviorScript>().set_script<PlayerScript>().active = true;