🖥️ DesktopEnvironment
A simulated in-game operating system that provides a desktop-like interface for interacting with apps, windows, and system panels.
The DesktopEnvironment acts as the visual and interactive layer built on top of the AppSystem, UIWindowSystem and UIFloatingPanelSystem.
It brings together taskbars, panels, and system tools into a cohesive user experience.
✨ Features
- Central hub for all floating panels and app windows.
- Start Menu for browsing and launching installed apps.
- Taskbar for managing open windows and pinned tools.
- Integrates with the AppSystemHost to list and launch apps.
- Built using the UIFloatingPanelSystem for modular panels.
- Easily extensible with new panel types (Volume mixer panel, notifications panel, etc.)
- Acts as a sandboxed environment for UI-based gameplay systems.
🧩 Architecture Overview
The DesktopEnvironment serves as a thin UI shell around the underlying systems.
🖥️ CosterGraphics.DesktopEnvironment │ ├── 🪟 UIStartMenu ← Lists available apps from AppSystem │ └── Uses AppSystemHost.AppRegistry │ ├── 📋 UITaskBar ← Displays running apps and active windows │ └── Integrates with TaskManagerController │ ├── 🔘 UIStartMenuButton ← Opens the Start Menu panel │ └── Requires UIFloatingPanelButton │ ├── 🧱 UIFloatingPanelSystem ← Manages panel spawning, docking, layering │ └── 🖥️ DesktopEnvironment ← Root coordinator connecting AppSystemHost, UIFloatingPanelSystem, and shared UI context
🔄 Relationship to Other Systems
| System | Purpose | Connection |
|---|---|---|
| 🧠 AppSystem | Manages app definitions and runtime processes | Supplies app data to the Start Menu |
| 🪟 UIWindowSystem | Handles window creation and layout | Provides UI container for apps |
| 📋 TaskManager | Tracks running app processes | Displays active apps and allows control |
| 🧱 UIFloatingPanelSystem | Handles panel spawning and focus | Used by the Start Menu, Taskbar, and other panels |
📦 Namespace
CosterGraphics.DesktopEnvironment