forked from chaehoon/KickItUp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathKickItUp.cpp
144 lines (114 loc) · 2.64 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
141
142
143
144
#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)
return false;
// SDL 로그 초기화
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG);
// 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_pSongMgr = new SongMgr();
g_pSongMgr->Load( "song" );
// Initialize Stage.
m_pContext = new Context( *this );
if( !m_pContext->Initialize() )
return false;
return true;
}
// main loop.
bool KickItUp::Run()
{
Timer fps;
m_bQuit = false;
while( !m_bQuit ) {
SDL_Event event;
fps.Start();
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() );
}
return true;
}
// end.
void KickItUp::Destroy()
{
m_pContext->Destroy();
delete m_pContext;
m_pContext = 0;
delete g_pSongMgr;
g_pSongMgr = 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;
}