Subversion Repository Public Repository

litesoft

Diff Revisions 949 vs 950 for /trunk/GWT_Sandbox/MultiModule/anywhere/src/org/litesoft/sandbox/anywhere/die/State.java

Diff revisions: vs.
  @@ -1,172 +1,172 @@
1 - package org.litesoft.sandbox.anywhere.die;
2 -
3 - import java.util.*;
4 -
5 - import static org.litesoft.sandbox.anywhere.die.View.*;
6 -
7 - public class State {
8 - private Map<View, Integer> mViewValues = new EnumMap<View, Integer>( View.class );
9 - private final Orientation mOrientation;
10 -
11 - /**
12 - * Initialize to Identifier 1?2
13 - */
14 - public State( Orientation pOrientation ) {
15 - mViewValues.put( Result, 1 );
16 - mViewValues.put( Other, 6 );
17 -
18 - mViewValues.put( North, 2 );
19 - mViewValues.put( South, 5 );
20 -
21 - if ( Orientation.L.equals( mOrientation = pOrientation ) ) {
22 - mViewValues.put( East, 3 );
23 - mViewValues.put( West, 4 );
24 - } else {
25 - mViewValues.put( West, 3 );
26 - mViewValues.put( East, 4 );
27 - }
28 - }
29 -
30 - public synchronized Identifier getIdentifier() {
31 - return new Identifier( mOrientation, getValue(), getValue( North ) );
32 - }
33 -
34 - public int getValue() {
35 - return getValue( Result );
36 - }
37 -
38 - public synchronized Integer getValue( View pView ) {
39 - return mViewValues.get( pView );
40 - }
41 -
42 - public synchronized View getViewForValue( int pValue ) {
43 - for ( View zView : View.values() ) {
44 - if ( pValue == getValue( zView ) ) {
45 - return zView;
46 - }
47 - }
48 - return null;
49 - }
50 -
51 - public synchronized void adjustTo( Identifier pIdentifier ) {
52 - if ( pIdentifier == null ) {
53 - return;
54 - }
55 - if ( mOrientation != pIdentifier.getOrientation() ) {
56 - throw new IllegalStateException( "Orientation Incompatible" );
57 - }
58 - makeResultEqual( pIdentifier.getFace() );
59 - makeNorthEqual( pIdentifier.getNorthSide() );
60 - }
61 -
62 - public void makeNorthResult() {
63 - rollToSide( North ); // Move Down
64 - }
65 -
66 - public void makeSouthResult() {
67 - rollToSide( South ); // Move Up
68 - }
69 -
70 - public void makeWestResult() {
71 - rollToSide( West ); // Move Right
72 - }
73 -
74 - public void makeEastResult() {
75 - rollToSide( East ); // Move Left
76 - }
77 -
78 - public void makeWestNorth() // Rotate Clockwise
79 - {
80 - rotateEastOrWestToNorth( West );
81 - }
82 -
83 - public void makeEastNorth() // Rotate Counter-Clockwise
84 - {
85 - rotateEastOrWestToNorth( East );
86 - }
87 -
88 - public void rotate180degrees() {
89 - moveSides( North, South, //
90 - East, West, //
91 - West, East, //
92 - South, North );
93 - }
94 -
95 - public void rollOver() {
96 - moveSides( Result, Other, // Rotate around the East-West Axis
97 - North, South, //
98 - South, North, //
99 - Other, Result );
100 - }
101 -
102 - private void rotateEastOrWestToNorth( View pFromSide ) {
103 - View zOpposite = pFromSide.opposite();
104 - moveSides( pFromSide, North, //
105 - North, zOpposite, //
106 - zOpposite, South, //
107 - South, pFromSide );
108 - }
109 -
110 - private void rollToSide( View pFromSide ) {
111 - View zOpposite = pFromSide.opposite();
112 - moveSides( Other, pFromSide, //
113 - pFromSide, Result, //
114 - Result, zOpposite, //
115 - zOpposite, Other );
116 - }
117 -
118 - private void makeResultEqual( int pValue ) {
119 - switch ( getViewForValue( pValue ) ) {
120 - case North:
121 - makeNorthResult();
122 - break;
123 - case East:
124 - makeEastResult();
125 - break;
126 - case West:
127 - makeWestResult();
128 - break;
129 - case South:
130 - makeSouthResult();
131 - break;
132 - case Other:
133 - rollOver();
134 - break;
135 - default: // & Result
136 - break;
137 - }
138 - }
139 -
140 - private void makeNorthEqual( int pValue ) {
141 - switch ( getViewForValue( pValue ) ) {
142 - default: // & North
143 - break;
144 - case East:
145 - makeEastNorth();
146 - break;
147 - case West:
148 - makeWestNorth();
149 - break;
150 - case South:
151 - rotate180degrees();
152 - break;
153 - case Other:
154 - makeNorthResult(); // Result changed!
155 - break;
156 - case Result:
157 - makeSouthResult(); // Result changed!
158 - break;
159 - }
160 - }
161 -
162 - private synchronized void moveSides( View... pFromToViewPairs ) {
163 - Map<View, Integer> zViewValues = new EnumMap<View, Integer>( mViewValues );
164 - for ( int i = 0; i < pFromToViewPairs.length; ) {
165 - // **** Do NOT inline the following
166 - View zFromView = pFromToViewPairs[i++];
167 - View zToView = pFromToViewPairs[i++];
168 - zViewValues.put( zToView, mViewValues.get( zFromView ) ); // Copy Value "From" to "To"
169 - }
170 - mViewValues = zViewValues;
171 - }
172 - }
1 + package org.litesoft.sandbox.anywhere.die;
2 +
3 + import java.util.*;
4 +
5 + import static org.litesoft.sandbox.anywhere.die.View.*;
6 +
7 + public class State {
8 + private Map<View, Integer> mViewValues = new EnumMap<View, Integer>( View.class );
9 + private final Orientation mOrientation;
10 +
11 + /**
12 + * Initialize to Identifier 1?2
13 + */
14 + public State( Orientation pOrientation ) {
15 + mViewValues.put( Result, 1 );
16 + mViewValues.put( Other, 6 );
17 +
18 + mViewValues.put( North, 2 );
19 + mViewValues.put( South, 5 );
20 +
21 + if ( Orientation.L.equals( mOrientation = pOrientation ) ) {
22 + mViewValues.put( East, 3 );
23 + mViewValues.put( West, 4 );
24 + } else {
25 + mViewValues.put( West, 3 );
26 + mViewValues.put( East, 4 );
27 + }
28 + }
29 +
30 + public synchronized Identifier getIdentifier() {
31 + return new Identifier( mOrientation, getValue(), getValue( North ) );
32 + }
33 +
34 + public int getValue() {
35 + return getValue( Result );
36 + }
37 +
38 + public synchronized Integer getValue( View pView ) {
39 + return mViewValues.get( pView );
40 + }
41 +
42 + public synchronized View getViewForValue( int pValue ) {
43 + for ( View zView : View.values() ) {
44 + if ( pValue == getValue( zView ) ) {
45 + return zView;
46 + }
47 + }
48 + return null;
49 + }
50 +
51 + public synchronized void adjustTo( Identifier pIdentifier ) {
52 + if ( pIdentifier == null ) {
53 + return;
54 + }
55 + if ( mOrientation != pIdentifier.getOrientation() ) {
56 + throw new IllegalStateException( "Orientation Incompatible" );
57 + }
58 + makeResultEqual( pIdentifier.getFace() );
59 + makeNorthEqual( pIdentifier.getNorthSide() );
60 + }
61 +
62 + public void makeNorthResult() {
63 + rollToSide( North ); // Move Down
64 + }
65 +
66 + public void makeSouthResult() {
67 + rollToSide( South ); // Move Up
68 + }
69 +
70 + public void makeWestResult() {
71 + rollToSide( West ); // Move Right
72 + }
73 +
74 + public void makeEastResult() {
75 + rollToSide( East ); // Move Left
76 + }
77 +
78 + public void makeWestNorth() // Rotate Clockwise
79 + {
80 + rotateEastOrWestToNorth( West );
81 + }
82 +
83 + public void makeEastNorth() // Rotate Counter-Clockwise
84 + {
85 + rotateEastOrWestToNorth( East );
86 + }
87 +
88 + public void rotate180degrees() {
89 + moveSides( North, South, //
90 + East, West, //
91 + West, East, //
92 + South, North );
93 + }
94 +
95 + public void rollOver() {
96 + moveSides( Result, Other, // Rotate around the East-West Axis
97 + North, South, //
98 + South, North, //
99 + Other, Result );
100 + }
101 +
102 + private void rotateEastOrWestToNorth( View pFromSide ) {
103 + View zOpposite = pFromSide.opposite();
104 + moveSides( pFromSide, North, //
105 + North, zOpposite, //
106 + zOpposite, South, //
107 + South, pFromSide );
108 + }
109 +
110 + private void rollToSide( View pFromSide ) {
111 + View zOpposite = pFromSide.opposite();
112 + moveSides( Other, pFromSide, //
113 + pFromSide, Result, //
114 + Result, zOpposite, //
115 + zOpposite, Other );
116 + }
117 +
118 + private void makeResultEqual( int pValue ) {
119 + switch ( getViewForValue( pValue ) ) {
120 + case North:
121 + makeNorthResult();
122 + break;
123 + case East:
124 + makeEastResult();
125 + break;
126 + case West:
127 + makeWestResult();
128 + break;
129 + case South:
130 + makeSouthResult();
131 + break;
132 + case Other:
133 + rollOver();
134 + break;
135 + default: // & Result
136 + break;
137 + }
138 + }
139 +
140 + private void makeNorthEqual( int pValue ) {
141 + switch ( getViewForValue( pValue ) ) {
142 + default: // & North
143 + break;
144 + case East:
145 + makeEastNorth();
146 + break;
147 + case West:
148 + makeWestNorth();
149 + break;
150 + case South:
151 + rotate180degrees();
152 + break;
153 + case Other:
154 + makeNorthResult(); // Result changed!
155 + break;
156 + case Result:
157 + makeSouthResult(); // Result changed!
158 + break;
159 + }
160 + }
161 +
162 + private synchronized void moveSides( View... pFromToViewPairs ) {
163 + Map<View, Integer> zViewValues = new EnumMap<View, Integer>( mViewValues );
164 + for ( int i = 0; i < pFromToViewPairs.length; ) {
165 + // **** Do NOT inline the following
166 + View zFromView = pFromToViewPairs[i++];
167 + View zToView = pFromToViewPairs[i++];
168 + zViewValues.put( zToView, mViewValues.get( zFromView ) ); // Copy Value "From" to "To"
169 + }
170 + mViewValues = zViewValues;
171 + }
172 + }