Build first scene skeleton

This commit is contained in:
2026-06-09 13:56:30 +08:00
parent 3c5a4968ba
commit 51f1bdd166
11 changed files with 270 additions and 44 deletions
+107 -2
View File
@@ -4,14 +4,102 @@ namespace ns_game {
LevelDefinition CreateWhiteboxLevel() {
LevelDefinition level;
level.worldWidth = 3200.0f;
level.worldHeight = 720.0f;
level.playerSpawn = frostbite2D::Vec2(160.0f, 380.0f);
level.cameraBounds = frostbite2D::Rect(0.0f, 0.0f, level.worldWidth,
level.worldHeight);
level.collision.levelLeft = 0.0f;
level.collision.levelRight = 1600.0f;
level.collision.levelRight = level.worldWidth;
level.collision.platforms = {
frostbite2D::Rect(0.0f, 600.0f, 1600.0f, 80.0f),
frostbite2D::Rect(0.0f, 600.0f, 3200.0f, 80.0f),
frostbite2D::Rect(230.0f, 500.0f, 220.0f, 28.0f),
frostbite2D::Rect(560.0f, 430.0f, 260.0f, 28.0f),
frostbite2D::Rect(930.0f, 510.0f, 260.0f, 28.0f),
frostbite2D::Rect(1250.0f, 420.0f, 230.0f, 28.0f),
frostbite2D::Rect(1760.0f, 500.0f, 300.0f, 28.0f),
frostbite2D::Rect(2180.0f, 455.0f, 260.0f, 28.0f),
frostbite2D::Rect(2650.0f, 515.0f, 360.0f, 28.0f),
};
level.layers = {
{"background_far",
StageLayerRole::BackgroundFar,
0.25f,
{{frostbite2D::Rect(0.0f, 0.0f, 3200.0f, 720.0f),
frostbite2D::Color(0.08f, 0.10f, 0.14f, 1.0f),
StageLayerRole::BackgroundFar},
{frostbite2D::Rect(360.0f, 120.0f, 420.0f, 220.0f),
frostbite2D::Color(0.13f, 0.16f, 0.21f, 1.0f),
StageLayerRole::BackgroundFar},
{frostbite2D::Rect(1380.0f, 90.0f, 560.0f, 260.0f),
frostbite2D::Color(0.12f, 0.15f, 0.20f, 1.0f),
StageLayerRole::BackgroundFar},
{frostbite2D::Rect(2440.0f, 140.0f, 520.0f, 210.0f),
frostbite2D::Color(0.13f, 0.16f, 0.21f, 1.0f),
StageLayerRole::BackgroundFar}}},
{"background_mid",
StageLayerRole::BackgroundMid,
0.55f,
{{frostbite2D::Rect(80.0f, 360.0f, 280.0f, 240.0f),
frostbite2D::Color(0.18f, 0.22f, 0.27f, 1.0f),
StageLayerRole::BackgroundMid},
{frostbite2D::Rect(1020.0f, 310.0f, 340.0f, 290.0f),
frostbite2D::Color(0.18f, 0.22f, 0.27f, 1.0f),
StageLayerRole::BackgroundMid},
{frostbite2D::Rect(2020.0f, 330.0f, 360.0f, 270.0f),
frostbite2D::Color(0.18f, 0.22f, 0.27f, 1.0f),
StageLayerRole::BackgroundMid},
{frostbite2D::Rect(2860.0f, 280.0f, 260.0f, 320.0f),
frostbite2D::Color(0.18f, 0.22f, 0.27f, 1.0f),
StageLayerRole::BackgroundMid}}},
{"level_visual",
StageLayerRole::LevelVisual,
1.0f,
{{frostbite2D::Rect(0.0f, 600.0f, 3200.0f, 80.0f),
frostbite2D::Color(0.62f, 0.68f, 0.73f, 1.0f),
StageLayerRole::LevelVisual},
{frostbite2D::Rect(230.0f, 500.0f, 220.0f, 28.0f),
frostbite2D::Color(0.62f, 0.68f, 0.73f, 1.0f),
StageLayerRole::LevelVisual},
{frostbite2D::Rect(560.0f, 430.0f, 260.0f, 28.0f),
frostbite2D::Color(0.62f, 0.68f, 0.73f, 1.0f),
StageLayerRole::LevelVisual},
{frostbite2D::Rect(930.0f, 510.0f, 260.0f, 28.0f),
frostbite2D::Color(0.62f, 0.68f, 0.73f, 1.0f),
StageLayerRole::LevelVisual},
{frostbite2D::Rect(1250.0f, 420.0f, 230.0f, 28.0f),
frostbite2D::Color(0.62f, 0.68f, 0.73f, 1.0f),
StageLayerRole::LevelVisual},
{frostbite2D::Rect(1760.0f, 500.0f, 300.0f, 28.0f),
frostbite2D::Color(0.62f, 0.68f, 0.73f, 1.0f),
StageLayerRole::LevelVisual},
{frostbite2D::Rect(2180.0f, 455.0f, 260.0f, 28.0f),
frostbite2D::Color(0.62f, 0.68f, 0.73f, 1.0f),
StageLayerRole::LevelVisual},
{frostbite2D::Rect(2650.0f, 515.0f, 360.0f, 28.0f),
frostbite2D::Color(0.62f, 0.68f, 0.73f, 1.0f),
StageLayerRole::LevelVisual}}},
{"props_back",
StageLayerRole::PropsBack,
1.0f,
{{frostbite2D::Rect(118.0f, 392.0f, 88.0f, 208.0f),
frostbite2D::Color(0.26f, 0.30f, 0.34f, 1.0f),
StageLayerRole::PropsBack},
{frostbite2D::Rect(780.0f, 250.0f, 72.0f, 180.0f),
frostbite2D::Color(0.26f, 0.30f, 0.34f, 1.0f),
StageLayerRole::PropsBack},
{frostbite2D::Rect(1440.0f, 300.0f, 80.0f, 300.0f),
frostbite2D::Color(0.26f, 0.30f, 0.34f, 1.0f),
StageLayerRole::PropsBack},
{frostbite2D::Rect(1880.0f, 360.0f, 110.0f, 240.0f),
frostbite2D::Color(0.26f, 0.30f, 0.34f, 1.0f),
StageLayerRole::PropsBack},
{frostbite2D::Rect(2520.0f, 390.0f, 92.0f, 210.0f),
frostbite2D::Color(0.26f, 0.30f, 0.34f, 1.0f),
StageLayerRole::PropsBack},
{frostbite2D::Rect(3040.0f, 315.0f, 82.0f, 285.0f),
frostbite2D::Color(0.26f, 0.30f, 0.34f, 1.0f),
StageLayerRole::PropsBack}}},
};
level.props = {
{frostbite2D::Rect(118.0f, 392.0f, 88.0f, 208.0f),
@@ -21,6 +109,23 @@ LevelDefinition CreateWhiteboxLevel() {
{frostbite2D::Rect(1440.0f, 300.0f, 80.0f, 300.0f),
frostbite2D::Color(0.26f, 0.30f, 0.34f, 1.0f)},
};
level.battleZones = {
{"zone_01_intro",
frostbite2D::Rect(520.0f, 260.0f, 560.0f, 340.0f),
frostbite2D::Rect(320.0f, 0.0f, 760.0f, 720.0f),
{{"zone_01_enemy_a", frostbite2D::Vec2(760.0f, 560.0f)},
{"zone_01_enemy_b", frostbite2D::Vec2(980.0f, 560.0f)}}},
{"zone_02_platform",
frostbite2D::Rect(1420.0f, 250.0f, 680.0f, 350.0f),
frostbite2D::Rect(1280.0f, 0.0f, 900.0f, 720.0f),
{{"zone_02_enemy_a", frostbite2D::Vec2(1620.0f, 560.0f)},
{"zone_02_enemy_b", frostbite2D::Vec2(1900.0f, 560.0f)}}},
{"zone_03_exit",
frostbite2D::Rect(2380.0f, 250.0f, 720.0f, 350.0f),
frostbite2D::Rect(2240.0f, 0.0f, 960.0f, 720.0f),
{{"zone_03_enemy_a", frostbite2D::Vec2(2580.0f, 560.0f)},
{"zone_03_enemy_b", frostbite2D::Vec2(2860.0f, 560.0f)}}},
};
return level;
}