This patch changes AcediaCore to only inject `BroadcastEventsObserver`
when its events are actually needed.
Other changes are making this change produce a log entry and adding a
relevant `SideEffect` that describes this change.
AcediaCore is moving towards separation of all of its functionality into
3 big groups: general, client-specific, server-specific. And files will
be rearranged into `BaseRealms`, `ClientRealm` and `ServerRealm`
accordingly.
Additional directory `CoreRealm` is meant to contain functionality and
base classes common for both `ClientRealm` and `ServerRealm` ones.
Squashed commit of the following:
commit f7cbf54045
Author: Anton Tarasenko <dkanus@gmail.com>
Date: Thu Jun 23 02:45:20 2022 +0700
Done
commit 3cf67a3ca5
Author: Anton Tarasenko <dkanus@gmail.com>
Date: Wed Jun 22 20:49:28 2022 +0700
Almost done
commit 6dfb9dc204
Author: Anton Tarasenko <dkanus@gmail.com>
Date: Wed Jun 22 17:03:06 2022 +0700
Now it even works
commit 2be4656f51
Author: Anton Tarasenko <dkanus@gmail.com>
Date: Wed Jun 22 16:30:35 2022 +0700
Kind of compiles now
commit 73914e9b7e
Author: Anton Tarasenko <dkanus@gmail.com>
Date: Tue Jun 21 04:24:04 2022 +0700
Daily dirty commit
I shamefully ended up doing another mega-commit, because a lot of things
needed to be redone at once and it was easier that way on me. No one
really consistently tracks what I'm doing with these commits anyway.
This adds a whole bunch of code to deal with proper clean up for Acedia,
so it doesn't crash on map change and also replaces old event/listener
system with new signals/slots one.
There wasn't actually any need for `InitializeStatic()` method. In fact
it could lead to problems. Now calling `StaticCosntructor()` is allowed
instead.
Now `LoggerAPI`, instead of simply loggin messages by itself, uses
logger objects (deriving from `Logger` class) to output log messages for
it (previous way of logging by `Log()` method is available by
`ConsoleLogger`).
Multiple loggers can be configured per each log level, which can be done
via config.
This is a giga commit, something that should not really be done with
git, but I messed up.
This commit brings a great amount of changes, most important is
reworking `TextAPI` and alsmost complete replacement of `string` with
`Text`/`MutableText`.
Another huge change is introduction of command system that allows to
define commands in a centralized manner, handles auto-parsing of
their parameters and auto generates help info.
Lastly, JSON data types were replaced with new
`DynamicArray`/`AssociativeArray` that are better designed and more
generic.
Refactors `User` to simply store persistent data, while making `APlayer`
represent a connecte playr with appropriate links to `User` and (in
future) his in-game pawn representation.