Commit Graph

16 Commits

Author SHA1 Message Date
caa482a7a0 [Add] Implement delta time game loop. 2025-10-04 21:28:16 +01:00
e7607e3fc0 [Refactor] Created UIRenderer for consistant coord system.
The UI codebase was suffering with complexity due to the need to
manually convert between two different coordinate systems:
- Top-down "screen coordinates" used by SDL for input and windowing.
- Bottom-up "GL coordinates" used by low-level renderers.

This was making layout calculations diffucult and is bug prone.

With this commit, I'm introducing a 'UIRenderer' abstraction layer that
wraps the low-level 'ShapeRenderer' and 'TextRenderer'. This is
responsible for centralising all coordinate system conversations.

All UI components has been refactored to use the 'UIRenderer' so the
entire UI code opeates exclusively in a single, top-down screen
coordinate system as one would expect.
2025-10-04 03:11:48 +01:00
a6e159f0da Menu bar for for text editor etc. 2025-10-03 23:56:30 +01:00
666b4f554b [Add] File loading and fix local 'exit' command. 2025-10-01 21:38:33 +01:00
ebd1e222d7 [Add] File saving for the fancy new text editor. 2025-09-30 21:37:24 +01:00
d34c13ef8b [Change] Tried to fix stupid fucking animation jitter 2025-09-29 20:36:49 +01:00
43907509eb [Add] Graphical application launcher. 2025-09-28 20:39:11 +01:00
996bf1c62c [Add] Temp desktop background and clock widget. 2025-09-28 17:24:41 +01:00
0e7f97ca81 [Refactor] Improve window buttons and fix state handling. 2025-09-28 15:37:15 +01:00
ea25cb6cc7 [Add] Taskbar and window management work
- Adds a taskbar that displays and manages open application windows
- close, minimise and restore functionality
- resizeable windows
- Refactored desktop event handling to manage window focus and render
  order
2025-09-28 14:12:11 +01:00
00e78cc2ba [Refactor] One GameState to rule them all!
Introduces a central GameState class to manage the client's lifecycle,
network connection and UI components. The Terminal has been demoted to a
pure UI widget and main has been simplified to a basic entrypoint as
they should be!
2025-09-27 18:07:01 +01:00
6272800a22 [Refactor] Migrate networking from SDL_net to Asio.
the SDL3_net implementation was causing blocking behaviour and was
difficult to debug and has bad docs due to not being released. Caused
crashes all over. so moved to Asio. This thing took so damn long as this
also had it's issues!

- All networking now uses Asio's async callback model.
- TcpConnection class encapsulates logic for a single client-server
  connection, managing socket and message framing.
- Implmented thread-safe queues for handling incoming and outgoing
  messages between the network thread and the main application.
- Refactored ClientNetwork and NetworkManager, the primary client and
  server networking classes have been rewritten to use the new
asio-based architecture.
- Player objects on the server are not managed by std::unique_ptr to
  ensure proper lifetime management and prevent memleaks.
- VFSManager is now a single instance on the server, passed by reference
  to new players, avoding redundant script loading for every connection.
- Resolved server crash that occured immediately upon client connection.
  This was traced to an object lifetime issue within Asio's async
handlers which was fixed by simplifying the send operation.
2025-09-25 22:41:01 +01:00
208314f54a [Add] Remote SSH sessions and window management.
This is the beginning of the remote session functionality. It allows
players to connect to different NPC systems via an 'ssh' command.

*Server*
- Can now manage a world of multiple NPC file systems that are
  identified by IP addresses.
- Implemented SSH command to allow connection to remote NPC systems.
  Each remote session is managed via a 'CommandProcessor'.
- 'exit' command causes the remote server to terminate the client
  connection

*Client*
- Terminal can enter a 'remote' state via the SSH command which sends
  subsequent commands to the server.
- the local 'exit' command will close the terminal window.
- Refactored UI object ownership to prevent memory leaks and ensure
  proper cleanup when a window is closed or the terminal application.
2025-09-21 15:22:35 +01:00
846b8595f4 [Add] Blinking terminal cursor. 2025-09-20 14:13:36 +01:00
2d79aba17a [Add] Window focus and event routing. 2025-09-20 14:05:00 +01:00
8a902d3034 [Add] Desktop and draggable UI windows. 2025-09-20 13:48:12 +01:00