Project

General

Profile

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

magiccube / src / main / java / org / distorted / dialogs / RubikDialogWhatsNew.java @ c69ea8e1

1 1c89e2a7 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2022 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6
// 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
///////////////////////////////////////////////////////////////////////////////////////////////////
9
10
package org.distorted.dialogs;
11
12
import android.app.Dialog;
13 34d6b123 Leszek Koltunski
import android.content.pm.PackageInfo;
14
import android.content.pm.PackageManager;
15 1c89e2a7 Leszek Koltunski
import android.view.View;
16
import android.view.Window;
17
import android.view.WindowManager;
18
import android.widget.LinearLayout;
19
import android.widget.TextView;
20
21
import androidx.fragment.app.FragmentActivity;
22
23
import org.distorted.main.R;
24
import org.distorted.main.RubikActivity;
25
26
///////////////////////////////////////////////////////////////////////////////////////////////////
27
28
public class RubikDialogWhatsNew extends RubikDialogAbstract
29
  {
30
  private static final String[] MESSAGES =
31
      {
32 a22a18dd Leszek Koltunski
      "1.12.1",
33 1c89e2a7 Leszek Koltunski
34
      "1. This dialog :)\n" +
35
      "2. UI ready for NEW SOLVERS\n" +
36
      "3. Important fix for a bug which used to let players solve any scramble with just one move\n" +
37 34d6b123 Leszek Koltunski
      "4. Support for curved walls of cubies (preparation for Penrose Cubes)\n" +
38
      "5. Support for scrambling algorithms (preparation for AI Cube & Camouflage Cubes)",
39 1c89e2a7 Leszek Koltunski
40 45bc9f25 Leszek Koltunski
      "1.12.2",
41
42
      "1. Fixes for two critical crashers that appeared in the previous version.",
43
44 52a69ff3 Leszek Koltunski
      "1.12.3",
45
46 24414279 Leszek Koltunski
      "1. Implement the first two solvers - Pyraminx Duo & Ivy Cube\n" +
47 52a69ff3 Leszek Koltunski
      "2. Implement AI Cube and Burr Cube\n" +
48 b3091b98 Leszek Koltunski
      "3. Many fixes - for Trajber 4x4, touch control, creation of Bandaged Cuboids, scores dialog...",
49
50
      "1.12.4",
51
52 76856be3 Leszek Koltunski
      "1. Implement 2x2x3, Pyraminx & Skewb Diamond solvers.\n" +
53
      "2. Connect the solvers to the scrambling engine. Which means: from now on, " +
54 c69ea8e1 Leszek Koltunski
       "all puzzles which have a solver implemented will be perfectly scrambled " +
55
       " - i.e. any scramble at Level 7 will always require exactly 7 moves to solve. " +
56
       "Which also means that in some point in the future, we'll have to clear the High Scores.\n" +
57 76856be3 Leszek Koltunski
      "3. Implement Icosamate & Master Icosamate",
58 52a69ff3 Leszek Koltunski
59 34d6b123 Leszek Koltunski
      "Coming",
60 1c89e2a7 Leszek Koltunski
61 b3091b98 Leszek Koltunski
      "1. Implemented Pocket Cube, Skewb solvers.\n" +
62 34d6b123 Leszek Koltunski
      "2. Support for adjustable stickers.\n" +
63
      "3. In-game currency (stars)\n" +
64 76856be3 Leszek Koltunski
      "4. More objects (Penrose Cubes, the Double-Crazy, Ghost Cubes, more Mirrors, more Mixups, Clover Cube)"
65 34d6b123 Leszek Koltunski
      };
66 1c89e2a7 Leszek Koltunski
67
///////////////////////////////////////////////////////////////////////////////////////////////////
68
69
  @Override
70
  public void onResume()
71
    {
72
    super.onResume();
73
74
    Window window = getDialog().getWindow();
75
76
    if( window!=null )
77
      {
78
      WindowManager.LayoutParams params = window.getAttributes();
79
      params.width  = (int)Math.min( mHeight*0.65f,mWidth*0.98f );
80
      window.setAttributes(params);
81
      }
82
    }
83
84
///////////////////////////////////////////////////////////////////////////////////////////////////
85
86
  public int getResource()      { return R.layout.dialog_scrollable_panes; }
87
  public int getTitleResource() { return R.string.whatsnew; }
88
  public boolean hasArgument()  { return true; }
89
  public int getPositive()      { return R.string.ok; }
90
  public int getNegative()      { return -1; }
91
92
///////////////////////////////////////////////////////////////////////////////////////////////////
93
94
  public void positiveAction()
95
    {
96
97
    }
98
99
///////////////////////////////////////////////////////////////////////////////////////////////////
100
101
  public void negativeAction()
102
    {
103
104
    }
105
106
///////////////////////////////////////////////////////////////////////////////////////////////////
107
108
  public void prepareBody(Dialog dialog, View view, FragmentActivity act, float size)
109
    {
110
    int margin= (int)(mHeight*0.010f);
111
    int titleH= (int)(mHeight*0.035f);
112
    int padd  = (int)(mHeight*0.010f);
113
114
    LinearLayout layout= view.findViewById(R.id.dialog_scrollable_main_layout);
115
    TextView text  = view.findViewById(R.id.dialog_scrollable_message);
116
    text.setVisibility(View.GONE);
117
118
    LinearLayout.LayoutParams pV = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT );
119 34d6b123 Leszek Koltunski
    pV.setMargins(margin, margin, margin, 0);
120 1c89e2a7 Leszek Koltunski
    LinearLayout.LayoutParams pL = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT );
