API 가이드

다음 문장을 포함함으로써 Bangtal API를 사용할 수 있다.

#include <bangtal>

C++ bangtal library는 bangtal namespace로 정의되어 있으므로 bangtal namespace를 사용하도록 선언하는 것이 좋다.

using namespace bangtal;

기본 함수

  1. void startGame(ScenePtr scene)
    scene으로부터 게임을 시작한다. scene으로 들어가면서 이벤트(EVENT_ENTER_SCENE)가 발생한다.

  2. void endGame()
    게임을 종료한다.

  3. void showTimer(TimerPtr timer)
    주어진 타이머를 게임 화면에 보인다.

  4. void hideTimer()
    타이머를 보이지 않는다.

  5. void showMessage(const std::string& message)
    주어진 메시지(message)를 메시지 창에 보인다.

  6. void showImageViewer(const std::string& image)
    주어진 이미지(image)를 보인다.

  7. void showKeypad(const std::string& password, ObjectPtr object)
    주어진 암호(password)를 입력할 수 있는 키패드를 보인다. 암호를 맞추면 이벤트(EVENT_KEYPAD)가 발생한다.

      showKeypad("PASS1234", door1);
    

장면(Scene) 클래스

  1. static ScenePtr create(const std::string& name, const std::string& image)
    주어진 이름(name)과 배경 이미지(image)를 가진 장면을 생성하고 ScenePtr를 반환한다.
      ScenePtr scene = Scene::create("룸1", "Images/배경-1.png");
    
  2. void setImage(const std::string& image)
    장면(scene)의 배경 이미지(image)를 변경한다.
      scene->setImage("Images/배경-2.png");
    
  3. void setLight(SceneLight light)
    장면(scene)의 밝기(light)를 조정한다. light는 0~1 사이의 float 값이다.
      scene->setLight(0.5f);      // 50%
    
  4. void enter()
    장면(scene)으로 이동한다. 현재 장면에서 EVENT_LEAVE_SCENE이 발생하며, 이동한 장면에서 EVENT_ENTER_SCENE이 발생한다.
      scene->enter();
    
  5. 장면에서 들어오는 경우에 처리하는 Event Handler - bool onEnter()
    기본적으로 onEnterCallback 함수를 호출한다. setOnEnterCallback() 함수를 통해서 재정의 할 수 있다.
      scene->setOnEnterCallback([](ScenePtr scene)->bool {
            std::cout << "entering into " << scene->getName() << std:endl;
        });
    
  6. 장면에서 나가는 경우에 처리하는 Event Handler - bool onLeave()
    기본적으로 onLeaveCallback 함수를 호출한다. setOnLeaveCallback() 함수를 통해서 재정의 할 수 있다.
      scene->setOnLeaveCallback([](ScenePtr scene)->bool {
            std::cout << "leaving from " << scene->getName() << std:endl;
        });
    
  7. 키보드 입력을 처리하는 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) 클래스

  1. 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);
    
  2. void setImage(const std::string& image)
    물체(object)의 이미지(image)를 변경한다.
      door->setImage("Images/문-오른쪽-열림.png");
    
  3. void setText(const std::string& text)
    물체(object)의 텍스트(text)를 변경한다.
      door->setText("한글 ABC\n123456");
    
  4. void setScale(ObjectScale scale)
    물체(object)의 크기(scale)를 조정한다. 1이 100%이며 float 값이다.
      door->setScale(0.5f);      // 50%
    
  5. void locate(ScenePtr scene, int x, int y)
    물체(object)를 장면(scene)의 (x, y)로 위치시킨다.
      door->locate(scene1, 900, 270)
    
  6. void show() / hide()
    물체(object)를 보이거나(show) 숨깁니다(hide).
      key->show()
    
  7. void pick() / drop()
    물체(object)를 줍거나(pick) 떨어뜨립니다(drop).
      key->pick()
    
  8. void defineCombination(ObjectPtr obj1, ObjectPtr obj2)
    2개의 물체 obj1과 obj2를 조합(combine)하면 물체(object)를 생성할 수 있습니다. 반대로 물체(object)를 분해(dismantle)하면 2개의 물체 obj1과 obj2를 얻을 수 있습니다.

  9. bool isHanded()
    물체(object)가 사용 중인가를 반환합니다.
      key->isHanded()
    
  10. 물체(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");
       });
    

  11. 물체(object)를 줍거나 떨어뜨리는 이벤트를 처리하는 Event Handler - bool onPick() / onDrop()
    기본적으로 onPickCallback 함수를 호출한다. setOnPickCallback() 함수를 통해서 재정의 할 수 있다.
      paper->setOnPickCallback([]([ObjectPtr](/api/namespacebangtal.html#a58bcfbb10dc18b44fb41c19c4d850a59) object)->bool {
           object->setImage("Images/문서.png");
       });
    
  12. 물체(object)를 조합/분해하는 이벤트를 처리하는 Event Handler - bool onCombine() / onDismantle()
    기본적으로 onCombineCallback 함수를 호출한다. setOnCombineCallback() 함수를 통해서 재정의 할 수 있다.

  13. 키패드(keypad)를 완성하는 이벤트를 처리하는 Event Handler - bool onKeypad()
    기본적으로 onKeypadCallback 함수를 호출한다. setOnKeypadCallback() 함수를 통해서 재정의 할 수 있다.
      door->setOnKeypadCallback([&]([ObjectPtr](/api/namespacebangtal.html#a58bcfbb10dc18b44fb41c19c4d850a59) object)->bool {
           showMessage("철커덕 문이 열렸다");
           door_unlocked = true;
       });
    

사운드(Sound) 클래스

  1. static SoundPtr create(const std::string& audio)
    주어진 오디오 파일(audio)로 사운드 객체를 생성하고 SoundPtr를 반환한다.
      SoundPtr sound = Sound::create("Sounds/Start.mp3");
    
  2. void play(bool loop = false) / stop()
    사운드(sound)를 재생(play)하거나 종료(stop)한다.
      sound->play(true);
    
  3. 사운드(sound) 재생 종료 이벤트를 처리하는 Event Handler - bool onSound()
    기본적으로 onSoundCallback 함수를 호출한다. setOnSoundCallback() 함수를 통해서 재정의 할 수 있다.

타이머(Timer) 클래스

  1. static TimerPtr create(const Second& second)
    주어진 시간(second)으로 타이머 객체를 생성하고 TimerPtr를 반환한다.
      TimerPtr timer = Timer::create(10.f);
    

  2. void start() / stop()
    타이머(timer)를 시작(start)하거나 종료(stop)한다.
      timer->start()
    
  3. void set(const Second& second) / increase(const Second& second) / decrease(const Second& second)
    타이머(timer)를 설정(set)하거나 증가(increase), 또는 감소(decrease)시킨다.
      timer->set(10.f)
    
  4. 타이머(timer) 종료 이벤트를 처리하는 Event Handler - bool onTimer()
    기본적으로 onTimerCallback 함수를 호출한다. setOnTimerCallback() 함수를 통해서 재정의 할 수 있다.

댓글남기기