| 50 |
50 |
private boolean mSolving;
|
| 51 |
51 |
private int mCurrentColor;
|
| 52 |
52 |
private int[] mFaceColors;
|
| 53 |
|
private int mNumFaces;
|
|
53 |
private int mNumColors;
|
| 54 |
54 |
private float mBitmapSize;
|
| 55 |
55 |
private WeakReference<RubikActivity> mWeakAct;
|
| 56 |
56 |
|
| ... | ... | |
| 72 |
72 |
float width = act.getScreenWidthInPixels();
|
| 73 |
73 |
float heigh = act.getScreenHeightInPixels();
|
| 74 |
74 |
|
| 75 |
|
int sizeV = (int)(heigh*RubikActivity.SOLVER_BMP_V_SIZE);
|
| 76 |
|
int sizeH = (int)(width*RubikActivity.SOLVER_BMP_H_SIZE);
|
| 77 |
|
|
| 78 |
|
mBitmapSize = Math.min(sizeV,sizeH);
|
| 79 |
75 |
mWeakAct = new WeakReference<>(act);
|
| 80 |
76 |
mSolving = false;
|
| 81 |
77 |
|
| ... | ... | |
| 88 |
84 |
|
| 89 |
85 |
generateFaceColors(currentObject);
|
| 90 |
86 |
|
|
87 |
final float BUTTON_RATIO = 0.75f;
|
|
88 |
int sizeV = (int)(heigh*RubikActivity.RATIO_BAR*BUTTON_RATIO);
|
|
89 |
int sizeH = (int)((width/mNumColors)*BUTTON_RATIO);
|
|
90 |
mBitmapSize = Math.min(sizeV,sizeH);
|
|
91 |
|
| 91 |
92 |
// TOP ////////////////////////////
|
| 92 |
93 |
LinearLayout layoutTop = act.findViewById(R.id.upperBar);
|
| 93 |
94 |
layoutTop.removeAllViews();
|
| 94 |
95 |
|
| 95 |
|
LinearLayout.LayoutParams paramsL = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1);
|
| 96 |
|
|
| 97 |
|
LinearLayout layoutLeft = new LinearLayout(act);
|
| 98 |
|
layoutLeft.setLayoutParams(paramsL);
|
| 99 |
|
LinearLayout layoutMid = new LinearLayout(act);
|
| 100 |
|
layoutMid.setLayoutParams(paramsL);
|
| 101 |
|
LinearLayout layoutRight = new LinearLayout(act);
|
| 102 |
|
layoutRight.setLayoutParams(paramsL);
|
| 103 |
|
|
| 104 |
|
if( mNumFaces>0 )
|
|
96 |
if( mNumColors>0 )
|
| 105 |
97 |
{
|
| 106 |
98 |
setupBitmaps();
|
| 107 |
99 |
setupColorButtons(act,width);
|
| ... | ... | |
| 111 |
103 |
for(ImageButton button: mColorButton) layoutTop.addView(button);
|
| 112 |
104 |
|
| 113 |
105 |
// BOT ////////////////////////////
|
|
106 |
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1);
|
|
107 |
|
|
108 |
LinearLayout layoutL = new LinearLayout(act);
|
|
109 |
layoutL.setLayoutParams(params);
|
|
110 |
LinearLayout layoutM = new LinearLayout(act);
|
|
111 |
layoutM.setLayoutParams(params);
|
|
112 |
LinearLayout layoutR = new LinearLayout(act);
|
|
113 |
layoutR.setLayoutParams(params);
|
|
114 |
|
| 114 |
115 |
LinearLayout layoutBot = act.findViewById(R.id.lowerBar);
|
| 115 |
116 |
layoutBot.removeAllViews();
|
| 116 |
117 |
|
| 117 |
118 |
setupSolveButton(act);
|
| 118 |
119 |
setupBackButton(act);
|
| 119 |
120 |
|
| 120 |
|
layoutLeft.addView(mSolveButton);
|
| 121 |
|
layoutRight.addView(mBackButton);
|
|
121 |
layoutL.addView(mSolveButton);
|
|
122 |
layoutR.addView(mBackButton);
|
| 122 |
123 |
|
| 123 |
|
layoutBot.addView(layoutLeft);
|
| 124 |
|
layoutBot.addView(layoutMid);
|
| 125 |
|
layoutBot.addView(layoutRight);
|
|
124 |
layoutBot.addView(layoutL);
|
|
125 |
layoutBot.addView(layoutM);
|
|
126 |
layoutBot.addView(layoutR);
|
| 126 |
127 |
}
|
| 127 |
128 |
|
| 128 |
129 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| ... | ... | |
| 140 |
141 |
object== ObjectSignatures.MORP_3 ||
|
| 141 |
142 |
object== ObjectSignatures.MORP_4 )
|
| 142 |
143 |
{
|
| 143 |
|
mNumFaces = ShapeTetrahedron.NUM_FACES;
|
|
144 |
mNumColors = ShapeTetrahedron.NUM_FACES;
|
| 144 |
145 |
mFaceColors = ShapeTetrahedron.FACE_COLORS;
|
| 145 |
146 |
}
|
| 146 |
147 |
else if( object== ObjectSignatures.DIAM_2 ||
|
| ... | ... | |
| 150 |
151 |
object== ObjectSignatures.TRAJ_4 ||
|
| 151 |
152 |
object== ObjectSignatures.PDIA_3 )
|
| 152 |
153 |
{
|
| 153 |
|
mNumFaces = ShapeOctahedron.NUM_FACES;
|
|
154 |
mNumColors = ShapeOctahedron.NUM_FACES;
|
| 154 |
155 |
mFaceColors = ShapeOctahedron.FACE_COLORS;
|
| 155 |
156 |
}
|
| 156 |
157 |
else if( object== ObjectSignatures.CRYS_3 ||
|
| ... | ... | |
| 161 |
162 |
object== ObjectSignatures.MEGA_3 ||
|
| 162 |
163 |
object== ObjectSignatures.MEGA_5 )
|
| 163 |
164 |
{
|
| 164 |
|
mNumFaces = ShapeDodecahedron.NUM_FACES;
|
|
165 |
mNumColors = ShapeDodecahedron.NUM_FACES;
|
| 165 |
166 |
mFaceColors = ShapeDodecahedron.FACE_COLORS;
|
| 166 |
167 |
}
|
| 167 |
168 |
else if( object== ObjectSignatures.BALL_4 )
|
| 168 |
169 |
{
|
| 169 |
|
mNumFaces = ShapeDiamond.NUM_FACES;
|
|
170 |
mNumColors = ShapeDiamond.NUM_FACES;
|
| 170 |
171 |
mFaceColors = ShapeDiamond.FACE_COLORS;
|
| 171 |
172 |
}
|
| 172 |
173 |
else
|
| 173 |
174 |
{
|
| 174 |
|
mNumFaces = ShapeHexahedron.NUM_FACES;
|
|
175 |
mNumColors = ShapeHexahedron.NUM_FACES;
|
| 175 |
176 |
mFaceColors = ShapeHexahedron.FACE_COLORS;
|
| 176 |
177 |
}
|
| 177 |
178 |
}
|
| ... | ... | |
| 184 |
185 |
final float R = SIZE*0.15f;
|
| 185 |
186 |
final float M = SIZE*0.08f;
|
| 186 |
187 |
|
| 187 |
|
mBitmap = new Bitmap[mNumFaces];
|
|
188 |
mBitmap = new Bitmap[mNumColors];
|
| 188 |
189 |
|
| 189 |
190 |
Paint paint = new Paint();
|
| 190 |
191 |
paint.setColor(0xff008800);
|
| ... | ... | |
| 194 |
195 |
paint.setTextAlign(Paint.Align.CENTER);
|
| 195 |
196 |
paint.setStyle(Paint.Style.FILL);
|
| 196 |
197 |
|
| 197 |
|
for(int i=0; i<mNumFaces; i++)
|
|
198 |
for(int i=0; i<mNumColors; i++)
|
| 198 |
199 |
{
|
| 199 |
200 |
mBitmap[i] = Bitmap.createBitmap(SIZE, SIZE, Bitmap.Config.ARGB_8888);
|
| 200 |
201 |
Canvas canvas = new Canvas(mBitmap[i]);
|
| ... | ... | |
| 211 |
212 |
|
| 212 |
213 |
private void setupColorButtons(final RubikActivity act, final float width)
|
| 213 |
214 |
{
|
| 214 |
|
mColorButton = new ImageButton[mNumFaces];
|
|
215 |
mColorButton = new ImageButton[mNumColors];
|
| 215 |
216 |
int padding = (int)(width*RubikActivity.PADDING);
|
| 216 |
217 |
int margin = (int)(width*RubikActivity.SMALL_MARGIN);
|
| 217 |
218 |
|
| 218 |
|
for(int i=0; i<mNumFaces; i++)
|
|
219 |
for(int i=0; i<mNumColors; i++)
|
| 219 |
220 |
{
|
| 220 |
221 |
final int ii = i;
|
| 221 |
222 |
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.MATCH_PARENT, 1.0f);
|
| ... | ... | |
| 289 |
290 |
|
| 290 |
291 |
private void markButton(RubikActivity act)
|
| 291 |
292 |
{
|
| 292 |
|
for(int b=0; b<mNumFaces; b++)
|
|
293 |
for(int b=0; b<mNumColors; b++)
|
| 293 |
294 |
{
|
| 294 |
295 |
Drawable d = mColorButton[b].getBackground();
|
| 295 |
296 |
|
UI iimprovements inthe Solver screen.