API 가이드
다음 문장을 포함함으로써 Bangtal API를 사용할 수 있다.
#include <bangtal>
C++ bangtal library는 bangtal namespace로 정의되어 있으므로 bangtal namespace를 사용하도록 선언하는 것이 좋다.
using namespace bangtal;
기본 함수
-
void startGame(ScenePtr scene)
scene으로부터 게임을 시작한다. scene으로 들어가면서 이벤트(EVENT_ENTER_SCENE)가 발생한다. -
void endGame()
게임을 종료한다. -
void hideTimer()
타이머를 보이지 않는다. -
void showMessage(const std::string& message)
주어진 메시지(message)를 메시지 창에 보인다. -
void showImageViewer(const std::string& image)
주어진 이미지(image)를 보인다. -
void showKeypad(const std::string& password, ObjectPtr object)
주어진 암호(password)를 입력할 수 있는 키패드를 보인다. 암호를 맞추면 이벤트(EVENT_KEYPAD)가 발생한다.showKeypad("PASS1234", door1);
장면(Scene) 클래스
- static ScenePtr create(const std::string& name, const std::string& image)
주어진 이름(name)과 배경 이미지(image)를 가진 장면을 생성하고 ScenePtr를 반환한다.ScenePtr scene = Scene::create("룸1", "Images/배경-1.png");
- void setImage(const std::string& image)
장면(scene)의 배경 이미지(image)를 변경한다.scene->setImage("Images/배경-2.png");
- void setLight(SceneLight light)
장면(scene)의 밝기(light)를 조정한다. light는 0~1 사이의 float 값이다.scene->setLight(0.5f); // 50%
- void enter()
장면(scene)으로 이동한다. 현재 장면에서 EVENT_LEAVE_SCENE이 발생하며, 이동한 장면에서 EVENT_ENTER_SCENE이 발생한다.scene->enter();
- 장면에서 들어오는 경우에 처리하는 Event Handler - bool onEnter()
기본적으로 onEnterCallback 함수를 호출한다. setOnEnterCallback() 함수를 통해서 재정의 할 수 있다.scene->setOnEnterCallback([](ScenePtr scene)->bool { std::cout << "entering into " << scene->getName() << std:endl; });
- 장면에서 나가는 경우에 처리하는 Event Handler - bool onLeave()
기본적으로 onLeaveCallback 함수를 호출한다. setOnLeaveCallback() 함수를 통해서 재정의 할 수 있다.scene->setOnLeaveCallback([](ScenePtr scene)->bool { std::cout << "leaving from " << scene->getName() << std:endl; });
- 키보드 입력을 처리하는 Event Handler - bool onKeyboard(KeyCode key, bool pressed)
기본적으로 onKeyboardCallback 함수를 호출한다. setOnKeyboardCallback() 함수를 통해서 재정의 할 수 있다.scene->setOnKeyboardCallback([](ScenePtr scene, KeyCode key, bool pressed)->bool { std::cout << key << (pressed ? " pressed" : " released") << std:endl; });
물체(Object) 클래스
- static ObjectPtr create(const std::string& image, ScenePtr scene, int x, int y, bool shown)
주어진 이미지(image)로 물체를 생성하고 ObjectPtr를 반환한다. 물체를 주어진 장면(scene)의 (x, y)에 위치시킨다. 물체를 보이도록 설정한다(shown).ObjectPtr door = Object::create("문1", "Images/문-오른쪽-닫힘.png", scene1, 800, 270, true);
- void setImage(const std::string& image)
물체(object)의 이미지(image)를 변경한다.door->setImage("Images/문-오른쪽-열림.png");
- void setText(const std::string& text)
물체(object)의 텍스트(text)를 변경한다.door->setText("한글 ABC\n123456");
- void setScale(ObjectScale scale)
물체(object)의 크기(scale)를 조정한다. 1이 100%이며 float 값이다.door->setScale(0.5f); // 50%
- void locate(ScenePtr scene, int x, int y)
물체(object)를 장면(scene)의 (x, y)로 위치시킨다.door->locate(scene1, 900, 270)
- void show() / hide()
물체(object)를 보이거나(show) 숨깁니다(hide).key->show()
- void pick() / drop()
물체(object)를 줍거나(pick) 떨어뜨립니다(drop).key->pick()
-
void defineCombination(ObjectPtr obj1, ObjectPtr obj2)
2개의 물체 obj1과 obj2를 조합(combine)하면 물체(object)를 생성할 수 있습니다. 반대로 물체(object)를 분해(dismantle)하면 2개의 물체 obj1과 obj2를 얻을 수 있습니다. - bool isHanded()
물체(object)가 사용 중인가를 반환합니다.key->isHanded()
- 물체(object)의 마우스 입력을 처리하는 Event Handler - bool onMouse(int x, int y, MouseAction action)
기본적으로 onMouseCallback 함수를 호출한다. setOnMouseCallback() 함수를 통해서 재정의 할 수 있다.door->setOnMouseCallback([]([ObjectPtr](/api/namespacebangtal.html#a58bcfbb10dc18b44fb41c19c4d850a59) object, int x, int y, MouseAction action)->bool { object->setImage("Images/문-오른쪽-열림.png"); });
- 물체(object)를 줍거나 떨어뜨리는 이벤트를 처리하는 Event Handler - bool onPick() / onDrop()
기본적으로 onPickCallback 함수를 호출한다. setOnPickCallback() 함수를 통해서 재정의 할 수 있다.paper->setOnPickCallback([]([ObjectPtr](/api/namespacebangtal.html#a58bcfbb10dc18b44fb41c19c4d850a59) object)->bool { object->setImage("Images/문서.png"); });
-
물체(object)를 조합/분해하는 이벤트를 처리하는 Event Handler - bool onCombine() / onDismantle()
기본적으로 onCombineCallback 함수를 호출한다. setOnCombineCallback() 함수를 통해서 재정의 할 수 있다. - 키패드(keypad)를 완성하는 이벤트를 처리하는 Event Handler - bool onKeypad()
기본적으로 onKeypadCallback 함수를 호출한다. setOnKeypadCallback() 함수를 통해서 재정의 할 수 있다.door->setOnKeypadCallback([&]([ObjectPtr](/api/namespacebangtal.html#a58bcfbb10dc18b44fb41c19c4d850a59) object)->bool { showMessage("철커덕 문이 열렸다"); door_unlocked = true; });
사운드(Sound) 클래스
- static SoundPtr create(const std::string& audio)
주어진 오디오 파일(audio)로 사운드 객체를 생성하고 SoundPtr를 반환한다.SoundPtr sound = Sound::create("Sounds/Start.mp3");
- void play(bool loop = false) / stop()
사운드(sound)를 재생(play)하거나 종료(stop)한다.sound->play(true);
- 사운드(sound) 재생 종료 이벤트를 처리하는 Event Handler - bool onSound()
기본적으로 onSoundCallback 함수를 호출한다. setOnSoundCallback() 함수를 통해서 재정의 할 수 있다.
타이머(Timer) 클래스
- static TimerPtr create(const Second& second)
주어진 시간(second)으로 타이머 객체를 생성하고 TimerPtr를 반환한다.TimerPtr timer = Timer::create(10.f);
- void start() / stop()
타이머(timer)를 시작(start)하거나 종료(stop)한다.timer->start()
- void set(const Second& second) / increase(const Second& second) / decrease(const Second& second)
타이머(timer)를 설정(set)하거나 증가(increase), 또는 감소(decrease)시킨다.timer->set(10.f)
- 타이머(timer) 종료 이벤트를 처리하는 Event Handler - bool onTimer()
기본적으로 onTimerCallback 함수를 호출한다. setOnTimerCallback() 함수를 통해서 재정의 할 수 있다.
댓글남기기