Project

General

Profile

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

magiccube / src / main / java / org / distorted / tutorials / TutorialScreen.java @ 18d47965

1 344f290c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2020 Leszek Koltunski                                                               //
3
//                                                                                               //
4 bb62ca3f Leszek Koltunski
// Magic Cube is proprietary software licensed under an EULA which you should have received      //
5
// along with the code. If not, check https://distorted.org/magic/License-Magic-Cube.html        //
6 344f290c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
7
8 eaf87d1d Leszek Koltunski
package org.distorted.tutorials;
9 344f290c Leszek Koltunski
10 e019c70b Leszek Koltunski
import android.app.Activity;
11 344f290c Leszek Koltunski
import android.view.View;
12
import android.widget.LinearLayout;
13
14 dd1a65c1 Leszek Koltunski
import org.distorted.helpers.MovesController;
15 b1629e16 Leszek Koltunski
import org.distorted.objectlib.effects.BaseEffect;
16 2afc6754 Leszek Koltunski
import org.distorted.objectlib.main.ObjectControl;
17 3f7a4363 Leszek Koltunski
18 dd1a65c1 Leszek Koltunski
import org.distorted.helpers.LockController;
19 344f290c Leszek Koltunski
import org.distorted.main.R;
20
import org.distorted.main.RubikActivity;
21 d433b50e Leszek Koltunski
import org.distorted.objects.RubikObject;
22 55e6be1d Leszek Koltunski
import org.distorted.helpers.TransparentImageButton;
23 344f290c Leszek Koltunski
24
///////////////////////////////////////////////////////////////////////////////////////////////////
25
26 dd1a65c1 Leszek Koltunski
public class TutorialScreen
27 344f290c Leszek Koltunski
{
28 dd874ae8 Leszek Koltunski
  private TransparentImageButton mSolveButton, mScrambleButton, mBackButton;
29 ea036986 Leszek Koltunski
  private TransparentImageButton mLockButton, mEmptyButton1, mEmptyButton2, mEmptyButton3;
30 dd1a65c1 Leszek Koltunski
  private final LockController mLockController;
31
  private final MovesController mMovesController;
32 ea036986 Leszek Koltunski
  private final boolean mFree;
33
34
///////////////////////////////////////////////////////////////////////////////////////////////////
35
36
  private void setupLockButton(final TutorialActivity act)
37
    {
38 18d47965 Leszek Koltunski
    int icon = RubikActivity.getDrawable(R.drawable.ui_small_locked,R.drawable.ui_medium_locked, R.drawable.ui_big_locked, R.drawable.ui_huge_locked);
39 ea036986 Leszek Koltunski
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1.0f);
40
    mLockButton = new TransparentImageButton(act, icon, TransparentImageButton.GRAVITY_MIDDLE, params);
41 18d47965 Leszek Koltunski
42
    mLockButton.setOnClickListener( new View.OnClickListener()
43
      {
44
      @Override
45
      public void onClick(View v)
46
        {
47
        act.switchToPurchase();
48
        }
49
      });
50 ea036986 Leszek Koltunski
    }
51
52
///////////////////////////////////////////////////////////////////////////////////////////////////
53
54
  private void setupEmptyButton1(final TutorialActivity act)
55
    {
56
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1.0f);
57
    mEmptyButton1 = new TransparentImageButton(act, params);
58
    mEmptyButton1.setClickable(false);
59
    }
60
61
///////////////////////////////////////////////////////////////////////////////////////////////////
62
63
  private void setupEmptyButton2(final TutorialActivity act)
64
    {
65
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1.0f);
66
    mEmptyButton2 = new TransparentImageButton(act, params);
67
    mEmptyButton2.setClickable(false);
68
    }
69
70
///////////////////////////////////////////////////////////////////////////////////////////////////
71
72
  private void setupEmptyButton3(final TutorialActivity act)
73
    {
74
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1.0f);
75
    mEmptyButton3 = new TransparentImageButton(act, params);
76
    mEmptyButton3.setClickable(false);
77
    }
78 344f290c Leszek Koltunski
79
///////////////////////////////////////////////////////////////////////////////////////////////////
80
81 dd874ae8 Leszek Koltunski
  private void setupSolveButton(final TutorialActivity act)
82 344f290c Leszek Koltunski
    {
83
    int icon = RubikActivity.getDrawable(R.drawable.ui_small_cube_solve,R.drawable.ui_medium_cube_solve, R.drawable.ui_big_cube_solve, R.drawable.ui_huge_cube_solve);
84 b600ccd9 Leszek Koltunski
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1.0f);
85
    mSolveButton = new TransparentImageButton(act, icon, TransparentImageButton.GRAVITY_MIDDLE, params);
86 344f290c Leszek Koltunski
87
    mSolveButton.setOnClickListener( new View.OnClickListener()
88
      {
89
      @Override
90
      public void onClick(View v)
91
        {
92 2afc6754 Leszek Koltunski
        act.getControl().solveObject();
93 dd1a65c1 Leszek Koltunski
        mMovesController.clearMoves(act);
94 344f290c Leszek Koltunski
        }
95
      });
