* Brrrr ECS
* Create lit on powered system
* Light bulb ECS
* Finishing porting to ECS
* Minor touches
* Removed events
* Removed old comments
* Fixed test
* To popup system
- Completely rewrited the `ConstructionComponent` logic to be ECS, *without* looking too much at the original implementation.
- The original implementation was dirty and unmaintainable, whereas this new implementation is much cleaner, well-organized and maintainable. I've made sure to leave many comments around, explaining what everything does.
- Construction now has a framework for handling events other than `InteractUsing`.
- This means that you can now have CGL steps for things other than inserting items, using tools...
- Construction no longer uses `async` everywhere for `DoAfter`s. Instead it uses events.
- Construction event handling occurs in the `ConstructionSystem` update tick, instead of on event handlers.
- This ensures we can delete/modify entities without worrying about "collection modified while enumerating" exceptions.
- This also means the construction update tick is where all the fun happens, meaning it'll show up on our metrics and give us an idea of how expensive it is/how much tick time is spent in construction.
- `IGraphCondition` and `IGraphAction` have been refactored to take in `EntityUid`, `IEntityManager`, and to not be async.
- Removes nested steps, as they made maintainability significantly worse, and nothing used them yet.
- This fixes#4892 and fixes#4857
Please note, this leaves many things unchanged, as my idea is to split this into multiple PRs. Some unchanged things:
- Initial construction code is the same. In the future, it'll probably use dummy entities.
- Client-side guided steps are the same. In the future, the server will generate the guided steps and send them to clients as needed, caching these in both the server and client to save cycles and bandwidth.
- No new construction graph steps... Yet! 👀
* Remove WireNet node group from cables
Implement extension cable components and system
Remove connection over distance logic from ApcPower... components
* Add extension cable components to prototypes
* Implement ApcNetwork
Implement ApcNetSwitch
* Fix ignoredComponents.cs
* Add friend attribute to new components
* Add construction graph for a light switch
* Address reviews
* Fix broken test
* Move ConnectionType enum to DeviceNetworkComponent
Change netId data definition to use the ConnectionType enum values
Co-authored-by: Julian Giebel <j.giebel@netrocks.info>
This is not an ideal solution because as an outsider, pipes will look wrong on rotated stations, however there's no way to fix this properly right now as far as I can see soooo...
* Moves HumanoidCharacterAppearance to ECS
* Makes HumanoidAppearanceSystem work over networks
* Makes HumanoidAppearanceSystem more efficient
* Cleans up the files
* Updates privacy on a couple of functions
* Fixes a few using references, renames a file
* Makes HumanoidAppearanceSystem more cleaner
* Fixes Magic Mirror
* Cleanup
* HumanoidAppearanceComponent now has a friend
SharedHumanoidAppearanceSystem is only allowed to act on this, now
* Fixes the Body-HumanoidAppearance ECS scaffolding
* a little cleanup never hurt anybody
* quick fix for magic mirror appearance access
* Replaces a networked event with a local one
This one was... causing bugs
* Oops! All Changes In One Commit
* try desperately to fix prediction issues and fail
* oops
* test
* actually fixes prediction issues
* port jittering to status effect
* default merge behavior + alert cooldown stuff
* silly test issue
* zabloing
* address reviews
* testing decription textlabel
* Move uplink listing to a new menu
* Add search bar
* Added description
* Added radio uplink
* Added preset uplinks
* Minor fix
* Fixed comma
* Walls
* Airlocks mostly ported
* Disposal Unit
* Tiles
* Lighting
* Catwalk
* Windows
* Some vending machine work
* More Vending Machines
* Rest of vending machine sprites ported
* Fixes to vending machines
* Tables (This took a lot of work)
* Fixes low walls being required for window smoothing
- Also replaces window damage visualization
* Plasma Window
* APC
* SMES + Reorganized parts.yml
* Furniture and Organization and Removed Shelf
* Renamed seats.yml to chairs.yml
* Dispensers
* Lazy-fixed the glass airlocks
* Don't need this no more
* Tilez
* blue circuit my fucking beloved
* Switches lights to cev one
* Conveyors and Switch
* Reorients lights
* !ALERT! MAP CHANGES !ALERT!
Co-authored-by: Vera Aguilera Puerto <gradientvera@outlook.com>
* Work on DeviceNetworkSystem
* Implement device networking as ecs
Remove mailing unit code for now
Remove device network metadata
* Implement integration tests for device networking
* Remove manual updating DeviceNetworkSystem and use WaitRunTicks
* Fix wrong component name in ignored components
* Apply suggestions from code review
Co-authored-by: mirrorcult <notzombiedude@gmail.com>
* Rename NetworkUtils to DeviceNetworkConstants
Change connection type constants to enum
Remove create function from network payload class
* Change broken nodegroup check in wirenet to grid check
* Change ComponentManager to entity manager in DeviceNetworkSystem
* Fix smaller mistakes
* Wtf random test fail pls run them again smh
* Fix DataField in DeviceNetworkComponent
* Fix yaml in DeviceNetworkTest
* Fix DeviceNetworkComponent DeviceNetId property
Co-authored-by: Julian Giebel <j.giebel@netrocks.info>
Co-authored-by: mirrorcult <notzombiedude@gmail.com>
The Pipe Connection Visualizer failed to account for entity rotation,
making the connection overlay sprites appear out of sync with the actual
entity connections.