FlexSolution provides essential mechanisms to let players customize various things based on user-defined Lua tables (aka solutions).
What's solution?
Technically speaking, solutions are Lua tables defined within global variable FlexSolution.solutions.
Example:
FlexSolution.solutions["solution-name"] = { -- Enable this solution automatically, optional, false by default enable = false, -- Description of this solution, optional description = "description text...", }
As you see, only two optional attributes are pre-defined, which means it's YOU to decide how FlexSolution works. In other words, concrete features and mechanisms are all implemented by extensions.
You can write an extension by yourself, or download and combine existing extensions. The most important thing for you is being creative to make FlexSolution unique for yourself!
I have posted an add-on named FlexBind, which listens game events (talent switched, entered a PvP area, etc.), checks current conditions and bind spells, items, macros, etc. to shortcut keys automatically.
Now thinking in FlexSolution:
- I want to let FlexSolution bind spells to shortcut keys. OK, here is an extension named FlexSolution_Bindings which adds an attribute "bindings" to your solutions and do binding works.
- But all the bindings are static, you may want to change bindings automatically (e.g. talent changed). Another extension named FlexSolution_Conditions adds an attribute "conditions" to your solutions and listen game events, check current states to enable/disable solutions automatically. This is exactly what you need!
SO:
FlexBind = FlexSolution + FlexSolution_Conditions + FlexSolution_Bindings
Combine the extensions and let your solutions creative!
How to create solutions
The variable contains solutions FlexSolution.solutions is global, therefore you can define your solutions in any Lua script files as long as World of Warcraft can loads them. However there are some hints for creating solutions:
- It's not recommended to put solutions in FlexSolution directory, it is the essential add-on for all extensions.
- You can put your solutions into the corresponding extensions' directories. For example, you installed an extension named FlexSolution_Bindings which adds a new solution attribute "bindings". Therefore you can put all your "bindings" solutions under directory FlexSolution_Bindings.
- If you are familiar with add-on loading mechanism, you can create a new add-on, put all solution files under this add-on directory and load your solution files by .toc manifest file.

