Project

General

Profile

« Previous | Next » 

Revision 4fd9efa1

Added by Leszek Koltunski about 5 years ago

Add support for separate Cube and Node effects.

View differences:

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