Files
letnik3koncni-prap/include/game/agame/background.hpp
2026-05-13 07:58:59 +02:00

36 lines
1.4 KiB
C++

#pragma once
#include <object/entity.hpp>
#include <renderer/texture.hpp>
#include <renderer/font.hpp>
#include <object/sound.hpp>
#include <game/gamemanager.hpp>
#include <game/agame/enemy.hpp>
#include <game/agame/trash.hpp>
#include <game/agame/friendly.hpp>
namespace Game::AGame {
GAME_ENTITY(Background)
public:
void render(Game::Renderer::Renderer* renderer, Game::Renderer::RendererConfig config) override;
void onWindowResized(int newWidth, int newHeight) override;
// Spawn a single trash at the given transform. If seaOnly is true the trash
// will be clamped to the sea side of the land boundary.
void spawnTrashAt(const Object::Transform& tS, bool seaOnly = false);
private:
void spawnLevel(int stage);
void spawnFriendly(int stage, int count);
int mW, mH;
int mMaxLevels = 2;
float mLandBoundaryX = 0.f;
bool mPendingLevelSpawn = false;
int mPendingLevelStage = 0;
// Periodic friendly spawn settings
float mFriendlySpawnAvgInterval = 6.f; // average seconds between spawns
int mMaxAutoFriendlies = 2; // hard cap for total active friendlies
std::shared_ptr<Game::Renderer::Texture> mSeaTex;
std::shared_ptr<Game::Renderer::Texture> mEnemyTex;
std::shared_ptr<Game::Renderer::Texture> mTrashTex;
std::shared_ptr<Game::Renderer::Texture> mFriendlyTex;
END_GAME_ENTITY()
}