{"action":"closed","issue":{"url":"https://api.github.com/repos/skahal/Buildron/issues/12","repository_url":"https://api.github.com/repos/skahal/Buildron","labels_url":"https://api.github.com/repos/skahal/Buildron/issues/12/labels{/name}","comments_url":"https://api.github.com/repos/skahal/Buildron/issues/12/comments","events_url":"https://api.github.com/repos/skahal/Buildron/issues/12/events","html_url":"https://github.com/skahal/Buildron/issues/12","id":159061304,"number":12,"title":"Define mod SDK","user":{"login":"giacomelli","id":177389,"avatar_url":"https://avatars.githubusercontent.com/u/177389?v=3","gravatar_id":"","url":"https://api.github.com/users/giacomelli","html_url":"https://github.com/giacomelli","followers_url":"https://api.github.com/users/giacomelli/followers","following_url":"https://api.github.com/users/giacomelli/following{/other_user}","gists_url":"https://api.github.com/users/giacomelli/gists{/gist_id}","starred_url":"https://api.github.com/users/giacomelli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/giacomelli/subscriptions","organizations_url":"https://api.github.com/users/giacomelli/orgs","repos_url":"https://api.github.com/users/giacomelli/repos","events_url":"https://api.github.com/users/giacomelli/events{/privacy}","received_events_url":"https://api.github.com/users/giacomelli/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/skahal/Buildron/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"closed","locked":false,"assignee":{"login":"giacomelli","id":177389,"avatar_url":"https://avatars.githubusercontent.com/u/177389?v=3","gravatar_id":"","url":"https://api.github.com/users/giacomelli","html_url":"https://github.com/giacomelli","followers_url":"https://api.github.com/users/giacomelli/followers","following_url":"https://api.github.com/users/giacomelli/following{/other_user}","gists_url":"https://api.github.com/users/giacomelli/gists{/gist_id}","starred_url":"https://api.github.com/users/giacomelli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/giacomelli/subscriptions","organizations_url":"https://api.github.com/users/giacomelli/orgs","repos_url":"https://api.github.com/users/giacomelli/repos","events_url":"https://api.github.com/users/giacomelli/events{/privacy}","received_events_url":"https://api.github.com/users/giacomelli/received_events","type":"User","site_admin":false},"assignees":[{"login":"giacomelli","id":177389,"avatar_url":"https://avatars.githubusercontent.com/u/177389?v=3","gravatar_id":"","url":"https://api.github.com/users/giacomelli","html_url":"https://github.com/giacomelli","followers_url":"https://api.github.com/users/giacomelli/followers","following_url":"https://api.github.com/users/giacomelli/following{/other_user}","gists_url":"https://api.github.com/users/giacomelli/gists{/gist_id}","starred_url":"https://api.github.com/users/giacomelli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/giacomelli/subscriptions","organizations_url":"https://api.github.com/users/giacomelli/orgs","repos_url":"https://api.github.com/users/giacomelli/repos","events_url":"https://api.github.com/users/giacomelli/events{/privacy}","received_events_url":"https://api.github.com/users/giacomelli/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/skahal/Buildron/milestones/1","html_url":"https://github.com/skahal/Buildron/milestones/Mods%20support","labels_url":"https://api.github.com/repos/skahal/Buildron/milestones/1/labels","id":1814715,"number":1,"title":"Mods support","description":"","creator":{"login":"giacomelli","id":177389,"avatar_url":"https://avatars.githubusercontent.com/u/177389?v=3","gravatar_id":"","url":"https://api.github.com/users/giacomelli","html_url":"https://github.com/giacomelli","followers_url":"https://api.github.com/users/giacomelli/followers","following_url":"https://api.github.com/users/giacomelli/following{/other_user}","gists_url":"https://api.github.com/users/giacomelli/gists{/gist_id}","starred_url":"https://api.github.com/users/giacomelli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/giacomelli/subscriptions","organizations_url":"https://api.github.com/users/giacomelli/orgs","repos_url":"https://api.github.com/users/giacomelli/repos","events_url":"https://api.github.com/users/giacomelli/events{/privacy}","received_events_url":"https://api.github.com/users/giacomelli/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":1,"state":"open","created_at":"2016-06-08T01:35:31Z","updated_at":"2016-08-01T01:49:36Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2016-06-08T01:39:28Z","updated_at":"2016-08-01T01:49:36Z","closed_at":"2016-08-01T01:49:36Z","body":"We need to define an interface or, maybe, interfaces to build a mod.\r\n\r\nSomething like:\r\n\r\n ```csharp\r\ninterface IMod\r\n{    \r\n    void Initialize(ModContext context);    \r\n}\r\n\r\nclass ModContext\r\n{\r\n    // Events.\r\n    event EventHandler<BuildFoundEventArgs> BuildFound;\r\n    event EventHandler<BuildRemovedEventArgs> BuildRemoved;\r\n    event EventHandler<BuildUpdatedEventArgs> BuildUpdated;    \r\n    event EventhHandler<BuildStatusChangedEventArgS> BuildStatusChanged;\r\n    event EventhHandler<BuildTriggeredByChangedEventArgS> BuildTriggeredByChanged;\r\n    event EventHandler<BuildsRefreshEventArgs> BuildsRefreshed;    \r\n    event EventHandler<CIServerUpEventArgs> CIServerUp;\r\n    event EventHandler<CIServerDownEventArgs> CIServerDown;\r\n    event EventHandler<UserFoundEventArgs> UserFound;\r\n    event EventHandler<UserUpdatedEventArgs> UserUpdated;\r\n    event EventHandler<UserTriggeredBuildEventArgs> UserTriggeredBuild;\r\n    event EventHandler<UserRemovedEventArgs> UserRemoved;\r\n    event EventHandler<UserAuthenticationSuccessfulEventArgs> UserAuthenticationSuccessful;\r\n    event EventHandler<UserAuthenticationFailedEventArgs> UserAuthenticationFailed;  \r\n    event EventHandler<RemoteControlConnectedEventArgs> RemoteControlConnected;  \r\n    event EventHandler<RemoteControlDisconnectedEventArgs> RemoteControlDisconnected;  \r\n    \r\n    // Properties\r\n    IEnumerable<Build> Builds { get; }\r\n    Camera Camera { get; }    \r\n}\r\n```\r\n\r\nWith Initialize(ModContext), a mod can choose which events it wants to listen to.\r\nIn the future, this ModContext class with events will allow us to add new events without needing to update all existing mods."}}
{"actor":{"display_login":"giacomelli"}}