aboutsummaryrefslogtreecommitdiff
path: root/game/PreviewScene.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'game/PreviewScene.cpp')
-rw-r--r--game/PreviewScene.cpp117
1 files changed, 100 insertions, 17 deletions
diff --git a/game/PreviewScene.cpp b/game/PreviewScene.cpp
index 6cd9e78..bc28192 100644
--- a/game/PreviewScene.cpp
+++ b/game/PreviewScene.cpp
@@ -1,7 +1,14 @@
#include "PreviewScene.h"
#include "Config.h"
-#include "background/BackgroundSubScene.h"
+#include "background/AquariumSubScene.h"
+#include "background/ForestSubScene.h"
+#include "background/HallwaySubScene.h"
+#include "background/StartSubScene.h"
+#include "hud/HudScript.h"
+#include "hud/HudSubScene.h"
+#include "hud/SpeedScript.h"
+#include "menus/ButtonSubScene.h"
#include "missile/MissilePool.h"
#include "missile/SpawnEvent.h"
#include "preview/NpcSubScene.h"
@@ -36,17 +43,32 @@ using namespace std;
void PreviewScene::load_scene() {
- BackgroundSubScene background(*this);
+ StartSubScene start;
+ HallwaySubScene hallway;
+ ForestSubScene forest;
+ AquariumSubScene aquarium;
+
+ float begin_x = 400;
+
+ begin_x = start.create(*this, begin_x);
+
+ begin_x = hallway.create(*this, begin_x, 1, Color::YELLOW);
+
+ begin_x = aquarium.create(*this, begin_x);
+
+ begin_x = hallway.create(*this, begin_x, 2, Color::GREEN);
GameObject camera = new_object("camera", "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<Rigidbody>(Rigidbody::Data {});
+
camera.add_component<BehaviorScript>().set_script<MissileSpawnEventHandler>();
+ camera.add_component<BehaviorScript>().set_script<HudScript>();
+ camera.add_component<BehaviorScript>().set_script<SpeedScript>();
GameObject floor = new_object("floor", "game_world", vec2(0, 325));
floor.add_component<Rigidbody>(Rigidbody::Data {
@@ -71,29 +93,90 @@ void PreviewScene::load_scene() {
.collision_layer = COLL_LAY_BOT_TOP,
});
ceiling.add_component<BoxCollider>(vec2(INFINITY, 200));
- GameObject world = this->new_object("world", "TAG", vec2 {0, 0}, 0, 1);
+ GameObject world = this->new_object("world", "TAG", vec2 {0, 0}, 0, 1);
world.add_component<Rigidbody>(Rigidbody::Data {
.body_type = Rigidbody::BodyType::STATIC,
- .collision_layers = {0},
+ .collision_layer = 100,
});
+ world.add_component<BoxCollider>(vec2(100, INFINITY), vec2(VIEWPORT_X, VIEWPORT_Y));
+ world.add_component<BoxCollider>(vec2(100, INFINITY), vec2(100, VIEWPORT_Y));
+
PrevPlayerSubScene player(*this);
NpcSubScene npc(*this);
SmokeSubScene smoke(*this);
MissilePool mpool(*this);
- /*
-
- for (int i = 0; i < 200; ++i) {
- int row = i / 10;
- int col = i % 10;
- float x = col * 25 + i;
- float y = row * 25 - 400;
- GameObject game_coin = this->new_object("coin", "coin", vec2 {x, y}, 0, 1);
- Coin coin(game_coin, vec2 {0, 0});
- }
- */
+ HudSubScene hud;
+ hud.create(*this);
+
+ const float Y_POS_BUTTONS = -220;
+ const float X_POS_BUTTONS = -150;
+ const float X_POS_BUTTONS_SPACING = 145;
+ ButtonSubScene button;
+ button.create(
+ *this,
+ ButtonSubScene::Data {
+ .text = "BACK",
+ .text_width = 60,
+ .position = {X_POS_BUTTONS, Y_POS_BUTTONS},
+ .script_type = ButtonSubScene::ScriptSelect::NEXT,
+ .button_type = ButtonSubScene::ButtonSelect::BACK,
+ .scale = 0.6,
+ .worldspace = false,
+ .tag = "Next button",
+ .sorting_layer_offset = 20,
+ }
+ );
+
+ button.create(
+ *this,
+ ButtonSubScene::Data {
+ .text = "START REC",
+ .text_width = 130,
+ .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,
+ .worldspace = false,
+ .tag = "Next button",
+ .sorting_layer_offset = 20,
+ .btn_side_color = ButtonSubScene::ButtonSideColor::YELLOW,
+ }
+ );
+
+ button.create(
+ *this,
+ ButtonSubScene::Data {
+ .text = "STOP REC",
+ .text_width = 120,
+ .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,
+ .worldspace = false,
+ .tag = "Next button",
+ .sorting_layer_offset = 20,
+ .btn_side_color = ButtonSubScene::ButtonSideColor::BLUE,
+ }
+ );
+
+ button.create(
+ *this,
+ ButtonSubScene::Data {
+ .text = "REPLAY",
+ .text_width = 90,
+ .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,
+ .worldspace = false,
+ .tag = "Next button",
+ .sorting_layer_offset = 20,
+ .btn_side_color = ButtonSubScene::ButtonSideColor::ORANGE,
+ }
+ );
}
string PreviewScene::get_name() const { return "preview scene"; }