I'm not fully confident in this fix, I can't test it right now.
closes#1409 1409
---------
Co-authored-by: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com>
(cherry picked from commit f026528f6e31b816758e600d66482bf991a0e88d)
# Description
This significantly improves the quality of the language system by fixing
the mistakes I've made almost a year ago while developing it.
Mainly, this throws away the old half-broken way of networking in favor
of the component state system provided by RT. Language speaker comp is
now shared with SendOnlyToOwner = true, and its state is handled
manually.
In addition to that, this brings the following changes:
- UniversalLanguageSpeaker and LanguageKnowledge are now server-side
- DetermineLanguagesEvent and LanguagesUpdateEvent are now shared (so
that future systems can be built in shared, if needed)
- Everything now uses the ProtoId<LanguagePrototype> type instead of raw
strings (god, I hated those so much)
- The server-side language system now accepts Entity<T?> arguments
instead of EntityUid + T
- UniversalLanguageSpeaker is now based on DetermineEntityLanguagesEvent
and gets an Enabled field, which allows to turn it off. This may have
some use in the future.
- Some minor cleanup
<!--
TODO MEDIA
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
-->
# Changelog
No cl
---------
Co-authored-by: VMSolidus <evilexecutive@gmail.com>