Project

General

Profile

« Previous | Next » 

Revision 988e3d33

Added by Leszek Koltunski 9 months ago

Objects can support or not changing colors of their stickers.

View differences:

src/main/java/org/distorted/config/ConfigActivity.java
47 47
    private ConfigScreenPane mPane;
48 48
    private int mCurrentApiVersion;
49 49
    private int mObjectOrdinal;
50
    private boolean mSupportsAdjColors;
50 51

  
51 52
///////////////////////////////////////////////////////////////////////////////////////////////////
52 53

  
......
156 157
      ConfigSurfaceView view = findViewById(R.id.configSurfaceView);
157 158
      view.onResume();
158 159
      String key ="";
160
      mSupportsAdjColors = false;
159 161

  
160 162
      if( mObjectOrdinal>=0 && mObjectOrdinal< RubikObjectList.getNumObjects() )
161 163
        {
162 164
        RubikObject object = RubikObjectList.getObject(mObjectOrdinal);
163 165
        changeIfDifferent(object,mObjectOrdinal,view.getObjectControl());
164
        if( object!=null ) key = object.getUpperName();
166

  
167
        if( object!=null )
168
          {
169
          key = object.getUpperName();
170
          mSupportsAdjColors = object.supportsAdjustableColors();
171
          }
165 172
        }
166 173

  
167 174
      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
168
      restorePreferences(preferences);
175
      OSInterface os = view.getInterface();
176
      os.setPreferences(preferences);
177

  
178
      restorePreferences();
169 179

  
170 180
      if( mScreen==null ) mScreen = new ConfigScreen();
171 181
      mScreen.onAttachedToWindow(this,mObjectOrdinal);
172 182

  
173
      ObjectControl control = view.getObjectControl();
174
      OSInterface os = view.getInterface();
175
      TwistyObject obj = control.getObject();
176

  
177
      mPane = new ConfigScreenPane(this,key,os);
183
      mPane = new ConfigScreenPane(this,key,os,mSupportsAdjColors);
178 184
      }
179 185

  
180 186
///////////////////////////////////////////////////////////////////////////////////////////////////
181 187

  
182 188
    void repaintPuzzleFace(int cubit, int face)
183 189
      {
184
      if( mPane!=null )
190
      if( mPane!=null && mSupportsAdjColors )
185 191
        {
186 192
        int color  = mPane.getCurrentColor();
187 193
        ConfigSurfaceView view = findViewById(R.id.configSurfaceView);
......
239 245

  
240 246
///////////////////////////////////////////////////////////////////////////////////////////////////
241 247

  
242
    private void restorePreferences(SharedPreferences preferences)
248
    private void restorePreferences()
243 249
      {
244 250
      ConfigSurfaceView view = findViewById(R.id.configSurfaceView);
245
      OSInterface os = view.getInterface();
246
      os.setPreferences(preferences);
247 251
      view.getObjectControl().restoreStickers();
248 252
      }
249 253

  
src/main/java/org/distorted/config/ConfigScreenPane.java
117 117
    markButton(mRow,mCol);
118 118
    }
119 119

  
120
///////////////////////////////////////////////////////////////////////////////////////////////////
121

  
122
  private View createColorSection(final ConfigActivity act, int width, int height, boolean supports)
123
    {
124
    if( supports )
125
      {
126
      createColorGrid(act,width,height);
127
      return mGrid;
128
      }
129
    else
130
      {
131
      float textSize = height*TEXT_RATIO;
132
      TextView text = new TextView(act);
133
      text.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
134
      text.setText(R.string.config_no_support);
135
      return text;
136
      }
137
    }
138

  
120 139
///////////////////////////////////////////////////////////////////////////////////////////////////
121 140

  
122 141
  private View createView(final Activity act, final int row, final int col)
......
144 163

  
145 164
  private void markButton(int row, int col)
146 165
    {
147
    int index = mRow*COLORS[0].length + mCol;
148
    ImageButton button = (ImageButton)mGrid.getChildAt(index);
149
    button.setImageResource(0);
166
    if( mGrid!=null )
167
      {
168
      int index = mRow*COLORS[0].length + mCol;
169
      ImageButton button = (ImageButton)mGrid.getChildAt(index);
170
      button.setImageResource(0);
150 171

  
151
    mRow = row;
152
    mCol = col;
172
      mRow = row;
173
      mCol = col;
153 174

  
154
    index = mRow*COLORS[0].length + mCol;
155
    button = (ImageButton)mGrid.getChildAt(index);
156
    button.setImageResource(R.drawable.check);
175
      index = mRow*COLORS[0].length + mCol;
176
      button = (ImageButton)mGrid.getChildAt(index);
177
      button.setImageResource(R.drawable.check);
178
      }
157 179
    }
158 180

  
159 181
///////////////////////////////////////////////////////////////////////////////////////////////////
......
177 199

  
178 200
///////////////////////////////////////////////////////////////////////////////////////////////////
179 201

  
180
  ConfigScreenPane(final ConfigActivity act, String key, OSInterface os)
202
  ConfigScreenPane(final ConfigActivity act, String key, OSInterface os, boolean supportsAdjColors)
181 203
    {
182 204
    mRow = 0;
183 205
    mCol = 0;
......
268 290

  
269 291
    configLayoutL.setLayoutParams(paramsLayoutL);
270 292

  
271
    createColorGrid(act, width, height);
293
    View view = createColorSection(act, width, height, supportsAdjColors);
272 294
    configLayoutL.removeAllViews();
273
    configLayoutL.addView(mGrid);
295
    configLayoutL.addView(view);
274 296
    }
275 297
}
src/main/java/org/distorted/dialogs/RubikDialogUpdateView.java
206 206
          int category        = reader.getCategory();
