Project

General

Profile

« Previous | Next » 

Revision ff60e713

Added by Leszek Koltunski about 2 years ago

Progress with sticker overrides.

View differences:

src/main/java/org/distorted/objectlib/helpers/FactorySticker.java
23 23
import static org.distorted.objectlib.main.TwistyObject.TEXTURE_HEIGHT;
24 24

  
25 25
import android.graphics.Canvas;
26
import android.graphics.Color;
26 27
import android.graphics.Paint;
28
import android.graphics.PorterDuff;
27 29

  
28 30
///////////////////////////////////////////////////////////////////////////////////////////////////
29 31

  
......
368 370

  
369 371
    canvas.restore();
370 372
    }
373

  
374
///////////////////////////////////////////////////////////////////////////////////////////////////
375

  
376
  public void drawSolidColor(Canvas canvas, Paint paint, int left, int bottom, int color)
377
    {
378
    canvas.save();
379
    canvas.clipRect(left,bottom-TEXTURE_HEIGHT,left+TEXTURE_HEIGHT,bottom);
380

  
381
    if( (color>>24) != 0 )
382
      {
383
      paint.setStyle(Paint.Style.FILL);
384
      paint.setColor(color);
385
      canvas.drawRect(left,bottom-TEXTURE_HEIGHT,left+TEXTURE_HEIGHT,bottom,paint);
386
      }
387
    else
388
      {
389
      canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
390
      }
391

  
392
    canvas.restore();
393
    }
371 394
  }
src/main/java/org/distorted/objectlib/helpers/ObjectStickerOverride.java
21 21

  
22 22
public class ObjectStickerOverride
23 23
{
24
  private final int mCubit;
25
  private final int mFace;
24
  private final int[] mCubitFace;
26 25
  private final int mColor;
27 26

  
28 27
///////////////////////////////////////////////////////////////////////////////////////////////////
29 28

  
30
  public ObjectStickerOverride(int cubit, int face, int color)
29
  public ObjectStickerOverride(int[] cubitface, int color)
31 30
    {
32
    mCubit = cubit;
33
    mFace  = face;
34 31
    mColor = color; // ARGB
32
    mCubitFace = cubitface;
35 33
    }
36 34

  
37 35
///////////////////////////////////////////////////////////////////////////////////////////////////
38 36

  
39
  public int getCubit()
37
  public int[] getCubitFaces()
40 38
    {
41
    return mCubit;
42
    }
43

  
44
///////////////////////////////////////////////////////////////////////////////////////////////////
45

  
46
  public int getFace()
47
    {
48
    return mFace;
39
    return mCubitFace;
49 40
    }
50 41

  
51 42
///////////////////////////////////////////////////////////////////////////////////////////////////
src/main/java/org/distorted/objectlib/json/JsonReader.java
200 200
      mCubitFaceColor[i] = new int[numColor];
201 201
      for(int j=0; j<numColor; j++) mCubitFaceColor[i][j] = jsonColor.getInt(j);
202 202

  
203
      mCubitType[i] = (int)jsonCubit.optInt("type", Cubit.TYPE_NORMAL);
203
      mCubitType[i] = jsonCubit.optInt("type", Cubit.TYPE_NORMAL);
204 204
      float xoff = (float)jsonCubit.optDouble("offsetX", 0 );
205 205
      float yoff = (float)jsonCubit.optDouble("offsetY", 0 );
206 206
      float zoff = (float)jsonCubit.optDouble("offsetZ", 0 );
......
383 383

  
384 384
    for(int i=0; i<numOverrides; i++)
385 385
      {
386
      JSONObject override = object.getJSONObject(i);
387
      int cubit = override.getInt("cubit");
388
      int face  = override.getInt("face");
386
      JSONObject override  = object.getJSONObject(i);
387
      JSONArray cubitArray = override.getJSONArray("cubitfaces");
389 388
      int color = override.getInt("color");
390
      mStickerOverrides[i] = new ObjectStickerOverride(cubit,face,color);
389
      int numCubits = cubitArray.length();
390
      int[] cubitface = new int[numCubits];
391
      for(int j=0; j<numCubits; j++) cubitface[j] = cubitArray.getInt(j);
392
      mStickerOverrides[i] = new ObjectStickerOverride(cubitface,color);
391 393
      }
392 394
    }
393 395

  
src/main/java/org/distorted/objectlib/json/JsonWriter.java
353 353
      for (ObjectStickerOverride objectStickerOverride : overrides)
