forked from chaehoon/KickItUp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathKickItUp.cpp
140 lines (110 loc) · 2.51 KB
/
KickItUp.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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include "KickItUp.h"
#include "sound/FmodSoundStore.h"
#include "video/SDLSurfaceStore.h"
#include "video/Surface.h"
#include "util/Timer.h"
#include "stage/Context.h"
#include "input/InputManager.h"
#include "data/SongMgr.h"
#include "sound/Sound.h"
Sound * s_snd;
KickItUp::KickItUp(void) : m_bQuit( false )
{
}
KickItUp::~KickItUp(void)
{
}
// Initialize kickitup.
bool KickItUp::Initialize()
{
// SDL 초기화
if( SDL_Init( SDL_INIT_VIDEO ) < 0 || !SDL_GetVideoInfo() )
return false;
// initialize Surface.
g_pSurfaceStore = new SDLSurfaceStore();
if( !g_pSurfaceStore->Initialize() )
return false;
// Initialize Sound.
g_pSoundStore = new FmodSoundStore();
if( !g_pSoundStore->Initialize() )
return false;
// Initialize Input.
g_Input.Initialize();
// TODO: load config.
// Load Song Data
_loadImage();
_loadSound();
g_SongMgr.Load( "song" );
// Initialize Stage.
m_pContext = new Context( *this );
if( !m_pContext->Initialize() )
return false;
return true;
}
// main loop.
bool KickItUp::Run()
{
Timer fps;
fps.Start();
m_bQuit = false;
while( !m_bQuit ) {
SDL_Event event;
while( SDL_PollEvent( &event ) ) {
switch( event.type ) {
case SDL_QUIT:
m_bQuit = true;
break;
}
}
// 100 fps
static const unsigned long fps_100 = (1000/100);
if( fps.GetTicks() < fps_100 ) {
SDL_Delay( fps_100 - fps.GetTicks() );
}
Process( fps.GetTicks() );
fps.Start();
}
return true;
}
// end.
void KickItUp::Destroy()
{
m_pContext->Destroy();
delete m_pContext;
m_pContext = 0;
// TODO: save config.
// TODO: Input destory
// Destroy Sound.
g_pSoundStore->Destroy();
delete g_pSoundStore;
g_pSoundStore = 0;
// Destroy SurfaceStore.
g_pSurfaceStore->Destroy();
delete g_pSurfaceStore;
g_pSurfaceStore = 0;
SDL_Quit();
}
// Display
bool KickItUp::Process( unsigned long delta )
{
g_Input.Update( delta );
g_pSoundStore->Process( delta );
m_pContext->Process( delta );
return g_pSurfaceStore->Process( delta );
}
bool KickItUp::_loadImage()
{
// no_disc
Surface * pNoDiskImg = g_pSurfaceStore->Order( "no_disc" );
pNoDiskImg->Load( "images/no_disc.bmp" );
pNoDiskImg->SetColorKey();
// back.bmp
Surface * pBack = g_pSurfaceStore->Order( "bgImage" );
pBack->Load( "images/back.bmp" );
pBack->SetColorKey();
return true;
}
bool KickItUp::_loadSound()
{
return true;
}