/
titlehandler.cpp
112 lines (84 loc) · 2.97 KB
/
titlehandler.cpp
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include "titlehandler.h"
#include <prism/blitz.h>
#include "musichandler.h"
#include "playerhandler.h"
#include "helptexthandler.h"
#include "gamescreen.h"
static struct {
MugenSpriteFile mSprites;
MugenAnimations mAnimations;
TextureData mWhiteTexture;
int mIsActive;
int mTitleAnimationID;
int mPressStartAnimationID;
int mWhiteTextureID;
int mIsGameOver;
} gTitleHandler;
static void setTitleActive() {
if (gTitleHandler.mIsActive) return;
gTitleHandler.mTitleAnimationID = addMugenAnimation(getMugenAnimation(&gTitleHandler.mAnimations, 1000), &gTitleHandler.mSprites, makePosition(160, 50, 50));
gTitleHandler.mPressStartAnimationID = addMugenAnimation(getMugenAnimation(&gTitleHandler.mAnimations, 2000), &gTitleHandler.mSprites, makePosition(160, 190, 50));
gTitleHandler.mWhiteTextureID = playOneFrameAnimationLoop(makePosition(0, 0, 45), &gTitleHandler.mWhiteTexture);
setAnimationSize(gTitleHandler.mWhiteTextureID, makePosition(320, 240, 1), makePosition(0, 0, 0));
setAnimationColor(gTitleHandler.mWhiteTextureID, 0, 0, 0);
setAnimationTransparency(gTitleHandler.mWhiteTextureID, 1);
setPlayerInactive();
gTitleHandler.mIsGameOver = 0;
gTitleHandler.mIsActive = 1;
}
static void setGameOverActive() {
if (gTitleHandler.mIsActive) return;
gTitleHandler.mTitleAnimationID = addMugenAnimation(getMugenAnimation(&gTitleHandler.mAnimations, 4000), &gTitleHandler.mSprites, makePosition(160, 80, 50));
gTitleHandler.mWhiteTextureID = playOneFrameAnimationLoop(makePosition(0, 0, 45), &gTitleHandler.mWhiteTexture);
setAnimationSize(gTitleHandler.mWhiteTextureID, makePosition(320, 240, 1), makePosition(0, 0, 0));
setAnimationColor(gTitleHandler.mWhiteTextureID, 1, 0, 0);
setPlayerInactive();
gTitleHandler.mIsGameOver = 1;
gTitleHandler.mIsActive = 1;
}
static void setTitleInactive() {
if (!gTitleHandler.mIsActive) return;
removeMugenAnimation(gTitleHandler.mTitleAnimationID);
removeMugenAnimation(gTitleHandler.mPressStartAnimationID);
removeHandledAnimation(gTitleHandler.mWhiteTextureID);
setPlayerActive();
gTitleHandler.mIsActive = 0;
}
static void loadTitle(void* tData) {
(void)tData;
gTitleHandler.mSprites = loadMugenSpriteFileWithoutPalette("title/TITLE.sff");
gTitleHandler.mAnimations = loadMugenAnimationFile("title/TITLE.air");
gTitleHandler.mWhiteTexture = createWhiteTexture();
gTitleHandler.mIsActive = 0;
setTitleActive();
}
static void updateTitle(void* tData) {
(void)tData;
if (!gTitleHandler.mIsActive) return;
if (hasPressedStartFlank()) {
if (gTitleHandler.mIsGameOver) {
setNewScreen(getGameScreen());
}
else {
setTitleInactive();
showFirstHelpText();
playPeacefulMusic();
}
}
}
ActorBlueprint getTitleHandler()
{
return makeActorBlueprint(loadTitle, NULL, updateTitle);
}
static void fadeOutFinished(void* tData) {
(void)tData;
setFadeColorRGB(0, 0, 0);
enableDrawing();
setGameOverActive();
}
void startGameOver()
{
stopGameMusic();
setFadeColorRGB(1, 0, 0);
addFadeOut(180, fadeOutFinished, NULL);
}