-
Notifications
You must be signed in to change notification settings - Fork 2
Using crossplot
The DeepCore framework comes with crossplot, a library that allows publish-subscribe communication via GlobalValues between story plots. To achieve this crossplot initialises a MainGlobalValueEventBus in GameScoring.lua that listens to incoming subscriptions and publish messages. The publish messages are redirected to GlobalValueEventBus instances running on different story plots. Users of crossplot don't have to worry about the implementation details and can simply call crossplot:galactic() to initialise crossplot in a galactic story plot. The story plot running the instance of EawXMod does not have to call crossplot:galactic() explicitly, it will be initialised inside the EawXMod constructor and can be used globally afterwards.
The example below shows how the first plot subscribes to the sub_test event with its Receive function with crossplot:subscribe().
The second plot uses crossplot:publish() to publish an update to the sub_test event. The additional second argument provided by this plot will be passed on to the Receive function in the first plot. The number of additional arguments is not limited.
Click to see Rebel plot
require("PGDebug")
require("PGStateMachine")
require("PGStoryMode")
require("deepcore/crossplot/crossplot")
function Definitions()
DebugMessage("%s -- In Definitions", tostring(Script))
ServiceRate = 0.1
StoryModeEvents = {Universal_Story_Start = Begin_GC}
end
function Begin_GC(message)
if message == OnEnter then
crossplot:galactic()
crossplot:subscribe("sub_test", Receive)
elseif message == OnUpdate then
crossplot:update()
end
end
function Receive(text_entry)
Game_Message(text_entry)
endClick to see Empire plot
require("PGDebug")
require("PGStateMachine")
require("PGStoryMode")
require("deepcore/crossplot/crossplot")
function Definitions()
DebugMessage("%s -- In Definitions", tostring(Script))
ServiceRate = 0.1
StoryModeEvents = {Universal_Story_Start = Begin_GC}
end
function Begin_GC(message)
if message == OnEnter then
crossplot:galactic()
Sleep(1) -- sleep to make sure the other plot had time to subscribe
crossplot:publish("sub_test", "TEXT_FACTION_EMPIRE")
elseif message == OnUpdate then
crossplot:update()
end
end