Project

General

Profile

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

magiccube / src / main / java / org / distorted / screens / ScreenList.java @ 71cda061

1 f2a9be6d Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2020 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6 3782bd44 Leszek Koltunski
// Magic Cube is proprietary software licensed under an EULA which you should have received      //
7
// along with the code. If not, check https://distorted.org/magic/License-Magic-Cube.html        //
8 f2a9be6d Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
9
10 fcd5b990 Leszek Koltunski
package org.distorted.screens;
11 f2a9be6d Leszek Koltunski
12 211b48f2 Leszek Koltunski
import android.content.SharedPreferences;
13 1b3cbd5b Leszek Koltunski
import android.os.Bundle;
14
15
import com.google.firebase.analytics.FirebaseAnalytics;
16
17 1f9772f3 Leszek Koltunski
import org.distorted.main.RubikActivity;
18 dd1a65c1 Leszek Koltunski
import static org.distorted.objectlib.main.ObjectControl.*;
19 f2a9be6d Leszek Koltunski
20
///////////////////////////////////////////////////////////////////////////////////////////////////
21
22 fcd5b990 Leszek Koltunski
public enum ScreenList
23 f2a9be6d Leszek Koltunski
  {
24 fcd5b990 Leszek Koltunski
  PLAY ( null , MODE_ROTATE , new RubikScreenPlay()     ),
25
  SOLV ( PLAY , MODE_ROTATE , new RubikScreenSolving()  ),
26
  PATT ( PLAY , MODE_DRAG   , new RubikScreenPattern()  ),
27
  SVER ( PLAY , MODE_REPLACE, new RubikScreenSolver()   ),
28
  SOLU ( SVER , MODE_DRAG   , new RubikScreenSolution() ),
29
  READ ( PLAY , MODE_ROTATE , new RubikScreenReady()    ),
30
  DONE ( PLAY , MODE_DRAG   , new RubikScreenDone()     ),
31 211b48f2 Leszek Koltunski
  ;
32
33
  public static final int LENGTH = values().length;
34 f5da732a Leszek Koltunski
  private static final ScreenList[] screens;
35 fcd5b990 Leszek Koltunski
  private final ScreenList mBack;
36 f5da732a Leszek Koltunski
  private final int mMode;
37 fcd5b990 Leszek Koltunski
  private final RubikScreenAbstract mClass;
38 211b48f2 Leszek Koltunski
39 f5da732a Leszek Koltunski
  private static ScreenList mCurrScreen;
40 211b48f2 Leszek Koltunski
41
  static
42
    {
43
    int i = 0;
44 f5da732a Leszek Koltunski
    screens = new ScreenList[LENGTH];
45
    for(ScreenList state: ScreenList.values()) screens[i++] = state;
46 211b48f2 Leszek Koltunski
    }
47 f2a9be6d Leszek Koltunski
48
///////////////////////////////////////////////////////////////////////////////////////////////////
49
50 f5da732a Leszek Koltunski
  public static ScreenList getScreen(int ordinal)
51 f2a9be6d Leszek Koltunski
    {
52 f5da732a Leszek Koltunski
    return ordinal>=0 && ordinal<LENGTH ?  screens[ordinal] : PLAY;
53 59535491 Leszek Koltunski
    }
54
55
///////////////////////////////////////////////////////////////////////////////////////////////////
56
57 f5da732a Leszek Koltunski
  public static ScreenList getScreenFromName(String name)
58 59535491 Leszek Koltunski
    {
59
    for(int i=0; i<LENGTH; i++)
60
      {
61 f5da732a Leszek Koltunski
      if( name.equals(screens[i].name()) )
62 59535491 Leszek Koltunski
        {
63 f5da732a Leszek Koltunski
        return screens[i];
64 59535491 Leszek Koltunski
        }
65
      }
66
67
    return PLAY;
68 f2a9be6d Leszek Koltunski
    }
69
70 ad9e8bb3 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
71
72 f5da732a Leszek Koltunski
  public static ScreenList getCurrentScreen()
73 ad9e8bb3 Leszek Koltunski
    {
74 f5da732a Leszek Koltunski
    return mCurrScreen;
75 ad9e8bb3 Leszek Koltunski
    }
76
77 53f23b64 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
78
79 473611ee Leszek Koltunski
  public static int getMode()
80 53f23b64 Leszek Koltunski
    {
81 f5da732a Leszek Koltunski
    return mCurrScreen.mMode;
82 53f23b64 Leszek Koltunski
    }
83
84 f2a9be6d Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
85
86 211b48f2 Leszek Koltunski
  public static void savePreferences(SharedPreferences.Editor editor)
87 f2a9be6d Leszek Koltunski
    {
88 f5da732a Leszek Koltunski
    editor.putString("curr_state_name", mCurrScreen.name() );
89 f2a9be6d Leszek Koltunski
    }
90
91
///////////////////////////////////////////////////////////////////////////////////////////////////
92
93 211b48f2 Leszek Koltunski
  public static void restorePreferences(SharedPreferences preferences)
94 f2a9be6d Leszek Koltunski
    {
95 f5da732a Leszek Koltunski
    String currScreenName = preferences.getString("curr_state_name", ScreenList.PLAY.name() );
96
    mCurrScreen = getScreenFromName(currScreenName);
97 211b48f2 Leszek Koltunski
    }
98
99
///////////////////////////////////////////////////////////////////////////////////////////////////
100 f2a9be6d Leszek Koltunski
101 211b48f2 Leszek Koltunski
  public static void goBack(RubikActivity act)
102
    {
103 f5da732a Leszek Koltunski
    switchScreen(act, mCurrScreen.mBack );
104 f2a9be6d Leszek Koltunski
    }
105
106 a675474f Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
107
108 f5da732a Leszek Koltunski
  public static void setScreen(RubikActivity act)
109 a675474f Leszek Koltunski
    {
110 f5da732a Leszek Koltunski
    mCurrScreen.enterScreen(act);
111 a675474f Leszek Koltunski
    }
112
113 f2a9be6d Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
114
115 f5da732a Leszek Koltunski
  public static void switchScreen(RubikActivity act, ScreenList next)
116 b8b38548 Leszek Koltunski
    {
117 4f470e00 Leszek Koltunski
    if( next!=null )
118 211b48f2 Leszek Koltunski
      {
119 1b3cbd5b Leszek Koltunski
      FirebaseAnalytics analytics = act.getAnalytics();
120
121
      if( analytics!=null )
122
        {
123
        Bundle bundle = new Bundle();
124
        bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, next.toString());
125
        analytics.logEvent(FirebaseAnalytics.Event.LEVEL_START, bundle);
126
        }
127
128 f5da732a Leszek Koltunski
      if( mCurrScreen !=null ) mCurrScreen.leaveScreen(act);
129
      next.enterScreen(act);
130
      mCurrScreen = next;
131 211b48f2 Leszek Koltunski
      }
132
    else
133
      {
134
      act.finish();
135
      }
136
    }
