Project

General

Profile

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

magiccube / src / main / java / org / distorted / tutorials / TutorialScreen.java @ 50e6c5d6

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
        act.finish();
131
        }
132
      });
133
    }
134
135
///////////////////////////////////////////////////////////////////////////////////////////////////
136
137 dd874ae8 Leszek Koltunski
  void createRightPane(final TutorialActivity act)
138 344f290c Leszek Koltunski
    {
139 2971588c Leszek Koltunski
    LinearLayout layout = act.findViewById(R.id.tutorialRightBar);
140 344f290c Leszek Koltunski
    layout.removeAllViews();
141
142 ea036986 Leszek Koltunski
    if( mFree )
143
      {
144
      ObjectControl control = act.getControl();
145
      mMovesController.setupButton(act,control);
146
      mLockController.setupButton(act,control);
147
      setupSolveButton(act);
148
      setupScrambleButton(act);
149
      layout.addView(mSolveButton);
150
      layout.addView(mScrambleButton);
151
      layout.addView(mMovesController.getButton());
152
      layout.addView(mLockController.getButton());
153
      }
154
    else
155
      {
156
      setupLockButton(act);
157
      setupEmptyButton1(act);
158
      setupEmptyButton2(act);
159
      setupEmptyButton3(act);
160
      layout.addView(mLockButton);
161
      layout.addView(mEmptyButton1);
162
      layout.addView(mEmptyButton2);
163
      layout.addView(mEmptyButton3);
164
      }
165 344f290c Leszek Koltunski
166 ea036986 Leszek Koltunski
    setupBackButton(act);
167 344f290c Leszek Koltunski
    layout.addView(mBackButton);
168
    }
169
170
///////////////////////////////////////////////////////////////////////////////////////////////////
171
172 e019c70b Leszek Koltunski
  void addMove(Activity act, int axis, int row, int angle)
173 146661ec Leszek Koltunski
    {
174 dd1a65c1 Leszek Koltunski
    mMovesController.addMove(act, axis,row,angle);
175 146661ec Leszek Koltunski
    }
176
177
///////////////////////////////////////////////////////////////////////////////////////////////////
178
// PUBLIC API
179
180 ea036986 Leszek Koltunski
  public TutorialScreen(boolean free)
181 344f290c Leszek Koltunski
    {
182 ea036986 Leszek Koltunski
    mFree = free;
183 dd1a65c1 Leszek Koltunski
    mLockController = new LockController();
184
    mMovesController = new MovesController();
185 344f290c Leszek Koltunski
    }
186 cc88f2fa Leszek Koltunski
187
///////////////////////////////////////////////////////////////////////////////////////////////////
188
189 e019c70b Leszek Koltunski
  public void reddenLock(final TutorialActivity act)
190 cc88f2fa Leszek Koltunski
    {
191 e019c70b Leszek Koltunski
    ObjectControl control = act.getControl();
192
    mLockController.reddenLock(act,control);
193 cc88f2fa Leszek Koltunski
    }
194 344f290c Leszek Koltunski
}