Bangtal Library for Game Development  v0.3.0
bangtal.h
Go to the documentation of this file.
1 
9 #pragma once
10 
11 #ifdef WIN32
12  // Windows는 CP949를 default로 사용한다.
13  // 아래 설정으로 UTF-8
14 #pragma execution_character_set("utf-8")
15 
16 #ifdef BANGTAL_EXPORTS
17 #define BANGTAL_API __declspec(dllexport)
18 #else
19 #define BANGTAL_API __declspec(dllimport)
20 #pragma comment(lib, "bangtal.lib")
21 #pragma comment(linker,"/ENTRY:mainCRTStartup")
22 #endif
23 
24 #else
25 #define BANGTAL_API
26 #endif
27 
31 typedef unsigned int SceneID;
37 typedef unsigned int ObjectID;
43 typedef unsigned int TimerID;
49 typedef unsigned int SoundID;
55 typedef float SceneLight;
56 
60 typedef float ObjectScale;
61 
65 typedef float Second;
66 
70 enum class EventID : int {
71  EVENT_ENTER_SCENE = 1,
72  EVENT_LEAVE_SCENE = 2,
73  EVENT_PICK_OBJECT = 3,
74  EVENT_DROP_OBJECT = 4,
78  EVENT_TIMER = 101,
79  EVENT_KEYPAD = 102,
80  EVENT_SOUND = 103,
81 };
82 
86 enum class MouseAction : int {
87  MOUSE_CLICK = 0,
88  MOUSE_DRAG_UP = 1,
89  MOUSE_DRAG_DOWN = 2,
90  MOUSE_DRAG_LEFT = 3,
91  MOUSE_DRAG_RIGHT = 4,
92 };
93 
97 enum class KeyState : int {
98  KEY_RELEASED = 0,
99  KEY_PRESSED = 1,
100 };
101 
105 enum class KeyCode : int
106 {
107  KEY_NONE = 0,
108  KEY_PAUSE,
110  KEY_PRINT,
111  KEY_SYSREQ,
112  KEY_BREAK,
113  KEY_ESCAPE,
116  KEY_TAB,
117  KEY_BACK_TAB,
118  KEY_RETURN,
120  KEY_SHIFT,
123  KEY_CTRL,
126  KEY_ALT,
129  KEY_MENU,
130  KEY_HYPER,
131  KEY_INSERT,
132  KEY_HOME,
133  KEY_PG_UP,
134  KEY_DELETE,
135  KEY_END,
136  KEY_PG_DOWN,
139  KEY_UP_ARROW,
141  KEY_NUM_LOCK,
142  KEY_KP_PLUS,
143  KEY_KP_MINUS,
146  KEY_KP_ENTER,
147  KEY_KP_HOME,
148  KEY_KP_UP,
149  KEY_KP_PG_UP,
150  KEY_KP_LEFT,
151  KEY_KP_FIVE,
152  KEY_KP_RIGHT,
153  KEY_KP_END,
154  KEY_KP_DOWN,
158  KEY_F1,
159  KEY_F2,
160  KEY_F3,
161  KEY_F4,
162  KEY_F5,
163  KEY_F6,
164  KEY_F7,
165  KEY_F8,
166  KEY_F9,
167  KEY_F10,
168  KEY_F11,
169  KEY_F12,
170  KEY_SPACE,
171  KEY_EXCLAM,
172  KEY_QUOTE,
173  KEY_NUMBER,
174  KEY_DOLLAR,
175  KEY_PERCENT,
181  KEY_ASTERISK,
182  KEY_PLUS,
183  KEY_COMMA,
184  KEY_MINUS,
185  KEY_PERIOD,
186  KEY_SLASH,
187  KEY_0,
188  KEY_1,
189  KEY_2,
190  KEY_3,
191  KEY_4,
192  KEY_5,
193  KEY_6,
194  KEY_7,
195  KEY_8,
196  KEY_9,
197  KEY_COLON,
200  KEY_EQUAL,
202  KEY_QUESTION,
203  KEY_AT,
234  KEY_GRAVE,
235  KEY_A,
236  KEY_B,
237  KEY_C,
238  KEY_D,
239  KEY_E,
240  KEY_F,
241  KEY_G,
242  KEY_H,
243  KEY_I,
244  KEY_J,
245  KEY_K,
246  KEY_L,
247  KEY_M,
248  KEY_N,
249  KEY_O,
250  KEY_P,
251  KEY_Q,
252  KEY_R,
253  KEY_S,
254  KEY_T,
255  KEY_U,
256  KEY_V,
257  KEY_W,
258  KEY_X,
259  KEY_Y,
260  KEY_Z,
262  KEY_BAR,
264  KEY_TILDE,
265  KEY_EURO,
266  KEY_POUND,
267  KEY_YEN,
269  KEY_SEARCH,
272  KEY_DPAD_UP,
275  KEY_ENTER,
276  KEY_PLAY
277 };
278 
282 enum class GameOption : int {
286 };
290 typedef int GameOptionData;
291 
295 typedef void(*SceneCallback)(SceneID, EventID);
299 typedef void(*ObjectCallback)(ObjectID, EventID);
303 typedef void(*MouseCallback)(ObjectID, int, int, MouseAction);
307 typedef void(*TimerCallback)(TimerID);
311 typedef void(*SoundCallback)(SoundID);
316 
331 
338 BANGTAL_API SceneID createScene(const char* name, const char* filename = "");
344 BANGTAL_API void setSceneImage(SceneID scene, const char* filename);
351 
357 BANGTAL_API ObjectID createObject(const char* filename);
365 BANGTAL_API void locateObject(ObjectID object, SceneID scene, int x, int y);
371 BANGTAL_API void setObjectImage(ObjectID object, const char* filename);
378 
405 BANGTAL_API void defineCombination(ObjectID object1, ObjectID object2, ObjectID object3);
411 
416 BANGTAL_API void showMessage(const char* message);
422 BANGTAL_API void showKeypad(const char* password, ObjectID object);
427 BANGTAL_API void showImageViewer(const char* filename);
432 BANGTAL_API void showAudioPlayer(const char* filename);
437 BANGTAL_API void showVideoPlayer(const char* filename);
438 
444 BANGTAL_API SoundID createSound(const char* filename);
450 BANGTAL_API void playSound(SoundID sound, bool loop = false);
456 
473 
485 BANGTAL_API void setTimer(TimerID timer, Second seconds);
498 
508 
539 
void setSceneCallback(SceneCallback callback)
장면 이벤트를 처리하는 콜백 함수를 등록하는 함수
void showVideoPlayer(const char *filename)
비디오 재생장치를 보이는 함수(미지원 함수)
#define BANGTAL_API
Definition: bangtal.h:25
void playSound(SoundID sound, bool loop=false)
사운드 재생을 시작하는 함수
void scaleObject(ObjectID object, ObjectScale scale)
물체의 크기를 설정(변경)하는 함수
SoundID createSound(const char *filename)
사운드를 생성하는 함수
ObjectID createObject(const char *filename)
물체를 생성하는 함수
void setSoundCallback(SoundCallback callback)
사운드 이벤트를 처리하는 콜백 함수를 등록하는 함수
int GameOptionData
타입 정의: 게임 옵션 값(데이터)
Definition: bangtal.h:290
void(* SceneCallback)(SceneID, EventID)
타입 정의: 장면 이벤트 콜백
Definition: bangtal.h:295
void pickObject(ObjectID object)
물체를 집는 함수
void setObjectImage(ObjectID object, const char *filename)
물체의 이미지를 설정(변경)하는 함수
const TimerID INVALID_TIMER
잘못된 타이머 ID
Definition: bangtal.h:44
void dropObject(ObjectID object)
물체를 떨어 뜨리는 함수
void showTimer(TimerID timer)
타이머의 남은 시간을 보이도록 설정하는 함수
SceneID createScene(const char *name, const char *filename="")
장면을 생성하는 함수
unsigned int SceneID
타입 정의: 장면 ID
Definition: bangtal.h:31
void startTimer(TimerID timer)
타이머 동작을 시작하는 함수
void startGame(SceneID scene)
게임을 시작하는 함수
unsigned int TimerID
타입 정의: 타이머 ID
Definition: bangtal.h:43
void showImageViewer(const char *filename)
이미지를 보이는 함수
void stopSound(SoundID sound)
사운드 재생을 종료하는 함수
float ObjectScale
타입 정의: 물체의 크기(비율)
Definition: bangtal.h:60
void(* SoundCallback)(SoundID)
타입 정의: 사운드 이벤트 콜백
Definition: bangtal.h:311
ObjectID getHandObject()
사용하는 물체를 확인하는 함수
void stopTimer(TimerID timer)
타이머 동작을 종료하는 함수
const SoundID INVALID_SOUND
잘못된 사운드 ID
Definition: bangtal.h:50
float Second
타입 정의: 시간(초)
Definition: bangtal.h:65
GameOptionData getGameOption(GameOption option)
게임 옵션을 확인하는 함수
void setTimer(TimerID timer, Second seconds)
타이머 시간을 설정(변경)하는 함수
void hideTimer()
타이머를 보이지 않도록 설정하는 함수
void(* KeyboardCallback)(KeyCode, KeyState)
타입 정의: 키보드 이벤트 콜백
Definition: bangtal.h:315
void(* TimerCallback)(TimerID)
타입 정의: 타이머 이벤트 콜백
Definition: bangtal.h:307
Second getTimer(TimerID timer)
타이머 시간을 얻는 함수
const ObjectID INVALID_OBJECT
잘못된 물체 ID
Definition: bangtal.h:38
void locateObject(ObjectID object, SceneID scene, int x, int y)
물체를 장면에 위치시키는 함수
void decreaseTimer(TimerID timer, Second seconds)
타이머 시간을 감소시키는 함수
void showAudioPlayer(const char *filename)
오디오 재생장치를 보이는 함수(미지원 함수)
KeyCode
열거형: 키보드 입력 코드
Definition: bangtal.h:106
@ KEY_CAPITAL_E
@ KEY_LEFT_BRACKET
@ KEY_UP_ARROW
@ KEY_GREATER_THAN
@ KEY_UNDERSCORE
@ KEY_CAPITAL_H
@ KEY_QUESTION
@ KEY_DPAD_LEFT
@ KEY_AMPERSAND
@ KEY_CAPITAL_V
@ KEY_LEFT_ARROW
@ KEY_KP_MULTIPLY
@ KEY_CAPITAL_I
@ KEY_CAPITAL_Y
@ KEY_RIGHT_ALT
@ KEY_CAPITAL_P
@ KEY_CAPITAL_C
@ KEY_CAPITAL_O
@ KEY_LEFT_ALT
@ KEY_CAPITAL_Z
@ KEY_BACKSPACE
@ KEY_CIRCUMFLEX
@ KEY_CAPITAL_Q
@ KEY_NUM_LOCK
@ KEY_CAPS_LOCK
@ KEY_DOWN_ARROW
@ KEY_DPAD_RIGHT
@ KEY_KP_DELETE
@ KEY_LESS_THAN
@ KEY_DPAD_CENTER
@ KEY_CAPITAL_W
@ KEY_LEFT_BRACE
@ KEY_APOSTROPHE
@ KEY_LEFT_PARENTHESIS
@ KEY_CAPITAL_J
@ KEY_CAPITAL_F
@ KEY_KP_ENTER
@ KEY_SEMICOLON
@ KEY_RIGHT_BRACE
@ KEY_KP_MINUS
@ KEY_RIGHT_SHIFT
@ KEY_CAPITAL_R
@ KEY_KP_INSERT
@ KEY_CAPITAL_G
@ KEY_MIDDLE_DOT
@ KEY_ASTERISK
@ KEY_KP_PG_UP
@ KEY_CAPITAL_B
@ KEY_CAPITAL_S
@ KEY_RIGHT_BRACKET
@ KEY_RIGHT_ARROW
@ KEY_KP_RIGHT
@ KEY_CAPITAL_D
@ KEY_CAPITAL_K
@ KEY_CAPITAL_U
@ KEY_BACK_TAB
@ KEY_CAPITAL_A
@ KEY_KP_DIVIDE
@ KEY_LEFT_CTRL
@ KEY_BACK_SLASH
@ KEY_SCROLL_LOCK
@ KEY_CAPITAL_T
@ KEY_CAPITAL_L
@ KEY_CAPITAL_N
@ KEY_RIGHT_PARENTHESIS
@ KEY_CAPITAL_X
@ KEY_DPAD_DOWN
@ KEY_LEFT_SHIFT
@ KEY_CAPITAL_M
@ KEY_KP_PG_DOWN
@ KEY_RIGHT_CTRL
void(* MouseCallback)(ObjectID, int, int, MouseAction)
타입 정의: 마우스 이벤트 콜백
Definition: bangtal.h:303
void setTimerCallback(TimerCallback callback)
타이머 이벤트(TIME OUT)를 처리하는 콜백 함수를 등록하는 함수
void setMouseCallback(MouseCallback callback)
마우스 이벤트를 처리하는 콜백 함수를 등록하는 함수
unsigned int ObjectID
타입 정의: 물체 ID
Definition: bangtal.h:37
const SceneID INVALID_SCENE
잘못된 장면 ID
Definition: bangtal.h:32
void setObjectCallback(ObjectCallback callback)
물체 이벤트를 처리하는 콜백 함수를 등록하는 함수
void showMessage(const char *message)
메시지를 출력하는 함수
void showKeypad(const char *password, ObjectID object)
키패드를 출력하는 함수
EventID
열거형: 이벤트 ID
Definition: bangtal.h:70
@ EVENT_LEAVE_SCENE
@ EVENT_COMBINE_OBJECT
@ EVENT_KEYPAD
@ EVENT_ENTER_SCENE
@ EVENT_DROP_OBJECT
@ EVENT_DISMANTLE_OBJECT
@ EVENT_PICK_OBJECT
void(* ObjectCallback)(ObjectID, EventID)
타입 정의: 물체 이벤트 콜백
Definition: bangtal.h:299
void enterScene(SceneID scene)
장면으로 이동하는 함수
void setSceneImage(SceneID scene, const char *filename)
장면의 이미지를 설정(변경)하는 함수
unsigned int SoundID
타입 정의: 사운드 ID
Definition: bangtal.h:49
float SceneLight
타입 정의: 장면의 밝기
Definition: bangtal.h:55
MouseAction
열거형: 마우스 입력 동작
Definition: bangtal.h:86
void setSceneLight(SceneID scene, SceneLight light)
장면의 밝기를 설정(변경)하는 함수
void defineCombination(ObjectID object1, ObjectID object2, ObjectID object3)
물체의 조합을 정의하는 함수, 물체1과 물체2로 물체3을 만든다.
void hideObject(ObjectID object)
물체를 보이지 않도록 설정하는 함수
void showObject(ObjectID object)
물체를 보이도록 설정하는 함수
void setKeyboardCallback(KeyboardCallback callback)
키보드 이벤트를 처리하는 콜백 함수를 등록하는 함수
void endGame()
게임을 종료하는 함수
GameOption
열거형: 게임 옵션 종류
Definition: bangtal.h:282
@ GAME_OPTION_INVENTORY_BUTTON
인벤토리 버튼을 보일 것인가
@ GAME_OPTION_MESSAGE_BOX_BUTTON
메시지 박스 버튼을 보일 것인가
@ GAME_OPTION_ROOM_TITLE
장면 이름을 보일 것인가
void increaseTimer(TimerID timer, Second seconds)
타이머 시간을 증가시키는 함수
void setGameOption(GameOption option, GameOptionData data)
게임 옵션을 설정하는 함수
KeyState
열거형: 키보드 입력 상태
Definition: bangtal.h:97
TimerID createTimer(Second seconds=0)
타이머를 생성하는 함수