354 354
        {
355 355
        JSONObject override = new JSONObject();
356
        int cubit = objectStickerOverride.getCubit();
357
        int face  = objectStickerOverride.getFace();
358
        int color = objectStickerOverride.getColor();
356
        int[] cubfac = objectStickerOverride.getCubitFaces();
357
        int color    = objectStickerOverride.getColor();
358
        JSONArray cubfacArray = new JSONArray();
359
        for (int cf : cubfac) cubfacArray.put(cf);
359 360

  
360
        override.put("cubit", cubit);
361
        override.put("face" , face );
361
        override.put("cubitfaces", cubfacArray);
362 362
        override.put("color", color);
363 363

  
364 364
        overrideArray.put(override);
src/main/java/org/distorted/objectlib/main/TwistyObject.java
1723 1723
    paint.setAntiAlias(true);
1724 1724
    paint.setTextAlign(Paint.Align.CENTER);
1725 1725
    paint.setStyle(Paint.Style.FILL);
1726

  
1727 1726
    paint.setColor(getInternalColor());
1728 1727
    canvas.drawRect(0, 0, mNumTexCols*TEXTURE_HEIGHT, mNumTexRows*TEXTURE_HEIGHT, paint);
1729 1728

  
......
1736 1735
        if( texture<mNumTextures-mNumOverrides )
1737 1736
          {
1738 1737
          ObjectSticker sticker = retSticker(texture/mNumFaceColors);
1739
          int color = getColor(texture% mNumFaceColors);
1738
          int color = getColor(texture%mNumFaceColors);
1740 1739
          factory.drawRoundedPolygon(canvas, paint, col*TEXTURE_HEIGHT, (mNumTexRows-row)*TEXTURE_HEIGHT, color, sticker);
1741
          texture++;
1742 1740
          }
1743
        else if( texture<mNumTextures )
1741
        else if( texture>mNumTextures-mNumOverrides && texture<=mNumTextures )
1744 1742
          {
1745
          int color = mStickerOverrides[mNumTextures-texture-1].getColor();
1746
          int left = col*TEXTURE_HEIGHT;
1747
          int bottom = (mNumTexRows-row)*TEXTURE_HEIGHT;
1748
          paint.setColor(color);
1749
          canvas.drawRect(left,bottom-TEXTURE_HEIGHT,left+TEXTURE_HEIGHT,bottom,paint);
1743
          int color = mStickerOverrides[mNumTextures-texture].getColor();
1744
          factory.drawSolidColor(canvas, paint, col*TEXTURE_HEIGHT, (mNumTexRows-row)*TEXTURE_HEIGHT, color);
1750 1745
          }
1746

  
1747
        texture++;
1751 1748
        }
1752 1749
    }
1753 1750

  
src/main/java/org/distorted/objectlib/objects/TwistyCrazy3x3.java
20 20
package org.distorted.objectlib.objects;
21 21

  
22 22
import java.io.InputStream;
23
import java.util.ArrayList;
23 24

  
24 25
import org.distorted.library.type.Static3D;
25 26
import org.distorted.library.type.Static4D;
......
100 101
      };
101 102
    }
102 103

  
104
///////////////////////////////////////////////////////////////////////////////////////////////////
105

  
106
  private boolean cubitIsOverriden(int cubit)
107
    {
108
    float[] offset = getCubitRowOffset(cubit);
109
    return offset[0]*offset[0]+offset[1]*offset[1]+offset[2]*offset[2] == 0;
110
    }
103 111

  
104 112
///////////////////////////////////////////////////////////////////////////////////////////////////
105 113

  
106 114
  @Override
107 115
  public ObjectStickerOverride[] getStickerOverrides()
108 116
    {
109
    ObjectStickerOverride[] overrides = new ObjectStickerOverride[6];
117
    ArrayList<Integer> cubits = new ArrayList<>();
110 118

  
111 119
    for(int i=0; i<6; i++)
120
      if( cubitIsOverriden(20+i) ) cubits.add(20+i);
121

  
122
    int numOverrides = cubits.size();
123

  
124
    if( numOverrides>0 )
112 125
      {
113
      int cubit = 20+i;
114
      float[] offset = getCubitRowOffset(cubit);
115
      float isX = offset[0]*offset[0]+offset[1]*offset[1]+offset[2]*offset[2];
116
      overrides[i] = new ObjectStickerOverride(cubit,6,isX==0 ? 0xff0f0000 : 0xff000000 );
126
      ObjectStickerOverride[] overrides = new ObjectStickerOverride[1];
127
      int[] cubfac = new int[2*numOverrides];
128
      for(int i=0; i<numOverrides; i++)
129
        {
130
        cubfac[2*i  ] = cubits.get(i);
131
        cubfac[2*i+1] = 6;
132
        }
133
      overrides[0] = new ObjectStickerOverride(cubfac,0x00ffffff);
134
      return overrides;
117 135
      }
118 136

  
119
    return overrides;
137
    return null;
120 138
    }
121 139

  
122 140
///////////////////////////////////////////////////////////////////////////////////////////////////

Also available in: Unified diff