Files
Bubberstation/code/datums/components
Y0SH1M4S73R c31b82e597 Adds usb support to advanced camera consoles (#91235)
## About The Pull Request

This PR adds usb functionality to advanced camera consoles.

The advanced camera console component gets the last valid position
viewed from the console, which is usually the current viewed position,
unless you move the view into static.

The advanced camera target intercept outputs the position you left/right
click (except shift-clicking), and what you clicked on. This only works
for atoms the camera can actually see, even if you somehow glitch your
way into not seeing static on your client.

Equipment action components on circuits attached to a camera console
will add their actions to be used from the console.

## Why It's Good For The Game

Expands the use cases for the advanced camera console, providing a means
to extend their functionality, as well as a potentially powerful source
of input data for circuit users able to acquire illegal tech (or get the
board from a space ruin).

## Changelog

🆑
add: Advanced camera consoles now have usb ports. Connected circuits can
get the position the camera is viewing, get the location of targeted
entities, and provide the console with actions that the user can
activate.
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2025-05-29 16:16:10 -04:00
..
2025-05-29 16:15:02 -04:00
2025-04-29 17:45:28 -06:00
2024-11-25 18:54:51 -05:00
2025-05-15 16:10:48 -04:00
2025-05-06 21:52:01 -04:00
2025-04-14 15:51:24 -04:00
2025-01-11 11:38:00 -08:00
2025-03-12 16:43:07 -04:00
2025-01-22 20:50:07 -07:00
2025-01-28 03:12:59 +01:00
2024-12-07 16:17:17 -07:00
2025-04-14 15:51:24 -04:00
2025-05-08 19:21:08 -04:00

Datum Component System (DCS)

Concept

Loosely adapted from /vg/. This is an entity component system for adding behaviours to datums when inheritance doesn't quite cut it. By using signals and events instead of direct inheritance, you can inject behaviours without hacky overloads. It requires a different method of thinking, but is not hard to use correctly. If a behaviour can have application across more than one thing. Make it generic, make it a component. Atom/mob/obj event? Give it a signal, and forward its arguments with a SendSignal() call. Now every component that want's to can also know about this happening.

HackMD page for an introduction to the system as a whole.

See/Define signals and their arguments in __DEFINES\components.dm