Project

General

Profile

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

magiccube / src / main / java / org / distorted / dialogs / RubikDialogWhatsNew.java @ 63cbccf2

1
///////////////////////////////////////////////////////////////////////////////////////////////////
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
import android.content.pm.PackageInfo;
14
import android.content.pm.PackageManager;
15
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
      "1.12.1",
33

    
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
      "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

    
40
      "1.12.2",
41

    
42
      "1. Fixes for two critical crashers that appeared in the previous version.",
43

    
44
      "Coming",
45

    
46
      "1. Implemented Pyraminx, Ivy, 2x2x3, Skewb Diamond solvers.\n" +
47
      "2. More solvers (2x2x2?)\n" +
48
      "2. Support for adjustable stickers.\n" +
49
      "3. In-game currency (stars)\n" +
50
      "4. More objects (Camouflage Cubes, AI Cube, Burr Cube, Penrose Cubes, the Double-Crazy)"
51
      };
52

    
53
///////////////////////////////////////////////////////////////////////////////////////////////////
54

    
55
  @Override
56
  public void onResume()
57
    {
58
    super.onResume();
59

    
60
    Window window = getDialog().getWindow();
61

    
62
    if( window!=null )
63
      {
64
      WindowManager.LayoutParams params = window.getAttributes();
65
      params.width  = (int)Math.min( mHeight*0.65f,mWidth*0.98f );
66
      window.setAttributes(params);
67
      }
68
    }
69

    
70
///////////////////////////////////////////////////////////////////////////////////////////////////
71

    
72
  public int getResource()      { return R.layout.dialog_scrollable_panes; }
73
  public int getTitleResource() { return R.string.whatsnew; }
74
  public boolean hasArgument()  { return true; }
75
  public int getPositive()      { return R.string.ok; }
76
  public int getNegative()      { return -1; }
77

    
78
///////////////////////////////////////////////////////////////////////////////////////////////////
79

    
80
  public void positiveAction()
81
    {
82

    
83
    }
84

    
85
///////////////////////////////////////////////////////////////////////////////////////////////////
86

    
87
  public void negativeAction()
88
    {
89

    
90
    }
91

    
92
///////////////////////////////////////////////////////////////////////////////////////////////////
93

    
94
  public void prepareBody(Dialog dialog, View view, FragmentActivity act, float size)
95
    {
96
    int margin= (int)(mHeight*0.010f);
97
    int titleH= (int)(mHeight*0.035f);
98
    int padd  = (int)(mHeight*0.010f);
99

    
100
    LinearLayout layout= view.findViewById(R.id.dialog_scrollable_main_layout);
101
    TextView text  = view.findViewById(R.id.dialog_scrollable_message);
102
    text.setVisibility(View.GONE);
103

    
104
    LinearLayout.LayoutParams pV = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT );
105
    pV.setMargins(margin, margin, margin, 0);
106
    LinearLayout.LayoutParams pL = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT );
107
    pL.setMargins(margin, margin, margin, margin);
108
    LinearLayout.LayoutParams pT = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, titleH );
109
    LinearLayout.LayoutParams pM = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT );
110
    pM.setMargins(0,2*margin,0,0);
111

    
112
    RubikActivity ract = (RubikActivity) getContext();
113
    int start      = findVersion(mArgument);
114
    int numMessages= MESSAGES.length/2;
115
    String thisVersion = findCurrentVersion(ract);
116

    
117
    for(int i=0; i<numMessages; i++)
118
      {
119
      String version = MESSAGES[start+2*i];
120
      String message = MESSAGES[start+2*i+1];
121
      boolean isCurrent = version.equals(thisVersion);
122

    
123
      RubikDialogWhatsNewView pane = new RubikDialogWhatsNewView(ract,version,message,padd, isCurrent, (i==(numMessages-1) ? pL:pV),pT,pM);
124
      layout.addView(pane.getView());
125
      }
126
    }
127

    
128
///////////////////////////////////////////////////////////////////////////////////////////////////
129

    
130
  private String findCurrentVersion(RubikActivity act)
131
    {
132
    String version;
133
    try
134
      {
135
      PackageInfo pInfo = act.getPackageManager().getPackageInfo( act.getPackageName(), 0);
136
      version= pInfo.versionName;
137
      }
138
    catch (PackageManager.NameNotFoundException e)
139
      {
140
      version= "unknown";
141
      }
142

    
143
    return version;
144
    }
145

    
146
///////////////////////////////////////////////////////////////////////////////////////////////////
147

    
148
  private int findVersion(String version)
149
    {
150
    int len = MESSAGES.length;
151

    
152
    for(int i=0; i<len; i++)
153
      {
154
      if( MESSAGES[i].equals(version) ) return i;
155
      }
156

    
157
    return 0;
158
    }
159

    
160
///////////////////////////////////////////////////////////////////////////////////////////////////
161

    
162
  public static String getDialogTag()
163
    {
164
    return "DialogSolvers";
165
    }
166
  }
(26-26/27)