Jazz2::ILevelHandler class

Base interface of a level handler.

Abstracts the running level for the rest of the engine, exposing the tile map, event map, event spawner and difficulty, together with queries about the session (local, server, pausable, reforged). Implemented by LevelHandler for local play and by the multiplayer variants.

Derived classes

class LevelHandler
Level handler of a local game session.

Public functions

auto Initialize(const LevelInitialization& levelInit) -> bool pure virtual
Initializes the level handler from LevelInitialization.
auto Initialize(Stream& src, std::uint16_t version) -> bool pure virtual
Initializes the level handler from resumable state.
auto EventSpawner() -> Events::EventSpawner* pure virtual
Returns event spawner for the level.
auto EventMap() -> Events::EventMap* pure virtual
Returns event map for the level.
auto TileMap() -> Tiles::TileMap* pure virtual
Returns tile map for the level.
auto GetDifficulty() const -> GameDifficulty pure virtual
Return current difficulty.
auto IsLocalSession() const -> bool pure virtual
Returns true if the level handler is on a local session.
auto IsServer() const -> bool pure virtual
Returns true if the level handler is on a server or a local session.
auto IsPausable() const -> bool pure virtual
Returns true if the level handler is pausable.
auto IsReforged() const -> bool pure virtual
Returns true if Reforged Gameplay is enabled.
auto CanActivateSugarRush() const -> bool pure virtual
Returns true if sugar rush can be activated.
auto CanEventDisappear(EventType eventType) const -> bool pure virtual
Returns true if event can be safely despawned.
auto CanPlayersCollide() const -> bool pure virtual
Returns true if players can collide with each other.
auto GetLevelBounds() const -> Recti pure virtual
Returns level bounds including camera limits.
auto GetElapsedFrames() const -> float pure virtual
Returns number of elapsed frames.
auto GetGravity() const -> float pure virtual
Returns current gravity force.
auto GetWaterLevel() const -> float pure virtual
Returns current water level.
auto GetHurtInvulnerableTime() const -> float pure virtual
Returns default invulnerable time when a player is hurt.
auto GetActors() const -> ArrayView<const std::shared_ptr<Actors::ActorBase>> pure virtual
Returns list of actors (objects).
auto GetPlayers() const -> ArrayView<Actors::Player* const> pure virtual
Returns list of players.
auto GetDefaultAmbientLight() const -> float pure virtual
Returns default ambient light intensity.
auto GetAmbientLight(Actors::Player* player) const -> float pure virtual
Returns current ambient light intensity.
void SetAmbientLight(Actors::Player* player, float value) pure virtual
Sets current ambient light intensity.
void AddActor(std::shared_ptr<Actors::ActorBase> actor) pure virtual
Adds an actor (object) to the level.
auto PlaySfx(Actors::ActorBase* self, StringView identifier, AudioBuffer* buffer, const Vector3f& pos, bool sourceRelative, float gain = 1.0f, float pitch = 1.0f) -> std::shared_ptr<AudioBufferPlayer> pure virtual
Plays a sound effect for a given actor (object).
auto PlayCommonSfx(StringView identifier, const Vector3f& pos, float gain = 1.0f, float pitch = 1.0f) -> std::shared_ptr<AudioBufferPlayer> pure virtual
Plays a common sound effect.
void WarpCameraToTarget(Actors::ActorBase* actor, bool fast = false) pure virtual
Warps a camera to its assigned target.
auto IsPositionEmpty(Actors::ActorBase* self, const AABBf& aabb, Tiles::TileCollisionParams& params, Actors::ActorBase** collider) -> bool pure virtual
Returns true if a specified AABB is empty.
auto IsPositionEmpty(Actors::ActorBase* self, const AABBf& aabb, Tiles::TileCollisionParams& params) -> bool
void FindCollisionActorsByAABB(const Actors::ActorBase* self, const AABBf& aabb, Function<bool(Actors::ActorBase*)>&& callback) pure virtual
Calls the callback function for all colliding objects with specified AABB.
void FindCollisionActorsByRadius(float x, float y, float radius, Function<bool(Actors::ActorBase*)>&& callback) pure virtual
Calls the callback function for all colliding objects with specified circle.
void GetCollidingPlayers(const AABBf& aabb, Function<bool(Actors::ActorBase*)>&& callback) pure virtual
Calls the callback function for all colliding players with specified AABB.
void BroadcastTriggeredEvent(Actors::ActorBase* initiator, EventType eventType, std::uint8_t* eventParams) pure virtual
Broadcasts specified event to all other actors.
void BeginLevelChange(Actors::ActorBase* initiator, ExitType exitType, StringView nextLevel = {}) pure virtual
Starts transition to change current level.
void SendPacket(const Actors::ActorBase* self, ArrayView<const std::uint8_t> data) pure virtual
Sends a packet to the other side of a non-local session.
void HandleBossActivated(Actors::Bosses::BossBase* boss, Actors::ActorBase* initiator = nullptr) pure virtual
Called when a boss is activated.
void HandleLevelChange(LevelInitialization&& levelInit) pure virtual
Called when the level is changed.
void HandleGameOver(Actors::Player* player) pure virtual
Called when the game is over.
auto HandlePlayerDied(Actors::Player* player) -> bool pure virtual
Called when a player dies.
void HandlePlayerWarped(Actors::Player* player, Vector2f prevPos, WarpFlags flags) pure virtual
Called when a player warps.
void HandlePlayerPushed(Actors::Player* player) virtual
Called after a server-side force/knockback is applied to a player.
void HandlePlayerCoins(Actors::Player* player, std::int32_t prevCount, std::int32_t newCount) pure virtual
Called when a player collects or losts coins.
void HandlePlayerGems(Actors::Player* player, std::uint8_t gemType, std::int32_t prevCount, std::int32_t newCount) pure virtual
Called when a player collects or losts gems.
void SetCheckpoint(Actors::Player* player, Vector2f pos) pure virtual
Sets checkpoint for a given player.
void RollbackToCheckpoint(Actors::Player* player) pure virtual
Rolls back to the last checkpoint for a given player.
void HandleActivateSugarRush(Actors::Player* player) pure virtual
Called when a player activates sugar rush.
void HandleCreateParticleDebrisOnPerish(const Actors::ActorBase* self, Actors::ParticleDebrisEffect effect, Vector2f speed) pure virtual
Called when an object creates a particle debris on perish.
void HandleCreateSpriteDebris(const Actors::ActorBase* self, AnimState state, std::int32_t count) pure virtual
Called when an object creates a sprite debris.
void ShowLevelText(StringView text, Actors::ActorBase* initiator = nullptr) pure virtual
Shows a text notification.
auto GetLevelText(std::uint32_t textId, std::int32_t index = -1, std::uint32_t delimiter = 0) -> StringView pure virtual
Returns a level text.
void OverrideLevelText(std::uint32_t textId, StringView value) pure virtual
Override specified level text.
auto GetCameraPos(Actors::Player* player) const -> Vector2f pure virtual
Returns camera position of a given player.
void LimitCameraView(Actors::Player* player, Vector2f playerPos, std::int32_t left, std::int32_t width) pure virtual
Limits camera viewport for a given player.
void OverrideCameraView(Actors::Player* player, float x, float y, bool topLeft = false) pure virtual
Override camera viewport for a given player.
void ShakeCameraView(Actors::Player* player, float duration) pure virtual
Shake camera for a given player.
void ShakeCameraViewNear(Vector2f pos, float duration) pure virtual
Shake camera for all players near a given position.
auto GetTrigger(std::uint8_t triggerId) -> bool pure virtual
Returns state of a given trigger in the tile map.
void SetTrigger(std::uint8_t triggerId, bool newState) pure virtual
Sets state of a given trigger in the tile map.
void SetWeather(WeatherType type, std::uint8_t intensity) pure virtual
Sets current level weather.
auto BeginPlayMusic(StringView path, bool setDefault = false, bool forceReload = false) -> bool pure virtual
Plays specified music.
auto PlayerActionPressed(Actors::Player* player, PlayerAction action, bool includeGamepads = true) -> bool pure virtual
Returns true if player action is pressed.
auto PlayerActionPressed(Actors::Player* player, PlayerAction action, bool includeGamepads, bool& isGamepad) -> bool pure virtual
auto PlayerActionHit(Actors::Player* player, PlayerAction action, bool includeGamepads = true) -> bool pure virtual
Returns true if player action is hit (newly pressed).
auto PlayerActionHit(Actors::Player* player, PlayerAction action, bool includeGamepads, bool& isGamepad) -> bool pure virtual
auto PlayerHorizontalMovement(Actors::Player* player) -> float pure virtual
Returns value of desired horizontal player movement.
auto PlayerVerticalMovement(Actors::Player* player) -> float pure virtual
Returns value of desired vertical player movement.
void PlayerExecuteRumble(Actors::Player* player, StringView rumbleEffect) pure virtual
Executes a rumble effect.

Constants

static std::int32_t MainPlaneZ constexpr
Layer of the main plane.
static std::int32_t SpritePlaneZ constexpr
Layer of sprites.
static std::int32_t PlayerZ constexpr
Layer of players.

Function documentation

bool Jazz2::ILevelHandler::IsPositionEmpty(Actors::ActorBase* self, const AABBf& aabb, Tiles::TileCollisionParams& params)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

void Jazz2::ILevelHandler::HandlePlayerPushed(Actors::Player* player) virtual

Called after a server-side force/knockback is applied to a player.

Allows the change to be synchronized to the owning client in a non-local session (no-op in local/single-player sessions).

bool Jazz2::ILevelHandler::PlayerActionPressed(Actors::Player* player, PlayerAction action, bool includeGamepads, bool& isGamepad) pure virtual

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

bool Jazz2::ILevelHandler::PlayerActionHit(Actors::Player* player, PlayerAction action, bool includeGamepads, bool& isGamepad) pure virtual

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.