<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Home</title><link>https://sourceforge.net/p/ceventlistenercstyle/wiki/Home/</link><description>Recent changes to Home</description><atom:link href="https://sourceforge.net/p/ceventlistenercstyle/wiki/Home/feed" rel="self"/><language>en</language><lastBuildDate>Thu, 18 Dec 2014 17:12:57 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/ceventlistenercstyle/wiki/Home/feed" rel="self" type="application/rss+xml"/><item><title>Discussion for Home page</title><link>https://sourceforge.net/p/ceventlistenercstyle/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="event-type-creation"&gt;Event Type Creation&lt;/h1&gt;
&lt;p&gt;#include "EventListener.h"&lt;/p&gt;
&lt;p&gt;NEW_EVENT_MAKER(EventStartLoadListener);&lt;br /&gt;
NEW_EVENT_MAKER(EventCompleteLoadListener);&lt;br /&gt;
NEW_EVENT_MAKER(EventPutSwordListener);&lt;br /&gt;
NEW_EVENT_MAKER(EventHitByEnemyListener);&lt;br /&gt;
...&lt;/p&gt;
&lt;h1 id="event-holder-creation"&gt;Event Holder Creation&lt;/h1&gt;
&lt;p&gt;EventHolder&amp;lt;EventStartLoadListener&amp;gt; loadStartEventsHolder;&lt;br /&gt;
EventHolder&amp;lt;EventCompleteLoadListener&amp;gt; LoadCompleteEventsHolder;&lt;br /&gt;
EventHolder&amp;lt;EventHitByEnemyListener&amp;gt; HitByEnemyEventsHolder;&lt;br /&gt;
...&lt;/p&gt;
&lt;h1 id="subscribe-events"&gt;Subscribe Events&lt;/h1&gt;
&lt;p&gt;//Subscribe to the StartLoad event for &lt;b&gt;pForm&lt;/b&gt; with &lt;b&gt;pForm-&amp;gt;Delegate()&lt;/b&gt; delegate:&lt;br /&gt;
loadStartEventsHolder += new EventStartLoadListener(pForm, &amp;amp;Form::Delegate, pForm);&lt;/p&gt;
&lt;p&gt;//Re-Subscribe to the &lt;b&gt;pForm&lt;/b&gt; and change delegate to &lt;b&gt;pSample-&amp;gt;SDelegate()&lt;/b&gt; //delegate:&lt;br /&gt;
loadStartEventsHolder += new EventStartLoadListener(pSample, &amp;amp;Sample::SDelegate, &lt;b&gt;&lt;i&gt;pForm&lt;/i&gt;&lt;/b&gt;);&lt;/p&gt;
&lt;p&gt;//Subscribe to the StartLoad event for &lt;b&gt;pForm2&lt;/b&gt; with &lt;b&gt;pSample-&amp;gt;SDelegate()&lt;/b&gt; //delegate:&lt;br /&gt;
loadStartEventsHolder += new EventStartLoadListener(pSample, &amp;amp;Sample::SDelegate, pForm2);&lt;/p&gt;
&lt;p&gt;/*Move delegate for &lt;b&gt;pForm&lt;/b&gt; to the &lt;b&gt;end of the EventList&lt;/b&gt;, and it will be called at the end (but there is only one StartLoad event for pForm so it dosent change anything but eventList will become: StartEvents&lt;span&gt;[pForm2, pForm]&lt;/span&gt;)*/&lt;br /&gt;
loadStartEventsHolder += new EventStartLoadListener(pSample, &amp;amp;Sample::SDelegate, &lt;b&gt;&lt;i&gt;pForm&lt;/i&gt;&lt;/b&gt;);&lt;/p&gt;
&lt;p&gt;//UnSubscribe from &lt;b&gt;pForm&lt;/b&gt; StartLoad Event&lt;br /&gt;
loadStartEventsHolder -= new EventStartLoadListener(dontcare, &amp;amp;DontCareDelegate, pForm);&lt;/p&gt;
&lt;p&gt;//UnSubscribe from all StartLoad Events (in this case unSubscribe from pForm2)&lt;br /&gt;
loadStartEventsHolder--;&lt;/p&gt;
&lt;h1 id="events-life-cycle"&gt;Events Life Cycle&lt;/h1&gt;
&lt;p&gt;EventHolder&amp;lt;EventListener&amp;gt; someHolder; //- can be used only as local object and //automatically removed, when class will be disposed (as any local objects)&lt;/p&gt;
&lt;p&gt;//event that was subscribed manually&lt;br /&gt;
EventListener* someEvent = new EventSayMeowListener(sample, &amp;amp;Sample::delegateLoad, pForm); &lt;br /&gt;
//Need to dispose it manually&lt;br /&gt;
delete someEvent;&lt;/p&gt;
&lt;p&gt;//You can UnSubscribe any events inside delegate (as it is in C#)&lt;/p&gt;
&lt;h1 id="events-chain"&gt;Events Chain&lt;/h1&gt;
&lt;p&gt;bool delegateComliteLoad(void&lt;em&gt; obj, const EventArgs&lt;/em&gt; args) {&lt;br /&gt;
        return false;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;//If function return true, then next event in eventList will not be called&lt;/p&gt;
&lt;h1 id="generate-events"&gt;Generate Events&lt;/h1&gt;
&lt;p&gt;//Make custom EventArgs&lt;br /&gt;
class CustomEventArgs : public EventArgs {&lt;br /&gt;
   public: int custom_var;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;//Calling CompleteLoad EventChain where sender == pForm :&lt;br /&gt;
EventController::GetInst().GenerateEvent&amp;lt;EventCompleteLoadListener&amp;gt;(pForm, pCustomEventArgs);&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">4ipideil</dc:creator><pubDate>Thu, 18 Dec 2014 17:12:57 -0000</pubDate><guid>https://sourceforge.net6a7a8e899378a99e58e4d0c2539e5f9ff4eb5b45</guid></item><item><title>Home modified by 4ipideil</title><link>https://sourceforge.net/p/ceventlistenercstyle/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Welcome to your wiki!&lt;/p&gt;
&lt;p&gt;This is the default page, edit it as you see fit. To add a new page simply reference it within brackets, e.g.: &lt;span&gt;[SamplePage]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;The wiki uses &lt;a class="" href="/p/ceventlistenercstyle/wiki/markdown_syntax"&gt;Markdown&lt;/a&gt; syntax.&lt;/p&gt;
&lt;p&gt;&lt;h6&gt;Project Members:&lt;/h6&gt;
&lt;ul class="md-users-list"&gt;
&lt;li&gt;&lt;a href="/u/chipideil"&gt;4ipideil&lt;/a&gt; (admin)&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;span class="download-button-5492f97781b24b1f8c3feae2" style="margin-bottom: 1em; display: block;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">4ipideil</dc:creator><pubDate>Thu, 18 Dec 2014 15:57:43 -0000</pubDate><guid>https://sourceforge.net4e13dba92f6c4b5b457d3fc19880433980b1b071</guid></item></channel></rss>