207 207
          int year            = reader.getYearOfInvention();
208 208
          String author       = reader.getAuthor();
209
          boolean adjColors   = reader.getAdjustableColors();
209 210

  
210 211
          if( SHOW_DOWNLOADED_DEBUG ) android.util.Log.e("D", "Read from JSON numScrambles="+mInfo.mNumScrambles+" price="+mInfo.mPrice);
211 212

  
......
224 225
            if( SHOW_DOWNLOADED_DEBUG ) android.util.Log.e("D", "1");
225 226

  
226 227
            boolean success = RubikObjectList.addDownloadedObject(act, mInfo.mObjectShortName, mInfo.mNumScrambles, mInfo.mPrice, mInfo.mObjectMinorVersion,
227
                                                                  mInfo.mExtrasMinorVersion, mIconSaved, oSuccess, eSuccess, diff, category, year, author);
228
                                                                  mInfo.mExtrasMinorVersion, mIconSaved, oSuccess, eSuccess, diff, category, year, author,adjColors);
228 229
            if( success )
229 230
              {
230 231
              if( SHOW_DOWNLOADED_DEBUG ) android.util.Log.e("D", "2");
src/main/java/org/distorted/objects/RubikObject.java
45 45
  private final int mCategory, mYear;
46 46
  private final float mDifficulty;
47 47
  private final String mAuthor;
48
  private final boolean mAdjColors;
48 49

  
49 50
  private boolean mIsFree;
50 51
  private int mJsonID, mMeshID, mExtrasID;
......
73 74
    mYear        = meta.getYearOfInvention();
74 75
    mAuthor      = meta.getAuthor();
75 76
    mIsLocal     = false;
77
    mAdjColors   = meta.supportsAdjustableStickerColors();
76 78

  
77 79
    int patternOrdinal  = RubikPatternList.getOrdinal(mObjectOrdinal);
78 80
    mPatterns = RubikPatternList.getPatterns(patternOrdinal);
......
101 103
    mCategory      = object.category;
102 104
    mYear          = object.year;
103 105
    mAuthor        = object.author;
106
    mAdjColors     = object.adjColors;
104 107

  
105 108
    mPatterns      = null;
106 109
    mExtrasOrdinal = -1;
......
231 234
    return mExtrasVersion;
232 235
    }
233 236

  
237
///////////////////////////////////////////////////////////////////////////////////////////////////
238

  
239
  public boolean supportsAdjustableColors()
240
    {
241
    return mAdjColors;
242
    }
243

  
234 244
///////////////////////////////////////////////////////////////////////////////////////////////////
235 245

  
236 246
  public void setIconTo(Activity act,ImageButton button)
