Skip to content
Refaltor77 edited this page Mar 29, 2026 · 1 revision

Screen

Root screen element that controls how the entire screen behaves in-game.

Creation

use refaltor\ui\elements\Screen;

$screen = Screen::create("my_screen");

Properties

Rendering

$screen->setRenderOnlyWhenTopMost(true);  // Only render when on top
$screen->setRenderGameBehind(true);        // Show game world behind
$screen->setForceRenderBelow(false);       // Force render below other screens
$screen->setLowFreqRendering(true);        // Reduce render frequency
$screen->setCacheScreen(false);            // Keep in memory for fast re-open

Input

$screen->setAbsorbInput(true);             // Block input to game
$screen->setIsModal(true);                 // Modal behavior
$screen->setIsShowingMenu(true);           // Pause game (showing menu)
$screen->setShouldStealMouse(false);       // Capture mouse cursor
$screen->setAlwaysAcceptsInput(false);     // Accept input even when not topmost

Behavior

$screen->setCloseOnPlayerHurt(false);      // Close when taking damage
$screen->setSendTelemetry(false);          // Send analytics
$screen->setScreenNotFlushable(false);     // Prevent screen flush

Common Screen Types

Modal Menu (blocks game)

$menu = Screen::create("game_menu")
    ->setRenderOnlyWhenTopMost(true)
    ->setRenderGameBehind(false)
    ->setAbsorbInput(true)
    ->setIsShowingMenu(true)
    ->setIsModal(true)
    ->setSizePercentage(100, 100);

HUD Overlay (game visible)

$hud = Screen::create("hud_overlay")
    ->setRenderOnlyWhenTopMost(false)
    ->setRenderGameBehind(true)
    ->setAbsorbInput(false)
    ->setIsShowingMenu(false)
    ->setIsModal(false)
    ->setForceRenderBelow(true)
    ->setSizePercentage(100, 100);

Fragile Screen (closes on damage)

$fragile = Screen::create("crafting_screen")
    ->setCloseOnPlayerHurt(true)
    ->setRenderGameBehind(true)
    ->setIsModal(false)
    ->setSizePercentage(100, 100);

Cached Screen (fast re-open)

$cached = Screen::create("shop_screen")
    ->setCacheScreen(true)
    ->setRenderOnlyWhenTopMost(true)
    ->setIsModal(true)
    ->setSizePercentage(100, 100);

See Also

Clone this wiki locally