예제 #1
0
// XXX: deprecated
MenuItemFont * MenuItemFont::create(const std::string& value, Ref* target, SEL_MenuHandler selector)
{
    MenuItemFont *ret = new (std::nothrow) MenuItemFont();
    ret->initWithString(value, target, selector);
    ret->autorelease();
    return ret;
}
예제 #2
0
MenuItemFont * MenuItemFont::create(const std::string& value)
{
    MenuItemFont *ret = new (std::nothrow) MenuItemFont();
    ret->initWithString(value, (const ccMenuCallback&)nullptr);
    ret->autorelease();
    return ret;
}
예제 #3
0
MenuItemFont * MenuItemFont::create(const std::string& value, const ccMenuCallback& callback)
{
    MenuItemFont *ret = new MenuItemFont();
    ret->initWithString(value, callback);
    ret->autorelease();
    return ret;
}
예제 #4
0
MenuItemFont * MenuItemFont::create(const char *value)
{
    MenuItemFont *pRet = new MenuItemFont();
    pRet->initWithString(value, (const ccMenuCallback&)nullptr);
    pRet->autorelease();
    return pRet;
}
예제 #5
0
// XXX: deprecated
MenuItemFont * MenuItemFont::create(const char *value, Object* target, SEL_MenuHandler selector)
{
    MenuItemFont *pRet = new MenuItemFont();
    pRet->initWithString(value, target, selector);
    pRet->autorelease();
    return pRet;
}
예제 #6
0
bool PlayersSelectLayer::init()
{
    if (!Layer::init())
        return false;

    //return true;
    
    Size visibleSize = Director::sharedDirector()->getVisibleSize();
    Menu* menu = Menu::create();

    // Add all possibilities
    int position = 0;
    for(unsigned int i = 1; i <= 2; i++ )
    {
        std::string label = std::to_string(i);
        label += (i == 1) ? " Player" : " Players";

        ccMenuCallback callback = std::bind(&PlayersSelectLayer::newGame, this, this, i);

        MenuItemFont *newLevel = new MenuItemFont();
        newLevel->initWithString(
            label.c_str(),
            callback
        );
        newLevel->setPosition(ccp(0, position));
        menu->addChild(newLevel);
        position -= 50;
    }

    // Add menu to layer
    this->addChild(menu, 1);

    menu->setPosition(
        ccp(
            visibleSize.width/2,
            visibleSize.height - 100
        )
    );

    this->setTouchEnabled(true);

    return true;
}
예제 #7
0
bool LevelSelectLayer::init()
{
    if (!Layer::init())
        return false;

    // map filenames to level names
    _levelNameMap["00.tmx"] = "0. Test Level";
    _levelNameMap["01.tmx"] = "1. Test Level";
    _levelNameMap["02.tmx"] = "2. Test Level";
    _levelNameMap["03.tmx"] = "3. Test Level";

    Size visibleSize = Director::sharedDirector()->getVisibleSize();
    Menu* menu = Menu::create();

    // Scan directory
    DIR *dp;
    struct dirent *ep;

    std::vector<std::string> files;

    std::vector<std::string> dirs;
    dirs.push_back("../Resources/levels");
    dirs.push_back("./Resources/levels");
    dirs.push_back("./levels");

    for (auto path : dirs)
    {
        std::cout << "Searching for levels in " << path << std::endl;

        dp = opendir(path.c_str());
        if (dp != NULL)
        {
            while (ep = readdir(dp))
            {
                std::string name(ep->d_name);

                // Must contain .tmx and must not be dir or hidden file
                if (name[0] != '.' && name.find(".tmx") != std::string::npos)
                    files.push_back(name);
            }
            (void) closedir(dp);
            std::sort(files.begin(), files.end());
        }

        if (files.size() > 0)
        {
            std::cout << "Directory OK!" << std::endl;
            break;
        }
    }

    if (files.size() == 0)
    {
        std::cerr << "Couldn't open the directory containing maps!" << std::endl;
    }

    int position = 0;

    Bomber::Common::XMLStorage *storage = Bomber::Common::XMLStorage::getInstance();

    for (auto filename : files)
    {
        if (_levelNameMap.count(filename) == 0)
        {
            std::cerr << "Not defined name for " << filename << std::endl;
            //continue;
            _levelNameMap[filename] = "Not defined name for " + filename;
        }

        ccMenuCallback callback = std::bind(&LevelSelectLayer::playersSelect, this, this, filename);

        MenuItemFont *newLevel = new MenuItemFont();

        std::string nameToDisplay(_levelNameMap[filename]);

        if (storage->get("level_status", filename) != "")
        {
            nameToDisplay += " - ";
            nameToDisplay += storage->get("level_status", filename);
        }

        newLevel->initWithString(
            nameToDisplay.c_str(),
            callback
        );
        newLevel->setPosition(ccp(0, position));
        menu->addChild(newLevel);
        position -= 50;
    }

    this->addChild(menu, 1);

    menu->setPosition(
        ccp(
            visibleSize.width/2,
            visibleSize.height - 100
        )
    );

    this->setTouchEnabled(true);
    this->setKeyboardEnabled(true);

    return true;
}