Revision 4fd9efa1
Added by Leszek Koltunski about 5 years ago
src/main/java/org/distorted/effect/AppearEffect.java | ||
---|---|---|
20 | 20 |
package org.distorted.effect; |
21 | 21 |
|
22 | 22 |
import org.distorted.library.effect.Effect; |
23 |
import org.distorted.library.main.DistortedEffects; |
|
23 | 24 |
import org.distorted.library.main.DistortedScreen; |
24 | 25 |
import org.distorted.library.message.EffectListener; |
25 | 26 |
import org.distorted.magic.RubikCube; |
... | ... | |
65 | 66 |
|
66 | 67 |
private final int FAKE_EFFECT_ID = -1; |
67 | 68 |
|
68 |
private int mCubeEffectNumber, mCubeEffectFinished, mCubeEffectReturned; |
|
69 |
|
|
70 | 69 |
private EffectListener mListener; |
71 |
private DistortedScreen mScreen; |
|
72 | 70 |
private RubikCube mCube; |
71 |
private int mCubeEffectNumber, mNodeEffectNumber, mEffectFinished, mEffectReturned; |
|
73 | 72 |
|
73 |
DistortedScreen mScreen; |
|
74 | 74 |
Effect[] mCubeEffects; |
75 | 75 |
int[] mCubeEffectPosition; |
76 |
Effect[] mNodeEffects; |
|
77 |
int[] mNodeEffectPosition; |
|
76 | 78 |
|
77 | 79 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
78 | 80 |
|
79 | 81 |
AppearEffect() |
80 | 82 |
{ |
81 |
mCubeEffectReturned = 0;
|
|
83 |
mEffectReturned = 0; |
|
82 | 84 |
} |
83 | 85 |
|
84 | 86 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
102 | 104 |
|
103 | 105 |
if( effectID == id ) |
104 | 106 |
{ |
105 |
mCubeEffectReturned++; |
|
106 |
|
|
107 |
if( mCubeEffectReturned == mCubeEffectFinished ) |
|
108 |
{ |
|
109 |
mListener.effectFinished(FAKE_EFFECT_ID); |
|
110 |
} |
|
111 |
|
|
107 |
effectReturned(); |
|
112 | 108 |
mCube.remove(id); |
113 | 109 |
break; |
114 | 110 |
} |
115 | 111 |
} |
112 |
for(int i=0; i<mNodeEffectNumber; i++) |
|
113 |
{ |
|
114 |
long id = mNodeEffects[i].getID(); |
|
115 |
|
|
116 |
if( effectID == id ) |
|
117 |
{ |
|
118 |
effectReturned(); |
|
119 |
mCube.getEffects().abortById(id); |
|
120 |
break; |
|
121 |
} |
|
122 |
} |
|
123 |
} |
|
124 |
|
|
125 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
126 |
|
|
127 |
private void effectReturned() |
|
128 |
{ |
|
129 |
mEffectReturned++; |
|
130 |
|
|
131 |
if( mEffectReturned == mEffectFinished ) |
|
132 |
{ |
|
133 |
mListener.effectFinished(FAKE_EFFECT_ID); |
|
134 |
} |
|
116 | 135 |
} |
117 | 136 |
|
118 | 137 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
123 | 142 |
mCube = cube; |
124 | 143 |
mListener = listener; |
125 | 144 |
|
126 |
mCubeEffectFinished = createEffects(duration);
|
|
145 |
mEffectFinished = createEffects(duration); |
|
127 | 146 |
|
128 |
if( mCubeEffects!=null ) |
|
129 |
{ |
|
130 |
mCubeEffectNumber = mCubeEffects.length; |
|
131 |
} |
|
132 |
else |
|
147 |
mCubeEffectNumber = ( mCubeEffects!=null ) ? mCubeEffects.length : 0; |
|
148 |
mNodeEffectNumber = ( mNodeEffects!=null ) ? mNodeEffects.length : 0; |
|
149 |
|
|
150 |
if( mCubeEffectNumber==0 && mNodeEffectNumber==0 ) |
|
133 | 151 |
{ |
134 |
throw new RuntimeException("Appear Cube Effects not created!");
|
|
152 |
throw new RuntimeException("Cube and Node Effects both not created!");
|
|
135 | 153 |
} |
136 | 154 |
|
137 | 155 |
for(int i=0; i<mCubeEffectNumber; i++) |
... | ... | |
140 | 158 |
mCubeEffects[i].notifyWhenFinished(this); |
141 | 159 |
} |
142 | 160 |
|
161 |
DistortedEffects nodeEffects = mCube.getEffects(); |
|
162 |
|
|
163 |
for(int i=0; i<mNodeEffectNumber; i++) |
|
164 |
{ |
|
165 |
nodeEffects.apply(mNodeEffects[i],mNodeEffectPosition[i]); |
|
166 |
mNodeEffects[i].notifyWhenFinished(this); |
|
167 |
} |
|
168 |
|
|
143 | 169 |
mScreen.attach(mCube); |
144 | 170 |
|
145 | 171 |
return FAKE_EFFECT_ID; |
Also available in: Unified diff
Add support for separate Cube and Node effects.