Files
NS_unknown_game/game/src/data/whitebox_level.cpp
T

150 lines
6.5 KiB
C++

#include "level_definition.h"
#include "stage_map_resource.h"
#include <SDL2/SDL.h>
namespace ns_game {
LevelDefinition CreateWhiteboxLevel() {
if (auto mapResource = LoadStageMapResource("map/stage_01.map")) {
SDL_Log("CreateWhiteboxLevel: loaded %s map resource: %s",
mapResource->source == StageMapResourceSource::AssetText ? "asset"
: mapResource->source == StageMapResourceSource::PvfText ? "pvf-text"
: mapResource->source == StageMapResourceSource::PvfBinaryScript
? "pvf-script"
: "unknown",
mapResource->path.c_str());
}
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 = level.worldWidth;
level.collision.platforms = {
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}}},
{"props_front",
StageLayerRole::PropsFront,
1.0f,
{{frostbite2D::Rect(520.0f, 580.0f, 220.0f, 34.0f),
frostbite2D::Color(0.14f, 0.17f, 0.18f, 0.90f),
StageLayerRole::PropsFront},
{frostbite2D::Rect(1510.0f, 570.0f, 280.0f, 42.0f),
frostbite2D::Color(0.14f, 0.17f, 0.18f, 0.90f),
StageLayerRole::PropsFront},
{frostbite2D::Rect(2580.0f, 572.0f, 260.0f, 38.0f),
frostbite2D::Color(0.14f, 0.17f, 0.18f, 0.90f),
StageLayerRole::PropsFront}}},
};
level.battleZones = {
{"zone_01_intro",
frostbite2D::Rect(520.0f, 260.0f, 560.0f, 340.0f),
frostbite2D::Rect(0.0f, 0.0f, 1940.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(660.0f, 0.0f, 2300.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(1600.0f, 0.0f, 1600.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;
}
} // namespace ns_game