Files
Bubberstation/code/datums/components
SmArtKar 960ed29b0a Major UI update and theme redesign (#88498)
## About The Pull Request

This PR completely overhauls Midnight and Midnight-derived UIs, as well
as does some adjustments to the UI layout.


![image](https://github.com/user-attachments/assets/369a812a-9b6c-4d3f-8a5e-ba4fbc9f4d64)

### Major changes:
* All UI elements for Midnight/Midnight-derived themes have been redrawn
to be cleaner, with consistent palettes and up-to-date sprites
* Tiny equip E is gone - Drop action has been moved in its place,
freeing some space in the bottom right corner
* Four minor menu keys have been bundled with actions, now-vertical
floor change element taking their place
* Action palette (wide thing in the top left corner) is now hidden when
it has zero actions bound to it and the player isn't currently dragging
an action button.

I've also fixed some minor issues with how hand elements are rendered,
and given feedback to resist button (it now lights up when pressed or
when the hotkey is held down)

<details>

<summary>Some screenshots of new UIs</summary>


![image](https://github.com/user-attachments/assets/afc62225-2a21-45c7-8382-d35fe4ec9d6c)


![image](https://github.com/user-attachments/assets/d2ea6f1a-a9f6-4b98-8fc8-663b1e97a38f)


![image](https://github.com/user-attachments/assets/52ffa40d-f982-4ab1-8c81-1225666363ab)

Redrawn UIs now have themed clothing slots


![image](https://github.com/user-attachments/assets/a9421e2f-3979-4aec-b2cb-7066d2b997ce)


![image](https://github.com/user-attachments/assets/0bcb5e8e-a626-44ce-b7f3-2a195c128213)


![qrd5eRR](https://github.com/user-attachments/assets/356b7bf8-5f54-4f92-bea6-4a8ac36aa2e7)

</details>

## Why It's Good For The Game

Our UI icons are very outdated and compressed, with very large palettes
and odd transparency quirks, making adding new elements or redesigning
current ones quite hard and frustrating. A fresh coat of paint can take
user experience a long way.

As for moved elements, most people either equip things manually or use
the equip hotkey - E button is rather obscure and rarely used, while
drop button makes sense to be located near hands. Action palette just
takes up screen space most of the time, so there's no reason to not hide
it when you don't have any use for it.

## Changelog
🆑
qol: Resist button now has visible feedback.
qol: Readjusted UI layout.
image: Completely redrawn Midnight and Midnight-derived UIs!
/🆑
2024-12-18 21:54:57 +00:00
..
2024-05-16 19:54:00 -07:00
2024-10-09 02:03:50 +02:00
2024-08-15 01:28:21 +01:00
2024-05-16 19:54:00 -07:00
2024-05-16 19:54:00 -07:00
2024-12-14 00:13:12 +01:00
2024-08-21 17:07:02 +12:00
2024-07-15 16:28:41 +01:00
2024-10-09 02:03:50 +02:00
2024-10-07 13:34:36 +02:00
2024-05-16 19:54:00 -07: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