예제 #1
0
파일: PongGame.hpp 프로젝트: Mourtz/pomdog
    void Reset(Keys keyUpIn, Keys keyDownIn, std::shared_ptr<Keyboard> const& keyboard)
    {
        keyUp = keyUpIn;
        keyDown = keyDownIn;

        connections.Disconnect();
        auto & connect = connections;

        connect(keyboard->KeyUp, [this](Keys key) {
            POMDOG_ASSERT(keyUp != keyDown);
            if (key == keyUp) {
                up = ButtonState::Released;
            }
            else if (key == keyDown) {
                down = ButtonState::Released;
            }
        });

        connect(keyboard->KeyDown, [this](Keys key) {
            POMDOG_ASSERT(keyUp != keyDown);
            if (key == keyUp) {
                up = ButtonState::Pressed;
            }
            else if (key == keyDown) {
                down = ButtonState::Pressed;
            }
        });
    }
예제 #2
0
TEST(ConnectionList, Disconnect)
{
    Signal<void(std::string)> nameChanged;
    ConnectionList connections;
    std::string name;

    connections += nameChanged.Connect([&](std::string const& n) {
        name = n;
    });

    nameChanged("alice");
    EXPECT_EQ("alice", name);
    nameChanged("bob");
    EXPECT_EQ("bob", name);
    nameChanged("chuck");
    EXPECT_EQ("chuck", name);

    connections.Disconnect();

    nameChanged("norris");
    EXPECT_EQ("chuck", name);
}