Project

General

Profile

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

magiccube / src / main / java / org / distorted / object / RubikObjectList.java @ 36273130

1
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2020 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6
// Magic Cube is free software: you can redistribute it and/or modify                            //
7
// it under the terms of the GNU General Public License as published by                          //
8
// the Free Software Foundation, either version 2 of the License, or                             //
9
// (at your option) any later version.                                                           //
10
//                                                                                               //
11
// Magic Cube is distributed in the hope that it will be useful,                                 //
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                //
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                 //
14
// GNU General Public License for more details.                                                  //
15
//                                                                                               //
16
// You should have received a copy of the GNU General Public License                             //
17
// along with Magic Cube.  If not, see <http://www.gnu.org/licenses/>.                           //
18
///////////////////////////////////////////////////////////////////////////////////////////////////
19

    
20
package org.distorted.object;
21

    
22
import org.distorted.library.main.DistortedEffects;
23
import org.distorted.library.main.DistortedTexture;
24
import org.distorted.library.mesh.MeshRectangles;
25
import org.distorted.library.type.Static4D;
26
import org.distorted.magic.R;
27

    
28
import static org.distorted.magic.RubikRenderer.NODE_MESH_SIZE;
29

    
30
///////////////////////////////////////////////////////////////////////////////////////////////////
31

    
32
public enum RubikObjectList
33
  {
34
  CUBE2 ( 2, R.drawable.button2 , RubikCube.class, RubikCubeMovement.class),
35
  CUBE3 ( 3, R.drawable.button3 , RubikCube.class, RubikCubeMovement.class),
36
  CUBE4 ( 4, R.drawable.button4 , RubikCube.class, RubikCubeMovement.class),
37
  CUBE5 ( 5, R.drawable.button5 , RubikCube.class, RubikCubeMovement.class),
38
  ;
39

    
40
  public static final int LENGTH = values().length;
41
  private final int mObjectSize, mIconID;
42
  final Class<? extends RubikObject> mObjectClass;
43
  final Class<? extends RubikObjectMovement> mObjectMovementClass;
44
  private static final RubikObjectList[] objects;
45

    
46
  static
47
    {
48
    int i = 0;
49
    objects = new RubikObjectList[LENGTH];
50

    
51
    for(RubikObjectList size: RubikObjectList.values())
52
      {
53
      objects[i] = size;
54
      i++;
55
      }
56
    }
57

    
58
///////////////////////////////////////////////////////////////////////////////////////////////////
59

    
60
  public static RubikObjectList getObject(int ordinal)
61
    {
62
    return objects[ordinal];
63
    }
64

    
65
///////////////////////////////////////////////////////////////////////////////////////////////////
66

    
67
  RubikObjectList(int size, int iconID, Class<? extends RubikObject > object, Class<? extends RubikObjectMovement> movement)
68
    {
69
    mObjectSize = size;
70
    mIconID     = iconID;
71
    mObjectClass= object;
72
    mObjectMovementClass = movement;
73
    }
74

    
75
///////////////////////////////////////////////////////////////////////////////////////////////////
76

    
77
  public int getIconID()
78
    {
79
    return mIconID;
80
    }
81

    
82
///////////////////////////////////////////////////////////////////////////////////////////////////
83
// TODO - currently all objects in the list are RubikCubes of various sizes
84

    
85
  public RubikObject create(Static4D quatCur, Static4D quatAcc)
86
    {
87
    DistortedTexture texture = new DistortedTexture();
88
    DistortedEffects effects = new DistortedEffects();
89
    MeshRectangles mesh      = new MeshRectangles(20,20);   // mesh of the node, not of the cubits
90

    
91
    mesh.setStretch(NODE_MESH_SIZE,NODE_MESH_SIZE,0);
92

    
93
    return new RubikCube(mObjectSize, quatCur, quatAcc, texture, mesh, effects);
94
    }
95

    
96
///////////////////////////////////////////////////////////////////////////////////////////////////
97
// TODO - currently all objects in the list are RubikCubes of various sizes
98

    
99
  public RubikObjectMovement getObjectMovementClass()
100
    {
101
    return new RubikCubeMovement();
102
    }
103
  }
(5-5/6)