* verb category
* voltage toggle comp
* move stuff
* add simple prototype
* implement verb action
* switch expression
* fixed the node not updating
* charge the battery
* fixed battery not charging
* spawn on battery level system
* finally works
* swap commentary position
* can only anchor the extractor on the station
* popup message for trying to anchor outside of station
* default placement for unanchored version
* ops
* fix body type
* commentary
* update visuals of power consumer
* add custom sprite
* fix light layer not changing
* xenoborg circuit
* fix xenoborg circuit
* add tag
* add hand to hold xenoborg circuits
* move to material
* add xenoborg circuit material
* add recipe to mothership core
* add a hand to hold circuits to the mothership core
* to not confuse
* update
* ops
* another ops
* update mothership
* update guidebook
* update values
* more info
* fix stack
* can store xenoborg circuits
* description
* also update description
* circuit -> crytal
* not modified from anything
* update description
* Revert "update mothership"
This reverts commit 84974c56afadac2a99ed2a166244a668d83fff48.
* update empty label
* small update to sprite
* not necessary code
* remove empty line
* color
* make it explode when destroyed
* change values
* update sprite
* update sprite
* make it eletrified
* flavor text
* simplify to only use charge
* subscribe to event
* new line
* remove popup
* no need for the setter
* no longer networked
* feedback popups
* Minor tweaks
* better to understand
* better now?
* double the amount of power per crystal
* ajust power levels
* make modules cost more
* update guidebook with new values
* add popup back
* i love solving merge issues
* remove readonly
* use Transform
* predict verb
* only do stuff if both comps are present
* newline
* fix popup
* remove string.empty
* better voltage comment
* remove indentation from comment
* comment
* break the extractor
* fix comp
* change to protected
* add a client system
* make the component with the biggest name ever
* fix the anchor fail message popup
* kill this thing
* update the proto
* revert changes to PowerNetSystem
* ops
* make it spawn some gas when it explodes
* can't discharge
* comment was wrong
* swap order of components
* set examinable to false
* examine text
* rename AnchorableSystem to SharedAnchorableSystem
* rename file and make it abstract
* server side anchor system
* ops
* client anchor system
* use server anchorable system in server
* use battery visuals
* use a helper method
* revert changes to anchorable system
* new system
* new line
* ops, not used
* ops
* fix battery visuals
* set CableDeviceNode as not enabled
* set setting on map init
* enough feedback for the mothership
* new line
* locale changes
* locale changes to SharedPowerNetworkBatteryChargerVoltageTogglerSystem
* change name (again)
* update comments
* add event
* raise a event
* use events
* use a method instead of just raising the event
* more subscriptions to the voltage change event
* update locale stuff
* upgrade voltage toggler system with stuff from the power switch system
* replace power switch with voltage toggle in generator window
* replace power switch with voltage toggle in SharedPortableGeneratorSystem
* replace power switch with voltage toggle in power sensor
* KILL POWER SWITCHABLE COMPONENT AND SYSTEM
* replace power switch with voltage toggle in PortableGeneratorSystem
* replace all PowerSwitchable for VoltageToggler in the prototypes
* nullable switch text
* not required anymore
* mistake with the yml
* fix some issues with locale
* opposite
* i don't have words
* only use delay if it has the delay comp
* revert this change
* revert this change
* revert this change
* revert this change
* add color
* comment
* use another component
* fix the alert not showing
* generic comp for powernetwork battery and power consumer
* rename events
* fix proto
* make it less efficient
* change how it displays the rogue power thingy
* Comp is evil
* comment
* use resolve
* loc id
* error
* one line
* move this stuff to the voltage toggler system
* revert changes to PowerNetConnector
* revert changes to NodeContainerSystem
* revert changes that mess with PowerSupplierComponent
* revert changes to SharedBatterySystem
* revert changes to server BatterySystem
* revert changes to PowerMonitoringConsoleSystem
* remove whitespace
* guess it was 2 lines
* remove this from PowerNetworkBatteryComponent
* PowerConsumerBatteryCharger
* remove charging behavior from power sink system
* add new component to power sink
* extractor now uses power consumer comp
* update PowerDeviceVisuals.Powered for power consumers that are recieving power
* use PowerDeviceVisuals.Powered instead of BatteryVisuals.Charging
* PowerConsumerBatteryChargerEfficiencyVoltageTogglerComponent
* change values
* Orks micro balance
* me when i forget to change the actual value
* change values in the guidebook
* use a event
* move efficiency to the powerconsumer component
* ops
* revert this random change
* remove mapinit
* move to one line
* remove try comp
* update event
* this is important
* use a entity table
* only one line
* use the entity table
* use the current body crusher proto
* update guidebook
* say that it changes the efficiency
* Improve guidebook wording.xml
Co-authored-by: korczoczek <danielkorczok@gmail.com>
* remove random whitespace
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* style stuff
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* make AnchorOnlyOnStationComponent networked
* better wording
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* Prettier
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* fix stack text
* give option to be anchored on any station member
* use 4 spaces
* use stuff from the other PR
* revert this change
* remove power toggle things
* idk
* use a update loop
* revert locale changes about the voltage toggler
* remove mentions of voltage toggling
* ops
* fix proto
* remove white line
* revert this
* move efficiency to PowerConsumerBatteryCharger
* revert rider suggestion
* custom sprite for extractor flatpack
* use a new enum
* make it destructible
* cleanup
---------
Co-authored-by: beck-thompson <beck314159@hotmail.com>
Co-authored-by: korczoczek <danielkorczok@gmail.com>
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
Co-authored-by: ScarKy0 <scarky0@onet.eu>
* Dirty ApcPowerReceiver if state doesn't match defs
* surely this will work and isn't massive hubris
* SPACE
* docs & comments
* voltage, not charge
* no space
* jfc
* code stuff
* fix error
* now its fixed
* use the charge from the arg
* only on battery full
* remove whitespace
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* use default! instead of null!
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* use set charge
---------
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* verb category
* voltage toggle comp
* move stuff
* add simple prototype
* implement verb action
* switch expression
* fixed the node not updating
* charge the battery
* fixed battery not charging
* spawn on battery level system
* finally works
* swap commentary position
* can only anchor the extractor on the station
* popup message for trying to anchor outside of station
* default placement for unanchored version
* ops
* fix body type
* commentary
* update visuals of power consumer
* add custom sprite
* fix light layer not changing
* xenoborg circuit
* fix xenoborg circuit
* add tag
* add hand to hold xenoborg circuits
* move to material
* add xenoborg circuit material
* add recipe to mothership core
* add a hand to hold circuits to the mothership core
* to not confuse
* update
* ops
* another ops
* update mothership
* update guidebook
* update values
* more info
* fix stack
* can store xenoborg circuits
* description
* also update description
* circuit -> crytal
* not modified from anything
* update description
* Revert "update mothership"
This reverts commit 84974c56afadac2a99ed2a166244a668d83fff48.
* update empty label
* small update to sprite
* not necessary code
* remove empty line
* color
* make it explode when destroyed
* change values
* update sprite
* update sprite
* make it eletrified
* flavor text
* simplify to only use charge
* subscribe to event
* new line
* remove popup
* no need for the setter
* no longer networked
* feedback popups
* Minor tweaks
* better to understand
* better now?
---------
Co-authored-by: beck-thompson <beck314159@hotmail.com>
* Implement APC overloading
* Add power test
* Review
* Some more reviews
* Show map coordinates for test failures
* Widen column 2
* Reduce singularity beacon power consumption
* Try to get grid coordinates
* cleanup
* fix fixtures
* this belongs into the next PR
* review
* misc
---------
Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
* Predicted gas pumps
I wanted to try out atmos and first thing I found.
* a
* Atmos device prediction
- Canisters
- Tanks
- Internals
AirMixes aren't predicted so nothing on that front but all the UIs should be a lot closer.
* Remove details range
* Gas tank prediction
* Even more sweeping changes
* Alerts
* rehg
* Popup fix
* Fix merge conflicts
* Fix
* Review
* Add ENERGYWATTHOURS() loc function
Takes in joules (energy), displays as watt-hours.
* Add simple OnOffButton control
* Re-add Inset style class
This was sloppily removed at some point?? Whatever, I need it.
* Add helper functions for setting title/guidebook IDs on FancyWindow
Reagent dispenser uses these, more in the next commits.
* Add BuiPredictionState helper
This enables me to implement coarse prediction manually in the battery UI.
Basically it's a local buffer of predicted inputs that can easily be replayed against future BUI states from the server.
* Add input coalescing infrastructure
I ran into the following problem: Robust's Slider control absolutely *spams* input events, to such a degree that it actually causes issues for the networking layer if directly passed through. For something like a slider, we just need to send the most recent value.
There is no good way for us to handle this in the control itself, as it *really* needs to happen in PreEngine. For simplicity reasons (for BUIs) I came to the conclusion it's best if it's there, as it's *before* any new states from the server can be applied. We can't just do this in Update() or something on the control as the timing just doesn't line up.
I made a content system, BuiPreTickUpdateSystem, that runs in the ModRunLevel.PreEngine phase to achieve this. It runs a method on a new IBuiPreTickUpdate interface on all open BUIs. They can then implement their own coalescing logic.
In the simplest case, this coalescing logic can just be "save the last value, and if we have any new value since the last update, send an input event." This is what the new InputCoalescer<T> type is for.
Adding new coalescing logic should be possible in the future, of course. It's all just small helpers.
* Battery interface
This adds a proper interface to batteries (SMES/substation). Players can turn IO on and off, and they can change charge and discharge rate. There's also a ton of numbers and stuff. It looks great.
This actually enables charge and discharge rates to be changed for these devices. The settings for both have been set between 5kW and 150kW.
* Oops, forgot to remove these style class defs.
Significantly updates the Engineering guidebook (more explicitly the Atmos section) to have a lot more relevant and useful information.
Right now engineering has been getting update after update with no real change to the relevant guidebook entry. This has lead to a lot of out of date information and bad practices being prevalent in the guidebook, something that pains me to read.
* Rebalance HoS's Energy Shotgun
* SLIGHTLY Up the max charge so the gun properly recharges all of its charges, which matters a lot more with the self charge cooldown system.
* Prevent recharge cooldown if 0 power is used.
* Makes the clientside HUD actually update to reflect the changes in firecost and thus max/current charges.
* Properly fix that recharging to just under full issue instead of applying a budget fix to only the eshotgun.
* Clean up the client ammo UI fix.
* Update the self recharger component to comply with maintainer request.
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* Remove code that was made redundant by a hotfix from another PR.
* Make the recharge pause on EMP, document things where needed, clean up code as per maintainer request, add a note to make the code better when power is moved to shared.
* Fix another internal issue
* Code cleanup + fix the rapid recharge verb to remove pause.
* cleanup
---------
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
* baby proof the terminal
* Make a couple exceptions for items that you might take with you.
* alwayspoweredlights
* Uncuttable cables since cablecomp is a snowflake construction system
* chairs and vendors
* rerun heisentests
* rerun tests again
* Make APC UI work correctly with multiple users
* Check access only on client, when constructing UI
* Do TODO (Thanks, Robust 236.1)
---------
Co-authored-by: Eoin Mcloughlin <helloworld@eoinrul.es>
* Work on abstracting out chargeup functionality/ui from grav gen
* Work on station anchor
* Finish implementing station anchors
* uhh yeah
* ok.
* fix tests
* whoops
* Get the last extraneous yaml fail
* PJB review
* beast mode... ACTIVATE!
---------
Co-authored-by: Ed <96445749+TheShuEd@users.noreply.github.com>
Co-authored-by: EmoGarbage404 <retron404@gmail.com>
* 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
There were TWO bugs here
FIRST, APCs *did* update their visual state on initialization, but at that point the relevant power state hasn't been initialized yet, so it always returns a bogus result. There aren't guaranteed to be subsequent power updates that actually trigger the APC to update so this can get it stuck.
Fixed by just deferring the on-init update to be after the first update tick, which is itself ordered to be after power update.
SECOND: Once I fixed that, I ran into the issue that APCs created at *server startup* also fail to update, because the throttling system (to prevent frequent APC updates) thinks the LastChargeStateTime was at server startup.
Fixed by making that variable nullable so it defaults to null.
Also removed the useless datafields on the "last update" fields. These are all just used to cache and throttle updates, something that should not be persisted to a map file.
* Try syncing powered state to client
For some reason the client is not receiving the ApcPowerReceiverComponentState, so it's not working.
* Fix powered state not syncing to client
The client PowerReceiverSystem was abstract, which prevented it from
running initialize.
* Flip check so that it runs bigger checks first
PowerDisabled skips the others.
NeedsPower skips the receiving check.
* Disallow changing Powered manually
* Move Powered update to PowerReceiverSystem
* Move appearance to event subscription
* Move metadata component to AllEntityQuery
* Cleanup
* Move Powered update back to PowerNetSystem
It's easier to use the EntityQueries and it dosen't need to be updated
anywhere else.
* Put appearance updating back
* Move IsPowered to shared
* Simplify IsPowered
* Cleanup
* Remove duplicate PowerChangedEvent
PowerChangedEvent on ProviderChanged doesn't seem to be needed
PowerChangedEvent gets raised by in update if the power state changes
after a new provider is connected
* Prototyping whole station wire map
* More prototyping
* Added icons for the different power distributors and toggleable cable displays
* Power cable layouts are now only sent to the client when the power monitor is open
* UI prototyping
* Power monitors can now see the sprites of distant entities, long entity names are truncated
* Updated how network devices are added to the player's PVS
* More feature prototypes
* Added source / load symbols
* Final prototype! Time to actually code it properly...
* Start of code clean up
* Continuing code clean up
* Fixed UI appearance
* Code clean up complete
* Removed unnecessary changes
* Updated how power values are calculated, added UI warnings for power sinks and power net checks
* Updated how power values are calculated again, added support for portable generators
* Removed unnecessary files
* Map beacons start toggled off, console map now works outside the station, fixed substation icon
* Made some of Sloth's requested changes. Power distributors don't blink anymore, unless selected
* Moved a number of static variables in PowerMonitoringHelper to sensible places in the main files. Added a NavMapTrackableComponent so that you can specify how individual entities appear on the navmap
* Updated the colors/positions of HV cables and SMESes to improve contrast
* Fixed SMES color in map legend
* Partially fixed auto-scrolling on device selection, made sublists alphabetical
* Changed how auto-scroll is handled
* Changed the font color of the console warning messages
* Reduced the font size of beacon labels
* Added the station name to the console
* Organized references
* Removed unwanted changes to RobustToolbox
* Fix merge conflict
* Fix merge conflict, maybe
* Fix merge conflict
* Updated outdated reference
* Fixed portable_generator.yml
* Implemented a number of requested changes, move bit masks to a shared component
* Navigate listings via the navmap
* First attempt at improving efficiency
* Second attempt at optimization, entity grouping added for solar panels
* Finished solar panel entity joining
* Finished major revisions, code clean up needed
* Finializing optimizations
* Made requested changes
* Bug fix, removed obsolete code
* Bug fixes
* Bug fixes
* STarted revisions
* Further revisions
* More revision
* Finalizing revisions. Need to make RT PR
* Code tidying
* More code tidying
* Trying to avoid merge conflicts
* Trying to avoid merge conflicts
* Removed use of PVS
* Improving efficiency
* Addressed a bunch of outstanding issues
* Clear old data on console refresh
* UI adjustments
* Made node comparison more robust. More devices can be combined into one entry
* Added missing component 'dirty'