summaryrefslogtreecommitdiff
path: root/common/minifig.h
blob: 9e8a3ded5abb9a38531bb07aec636650a1074652 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#ifndef _MINIFIG_H_
#define _MINIFIG_H_

#include "glwindow.h"
#include "file.h"
#include "algebra.h"
#include "array.h"

class PieceInfo;

typedef	enum LC_MFW_TYPES
{
	LC_MFW_HAT,
	LC_MFW_HEAD,
	LC_MFW_TORSO,
	LC_MFW_NECK,
	LC_MFW_LEFT_ARM,
	LC_MFW_RIGHT_ARM,
	LC_MFW_LEFT_HAND,
	LC_MFW_RIGHT_HAND,
	LC_MFW_LEFT_TOOL,
	LC_MFW_RIGHT_TOOL,
	LC_MFW_HIPS,
	LC_MFW_LEFT_LEG,
	LC_MFW_RIGHT_LEG,
	LC_MFW_LEFT_SHOE,
	LC_MFW_RIGHT_SHOE,
	LC_MFW_NUMITEMS
};

struct lcMinifigPieceInfo
{
	char Description[64];
	PieceInfo* Info;
	Matrix44 Offset;
};

class MinifigWizard : public GLWindow
{
public:
	MinifigWizard (GLWindow *share);
	~MinifigWizard ();

	void OnDraw ();

	void Calculate();
	int GetSelectionIndex(int Type) const;
	void SetSelectionIndex(int Type, int Index);
	void SetColor(int Type, int Color);
	void SetAngle(int Type, float Angle);

	void GetMinifigNames (char ***names, int *count);
	void SaveMinifig (const char* name);
	bool LoadMinifig (const char* name);
	void DeleteMinifig (const char* name);

	void ParseSettings(File& Settings);

	ObjArray<lcMinifigPieceInfo> mSettings[LC_MFW_NUMITEMS];

	PieceInfo* m_Info[LC_MFW_NUMITEMS];
	int m_Colors[LC_MFW_NUMITEMS];
	float m_Angles[LC_MFW_NUMITEMS];
	Matrix44 m_Matrices[LC_MFW_NUMITEMS];

protected:
	// saved minifig templates
	int  m_MinifigCount;
	char **m_MinifigNames;
	char **m_MinifigTemplates;
};

#endif // _MINIFIG_H_