96
    }
97
98
///////////////////////////////////////////////////////////////////////////////////////////////////
99
100 dd874ae8 Leszek Koltunski
  private void setupScrambleButton(final TutorialActivity act)
101 344f290c Leszek Koltunski
    {
102
    int icon = RubikActivity.getDrawable(R.drawable.ui_small_cube_scramble,R.drawable.ui_medium_cube_scramble, R.drawable.ui_big_cube_scramble, R.drawable.ui_huge_cube_scramble);
103 b600ccd9 Leszek Koltunski
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1.0f);
104
    mScrambleButton = new TransparentImageButton(act, icon, TransparentImageButton.GRAVITY_MIDDLE, params);
105 344f290c Leszek Koltunski
106
    mScrambleButton.setOnClickListener( new View.OnClickListener()
107
      {
108
      @Override
109
      public void onClick(View v)
110
        {
111 b1629e16 Leszek Koltunski
        int duration = BaseEffect.Type.FAST_SCRAMBLE.getDuration();
112
        act.getControl().fastScrambleObject(duration,RubikObject.FAST_SCRAMBLES);
113 344f290c Leszek Koltunski
        }
114
      });
115
    }
116
117
///////////////////////////////////////////////////////////////////////////////////////////////////
118
119 dd874ae8 Leszek Koltunski
  private void setupBackButton(final TutorialActivity act)
120 344f290c Leszek Koltunski
    {
121 e314f6ae Leszek Koltunski
    int icon = RubikActivity.getDrawable(R.drawable.ui_small_smallback,R.drawable.ui_medium_smallback, R.drawable.ui_big_smallback, R.drawable.ui_huge_smallback);
122 b600ccd9 Leszek Koltunski
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1.0f);
123
    mBackButton = new TransparentImageButton(act, icon, TransparentImageButton.GRAVITY_MIDDLE, params);
124 344f290c Leszek Koltunski
125
    mBackButton.setOnClickListener( new View.OnClickListener()
126
      {
127
      @Override
128
      public void onClick(View v)
129
        {
130 2afc6754 Leszek Koltunski
        ObjectControl control = act.getControl();
131
        if( control!=null ) control.unblockEverything();
132 344f290c Leszek Koltunski
        act.finish();
133
        }
134
      });
135
    }
136
137
///////////////////////////////////////////////////////////////////////////////////////////////////
138
139 dd874ae8 Leszek Koltunski
  void createRightPane(final TutorialActivity act)
140 344f290c Leszek Koltunski
    {
141 2971588c Leszek Koltunski
    LinearLayout layout = act.findViewById(R.id.tutorialRightBar);
142 344f290c Leszek Koltunski
    layout.removeAllViews();
143
144 ea036986 Leszek Koltunski
    if( mFree )
145
      {
146
      ObjectControl control = act.getControl();
147
      mMovesController.setupButton(act,control);
148
      mLockController.setupButton(act,control);
149
      setupSolveButton(act);
150
      setupScrambleButton(act);
151
      layout.addView(mSolveButton);
152
      layout.addView(mScrambleButton);
153
      layout.addView(mMovesController.getButton());
154
      layout.addView(mLockController.getButton());
155
      }
156
    else
157
      {
158
      setupLockButton(act);
159
      setupEmptyButton1(act);
160
      setupEmptyButton2(act);
161
      setupEmptyButton3(act);
162
      layout.addView(mLockButton);
163
      layout.addView(mEmptyButton1);
164
      layout.addView(mEmptyButton2);
165
      layout.addView(mEmptyButton3);
166
      }
167 344f290c Leszek Koltunski
168 ea036986 Leszek Koltunski
    setupBackButton(act);
169 344f290c Leszek Koltunski
    layout.addView(mBackButton);
170
    }
171
172
///////////////////////////////////////////////////////////////////////////////////////////////////
173
174 e019c70b Leszek Koltunski
  void addMove(Activity act, int axis, int row, int angle)
175 146661ec Leszek Koltunski
    {
176 dd1a65c1 Leszek Koltunski
    mMovesController.addMove(act, axis,row,angle);
177 146661ec Leszek Koltunski
    }
178
179
///////////////////////////////////////////////////////////////////////////////////////////////////
180
// PUBLIC API
181
182 ea036986 Leszek Koltunski
  public TutorialScreen(boolean free)
183 344f290c Leszek Koltunski
    {
184 ea036986 Leszek Koltunski
    mFree = free;
185 dd1a65c1 Leszek Koltunski
    mLockController = new LockController();
186
    mMovesController = new MovesController();
187 344f290c Leszek Koltunski
    }
188 cc88f2fa Leszek Koltunski
189
///////////////////////////////////////////////////////////////////////////////////////////////////
190
191 e019c70b Leszek Koltunski
  public void reddenLock(final TutorialActivity act)
192 cc88f2fa Leszek Koltunski
    {
193 e019c70b Leszek Koltunski
    ObjectControl control = act.getControl();
194
    mLockController.reddenLock(act,control);
195 cc88f2fa Leszek Koltunski
    }
196 344f290c Leszek Koltunski
}