rotators / foclassic

FOnline Community Edition (r412 base)
https://rotators.fodev.net/foclassic/
GNU General Public License v3.0
42 stars 5 forks source link

Extensions rework #38

Open wipe2238 opened 5 years ago

wipe2238 commented 5 years ago

What?

Replace using dynamic libraries, loaded on demand, with static libraries linked with core applications. Keep a clear line between engine and game code; extensions must be possible to use without manual changes to any part of engine repository... and if it does need them, it's no longer an extension, but a candidate for a pull request or fork.

Why?

When?

v7 forward, interrupting #15 process. I don't have neither time or will to deal with all kinds of .dll issues, so it will go live ASAP. Extensions are dead, long live extensions.

How?

First version most likely will be pretty close in structure to "old" extensions, with GameOptions* adjusted here and there to keep at least part of old extensions code working as-is. Due to infamous check_look, extensions must be able to consume reserved functions; this have to be addressed by #29. But. We'll see how it goes :smiling_imp:

Later, class will be expanded to provide deeper customizations which cannot be done within extensions.

As usual, CMake will be responsible for pre-configuring everything, with CMakeFOClassic.txt being able to not only add, but also remove any item from list. There might be stock extensions in future, but final decision about including them (or not) should be left to game developers. Stock extensions, if any, needs to be enabled by developers.

B-but...