`Timer` could have been deallocated after it has emitted its signal, but
still try to execute code and change its internal state. This patch
prevents that.
This patch addresses issues with inability to define and create a new
database from scratch from configs, as well as invalid definition of
database links that required them to contain "/" character.
`Copy()` and `MutableCopy()` methods for `Text` incorrectly handled
negative arguments in some cases. They were fixed and appropriate tests
were added.
`RemoveItem()` method for `AssociativeArray()` is now able to deallocate
keys. `Empty()` method is now defined in a `Collectino` class and allows
users to recursively free nested collections, while deallocating their
keys.
This method did not do any checks for validity of its parameters and its
behavior wasn't consistent in that it woldn't set specified config in
case `Feature` was already enabled. Now it will.
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.
- Basic Cleanup methods added;
- Static finalizers for custom cleanup added;
- Actors no longer support object pools because storing them inside
objects is dangerous.