Files
Bubberstation/code/datums/components
Rohesie 25f670f8de Opacity refactor (#52881)
Moves all opacity var manipulation to a proc which sends a signal.
    light_blocker element for movable opaque atoms made, which tracks its movement and updates the affected turfs for proper lighting updates.
    has_opaque_atom boolean replaced by the opacity_sources lazylist to keep track of the sources, and a directional_opacity which serves a similar function but also allows for future expansion with on-border opaque objects (not yet implemented).
    Some opacity-related sight procs optimized as a result of this.
    Some variables moved to the object's definition.
    A define or two added into the mix for clarity.
    Some code cleaning, like turning booleans into their defines.
    One file renamed for clarity.

Changelog

cl
balance: Mechs no longer block sight. It's a non-trivial cost for the lighting system with little to no gain.
/cl
2020-08-19 13:24:20 +12:00
..
2020-07-29 09:31:38 -03:00
2020-08-04 20:35:14 +02:00
2020-08-10 11:22:14 -04:00
2020-08-11 14:44:01 +12:00
2020-07-29 09:31:38 -03:00
2020-07-29 09:31:38 -03:00
2020-07-29 09:31:38 -03:00
2020-07-16 20:13:04 +02:00
2020-07-23 20:10:26 -04:00
2020-08-11 23:39:10 +03:00
2020-04-05 21:06:45 -03:00
2020-05-22 02:17:15 -07:00
2020-06-22 16:49:07 +02:00
2020-07-29 09:31:38 -03:00
2020-08-19 13:24:20 +12:00
2020-07-16 20:13:04 +02: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 it's arguments with a SendSignal() call. Now every component that want's to can also know about this happening.

See this thread for an introduction to the system as a whole.

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