src/main/java/org/distorted/objects/RubikObjectList.java
37 37
  public static class DownloadedObject
38 38
    {
39 39
    String shortName;
40
    boolean icon,object,extras;
40
    boolean icon,object,extras,adjColors;
41 41
    int numScrambles, objectVersion, extrasVersion, price;
42 42
    int category, year;
43 43
    float difficulty;
44 44
    String author;
45 45

  
46 46
    DownloadedObject(String sName, int scrambles, int pr, int oVersion, int eVersion, boolean i,
47
                     boolean o, boolean e, float diff, int cat, int y, String a)
47
                     boolean o, boolean e, float diff, int cat, int y, String a, boolean c)
48 48
      {
49 49
      shortName     = sName;
50 50
      numScrambles  = scrambles;
......
55 55
      category      = cat;
56 56
      year          = y;
57 57
      author        = a;
58
      adjColors     = c;
58 59

  
59 60
      icon   = i;
60 61
      object = o;
......
194 195
// PUBLIC API
195 196

  
196 197
  public static boolean addDownloadedObject(Context context, String shortName, int numScrambles, int price, int objectVersion,
197
                                         int extrasVersion, boolean icon, boolean object, boolean extras, float diff, int category, int year, String author)
198
                                         int extrasVersion, boolean icon, boolean object, boolean extras, float diff,
199
                                         int category, int year, String author, boolean adjColors)
198 200
    {
199 201
    if( SHOW_DOWNLOADED_DEBUG ) android.util.Log.e("D", "New downloaded object "+shortName+" icon="+icon+" object="+object+" extras="+extras);
200 202

  
......
221 223
    if( !object ) objectVersion=-1;
222 224
    if( !extras ) extrasVersion=-1;
223 225

  
224
    DownloadedObject obj = new DownloadedObject(shortName,numScrambles,price,objectVersion,extrasVersion,icon,object,extras,diff,category,year,author);
226
    DownloadedObject obj = new DownloadedObject(shortName,numScrambles,price,objectVersion,extrasVersion,icon,object,extras,diff,category,year,author,adjColors);
225 227
    if ( internalAddDownloadedObject(obj) )
226 228
      {
227 229
      if( SHOW_DOWNLOADED_DEBUG ) android.util.Log.e("D", "Adding new downloaded object "+shortName+" icon="+obj.icon+" object="+obj.object+" extras="+obj.extras);
......
327 329
        downloadedObjects.append(object.author.replace(' ','_'));
328 330
        downloadedObjects.append(' ');
329 331
        downloadedObjects.append(object.price);
332
        downloadedObjects.append(' ');
333
        downloadedObjects.append(object.adjColors ? "1":"0");
330 334
        }
331 335

  
332 336
      String objects = downloadedObjects.toString();
......
379 383
          String extr = parts[6];
380 384

  
381 385
          int price=0,category=0,year=0;
386
          boolean supportsAdjColors=true;
382 387
          float diff=0.0f;
383 388
          String author="";
384 389

  
......
396 401
            else if( c=='f' ) price = ListObjects.DEFAULT_PRICE_OF_OLD_OBJECTS;
397 402
            else              price = Integer.parseInt(parts[11]);
398 403
            }
404
          if( length>=13 )
405
            {
406
            char s = parts[12].charAt(0);
407
            supportsAdjColors = (s=='1');
408
            }
399 409

  
400 410
          int scrambles = Integer.parseInt(scra);
401 411
          int oVersion  = Integer.parseInt(objV);
......
405 415
          boolean bObje = obje.equals("1");
406 416
          boolean bExtr = extr.equals("1");
407 417

  
408
          addDownloadedObject(context,name,scrambles,price,oVersion,eVersion,bIcon,bObje,bExtr,diff,category,year,author);
418
          addDownloadedObject(context,name,scrambles,price,oVersion,eVersion,bIcon,bObje,bExtr,diff,category,year,author,supportsAdjColors);
409 419
          }
410 420
        }
411 421
      }
src/main/res/values-de/strings.xml
88 88
    <string name="config_stickers">Aufkleber</string>