121
    pL.setMargins(margin, margin, margin, margin);
122
    LinearLayout.LayoutParams pT = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, titleH );
123
    LinearLayout.LayoutParams pM = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT );
124 7b191fe5 Leszek Koltunski
    pM.setMargins(0,2*margin,0,0);
125 1c89e2a7 Leszek Koltunski
126
    RubikActivity ract = (RubikActivity) getContext();
127 34d6b123 Leszek Koltunski
    int numMessages= MESSAGES.length/2;
128
    String thisVersion = findCurrentVersion(ract);
129 1c89e2a7 Leszek Koltunski
130 34d6b123 Leszek Koltunski
    for(int i=0; i<numMessages; i++)
131 1c89e2a7 Leszek Koltunski
      {
132 7bdd481b Leszek Koltunski
      String version = MESSAGES[2*i];
133
      String message = MESSAGES[2*i+1];
134 34d6b123 Leszek Koltunski
      boolean isCurrent = version.equals(thisVersion);
135 1c89e2a7 Leszek Koltunski
136 34d6b123 Leszek Koltunski
      RubikDialogWhatsNewView pane = new RubikDialogWhatsNewView(ract,version,message,padd, isCurrent, (i==(numMessages-1) ? pL:pV),pT,pM);
137 1c89e2a7 Leszek Koltunski
      layout.addView(pane.getView());
138
      }
139
    }
140
141
///////////////////////////////////////////////////////////////////////////////////////////////////
142
143 34d6b123 Leszek Koltunski
  private String findCurrentVersion(RubikActivity act)
144 1c89e2a7 Leszek Koltunski
    {
145 34d6b123 Leszek Koltunski
    String version;
146
    try
147 1c89e2a7 Leszek Koltunski
      {
148 34d6b123 Leszek Koltunski
      PackageInfo pInfo = act.getPackageManager().getPackageInfo( act.getPackageName(), 0);
149
      version= pInfo.versionName;
150 1c89e2a7 Leszek Koltunski
      }
151 34d6b123 Leszek Koltunski
    catch (PackageManager.NameNotFoundException e)
152
      {
153
      version= "unknown";
154
      }
155
156
    return version;
157 1c89e2a7 Leszek Koltunski
    }
158
159
///////////////////////////////////////////////////////////////////////////////////////////////////
160
161
  private int findVersion(String version)
162
    {
163
    int len = MESSAGES.length;
164
165
    for(int i=0; i<len; i++)
166
      {
167
      if( MESSAGES[i].equals(version) ) return i;
168
      }
169
170 34d6b123 Leszek Koltunski
    return 0;
171 1c89e2a7 Leszek Koltunski
    }
172
173
///////////////////////////////////////////////////////////////////////////////////////////////////
174
175
  public static String getDialogTag()
176
    {
177
    return "DialogSolvers";
178
    }
179
  }