summaryrefslogtreecommitdiff
path: root/src/koopatlas/starcoin.h
blob: b411dc1562a1680eaf2e2d19d20802506e4537b0 (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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#ifndef __KOOPATLAS_STARCOIN_H
#define __KOOPATLAS_STARCOIN_H

#include "koopatlas/core.h"

class dWMStarCoin_c : public dActor_c {
	public:
		dWMStarCoin_c();

		int onCreate();
		int onDelete();
		int onExecute();
		int onDraw();

		bool layoutLoaded;
		m2d::EmbedLayout_c layout;

		bool visible;
		void show();

		static dWMStarCoin_c *build();
		static dWMStarCoin_c *instance;

		enum Animation {
			SHOW_ALL = 0,
			SHOW_SECTION,
			HIDE_SECTION,
			SHOW_LEFT_ARROW,
			HIDE_LEFT_ARROW,
			SHOW_RIGHT_ARROW,
			HIDE_RIGHT_ARROW
		};

		enum _Constants {
			ROW_COUNT = 9,
			COLUMN_COUNT = 2,
			SHINE_COUNT = 5,
			MAX_SECTION_COUNT = 16,
		};

		int currentSection;
		int currentSectionIndex;
		int sectionIndices[MAX_SECTION_COUNT];
		int availableSectionCount;

		bool isLeftArrowVisible, isRightArrowVisible;
		bool willExit;

		bool canScrollLeft() const;
		bool canScrollRight() const;
		void loadInfo();
		void loadSectionInfo();

		void showLeftArrow();
		void showRightArrow();
		void hideLeftArrow();
		void hideRightArrow();
		void setLeftArrowVisible(bool value);
		void setRightArrowVisible(bool value);

		void showSecretMessage(const wchar_t *title, const wchar_t **body, int lineCount, const wchar_t **body2 = 0, int lineCount2 = 0);

		nw4r::lyt::Picture
			*Shine[COLUMN_COUNT][SHINE_COUNT],
			*CoinOutline[COLUMN_COUNT][ROW_COUNT][3],
			*Coin[COLUMN_COUNT][ROW_COUNT][3],
			*DPadLeft, *DPadRight;

		nw4r::lyt::TextBox
			*LevelName[COLUMN_COUNT][ROW_COUNT],
			*LeftTitle, *RightTitle,
			*TotalCoinCount, *UnspentCoinCount,
			*EarnedCoinCount, *EarnedCoinMax,
			*BtnBackText;

		dStateWrapper_c<dWMStarCoin_c> state;

		USING_STATES(dWMStarCoin_c);
		DECLARE_STATE(Hidden);
		DECLARE_STATE(ShowWait);
		DECLARE_STATE(ShowSectionWait);
		DECLARE_STATE(Wait);
		DECLARE_STATE(HideSectionWait);
		DECLARE_STATE(HideWait);
};

#endif