-
-
Notifications
You must be signed in to change notification settings - Fork 78
FiltersAndEvents
To write modular code, a system may expose its interface in the form of virtual functions, events or filters.
-
virtual functions
: allows a derived class to hook the input and output of a single function in the base class. -
events
: feeds input to external functions when certain things happened. Events only hooks the input without providing an output. -
filters
: allows external functions to form input-output chains to modify data at any point of execution.
Use whatever patterns to allow external modifications to the input-output of your modular code.
Filters is a design pattern of input-output chains. Please see script/ide/System/Core/Filters.lua for detailed usage.
You can simply apply a named filters at any point of execution in your code to allow other users to modify your data.
For example, one can turn data = data;
into an equivalent filter, like below
data = GameLogic.GetFilters():apply_filters("my_data", data, some_parameters);
The above code does nothing until some other modules add_filters
to "my_data"
.
Each filter function takes the output of the previous filter function as its first parameter, all other input parameters are shared by all filter functions, like below
F1(input, ...)-->F2(F1_output, ...)-->F3(F2_output, ...)-->F3_output
Filters is the recommended way for plugin/app developers to extend or modify paracraft.
Download Paracraft | ParacraftSDK | copyright by tatfook 2016 | upload image