aboutsummaryrefslogtreecommitdiff
path: root/game/GameScene.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'game/GameScene.cpp')
-rw-r--r--game/GameScene.cpp117
1 files changed, 63 insertions, 54 deletions
diff --git a/game/GameScene.cpp b/game/GameScene.cpp
index a8fcb47..7803c9d 100644
--- a/game/GameScene.cpp
+++ b/game/GameScene.cpp
@@ -1,14 +1,33 @@
#include "GameScene.h"
#include "Config.h"
-#include "MoveCameraManualyScript.h"
#include "StartGameScript.h"
+#include "coins/CoinPoolSubScene.h"
+#include "coins/CoinSystemScript.h"
#include "background/BackgroundSubScene.h"
+#include "enemy/BattleScript.h"
+#include "enemy/EnemyBulletPool.h"
+#include "enemy/EnemyBulletSubScene.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 "missile/MissilePool.h"
+#include "missile/SpawnEvent.h"
+#include "player/PlayerBulletPool.h"
+#include "player/PlayerBulletSubScene.h"
#include "player/PlayerSubScene.h"
+#include "prefab/ZapperPoolSubScene.h"
+#include "scheduler/ObjectsScheduler.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>
#include <crepe/api/BehaviorScript.h>
#include <crepe/api/BoxCollider.h>
#include <crepe/api/Camera.h>
@@ -28,17 +47,32 @@ using namespace std;
void GameScene::load_scene() {
BackgroundSubScene background(*this);
- GameObject camera = new_object("camera", "camera", vec2(650, 0));
+ GameObject camera = new_object(CAMERA_NAME, "camera", vec2(650, 0));
camera.add_component<Camera>(
ivec2(990, 720), vec2(VIEWPORT_X, VIEWPORT_Y),
Camera::Data {
- .bg_color = Color::RED,
+ .bg_color = Color::BLACK,
}
);
- camera.add_component<BehaviorScript>().set_script<MoveCameraManualyScript>();
- camera.add_component<Rigidbody>(Rigidbody::Data {});
+ //camera.add_component<BehaviorScript>().set_script<MoveCameraManualyScript>();
+ camera.add_component<BehaviorScript>().set_script<CoinSystemScript>();
+ camera.add_component<BehaviorScript>().set_script<HudScript>();
+ camera.add_component<BehaviorScript>().set_script<SpeedScript>();
+ camera.add_component<BehaviorScript>().set_script<BattleScript>();
+ camera.add_component<BehaviorScript>().set_script<MissileSpawnEventHandler>();
+ camera.add_component<BehaviorScript>().set_script<ObjectsScheduler>();
+ camera.add_component<Rigidbody>(Rigidbody::Data {});
+ 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);
+ enemy_path_2.make_oval_path(100, 100, {0, 0}, 1.5708, true);
+ 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);
+ MissilePool missile_pool(*this);
+ WorkersSubScene workers(*this);
GameObject floor = new_object("floor", "game_world", vec2(0, 325));
floor.add_component<Rigidbody>(Rigidbody::Data {
@@ -64,58 +98,33 @@ void GameScene::load_scene() {
});
ceiling.add_component<BoxCollider>(vec2(INFINITY, 200));
+ ZapperPoolSubScene {*this};
+
GameObject start_game_script = new_object("start_game_script", "script", vec2(0, 0));
start_game_script.add_component<BehaviorScript>().set_script<StartGameScript>();
- // zapper, laser and missile (below) for testing purpose only!!!
- GameObject zapper = new_object("zapper", "zapper", vec2(1000, 0));
- Asset zapper_asset {"asset/obstacles/zapper/regular_zappers/zapEffect.png"};
- Sprite & zapper_sprite = zapper.add_component<Sprite>(
- zapper_asset,
- Sprite::Data {
- .sorting_in_layer = SORT_IN_LAY_OBSTACLES,
- .order_in_layer = 0,
- .size = vec2(100, 100),
- }
- );
- zapper.add_component<Rigidbody>(Rigidbody::Data {
- .body_type = Rigidbody::BodyType::KINEMATIC,
- .kinematic_collision = false,
- .collision_layer = COLL_LAY_ZAPPER,
- });
- zapper.add_component<BoxCollider>(vec2(100, 100));
- GameObject laser = new_object("laser", "laser", vec2(2000, 0));
- Asset laser_asset {"asset/obstacles/laser/laserPower.png"};
- Sprite & laser_sprite = laser.add_component<Sprite>(
- laser_asset,
- Sprite::Data {
- .sorting_in_layer = SORT_IN_LAY_OBSTACLES,
- .order_in_layer = 0,
- .size = vec2(100, 100),
- }
- );
- laser.add_component<Rigidbody>(Rigidbody::Data {
- .body_type = Rigidbody::BodyType::KINEMATIC,
- .kinematic_collision = false,
- .collision_layer = COLL_LAY_LASER,
- });
- laser.add_component<BoxCollider>(vec2(100, 100));
- GameObject missile = new_object("missile", "missile", vec2(4000, 0));
- Asset missile_asset {"asset/obstacles/missile/missile.png"};
- Sprite & missile_sprite = missile.add_component<Sprite>(
- missile_asset,
- Sprite::Data {
- .sorting_in_layer = SORT_IN_LAY_OBSTACLES,
- .order_in_layer = 0,
- .size = vec2(100, 100),
- }
- );
- missile.add_component<Rigidbody>(Rigidbody::Data {
- .body_type = Rigidbody::BodyType::KINEMATIC,
- .kinematic_collision = false,
- .collision_layer = COLL_LAY_MISSILE,
- });
- missile.add_component<BoxCollider>(vec2(100, 100));
+ //create coin pool
+ CoinPoolSubScene coin_system;
+ coin_system.create_coins(*this);
+ EnemyBulletPool enemy_bullet_pool;
+ enemy_bullet_pool.create_bullets(*this);
+ PlayerBulletPool player_bullet_pool;
+ player_bullet_pool.create_bullets(*this);
+ EnemyPool enemy_pool;
+ enemy_pool.create_enemies(*this);
+ HudSubScene hud;
+ hud.create(*this);
+
+ GameObject background_music = new_object("background_music", "audio", vec2(0, 0));
+ Asset background_music_asset {"asset/music/level.ogg"};
+ background_music.add_component<AudioSource>(background_music_asset);
+
+ GameObject boom_audio = new_object("boom_audio", "audio", vec2(0, 0));
+ Asset boom_audio_asset {"asset/sfx/window_smash.ogg"};
+ boom_audio.add_component<AudioSource>(boom_audio_asset);
+
+ EndGameSubScene endgamewindow;
+ endgamewindow.create(*this);
}
string GameScene::get_name() const { return "scene1"; }