Revision 20dbec0e
Added by Leszek Koltunski about 5 years ago
src/main/java/org/distorted/library/message/EffectMessageSender.java | ||
---|---|---|
19 | 19 |
|
20 | 20 |
package org.distorted.library.message; |
21 | 21 |
|
22 |
import org.distorted.library.effect.Effect; |
|
23 |
|
|
22 | 24 |
import java.util.Vector; |
23 | 25 |
|
24 | 26 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
32 | 34 |
private class Message |
33 | 35 |
{ |
34 | 36 |
EffectListener mListener; |
35 |
EffectMessage mMessage; |
|
36 | 37 |
long mEffectID; |
37 |
long mObjectID; |
|
38 | 38 |
|
39 |
Message(EffectListener l, EffectMessage m, long effID, long objID)
|
|
39 |
Message(EffectListener listener, long effectID)
|
|
40 | 40 |
{ |
41 |
mListener = l; |
|
42 |
mMessage = m; |
|
43 |
mEffectID = effID; |
|
44 |
mObjectID = objID; |
|
41 |
mListener = listener; |
|
42 |
mEffectID = effectID; |
|
45 | 43 |
} |
46 | 44 |
} |
47 | 45 |
|
... | ... | |
104 | 102 |
while( mList.size()>0 ) |
105 | 103 |
{ |
106 | 104 |
tmp = mList.remove(0); |
107 |
tmp.mListener.effectMessage(tmp.mMessage, tmp.mEffectID, tmp.mObjectID);
|
|
105 |
tmp.mListener.effectFinished(tmp.mEffectID);
|
|
108 | 106 |
} |
109 | 107 |
|
110 | 108 |
synchronized(mThis) |
... | ... | |
124 | 122 |
|
125 | 123 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
126 | 124 |
|
127 |
public static void newMessage(EffectListener l, EffectMessage m, long effID, long objID)
|
|
125 |
public static void newMessage(Effect effect)
|
|
128 | 126 |
{ |
129 |
Message msg = mThis.new Message(l,m,effID,objID); |
|
130 |
mList.add(msg); |
|
127 |
int numListeners = effect.getNumListeners(); |
|
131 | 128 |
|
132 |
synchronized(mThis)
|
|
129 |
if( numListeners>0 )
|
|
133 | 130 |
{ |
134 |
mNotify = true; |
|
135 |
mThis.notify(); |
|
131 |
long id = effect.getID(); |
|
132 |
|
|
133 |
for(int i=0; i<numListeners; i++) |
|
134 |
{ |
|
135 |
Message msg = mThis.new Message(effect.removeFirstListener(), id); |
|
136 |
mList.add(msg); |
|
137 |
} |
|
138 |
|
|
139 |
synchronized(mThis) |
|
140 |
{ |
|
141 |
mNotify = true; |
|
142 |
mThis.notify(); |
|
143 |
} |
|
136 | 144 |
} |
137 | 145 |
} |
138 | 146 |
} |
Also available in: Unified diff
Simplify the way applications can get notifications when an effect finishes.
Now, instead of the 'DistortedEffects.(de)registerForNotifications()' 2 APIs, we call a single 'Effect.notifyWhenFinished()'.