Revision 78843d15
Added by Leszek Koltunski about 1 month ago
src/main/java/org/distorted/phasedsolver/SolverLowerPane.java | ||
---|---|---|
49 | 49 |
|
50 | 50 |
void backPhase(SolverActivity act) |
51 | 51 |
{ |
52 |
if( mCurrMove>0 ) |
|
53 |
{ |
|
54 |
int[][] moves = transformMoves(mMoves[mCurrPhase],0,mCurrMove, false); |
|
55 |
mControl = act.getControl(); |
|
56 |
mControl.applyScrambles(moves); |
|
57 |
mCurrMove = 0; |
|
58 |
} |
|
59 |
else if( mCurrPhase>0 ) |
|
60 |
{ |
|
61 |
mCurrPhase--; |
|
62 |
mNumMoves = mMoves[mCurrPhase].length; |
|
63 |
int[][] moves = transformMoves(mMoves[mCurrPhase],0,mNumMoves, false); |
|
64 |
mControl = act.getControl(); |
|
65 |
mControl.applyScrambles(moves); |
|
66 |
} |
|
67 |
else |
|
68 |
{ |
|
69 |
mCurrPhase = mNumPhases-1; |
|
70 |
mNumMoves = mMoves[mCurrPhase].length; |
|
71 |
mCurrMove = mNumMoves; |
|
72 |
mControl = act.getControl(); |
|
73 |
|
|
74 |
int[][] moves = transformMoves(mMoves, true); |
|
75 |
mControl.applyScrambles(moves); |
|
76 |
} |
|
52 | 77 |
|
78 |
setText(act); |
|
53 | 79 |
} |
54 | 80 |
|
55 | 81 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
56 | 82 |
|
57 | 83 |
void nextPhase(SolverActivity act) |
58 | 84 |
{ |
85 |
if( mCurrMove<mNumMoves ) |
|
86 |
{ |
|
87 |
int[][] moves = transformMoves(mMoves[mCurrPhase],mCurrMove,mNumMoves, true); |
|
88 |
mCurrMove = mNumMoves; |
|
89 |
mControl = act.getControl(); |
|
90 |
mControl.applyScrambles(moves); |
|
91 |
} |
|
92 |
else if( mCurrPhase<mNumPhases-1 ) |
|
93 |
{ |
|
94 |
mCurrPhase++; |
|
95 |
mNumMoves = mMoves[mCurrPhase].length; |
|
96 |
mCurrMove = mNumMoves; |
|
97 |
int[][] moves = transformMoves(mMoves[mCurrPhase],0,mNumMoves, true); |
|
98 |
mControl = act.getControl(); |
|
99 |
mControl.applyScrambles(moves); |
|
100 |
} |
|
101 |
else |
|
102 |
{ |
|
103 |
mCurrPhase = 0; |
|
104 |
mNumMoves = mMoves[mCurrPhase].length; |
|
105 |
mCurrMove = 0; |
|
106 |
mControl = act.getControl(); |
|
107 |
int[][] moves = transformMoves(mMoves, false); |
|
108 |
mControl.applyScrambles(moves); |
|
109 |
} |
|
59 | 110 |
|
111 |
setText(act); |
|
60 | 112 |
} |
61 | 113 |
|
62 | 114 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
63 | 115 |
|
64 | 116 |
private void setText(SolverActivity act) |
65 | 117 |
{ |
118 |
int currMove = 0; |
|
119 |
int totalMove = 0; |
|
120 |
|
|
121 |
if( mMoves!=null ) |
|
122 |
{ |
|
123 |
currMove = mCurrMove; |
|
124 |
for(int p=0; p<mCurrPhase; p++) currMove += (mMoves[p]==null ? 0: mMoves[p].length); |
|
125 |
for(int p=0; p<mNumPhases; p++) totalMove += (mMoves[p]==null ? 0: mMoves[p].length); |
|
126 |
} |
|
127 |
|
|
128 |
final int cMove = currMove; |
|
129 |
final int tMove = totalMove; |
|
130 |
|
|
66 | 131 |
act.runOnUiThread(new Runnable() |
67 | 132 |
{ |
68 | 133 |
@Override |
69 | 134 |
public void run() |
70 | 135 |
{ |
71 |
mPhase.setText(mPhaseNames[mCurrPhase]); |
|
72 |
mText.setText(mCurrMove+"/"+mNumMoves);
|
|
136 |
mPhase.setText(mPhaseNames[mCurrPhase]+" "+mCurrMove+"/"+mNumMoves);
|
|
137 |
mText.setText(cMove+"/"+tMove);
|
|
73 | 138 |
} |
74 | 139 |
}); |
75 | 140 |
} |
76 | 141 |
|
142 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
143 |
|
|
144 |
private int[][] transformMoves(int[][] moves, int start, int end, boolean front) |
|
145 |
{ |
|
146 |
int mult = front ? 1:-1; |
|
147 |
int len = end-start; |
|
148 |
int[][] ret = new int[len][]; |
|
149 |
|
|
150 |
for(int m=0; m<len; m++) |
|
151 |
{ |
|
152 |
int[] mv = moves[front ? start+m : end-1-m]; |
|
153 |
int[] rt = new int[3]; |
|
154 |
rt[0] = mv[0]; |
|
155 |
rt[1] = (1<<mv[1]); |
|
156 |
rt[2] = mult*mv[2]; |
|
157 |
ret[m] = rt; |
|
158 |
} |
|
159 |
|
|
160 |
return ret; |
|
161 |
} |
|
162 |
|
|
77 | 163 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
78 | 164 |
|
79 | 165 |
private int[][] transformMoves(int[][][] moves, boolean front) |
src/main/res/layout/mainlayout.xml | ||
---|---|---|
56 | 56 |
android:textAppearance="?android:attr/textAppearanceLarge" |
57 | 57 |
android:gravity="center_vertical|start"/> |
58 | 58 |
|
59 |
<LinearLayout |
|
60 |
android:id="@+id/phaseBar" |
|
61 |
android:layout_above="@id/lowerBar" |
|
62 |
android:layout_width="match_parent" |
|
63 |
android:layout_height="70dp" |
|
64 |
android:orientation="horizontal" |
|
65 |
android:background="@android:color/transparent"> |
|
66 |
|
|
67 |
<ImageButton |
|
68 |
android:id="@+id/solverPhaseLeft" |
|
69 |
android:background="@drawable/ui_left" |
|
70 |
android:layout_width="0dp" |
|
71 |
android:layout_height="match_parent" |
|
72 |
android:layout_weight="1.0" |
|
73 |
android:gravity="center_vertical|center" |
|
74 |
android:onClick="PhaseLeft" |
|
75 |
android:layout_gravity="center_vertical"/> |
|
76 |
|
|
77 |
<TextView |
|
78 |
android:id="@+id/solverPhaseName" |
|
79 |
android:layout_width="0dp" |
|
80 |
android:layout_height="match_parent" |
|
81 |
android:layout_weight="5" |
|
82 |
android:gravity="center" |
|
83 |
android:textSize="20sp"/> |
|
84 |
|
|
85 |
<ImageButton |
|
86 |
android:id="@+id/solverPhaseRight" |
|
87 |
android:background="@drawable/ui_right" |
|
88 |
android:layout_width="0dp" |
|
89 |
android:layout_height="match_parent" |
|
90 |
android:layout_weight="1.0" |
|
91 |
android:gravity="center_vertical|center" |
|
92 |
android:onClick="PhaseRight" |
|
93 |
android:layout_gravity="center_vertical"/> |
|
94 |
|
|
95 |
</LinearLayout> |
|
96 |
|
|
59 | 97 |
<LinearLayout |
60 | 98 |
android:id="@+id/lowerBar" |
61 | 99 |
android:layout_alignParentBottom="true" |
62 | 100 |
android:layout_width="match_parent" |
63 |
android:layout_height="80dp"
|
|
101 |
android:layout_height="70dp"
|
|
64 | 102 |
android:orientation="horizontal" |
65 | 103 |
android:background="@android:color/transparent"> |
66 | 104 |
|
... | ... | |
74 | 112 |
android:onClick="Left" |
75 | 113 |
android:layout_gravity="center_vertical"/> |
76 | 114 |
|
77 |
<LinearLayout |
|
115 |
<TextView |
|
116 |
android:id="@+id/solverText" |
|
78 | 117 |
android:layout_width="0dp" |
79 | 118 |
android:layout_height="match_parent" |
80 |
android:layout_weight="5.0" |
|
81 |
android:orientation="vertical" |
|
82 |
android:background="@android:color/transparent"> |
|
83 |
|
|
84 |
<TextView |
|
85 |
android:id="@+id/solverPhaseName" |
|
86 |
android:layout_width="match_parent" |
|
87 |
android:layout_height="0dp" |
|
88 |
android:layout_weight="1" |
|
89 |
android:gravity="center" |
|
90 |
android:textSize="20sp"/> |
|
91 |
<TextView |
|
92 |
android:id="@+id/solverText" |
|
93 |
android:layout_width="match_parent" |
|
94 |
android:layout_height="0dp" |
|
95 |
android:layout_weight="2" |
|
96 |
android:gravity="center" |
|
97 |
android:textSize="30sp"/> |
|
98 |
|
|
99 |
</LinearLayout> |
|
119 |
android:layout_weight="5" |
|
120 |
android:gravity="center" |
|
121 |
android:textSize="20sp"/> |
|
100 | 122 |
|
101 | 123 |
<ImageButton |
102 | 124 |
android:id="@+id/solverRight" |
... | ... | |
107 | 129 |
android:gravity="center_vertical|center" |
108 | 130 |
android:onClick="Right" |
109 | 131 |
android:layout_gravity="center_vertical"/> |
132 |
|
|
110 | 133 |
</LinearLayout> |
111 | 134 |
|
112 | 135 |
</RelativeLayout> |
Also available in: Unified diff
Improve the Phased Solver App (show phases)