Project

General

Profile

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

magiccube / src / main / java / org / distorted / dialogs / RubikDialogWhatsNew.java @ 76856be3

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
       "all puzzles which have a solver implemented will be perfectly scrambled. " +
55
       "Perfectly - i.e. any scramble at Level 7 will always require exactly 7 moves to solve. " +
56
       "No more 'lucky' scrambles! Which also means that in some point in the future, we'll have to " +
57
       "clear the High Scores Table.\n" +
58
      "3. Implement Icosamate & Master Icosamate",
59 52a69ff3 Leszek Koltunski
60 34d6b123 Leszek Koltunski
      "Coming",
61 1c89e2a7 Leszek Koltunski
62 b3091b98 Leszek Koltunski
      "1. Implemented Pocket Cube, Skewb solvers.\n" +
63 34d6b123 Leszek Koltunski
      "2. Support for adjustable stickers.\n" +
64
      "3. In-game currency (stars)\n" +
65 76856be3 Leszek Koltunski
      "4. More objects (Penrose Cubes, the Double-Crazy, Ghost Cubes, more Mirrors, more Mixups, Clover Cube)"
66 34d6b123 Leszek Koltunski
      };
67 1c89e2a7 Leszek Koltunski
68
///////////////////////////////////////////////////////////////////////////////////////////////////
69
70
  @Override
71
  public void onResume()
72
    {
73
    super.onResume();
74
75
    Window window = getDialog().getWindow();
76
77
    if( window!=null )
78
      {
79
      WindowManager.LayoutParams params = window.getAttributes();
80
      params.width  = (int)Math.min( mHeight*0.65f,mWidth*0.98f );
81
      window.setAttributes(params);
82
      }
83
    }
84
85
///////////////////////////////////////////////////////////////////////////////////////////////////
86
87
  public int getResource()      { return R.layout.dialog_scrollable_panes; }
88
  public int getTitleResource() { return R.string.whatsnew; }
89
  public boolean hasArgument()  { return true; }
90
  public int getPositive()      { return R.string.ok; }
91
  public int getNegative()      { return -1; }
92
93
///////////////////////////////////////////////////////////////////////////////////////////////////
94
95
  public void positiveAction()
96
    {
97
98
    }
99
100
///////////////////////////////////////////////////////////////////////////////////////////////////
101
102
  public void negativeAction()
103
    {
104
105
    }
106
107
///////////////////////////////////////////////////////////////////////////////////////////////////
108
109
  public void prepareBody(Dialog dialog, View view, FragmentActivity act, float size)
110
    {
111
    int margin= (int)(mHeight*0.010f);
112
    int titleH= (int)(mHeight*0.035f);
113
    int padd  = (int)(mHeight*0.010f);
114
115
    LinearLayout layout= view.findViewById(R.id.dialog_scrollable_main_layout);
116
    TextView text  = view.findViewById(R.id.dialog_scrollable_message);
117
    text.setVisibility(View.GONE);
118
119
    LinearLayout.LayoutParams pV = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT );
120 34d6b123 Leszek Koltunski
    pV.setMargins(margin, margin, margin, 0);
121 1c89e2a7 Leszek Koltunski
    LinearLayout.LayoutParams pL = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT );
122
    pL.setMargins(margin, margin, margin, margin);
123
    LinearLayout.LayoutParams pT = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, titleH );
124
    LinearLayout.LayoutParams pM = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT );
125 7b191fe5 Leszek Koltunski
    pM.setMargins(0,2*margin,0,0);
126 1c89e2a7 Leszek Koltunski
127
    RubikActivity ract = (RubikActivity) getContext();
128 34d6b123 Leszek Koltunski
    int numMessages= MESSAGES.length/2;
129
    String thisVersion = findCurrentVersion(ract);
130 1c89e2a7 Leszek Koltunski
131 34d6b123 Leszek Koltunski
    for(int i=0; i<numMessages; i++)
132 1c89e2a7 Leszek Koltunski
      {
133 7bdd481b Leszek Koltunski
      String version = MESSAGES[2*i];
134
      String message = MESSAGES[2*i+1];
135 34d6b123 Leszek Koltunski
      boolean isCurrent = version.equals(thisVersion);
136 1c89e2a7 Leszek Koltunski
137 34d6b123 Leszek Koltunski
      RubikDialogWhatsNewView pane = new RubikDialogWhatsNewView(ract,version,message,padd, isCurrent, (i==(numMessages-1) ? pL:pV),pT,pM);
138 1c89e2a7 Leszek Koltunski
      layout.addView(pane.getView());
139
      }
140
    }
141
142
///////////////////////////////////////////////////////////////////////////////////////////////////
143
144 34d6b123 Leszek Koltunski
  private String findCurrentVersion(RubikActivity act)
145 1c89e2a7 Leszek Koltunski
    {
146 34d6b123 Leszek Koltunski
    String version;
147
    try
148 1c89e2a7 Leszek Koltunski
      {
149 34d6b123 Leszek Koltunski
      PackageInfo pInfo = act.getPackageManager().getPackageInfo( act.getPackageName(), 0);
150
      version= pInfo.versionName;
151 1c89e2a7 Leszek Koltunski
      }
152 34d6b123 Leszek Koltunski
    catch (PackageManager.NameNotFoundException e)
153
      {
154
      version= "unknown";
155
      }
156
157
    return version;
158 1c89e2a7 Leszek Koltunski
    }
159
160
///////////////////////////////////////////////////////////////////////////////////////////////////
161
162
  private int findVersion(String version)
163
    {
164
    int len = MESSAGES.length;
165
166
    for(int i=0; i<len; i++)
167
      {
168
      if( MESSAGES[i].equals(version) ) return i;
169
      }
170
171 34d6b123 Leszek Koltunski
    return 0;
172 1c89e2a7 Leszek Koltunski
    }
173
174
///////////////////////////////////////////////////////////////////////////////////////////////////
175
176
  public static String getDialogTag()
177
    {
178
    return "DialogSolvers";
179
    }
180
  }