Commit Graph

9 Commits

Author SHA1 Message Date
Pieter-Jan Briers
0c97520276 Fix usages of TryIndex() (#39124)
* Fix usages of TryIndex()

Most usages of TryIndex() were using it incorrectly. Checking whether prototype IDs specified in prototypes actually existed before using them. This is not appropriate as it's just hiding bugs that should be getting caught by the YAML linter and other tools. (#39115)

This then resulted in TryIndex() getting modified to log errors (94f98073b0), which is incorrect as it causes false-positive errors in proper uses of the API: external data validation. (#39098)

This commit goes through and checks every call site of TryIndex() to see whether they were correct. Most call sites were replaced with the new Resolve(), which is suitable for these "defensive programming" use cases.

Fixes #39115

Breaking change: while doing this I noticed IdCardComponent and related systems were erroneously using ProtoId<AccessLevelPrototype> for job prototypes. This has been corrected.

* fix tests

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-09-09 18:17:56 +02:00
Krunklehorn
c2b1b81ec8 Add checks for various complex interactions (#37246)
* Prevent toggling radiation collectors

* Prevent resisting locks

* Prevent unbuckling others, early exit before doafter

* Prevent camera and camera router setup

* Prevent rotating and flipping

* Also prevent adding the unbuckle verb.

* Revert ResistLocker changes

* Prevent emitter tampering

* Also prevent lock verb

* Prevent toggling welders

* Prevent gun open/close bolt, rack and switch mode

* Prevent toggling stun batons
2025-06-02 10:06:45 -07:00
metalgearsloth
63dfd21b14 Predict dumping (#32394)
* Predict dumping

- This got soaped really fucking hard.
- Dumping is predicted, this required disposals to be predicte.d
- Disposals required mailing (because it's tightly coupled), and a smidge of other content systems.
- I also had to fix a compnetworkgenerator issue at the same time so it wouldn't mispredict.

* Fix a bunch of stuff

* nasty merge

* Some reviews

* Some more reviews while I stash

* Fix merge

* Fix merge

* Half of review

* Review

* re(h)f

* lizards

* feexes

* feex
2025-04-19 16:20:40 +10:00
metalgearsloth
a89d4c750b Power stuff (#31314)
* Power stuff

- Add shared IsPowered
- Add shared ResolveApc
- Move PowerChangedEvent to shared for now
- Add SlimPoweredLight that actually functions how you'd expect a PoweredLight to function it id didn't have a bunch of bloat on it.

* big update

* boing
2024-08-25 22:18:42 +10:00
metalgearsloth
5896e68752 Content update for UI prediction (#27214)
* Content update for UI refactor

* Big update

* Sharing

* Remaining content updates

* First big update

* Prototype updates

* AUGH

* Fix UI comp ref

* Cleanup

- Fix predicted message, fix item slots, fix interaction range check.

* Fix regressions

* Make this predictive

idk why it wasn't.

* Fix slime merge

* Merge conflict

* Fix merge
2024-04-26 18:16:24 +10:00
Leon Friedrich
f308adffaf Move ActorComponent to shared (#21293) 2023-10-29 04:21:02 +11:00
TemporalOroboros
3ac4cf85db Cleaner BoundUserInterfaces (#17736) 2023-07-09 02:02:17 +10:00
metalgearsloth
0b38589728 Raise power events by ref and not broadcast (#11923)
Also some other minor stuff.
2022-10-14 23:08:15 -05:00
Flipp Syder
d4697c000c Surveillance cameras (#8246)
* cameras but i didn't feel like git stashing them

* Adds more functionality server-side for surveillance cameras

* rider moment

* Adds skeleton for SurveillanceCameraMonitorBoundUi on client

* whoops

* makes surveillance camera monitor UI more defined

* removes tree from SurveillanceCameraMonitorWindow

* surveillance camera active flag, other routing things

* actually sets how SurveillanceCameraMonitorSystem sends camera info to clients

* adds entity yaml, changes field

* adds the camera/monitor entities, makes the UI open

* SurveillanceCameraRouters (not implemented fully)

* subnets for cameras, server-side

* it works!

* fixes rotation in cameras

* whoops

restores surveillance cameras to ignored components
makes it so that switching cameras now lerps the other camera

* makes the UI work

* makes it so that cameras actually refresh now

* cleanup

* adds camera.rsi

* cleans up prototypes a bit

* adds camera subnet frequencies, cameras in subnets

* adds surveillance camera router subnets

* might fix testing errors

* adds the circuit board to the surveillance camera monitor

* fixes up the camera monitor (the detective will get his tv soon)

* adds heartbeat, ensures subnet data is passed into cameras to send

* fixes up a few things

* whoops

* changes to UI internals

* fixes subnet selection issue

* localized strings for UI

* changes 'test' id to 'camera' for cameras

* whoops

* missing s

* camera static!

* adds a delay to camera switching

* adjusts a few things in camera timing

* adds setup for cameras/routers, localization for frequency names

* adds setup ui for routers, makes subnet names in monitor window follow frequency name in prototype

* localization, some cleanup

* ui adjustments

* adds surveillance camera visuals

* fixes a bug when closing the UI for monitors

* adds disconnect message to UI

* adds construction graph to cameras

* adds the camera to the construction menu

* fixes network selection for setup, tweak to assembly

* adds surveillance camera router construction, fixes up surveillance camera wire cutting

* adds disconnect button to monitor UI

* switches around the status text

* tweaks monitor UI

* makes the address actually show

* might make tests pass

* UI adjustments, hard name limit

* ok, that didn't work

* adds wireless cameras

* makes the television work/look nicer

* adds tripod cameras in addition to mobile cameras

* makes wireless cameras constructable

* fixes up those prototypes

* reorganization in C#, small cleanup

* ensures that power changes deactivate some devices

* adds a component to the television, comments out a function

* actually, never mind, i forgot that wireless cameras existed/are creatable for a second

* tweaks to router construction, removes SubnetTest from prototypes

* removes it from frequencies too

* Apply suggestions from code review

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>

* type serializers into components

* setup window opens centered, enum is now byte

* replaces active monitor list with ActiveSurveillanceCameraMonitorComponent

* adds paused/deleted entity checks, changes how verbs are given

* removes EntitySystem.Get<T>() references

* fixes bug related to selecting network from setup, alphabet-orders network listing in setup

* rider moment

* adds minwidth to surveillance camera setup window

* addresses reviews

* should fix the issue with camera visuals not updating properly

* addresses some reviews

* addresses further review

* addresses reviews related to RSIs

* never needed a key there anyways

* changes a few things with routers to ensure that they're active

* whoops

* ensurecomp over addcomp

* whoops

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2022-05-31 18:44:57 +10:00