Project

General

Profile

Download (5.43 KB) Statistics
| Branch: | Tag: | Revision:

magiccube / src / main / java / org / distorted / control / RubikControl.java @ f5da732a

1
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2021 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6
// Magic Cube is free software: you can redistribute it and/or modify                            //
7
// it under the terms of the GNU General Public License as published by                          //
8
// the Free Software Foundation, either version 2 of the License, or                             //
9
// (at your option) any later version.                                                           //
10
//                                                                                               //
11
// Magic Cube is distributed in the hope that it will be useful,                                 //
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                //
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                 //
14
// GNU General Public License for more details.                                                  //
15
//                                                                                               //
16
// You should have received a copy of the GNU General Public License                             //
17
// along with Magic Cube.  If not, see <http://www.gnu.org/licenses/>.                           //
18
///////////////////////////////////////////////////////////////////////////////////////////////////
19

    
20
package org.distorted.control;
21

    
22
import org.distorted.library.message.EffectListener;
23
import org.distorted.main.RubikActivity;
24

    
25
import java.lang.ref.WeakReference;
26

    
27
///////////////////////////////////////////////////////////////////////////////////////////////////
28

    
29
public class RubikControl implements EffectListener, Runnable
30
  {
31
  WeakReference<RubikActivity> mRefAct;
32
  long mWholeID, mRotateID;
33
  boolean mWholeReturned, mRotateReturned;
34

    
35
long mRetID;
36

    
37
///////////////////////////////////////////////////////////////////////////////////////////////////
38

    
39
  private void addWholeObjects()
40
    {
41
    mWholeID = 0;
42

    
43
    mRetID = mWholeID;
44

    
45
    Thread networkThrd = new Thread(this);
46
    networkThrd.start();
47
    }
48

    
49
///////////////////////////////////////////////////////////////////////////////////////////////////
50

    
51
  private void addWholeEffects()
52
    {
53

    
54
    }
55

    
56
///////////////////////////////////////////////////////////////////////////////////////////////////
57

    
58
  private void removeWholeObjects()
59
    {
60

    
61
    }
62

    
63
///////////////////////////////////////////////////////////////////////////////////////////////////
64

    
65
  private void addRotateObjects()
66
    {
67
    mRotateID = 1;
68

    
69
    mRetID = mRotateID;
70

    
71
    Thread networkThrd = new Thread(this);
72
    networkThrd.start();
73
    }
74

    
75
///////////////////////////////////////////////////////////////////////////////////////////////////
76

    
77
  private void addRotateEffects()
78
    {
79

    
80
    }
81

    
82
///////////////////////////////////////////////////////////////////////////////////////////////////
83

    
84
  private void removeRotateObjects()
85
    {
86

    
87
    }
88

    
89
///////////////////////////////////////////////////////////////////////////////////////////////////
90

    
91
  private void animateCubeWhole()
92
    {
93
    addWholeObjects();
94
    addWholeEffects();
95
    }
96

    
97
///////////////////////////////////////////////////////////////////////////////////////////////////
98

    
99
  private void finishWhole()
100
    {
101
    removeWholeObjects();
102

    
103
    mWholeReturned = true;
104

    
105
    if( !mRotateReturned ) animateCubeRotate();
106
    }
107

    
108
///////////////////////////////////////////////////////////////////////////////////////////////////
109

    
110
  private void animateCubeRotate()
111
    {
112
    addRotateObjects();
113
    addRotateEffects();
114
    }
115

    
116
///////////////////////////////////////////////////////////////////////////////////////////////////
117

    
118
  private void finishRotate()
119
    {
120
    removeRotateObjects();
121

    
122
    mRotateReturned= true;
123

    
124
    RubikActivity act = mRefAct.get();
125
    if( act!=null ) act.unblockEverything();
126
    }
127

    
128
///////////////////////////////////////////////////////////////////////////////////////////////////
129
// PUBLIC
130

    
131
  @Override
132
  public void run()
133
    {
134
    android.util.Log.e("D", "running...");
135

    
136
    try
137
      {
138
      Thread.sleep(4000);
139
      }
140
    catch(InterruptedException ex)
141
      {
142
      // ignore
143
      }
144

    
145
    android.util.Log.e("D", "end running...");
146

    
147
    effectFinished(mRetID);
148
    }
149

    
150
///////////////////////////////////////////////////////////////////////////////////////////////////
151

    
152
  public void effectFinished(long effectID)
153
    {
154
    if( effectID==mWholeID  ) finishWhole();
155
    if( effectID==mRotateID ) finishRotate();
156
    }
157

    
158
///////////////////////////////////////////////////////////////////////////////////////////////////
159

    
160
  public void animateAll(RubikActivity act)
161
    {
162
    act.blockEverything();
163
    mRefAct = new WeakReference<>(act);
164

    
165
    mWholeReturned = false;
166
    mRotateReturned= false;
167

    
168
    animateCubeWhole();
169
    }
170

    
171
///////////////////////////////////////////////////////////////////////////////////////////////////
172

    
173
  public void animateRotate(RubikActivity act)
174
    {
175
    act.blockEverything();
176
    mRefAct = new WeakReference<>(act);
177

    
178
    mWholeReturned = true;
179
    mRotateReturned= false;
180

    
181
    animateCubeRotate();
182
    }
183
  }
    (1-1/1)