aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--game/CMakeLists.txt5
-rw-r--r--game/GameScene.cpp1
-rw-r--r--game/PreviewScene.cpp9
-rw-r--r--game/QuitScript.cpp21
-rw-r--r--game/QuitScript.h11
-rw-r--r--game/hud/HudScript.cpp3
-rw-r--r--game/menus/ButtonNextMainMenuSubScript.cpp2
-rw-r--r--game/menus/ButtonReplaySubScript.cpp8
-rw-r--r--game/menus/ButtonSubScene.cpp15
-rw-r--r--game/menus/endgame/EndGameSubScene.cpp21
-rw-r--r--game/menus/endgame/EndGameSubScript.cpp26
-rw-r--r--game/menus/mainmenu/MainMenuScene.cpp2
-rw-r--r--game/menus/shop/ButtonBuySelectBubbleScript.cpp18
-rw-r--r--game/menus/shop/ButtonBuySelectBulletScript.cpp18
-rw-r--r--game/menus/shop/ShopLoadScript.cpp73
-rw-r--r--game/menus/shop/ShopMenuScene.cpp21
-rw-r--r--game/menus/shop/Shopconfig.h2
-rw-r--r--game/missile/AlertScript.cpp38
-rw-r--r--game/missile/AlertScript.h11
-rw-r--r--game/missile/AlertSubScene.cpp33
-rw-r--r--game/missile/AlertSubScene.h8
-rw-r--r--game/missile/MissilePool.cpp2
-rw-r--r--game/missile/MissileScript.cpp21
-rw-r--r--game/missile/MissileSubScene.cpp12
-rw-r--r--game/missile/SpawnEvent.cpp20
-rw-r--r--game/preview/PreviewReplaySubScript.cpp19
-rw-r--r--game/preview/PreviewReplaySubScript.h1
-rw-r--r--game/preview/PreviewStartRecSubScript.cpp1
-rw-r--r--game/preview/PreviewStopRecSubScript.cpp1
29 files changed, 278 insertions, 145 deletions
diff --git a/game/CMakeLists.txt b/game/CMakeLists.txt
index 1a03b20..a94beca 100644
--- a/game/CMakeLists.txt
+++ b/game/CMakeLists.txt
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.28)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
-set(CMAKE_BUILD_TYPE Debug)
+set(CMAKE_BUILD_TYPE Release)
project(game C CXX)
add_subdirectory(../src crepe)
@@ -44,6 +44,8 @@ target_sources(main PUBLIC
missile/MissilePool.cpp
missile/MissileScript.cpp
missile/MissileSubScene.cpp
+ missile/AlertSubScene.cpp
+ missile/AlertScript.cpp
missile/SpawnEvent.cpp
#scheduling
@@ -63,6 +65,7 @@ target_sources(main PUBLIC
GameScene.cpp
MoveCameraManualyScript.cpp
StartGameScript.cpp
+ QuitScript.cpp
# player
player/PlayerScript.cpp
diff --git a/game/GameScene.cpp b/game/GameScene.cpp
index ea55f7b..7803c9d 100644
--- a/game/GameScene.cpp
+++ b/game/GameScene.cpp
@@ -1,6 +1,5 @@
#include "GameScene.h"
#include "Config.h"
-#include "MoveCameraManualyScript.h"
#include "StartGameScript.h"
#include "coins/CoinPoolSubScene.h"
#include "coins/CoinSystemScript.h"
diff --git a/game/PreviewScene.cpp b/game/PreviewScene.cpp
index 6871961..d9801a7 100644
--- a/game/PreviewScene.cpp
+++ b/game/PreviewScene.cpp
@@ -92,7 +92,6 @@ void PreviewScene::load_scene() {
HudSubScene hud;
hud.create(*this);
-
const float Y_POS_BUTTONS = -220;
const float X_POS_BUTTONS = -150;
const float X_POS_BUTTONS_SPACING = 145;
@@ -102,7 +101,7 @@ void PreviewScene::load_scene() {
ButtonSubScene::Data {
.text = "BACK",
.text_width = 60,
- .position = {X_POS_BUTTONS,Y_POS_BUTTONS},
+ .position = {X_POS_BUTTONS, Y_POS_BUTTONS},
.script_type = ButtonSubScene::ScriptSelect::NEXT,
.button_type = ButtonSubScene::ButtonSelect::BACK,
.scale = 0.6,
@@ -117,7 +116,7 @@ void PreviewScene::load_scene() {
ButtonSubScene::Data {
.text = "START REC",
.text_width = 130,
- .position = {X_POS_BUTTONS+X_POS_BUTTONS_SPACING,Y_POS_BUTTONS},
+ .position = {X_POS_BUTTONS + X_POS_BUTTONS_SPACING, Y_POS_BUTTONS},
.script_type = ButtonSubScene::ScriptSelect::PREVIEW_START,
.button_type = ButtonSubScene::ButtonSelect::LARGE,
.scale = 0.6,
@@ -133,7 +132,7 @@ void PreviewScene::load_scene() {
ButtonSubScene::Data {
.text = "STOP REC",
.text_width = 120,
- .position = {X_POS_BUTTONS+X_POS_BUTTONS_SPACING*2,Y_POS_BUTTONS},
+ .position = {X_POS_BUTTONS + X_POS_BUTTONS_SPACING * 2, Y_POS_BUTTONS},
.script_type = ButtonSubScene::ScriptSelect::PREVIEW_STOP,
.button_type = ButtonSubScene::ButtonSelect::LARGE,
.scale = 0.6,
@@ -149,7 +148,7 @@ void PreviewScene::load_scene() {
ButtonSubScene::Data {
.text = "REPLAY",
.text_width = 90,
- .position = {X_POS_BUTTONS+X_POS_BUTTONS_SPACING*3,Y_POS_BUTTONS},
+ .position = {X_POS_BUTTONS + X_POS_BUTTONS_SPACING * 3, Y_POS_BUTTONS},
.script_type = ButtonSubScene::ScriptSelect::PREVIEW_REPLAY,
.button_type = ButtonSubScene::ButtonSelect::LARGE,
.scale = 0.6,
diff --git a/game/QuitScript.cpp b/game/QuitScript.cpp
new file mode 100644
index 0000000..0c9f55a
--- /dev/null
+++ b/game/QuitScript.cpp
@@ -0,0 +1,21 @@
+
+
+#include "QuitScript.h"
+
+#include <crepe/api/Event.h>
+#include <crepe/api/KeyCodes.h>
+
+using namespace crepe;
+
+bool QuitScript::on_event(const KeyPressEvent & ev) {
+ if (Keycode::ESCAPE == ev.key) {
+ trigger_event<ShutDownEvent>(ShutDownEvent {});
+ }
+ return false;
+}
+
+void QuitScript::init() {
+ subscribe<KeyPressEvent>([this](const KeyPressEvent & ev) -> bool {
+ return this->on_event(ev);
+ });
+}
diff --git a/game/QuitScript.h b/game/QuitScript.h
new file mode 100644
index 0000000..b79a744
--- /dev/null
+++ b/game/QuitScript.h
@@ -0,0 +1,11 @@
+#pragma once
+
+#include <crepe/api/Script.h>
+
+class QuitScript : public crepe::Script {
+private:
+ bool on_event(const crepe::KeyPressEvent & ev);
+
+public:
+ void init();
+};
diff --git a/game/hud/HudScript.cpp b/game/hud/HudScript.cpp
index 3fb7a77..e4aeae7 100644
--- a/game/hud/HudScript.cpp
+++ b/game/hud/HudScript.cpp
@@ -3,6 +3,7 @@
#include "../Config.h"
#include "../Events.h"
+#include "api/KeyCodes.h"
#include "menus/endgame/EndGameSubScript.h"
#include <climits>
@@ -37,7 +38,7 @@ void HudScript::init() {
}
bool HudScript::toggle_fps(crepe::KeyPressEvent ev) {
- if (ev.key != Keycode::END) return false;
+ if (ev.key != Keycode::D1) return false;
Text & txt_fps = this->get_components_by_name<Text>(HUD_FPS).front();
this->show_fps = !this->show_fps;
if (this->show_fps) {
diff --git a/game/menus/ButtonNextMainMenuSubScript.cpp b/game/menus/ButtonNextMainMenuSubScript.cpp
index 631b4d3..63a2777 100644
--- a/game/menus/ButtonNextMainMenuSubScript.cpp
+++ b/game/menus/ButtonNextMainMenuSubScript.cpp
@@ -27,7 +27,7 @@ bool ButtonNextMainMenuSubScript::on_button_press(const ButtonPressEvent & e) {
for (AudioSource & audio : audios) {
audio.stop();
}
-
+
this->trigger_event<DeleteRecordingEvent>();
SaveManager & savemgr = this->get_save_manager();
diff --git a/game/menus/ButtonReplaySubScript.cpp b/game/menus/ButtonReplaySubScript.cpp
index 55e718d..01cccbf 100644
--- a/game/menus/ButtonReplaySubScript.cpp
+++ b/game/menus/ButtonReplaySubScript.cpp
@@ -20,24 +20,24 @@ void ButtonReplaySubScript::init() {
this->subscribe<DeleteRecordingEvent>([this](const DeleteRecordingEvent & e) {
return this->delete_recording();
});
- if(DISABLE_REPLAY)return;
+ if (DISABLE_REPLAY) return;
replay.record_start();
}
bool ButtonReplaySubScript::on_button_press(const ButtonPressEvent & e) {
- if(DISABLE_REPLAY)return false;
+ if (DISABLE_REPLAY) return false;
replay.play(this->recording);
return false;
}
bool ButtonReplaySubScript::set_recording() {
- if(DISABLE_REPLAY)return false;
+ if (DISABLE_REPLAY) return false;
this->recording = replay.record_end();
return false;
}
bool ButtonReplaySubScript::delete_recording() {
- if(DISABLE_REPLAY)return false;
+ if (DISABLE_REPLAY) return false;
replay.release(this->recording);
return false;
}
diff --git a/game/menus/ButtonSubScene.cpp b/game/menus/ButtonSubScene.cpp
index baf154c..1fe6b03 100644
--- a/game/menus/ButtonSubScene.cpp
+++ b/game/menus/ButtonSubScene.cpp
@@ -79,23 +79,22 @@ void ButtonSubScene::set_script(crepe::GameObject & button_object, const Data &
.set_script<ButtonShowCreditsSubScript>();
break;
case ScriptSelect::PREVIEW_REPLAY:
- button_object.add_component<BehaviorScript>()
- .set_script<PreviewReplaySubScript>();
+ button_object.add_component<BehaviorScript>().set_script<PreviewReplaySubScript>();
break;
case ScriptSelect::PREVIEW_START:
- button_object.add_component<BehaviorScript>()
- .set_script<PreviewStartRecSubScript>();
+ button_object.add_component<BehaviorScript>().set_script<PreviewStartRecSubScript>(
+ );
break;
case ScriptSelect::PREVIEW_STOP:
- button_object.add_component<BehaviorScript>()
- .set_script<PreviewStopRecSubScript>();
+ button_object.add_component<BehaviorScript>().set_script<PreviewStopRecSubScript>(
+ );
break;
case ScriptSelect::SHOP_BULLET:
- button_object.add_component<BehaviorScript>()
+ button_object.add_component<BehaviorScript>()
.set_script<ButtonBuySelectBulletScript>();
break;
case ScriptSelect::SHOP_BUBBLE:
- button_object.add_component<BehaviorScript>()
+ button_object.add_component<BehaviorScript>()
.set_script<ButtonBuySelectBubbleScript>();
break;
case ScriptSelect::NONE:
diff --git a/game/menus/endgame/EndGameSubScene.cpp b/game/menus/endgame/EndGameSubScene.cpp
index 0b72bdc..b33072a 100644
--- a/game/menus/endgame/EndGameSubScene.cpp
+++ b/game/menus/endgame/EndGameSubScene.cpp
@@ -73,21 +73,24 @@ void EndGameSubScene::create(Scene & scn) {
.world_space = false,
.text_color = Color::WHITE,
},
- vec2 {0, Y_SPACING+Y_OFFSET} + FONTOFFSET, DISTANCE_STRING
+ vec2 {0, Y_SPACING + Y_OFFSET} + FONTOFFSET, DISTANCE_STRING
);
// Highscore
const string HIGHSCORE_STRING = "NEW HIGHSCORE";
GameObject highscore = scn.new_object("highscore_endgame", "highscore_tag_end");
crepe::vec2 size_highscore = {200, (200.0f / HIGHSCORE_STRING.size()) * 2};
- highscore.add_component<Text>(
- size_highscore, FONT,
- Text::Data {
- .world_space = false,
- .text_color = Color::WHITE,
- },
- vec2 {0, Y_SPACING*2+Y_OFFSET} + FONTOFFSET, HIGHSCORE_STRING
- ).active = false;
+ highscore
+ .add_component<Text>(
+ size_highscore, FONT,
+ Text::Data {
+ .world_space = false,
+ .text_color = Color::WHITE,
+ },
+ vec2 {0, Y_SPACING * 2 + Y_OFFSET} + FONTOFFSET, HIGHSCORE_STRING
+ )
+ .active
+ = false;
// Buttons
vec2 button_position = {190, 190};
diff --git a/game/menus/endgame/EndGameSubScript.cpp b/game/menus/endgame/EndGameSubScript.cpp
index e081350..6793f3e 100644
--- a/game/menus/endgame/EndGameSubScript.cpp
+++ b/game/menus/endgame/EndGameSubScript.cpp
@@ -1,9 +1,9 @@
#include "EndGameSubScript.h"
+#include "../../Config.h"
#include "../../Events.h"
#include "../ButtonReplaySubScript.h"
#include "../IFloatingWindowScript.h"
-#include "../../Config.h"
#include "ValueBroker.h"
#include "manager/SaveManager.h"
@@ -60,11 +60,13 @@ bool EndGameSubScript::reset_timescale() {
return false;
}
-bool EndGameSubScript::showscore(){
- // Gather text
+bool EndGameSubScript::showscore() {
+ // Gather text
Text & coins_text = this->get_components_by_name<Text>("gold_endgame").front().get();
- Text & distance_text = this->get_components_by_name<Text>("distance_endgame").front().get();
- Text & highscore_text = this->get_components_by_name<Text>("highscore_endgame").front().get();
+ Text & distance_text
+ = this->get_components_by_name<Text>("distance_endgame").front().get();
+ Text & highscore_text
+ = this->get_components_by_name<Text>("highscore_endgame").front().get();
highscore_text.active = false;
// Gather saved data
@@ -75,20 +77,24 @@ bool EndGameSubScript::showscore(){
int distance_game = savemgr.get<int>(DISTANCE_GAME, 0).get();
// Show highscore
- if(distance_run > distance_game) highscore_text.active = true;
+ if (distance_run > distance_game) highscore_text.active = true;
const float CHAR_SIZE_DIS = 20;
// Show distance
- std::string distance_string = "DISTANCE:" + distance.get();
+ std::string distance_string = "DISTANCE:" + distance.get();
distance_text.text = distance_string;
- crepe::vec2 size_distance = {CHAR_SIZE_DIS*distance_string.size(), (CHAR_SIZE_DIS*distance_string.size() / distance_string.size()) * 2};
+ crepe::vec2 size_distance
+ = {CHAR_SIZE_DIS * distance_string.size(),
+ (CHAR_SIZE_DIS * distance_string.size() / distance_string.size()) * 2};
distance_text.dimensions = size_distance;
const float CHAR_SIZE_COIN = 16;
// Show coins
- std::string coins_string = "Coins:" + coins.get();
+ std::string coins_string = "Coins:" + coins.get();
coins_text.text = coins_string;
- crepe::vec2 size_coins = {CHAR_SIZE_COIN*coins_string.size(), (CHAR_SIZE_COIN*coins_string.size() / coins_string.size()) * 2};
+ crepe::vec2 size_coins
+ = {CHAR_SIZE_COIN * coins_string.size(),
+ (CHAR_SIZE_COIN * coins_string.size() / coins_string.size()) * 2};
coins_text.dimensions = size_coins;
return false;
diff --git a/game/menus/mainmenu/MainMenuScene.cpp b/game/menus/mainmenu/MainMenuScene.cpp
index baeca39..c5d2030 100644
--- a/game/menus/mainmenu/MainMenuScene.cpp
+++ b/game/menus/mainmenu/MainMenuScene.cpp
@@ -2,6 +2,7 @@
#include "MainMenuScene.h"
#include "CreditsSubScene.h"
#include "MainMenuConfig.h"
+#include "QuitScript.h"
#include "TransitionStartSubScript.h"
#include "../ButtonSubScene.h"
@@ -33,6 +34,7 @@ void MainMenuScene::load_scene() {
}
);
camera_object.add_component<BehaviorScript>().set_script<TransitionStartSubScript>();
+ camera_object.add_component<BehaviorScript>().set_script<QuitScript>();
//Button menu
GameObject menu_button = this->new_object(MENU_BUTTON_NAME, MENU_BUTTON_NAME, MENU_OFFSET);
diff --git a/game/menus/shop/ButtonBuySelectBubbleScript.cpp b/game/menus/shop/ButtonBuySelectBubbleScript.cpp
index 21dbe1a..741afde 100644
--- a/game/menus/shop/ButtonBuySelectBubbleScript.cpp
+++ b/game/menus/shop/ButtonBuySelectBubbleScript.cpp
@@ -17,19 +17,17 @@ void ButtonBuySelectBubbleScript::init() {
bool ButtonBuySelectBubbleScript::on_button_press(const ButtonPressEvent & e) {
SaveManager & save = this->get_save_manager();
- ValueBroker<int> buy_bullet = save.get<int>(BUY_BUBBLE_SAVE,0);
- if(!buy_bullet.get()){
- ValueBroker<int> coins = save.get<int>(TOTAL_COINS_GAME,0);
- if(coins.get() >= 1000)
- {
+ ValueBroker<int> buy_bullet = save.get<int>(BUY_BUBBLE_SAVE, 0);
+ if (!buy_bullet.get()) {
+ ValueBroker<int> coins = save.get<int>(TOTAL_COINS_GAME, 0);
+ if (coins.get() >= 1000) {
int coin = coins.get();
coin -= 1000;
- save.set(TOTAL_COINS_GAME,coin);
- save.set(BUY_BUBBLE_SAVE,1);
+ save.set(TOTAL_COINS_GAME, coin);
+ save.set(BUY_BUBBLE_SAVE, 1);
}
- }
- else {
- save.set(JETPACK_PARTICLES,1);
+ } else {
+ save.set(JETPACK_PARTICLES, 1);
}
this->trigger_event<ShopUpdate>();
return false;
diff --git a/game/menus/shop/ButtonBuySelectBulletScript.cpp b/game/menus/shop/ButtonBuySelectBulletScript.cpp
index 71d8b76..d30849c 100644
--- a/game/menus/shop/ButtonBuySelectBulletScript.cpp
+++ b/game/menus/shop/ButtonBuySelectBulletScript.cpp
@@ -17,19 +17,17 @@ void ButtonBuySelectBulletScript::init() {
bool ButtonBuySelectBulletScript::on_button_press(const ButtonPressEvent & e) {
SaveManager & save = this->get_save_manager();
- ValueBroker<int> buy_bullet = save.get<int>(BUY_BULLET_SAVE,0);
- if(!buy_bullet.get()){
- ValueBroker<int> coins = save.get<int>(TOTAL_COINS_GAME,0);
- if(coins.get() >= 0)
- {
+ ValueBroker<int> buy_bullet = save.get<int>(BUY_BULLET_SAVE, 0);
+ if (!buy_bullet.get()) {
+ ValueBroker<int> coins = save.get<int>(TOTAL_COINS_GAME, 0);
+ if (coins.get() >= 0) {
int coin = coins.get();
coin -= 0;
- save.set(TOTAL_COINS_GAME,coin);
- save.set(BUY_BULLET_SAVE,1);
+ save.set(TOTAL_COINS_GAME, coin);
+ save.set(BUY_BULLET_SAVE, 1);
}
- }
- else {
- save.set(JETPACK_PARTICLES,0);
+ } else {
+ save.set(JETPACK_PARTICLES, 0);
}
this->trigger_event<ShopUpdate>();
return false;
diff --git a/game/menus/shop/ShopLoadScript.cpp b/game/menus/shop/ShopLoadScript.cpp
index a9f9bfe..a545fe2 100644
--- a/game/menus/shop/ShopLoadScript.cpp
+++ b/game/menus/shop/ShopLoadScript.cpp
@@ -1,129 +1,124 @@
#include "ShopLoadScript.h"
-#include <crepe/ValueBroker.h>
+#include "Shopconfig.h"
#include "api/Button.h"
#include "api/Sprite.h"
-#include "Shopconfig.h"
#include "api/Text.h"
#include "manager/SaveManager.h"
+#include <crepe/ValueBroker.h>
using namespace crepe;
using namespace std;
void ShopLoadScript::init() {
this->update();
- this->subscribe<ShopUpdate>([this](const ShopUpdate e) {
- return this->update();
- });
+ this->subscribe<ShopUpdate>([this](const ShopUpdate e) { return this->update(); });
}
-bool ShopLoadScript::update(){
+bool ShopLoadScript::update() {
SaveManager & save = this->get_save_manager();
- ValueBroker<int> buy_bullet = save.get<int>(BUY_BULLET_SAVE,0);
- ValueBroker<int> buy_bubble = save.get<int>(BUY_BUBBLE_SAVE,0);
+ ValueBroker<int> buy_bullet = save.get<int>(BUY_BULLET_SAVE, 0);
+ ValueBroker<int> buy_bubble = save.get<int>(BUY_BUBBLE_SAVE, 0);
-
- if(buy_bullet.get()){
+ if (buy_bullet.get()) {
auto sprites = this->get_components_by_tag<Sprite>(BUY_BULLET);
- for(auto sprite : sprites){
+ for (auto sprite : sprites) {
sprite.get().active = false;
}
auto buttons = this->get_components_by_tag<Button>(BUY_BULLET);
- for(auto btn : buttons){
+ for (auto btn : buttons) {
btn.get().active = false;
}
auto texts = this->get_components_by_tag<Text>(BUY_BULLET);
- for(auto txt : texts){
+ for (auto txt : texts) {
txt.get().active = false;
}
auto sprites1 = this->get_components_by_tag<Sprite>(SELECT_BULLET);
- for(auto sprite : sprites1){
+ for (auto sprite : sprites1) {
sprite.get().active = true;
}
auto buttons1 = this->get_components_by_tag<Button>(SELECT_BULLET);
- for(auto btn : buttons1){
+ for (auto btn : buttons1) {
btn.get().active = true;
}
auto texts1 = this->get_components_by_tag<Text>(SELECT_BULLET);
- for(auto txt : texts1){
+ for (auto txt : texts1) {
txt.get().active = true;
}
- }
- else {
+ } else {
auto sprites = this->get_components_by_tag<Sprite>(SELECT_BULLET);
- for(auto sprite : sprites){
+ for (auto sprite : sprites) {
sprite.get().active = false;
}
auto buttons = this->get_components_by_tag<Button>(SELECT_BULLET);
- for(auto btn : buttons){
+ for (auto btn : buttons) {
btn.get().active = false;
}
auto texts = this->get_components_by_tag<Text>(SELECT_BULLET);
- for(auto txt : texts){
+ for (auto txt : texts) {
txt.get().active = false;
}
auto sprites1 = this->get_components_by_tag<Sprite>(BUY_BULLET);
- for(auto sprite : sprites1){
+ for (auto sprite : sprites1) {
sprite.get().active = true;
}
auto buttons1 = this->get_components_by_tag<Button>(BUY_BULLET);
- for(auto btn : buttons1){
+ for (auto btn : buttons1) {
btn.get().active = true;
}
auto texts1 = this->get_components_by_tag<Text>(BUY_BULLET);
- for(auto txt : texts1){
+ for (auto txt : texts1) {
txt.get().active = true;
}
}
- if(buy_bubble.get()){
+ if (buy_bubble.get()) {
auto sprites = this->get_components_by_tag<Sprite>(BUY_BUBBLE);
- for(auto sprite : sprites){
+ for (auto sprite : sprites) {
sprite.get().active = false;
}
auto buttons = this->get_components_by_tag<Button>(BUY_BUBBLE);
- for(auto btn : buttons){
+ for (auto btn : buttons) {
btn.get().active = false;
}
auto texts = this->get_components_by_tag<Text>(BUY_BUBBLE);
- for(auto txt : texts){
+ for (auto txt : texts) {
txt.get().active = false;
}
auto sprites1 = this->get_components_by_tag<Sprite>(SELECT_BUBBLE);
- for(auto sprite : sprites1){
+ for (auto sprite : sprites1) {
sprite.get().active = true;
}
auto buttons1 = this->get_components_by_tag<Button>(SELECT_BUBBLE);
- for(auto btn : buttons1){
+ for (auto btn : buttons1) {
btn.get().active = true;
}
auto texts1 = this->get_components_by_tag<Text>(SELECT_BUBBLE);
- for(auto txt : texts1){
+ for (auto txt : texts1) {
txt.get().active = true;
}
- }
- else {
+ } else {
auto sprites = this->get_components_by_tag<Sprite>(SELECT_BUBBLE);
- for(auto sprite : sprites){
+ for (auto sprite : sprites) {
sprite.get().active = false;
}
auto buttons = this->get_components_by_tag<Button>(SELECT_BUBBLE);
- for(auto btn : buttons){
+ for (auto btn : buttons) {
btn.get().active = false;
}
auto texts = this->get_components_by_tag<Text>(SELECT_BUBBLE);
- for(auto txt : texts){
+ for (auto txt : texts) {
txt.get().active = false;
}
auto sprites1 = this->get_components_by_tag<Sprite>(BUY_BUBBLE);
- for(auto sprite : sprites1){
+ for (auto sprite : sprites1) {
sprite.get().active = true;
}
auto buttons1 = this->get_components_by_tag<Button>(BUY_BUBBLE);
- for(auto btn : buttons1){
+ for (auto btn : buttons1) {
btn.get().active = true;
}
auto texts1 = this->get_components_by_tag<Text>(BUY_BUBBLE);
- for(auto txt : texts1){
+ for (auto txt : texts1) {
txt.get().active = true;
}
}
diff --git a/game/menus/shop/ShopMenuScene.cpp b/game/menus/shop/ShopMenuScene.cpp
index fc7323b..641352c 100644
--- a/game/menus/shop/ShopMenuScene.cpp
+++ b/game/menus/shop/ShopMenuScene.cpp
@@ -9,10 +9,10 @@
#include "menus/shop/ShopLoadScript.h"
#include "types.h"
+#include "Shopconfig.h"
#include <crepe/api/Camera.h>
#include <crepe/api/Sprite.h>
#include <crepe/api/Text.h>
-#include "Shopconfig.h"
using namespace crepe;
using namespace std;
@@ -58,8 +58,6 @@ void ShopMenuScene::load_scene() {
}
);
-
-
const float CHAR_SIZE = 16;
const float CHAR_SIZE_COIN = 16;
crepe::vec2 size;
@@ -75,7 +73,9 @@ void ShopMenuScene::load_scene() {
);
const string BULLETS_STRING = "BULLETS";
- size = {CHAR_SIZE*BULLETS_STRING.size(), (CHAR_SIZE*BULLETS_STRING.size() / BULLETS_STRING.size()) * 2};
+ size
+ = {CHAR_SIZE * BULLETS_STRING.size(),
+ (CHAR_SIZE * BULLETS_STRING.size() / BULLETS_STRING.size()) * 2};
shop_item_bullet.add_component<Text>(
size, FONT,
@@ -95,7 +95,9 @@ void ShopMenuScene::load_scene() {
);
const string BULLETS_GOLD_STRING = "0";
- size = {CHAR_SIZE_COIN*BULLETS_GOLD_STRING.size(), (CHAR_SIZE_COIN*BULLETS_GOLD_STRING.size() / BULLETS_GOLD_STRING.size()) * 2};
+ size
+ = {CHAR_SIZE_COIN * BULLETS_GOLD_STRING.size(),
+ (CHAR_SIZE_COIN * BULLETS_GOLD_STRING.size() / BULLETS_GOLD_STRING.size()) * 2};
shop_item_bullet.add_component<Text>(
size, FONT,
Text::Data {
@@ -116,7 +118,9 @@ void ShopMenuScene::load_scene() {
);
const string BUBBLE_STRING = "BUBBLE";
- size = {CHAR_SIZE*BUBBLE_STRING.size(), (CHAR_SIZE*BUBBLE_STRING.size() / BUBBLE_STRING.size()) * 2};
+ size
+ = {CHAR_SIZE * BUBBLE_STRING.size(),
+ (CHAR_SIZE * BUBBLE_STRING.size() / BUBBLE_STRING.size()) * 2};
shop_item_bubble.add_component<Text>(
size, FONT,
Text::Data {
@@ -135,7 +139,9 @@ void ShopMenuScene::load_scene() {
);
const string BUBBLE_GOLD_STRING = "1000";
- size = {CHAR_SIZE_COIN*BUBBLE_GOLD_STRING.size(), (CHAR_SIZE_COIN*BUBBLE_GOLD_STRING.size() / BUBBLE_GOLD_STRING.size()) * 2};
+ size
+ = {CHAR_SIZE_COIN * BUBBLE_GOLD_STRING.size(),
+ (CHAR_SIZE_COIN * BUBBLE_GOLD_STRING.size() / BUBBLE_GOLD_STRING.size()) * 2};
shop_item_bubble.add_component<Text>(
size, FONT,
Text::Data {
@@ -205,7 +211,6 @@ void ShopMenuScene::load_scene() {
.btn_side_color = ButtonSubScene::ButtonSideColor::PURPLE
}
);
-
}
string ShopMenuScene::get_name() const { return SHOP_SCENE; }
diff --git a/game/menus/shop/Shopconfig.h b/game/menus/shop/Shopconfig.h
index 04c8c5c..a686242 100644
--- a/game/menus/shop/Shopconfig.h
+++ b/game/menus/shop/Shopconfig.h
@@ -7,10 +7,8 @@ static constexpr const char * SELECT_BULLET = "SELECT_BULLET";
static constexpr const char * BUY_BUBBLE = "BUY_BUBBLE";
static constexpr const char * SELECT_BUBBLE = "SELECT_BUBBLE";
-
//save_data
static constexpr const char * BUY_BULLET_SAVE = "BUY_BULLET_SAVE";
static constexpr const char * BUY_BUBBLE_SAVE = "BUY_BUBBLE_SAVE";
-
struct ShopUpdate : public crepe::Event {};
diff --git a/game/missile/AlertScript.cpp b/game/missile/AlertScript.cpp
new file mode 100644
index 0000000..24b4af9
--- /dev/null
+++ b/game/missile/AlertScript.cpp
@@ -0,0 +1,38 @@
+#include "AlertScript.h"
+#include "../Config.h"
+
+#include <crepe/api/CircleCollider.h>
+#include <crepe/api/Sprite.h>
+#include <crepe/api/Transform.h>
+
+using namespace crepe;
+
+void AlertScript::fixed_update(crepe::duration_t dt) {
+ const auto & cam = this->get_components_by_name<Transform>("camera").front().get();
+ //missile transform
+ const auto & this_transform = this->get_component<Transform>();
+ auto missile_transforms = this->get_components_by_name<Transform>("missile");
+ const auto & this_collider = this->get_component<CircleCollider>();
+
+ auto alert_sprites = this->get_components_by_name<Sprite>("missile_alert");
+ auto alert_transforms = this->get_components_by_name<Transform>("missile_alert");
+
+ int idx = 0;
+ for (int i = 0; i < missile_transforms.size(); i++) {
+ const auto & missile_transform = missile_transforms[i].get();
+ if (this_transform.game_object_id == missile_transform.game_object_id) {
+ idx = i;
+ break;
+ }
+ }
+
+ auto & alert_transform = alert_transforms[idx].get();
+ alert_transform.position.x = cam.position.x + (VIEWPORT_X / 2 - 100);
+ alert_transform.position.y = this_transform.position.y;
+
+ // check if transform is in camera view
+ if (this_transform.position.x > cam.position.x - (VIEWPORT_X / 2)
+ && this_transform.position.x < cam.position.x + (VIEWPORT_X / 2)) {
+ alert_sprites[idx].get().active = false;
+ }
+}
diff --git a/game/missile/AlertScript.h b/game/missile/AlertScript.h
new file mode 100644
index 0000000..5b0b3a1
--- /dev/null
+++ b/game/missile/AlertScript.h
@@ -0,0 +1,11 @@
+#pragma once
+
+#include <crepe/api/Script.h>
+
+class AlertScript : public crepe::Script {
+private:
+ bool has_alert = false;
+
+public:
+ void fixed_update(crepe::duration_t dt);
+};
diff --git a/game/missile/AlertSubScene.cpp b/game/missile/AlertSubScene.cpp
new file mode 100644
index 0000000..5bce5ac
--- /dev/null
+++ b/game/missile/AlertSubScene.cpp
@@ -0,0 +1,33 @@
+#include "AlertSubScene.h"
+#include "../Config.h"
+
+#include <crepe/api/Animator.h>
+#include <crepe/api/Scene.h>
+#include <crepe/api/Sprite.h>
+
+using namespace crepe;
+
+MissileAlert::MissileAlert(Scene & scn) {
+ GameObject alert = scn.new_object("missile_alert", "missile_alert", {0, 0}, 0, 1);
+
+ Asset missile_alert_ss {"asset/obstacles/missile/missileAlert.png"};
+
+ auto & missile_alert_sprite = alert.add_component<Sprite>(
+ missile_alert_ss,
+ Sprite::Data {
+ .sorting_in_layer = SORT_IN_LAY_OBSTACLES,
+ .size = {0, 100},
+ }
+ );
+
+ auto & missile_alert_anim = alert.add_component<Animator>(
+ missile_alert_sprite, ivec2 {64, 64}, uvec2 {4, 2},
+ Animator::Data {
+ .fps = 15,
+ .looping = true,
+ }
+ );
+
+ missile_alert_anim.set_anim(1);
+ missile_alert_sprite.active = false;
+}
diff --git a/game/missile/AlertSubScene.h b/game/missile/AlertSubScene.h
new file mode 100644
index 0000000..8ea288f
--- /dev/null
+++ b/game/missile/AlertSubScene.h
@@ -0,0 +1,8 @@
+#pragma once
+
+#include <crepe/api/Scene.h>
+
+class MissileAlert {
+public:
+ MissileAlert(crepe::Scene & scn);
+};
diff --git a/game/missile/MissilePool.cpp b/game/missile/MissilePool.cpp
index e549210..23f03c9 100644
--- a/game/missile/MissilePool.cpp
+++ b/game/missile/MissilePool.cpp
@@ -1,5 +1,6 @@
#include "MissilePool.h"
#include "MissileSubScene.h"
+#include "missile/AlertSubScene.h"
#include <crepe/api/Scene.h>
@@ -10,6 +11,7 @@ MissilePool::MissilePool(Scene & scn) {
int amount = 0;
MissileSubScene missile;
while (amount < this->MAX_MISSILE_COUNT) {
+ MissileAlert alert(scn);
missile.create(scn);
amount++;
}
diff --git a/game/missile/MissileScript.cpp b/game/missile/MissileScript.cpp
index 6d0e40e..bcc4f5b 100644
--- a/game/missile/MissileScript.cpp
+++ b/game/missile/MissileScript.cpp
@@ -1,18 +1,19 @@
#include "MissileScript.h"
#include "../Config.h"
-#include "api/BehaviorScript.h"
+#include <cmath>
+#include <crepe/api/AI.h>
#include <crepe/api/Animator.h>
#include <crepe/api/AudioSource.h>
+#include <crepe/api/BehaviorScript.h>
+#include <crepe/api/CircleCollider.h>
+#include <crepe/api/KeyCodes.h>
+#include <crepe/api/Rigidbody.h>
+#include <crepe/api/Sprite.h>
#include <crepe/api/Transform.h>
#include <crepe/system/CollisionSystem.h>
#include <crepe/types.h>
-#include <cmath>
-#include <crepe/api/AI.h>
-#include <crepe/api/KeyCodes.h>
-#include <crepe/api/Sprite.h>
-
using namespace std;
using namespace crepe;
@@ -25,8 +26,9 @@ void MissileScript::init() {
void MissileScript::kill_missile() {
auto animations = this->get_components<Animator>();
auto sprites = this->get_components<Sprite>();
+ auto collider = this->get_component<CircleCollider>();
auto & fly_sound = this->get_components<AudioSource>().front().get();
- auto & this_script = this->get_components<BehaviorScript>().back().get();
+ auto & this_script = this->get_components<BehaviorScript>().front().get();
animations[0].get().active = false;
animations[1].get().active = false;
@@ -34,7 +36,7 @@ void MissileScript::kill_missile() {
sprites[0].get().active = false;
sprites[1].get().active = false;
sprites[2].get().active = true;
-
+ collider.active = false;
this_script.active = false;
this->seeking_disabled = false;
@@ -47,9 +49,12 @@ void MissileScript::activate() {
anim[0].get().active = true;
anim[1].get().active = true;
anim[2].get().stop();
+ //anim[3].get().active = true;
+
sprites[0].get().active = true;
sprites[1].get().active = true;
sprites[2].get().active = false;
+ //sprites[3].get().active = true;
}
bool MissileScript::on_collision(const CollisionEvent & ev) {
diff --git a/game/missile/MissileSubScene.cpp b/game/missile/MissileSubScene.cpp
index 6719c3d..d325050 100644
--- a/game/missile/MissileSubScene.cpp
+++ b/game/missile/MissileSubScene.cpp
@@ -1,6 +1,8 @@
#include "MissileSubScene.h"
#include "../Config.h"
#include "../missile/MissileScript.h"
+#include "Random.h"
+#include "missile/AlertScript.h"
#include <crepe/api/AI.h>
#include <crepe/api/Animator.h>
@@ -10,14 +12,10 @@
#include <crepe/api/Scene.h>
#include <crepe/api/Sprite.h>
#include <crepe/types.h>
-#include <random>
using namespace crepe;
void MissileSubScene::create(crepe::Scene & scn) {
- std::random_device rd;
- std::mt19937 gen(rd());
-
GameObject missle = scn.new_object("missile", "missile", {0, 0}, 0, 1);
Asset missle_ss {"asset/obstacles/missile/missile.png"};
@@ -27,6 +25,7 @@ void MissileSubScene::create(crepe::Scene & scn) {
Asset missile_fire {"asset/sfx/missile_launch.ogg"};
missle.add_component<BehaviorScript>().set_script<MissileScript>().active = false;
+ missle.add_component<BehaviorScript>().set_script<AlertScript>();
auto & sound = missle.add_component<AudioSource>(missile_fire);
sound.volume = 0.5;
@@ -88,16 +87,15 @@ void MissileSubScene::create(crepe::Scene & scn) {
missile_explosion_sprite.active = false;
explosion_anim.active = false;
- std::uniform_int_distribution<> dist(200, 250);
missle.add_component<Rigidbody>(Rigidbody::Data {
.body_type = Rigidbody::BodyType::KINEMATIC,
- .max_linear_velocity = static_cast<float>(dist(gen)),
+ .max_linear_velocity = Random::f(250, 200),
.kinematic_collision = false,
.collision_layers = {COLL_LAY_PLAYER, COLL_LAY_BOT_TOP},
.collision_layer = COLL_LAY_MISSILE,
});
- missle.add_component<CircleCollider>(3);
+ missle.add_component<CircleCollider>(3).active = false;
auto & missle_ai = missle.add_component<AI>(1000);
}
diff --git a/game/missile/SpawnEvent.cpp b/game/missile/SpawnEvent.cpp
index 03a9b8c..c7209b7 100644
--- a/game/missile/SpawnEvent.cpp
+++ b/game/missile/SpawnEvent.cpp
@@ -1,14 +1,15 @@
#include "SpawnEvent.h"
+#include "Random.h"
#include <crepe/api/Animator.h>
#include <crepe/api/AudioSource.h>
#include <crepe/api/BehaviorScript.h>
#include <crepe/api/Camera.h>
+#include <crepe/api/CircleCollider.h>
#include <crepe/api/Sprite.h>
#include <crepe/api/Transform.h>
#include <cstdlib>
-#include <random>
using namespace crepe;
@@ -18,28 +19,29 @@ void MissileSpawnEventHandler::init() {
});
}
-std::random_device rd;
-std::mt19937 gen(rd());
-
bool MissileSpawnEventHandler::on_event(const MissileSpawnEvent & event) {
- auto missile_sprites = this->get_components_by_name<Sprite>("missile");
auto missile_transforms = this->get_components_by_name<Transform>("missile");
+ auto alert_sprites = this->get_components_by_name<Sprite>("missile_alert");
+ auto alert_transforms = this->get_components_by_name<Transform>("missile_alert");
+ auto colliders = this->get_components_by_name<CircleCollider>("missile");
auto missile_behaviorscripts = this->get_components_by_name<BehaviorScript>("missile");
auto missile_audiosources = this->get_components_by_name<AudioSource>("missile");
auto & camera_transform = this->get_components_by_name<Transform>("camera").front().get();
for (size_t i = 0; i < missile_behaviorscripts.size(); ++i) {
- auto & script = missile_behaviorscripts[i].get();
+ auto & script = missile_behaviorscripts[i * 2].get();
if (script.active) continue;
script.active = true;
-
+ colliders[i].get().active = true;
missile_audiosources[i * 2].get().play();
auto & transform = missile_transforms[i].get();
transform.position.x = camera_transform.position.x + this->MISSILE_OFFSET;
- std::uniform_int_distribution<> dist(this->MIN_RANGE, this->MAX_RANGE);
- transform.position.y = dist(gen);
+ transform.position.y = Random::i(this->MAX_RANGE, this->MIN_RANGE);
+ auto & alert_transform = alert_transforms[i].get();
+ auto & alert_sprite = alert_sprites[i].get();
+ alert_sprite.active = true;
break;
}
diff --git a/game/preview/PreviewReplaySubScript.cpp b/game/preview/PreviewReplaySubScript.cpp
index 51c27aa..580a608 100644
--- a/game/preview/PreviewReplaySubScript.cpp
+++ b/game/preview/PreviewReplaySubScript.cpp
@@ -21,17 +21,16 @@ void PreviewReplaySubScript::init() {
this->subscribe<StartPreviewRecording>([this](const StartPreviewRecording & e) {
return this->start_recording();
});
-
}
bool PreviewReplaySubScript::on_button_press(const ButtonPressEvent & e) {
- if(DISABLE_REPLAY)return false;
+ if (DISABLE_REPLAY) return false;
replay.play(this->recording);
return false;
}
-bool PreviewReplaySubScript::start_recording(){
- if(DISABLE_REPLAY)return false;
- if(record_saved){
+bool PreviewReplaySubScript::start_recording() {
+ if (DISABLE_REPLAY) return false;
+ if (record_saved) {
this->stop_recording();
this->delete_recording();
}
@@ -41,16 +40,16 @@ bool PreviewReplaySubScript::start_recording(){
}
bool PreviewReplaySubScript::stop_recording() {
- if(DISABLE_REPLAY)return false;
- if(this->record_started)this->recording = replay.record_end();
+ if (DISABLE_REPLAY) return false;
+ if (this->record_started) this->recording = replay.record_end();
this->record_saved = true;
return false;
}
bool PreviewReplaySubScript::delete_recording() {
- if(DISABLE_REPLAY)return false;
- if(this->record_started) this->stop_recording();
- if(this->record_saved)replay.release(this->recording);
+ if (DISABLE_REPLAY) return false;
+ if (this->record_started) this->stop_recording();
+ if (this->record_saved) replay.release(this->recording);
this->record_saved = false;
return false;
}
diff --git a/game/preview/PreviewReplaySubScript.h b/game/preview/PreviewReplaySubScript.h
index ca5bd08..59b78c3 100644
--- a/game/preview/PreviewReplaySubScript.h
+++ b/game/preview/PreviewReplaySubScript.h
@@ -17,6 +17,7 @@ private:
bool start_recording();
bool stop_recording();
bool delete_recording();
+
private:
bool record_saved = false;
bool record_started = false;
diff --git a/game/preview/PreviewStartRecSubScript.cpp b/game/preview/PreviewStartRecSubScript.cpp
index 194f849..8a2f54c 100644
--- a/game/preview/PreviewStartRecSubScript.cpp
+++ b/game/preview/PreviewStartRecSubScript.cpp
@@ -12,7 +12,6 @@ void PreviewStartRecSubScript::init() {
this->subscribe<ButtonPressEvent>([this](const ButtonPressEvent & e) {
return this->on_button_press(e);
});
-
}
bool PreviewStartRecSubScript::on_button_press(const ButtonPressEvent & e) {
diff --git a/game/preview/PreviewStopRecSubScript.cpp b/game/preview/PreviewStopRecSubScript.cpp
index c674a8b..a229da8 100644
--- a/game/preview/PreviewStopRecSubScript.cpp
+++ b/game/preview/PreviewStopRecSubScript.cpp
@@ -12,7 +12,6 @@ void PreviewStopRecSubScript::init() {
this->subscribe<ButtonPressEvent>([this](const ButtonPressEvent & e) {
return this->on_button_press(e);
});
-
}
bool PreviewStopRecSubScript::on_button_press(const ButtonPressEvent & e) {