137
138
///////////////////////////////////////////////////////////////////////////////////////////////////
139 b8b38548 Leszek Koltunski
140 fcd5b990 Leszek Koltunski
  ScreenList(ScreenList back, int mode, RubikScreenAbstract clazz)
141 211b48f2 Leszek Koltunski
    {
142 473611ee Leszek Koltunski
    mBack = back;
143
    mMode = mode;
144
    mClass= clazz;
145 946d9762 Leszek Koltunski
    }
146 b8b38548 Leszek Koltunski
147 211b48f2 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
148
149 f5da732a Leszek Koltunski
  public RubikScreenAbstract getScreenClass()
150 211b48f2 Leszek Koltunski
    {
151
    return mClass;
152
    }
153 b8b38548 Leszek Koltunski
154 211b48f2 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
155 b8b38548 Leszek Koltunski
156 f5da732a Leszek Koltunski
  public void leaveScreen(RubikActivity act)
157 211b48f2 Leszek Koltunski
    {
158 f5da732a Leszek Koltunski
    mClass.leaveScreen(act);
159 211b48f2 Leszek Koltunski
    }
160 b8b38548 Leszek Koltunski
161 211b48f2 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
162 cc5ec229 Leszek Koltunski
163 f5da732a Leszek Koltunski
  public void enterScreen(RubikActivity act)
164 211b48f2 Leszek Koltunski
    {
165 f5da732a Leszek Koltunski
    mClass.enterScreen(act);
166 f2a9be6d Leszek Koltunski
    }
167 211b48f2 Leszek Koltunski
  }