89 89
    <string name="config_border">Ränder</string>
90 90
    <string name="config_corner">Ecken</string>
91
    <string name="config_no_support">Das aktuelle Puzzle unterstützt keine Farbanpassung.</string>
91 92

  
92 93
    <string name="sort_classic">klassisch</string>
93 94
    <string name="sort_shape">form</string>
src/main/res/values-es/strings.xml
88 88
    <string name="config_stickers">Pegatinas</string>
89 89
    <string name="config_border">Bordes</string>
90 90
    <string name="config_corner">Esquinas</string>
91
    <string name="config_no_support">El cubo actual no admite el ajuste de colores.</string>
91 92

  
92 93
    <string name="sort_classic">clásico</string>
93 94
    <string name="sort_shape">forma</string>
src/main/res/values-fr/strings.xml
88 88
    <string name="config_stickers">Autocollants</string>
89 89
    <string name="config_border">Bordures</string>
90 90
    <string name="config_corner">Coins</string>
91
    <string name="config_no_support">Le cube actuel ne prend pas en charge le réglage des couleurs.</string>
91 92

  
92 93
    <string name="sort_classic">classique</string>
93 94
    <string name="sort_shape">forme</string>
src/main/res/values-ja/strings.xml
88 88
    <string name="config_stickers">ステッカー</string>
89 89
    <string name="config_border">枠線</string>
90 90
    <string name="config_corner">角</string>
91
    <string name="config_no_support">現在のキューブは色の調整をサポートしていません。</string>
91 92

  
92 93
    <string name="sort_classic">古典学</string>
93 94
    <string name="sort_shape">形</string>
src/main/res/values-ko/strings.xml
88 88
    <string name="config_stickers">스티커</string>
89 89
    <string name="config_border">테두리</string>
90 90
    <string name="config_corner">모서리</string>
91
    <string name="config_no_support">현재 큐브는 색상 조정을 지원하지 않습니다.</string>
91 92

  
92 93
    <string name="sort_classic">전통적인</string>
93 94
    <string name="sort_shape">모양</string>
src/main/res/values-pl/strings.xml
88 88
    <string name="config_stickers">Naklejki</string>
89 89
    <string name="config_border">Brzegi</string>
90 90
    <string name="config_corner">Rogi</string>
91
    <string name="config_no_support">Bieżąca kostka nie wspomaga zmieniania kolorów.</string>
91 92

  
92 93
    <string name="sort_classic">klasycznie</string>
93 94
    <string name="sort_shape">kształt</string>
src/main/res/values-ru/strings.xml
88 88
    <string name="config_stickers">Наклейки</string>
89 89
    <string name="config_border">Границы</string>
90 90
    <string name="config_corner">Углы</string>
91
    <string name="config_no_support">Текущий куб не поддерживает настройку цветов.</string>
91 92

  
92 93
    <string name="sort_classic">классик</string>
93 94
    <string name="sort_shape">форма</string>
src/main/res/values-zh-rCN/strings.xml
88 88
    <string name="config_stickers">贴纸</string>
89 89
    <string name="config_border">边框</string>
90 90
    <string name="config_corner">角</string>
91
    <string name="config_no_support">目前拼图不支持调整颜色。</string>
91 92

  
92 93
    <string name="sort_classic">經典的</string>
93 94
    <string name="sort_shape">形狀</string>
src/main/res/values-zh-rTW/strings.xml
88 88
    <string name="config_stickers">貼紙</string>
89 89
    <string name="config_border">邊框</string>
90 90
    <string name="config_corner">角</string>
91
    <string name="config_no_support">目前拼圖不支援調整顏色。</string>
91 92

  
92 93
    <string name="sort_classic">经典的</string>
93 94
    <string name="sort_shape">形状</string>
src/main/res/values/strings.xml
112 112
    <string name="config_stickers">Stickers</string>
113 113
    <string name="config_border">Borders</string>
114 114
    <string name="config_corner">Corners</string>
115
    <string name="config_no_support">Current puzzle does not support adjusting colors.</string>
115 116

  
116 117
    <string name="sort_classic">classic</string>
117 118
    <string name="sort_shape">shape</string>

Also available in: Unified diff