bool Background::init()
{
	m_masterTile = GAFAsset::create("back_1/back_1.gaf");
	
	Size visibleSize = Director::getInstance()->getVisibleSize();
	const int visibleSizeWidth = visibleSize.width;
	int totalSize = 0;

	do
	{
		GAFAnimatedObject* tile = m_masterTile->createObjectAndRun();
		tile->retain();

		if (m_tileWidth == 0)
		{
			m_tileWidth = tile->getContentSize().width;
		}

		tile->setScale(1);
		m_tiles.push_back(tile);
		addChild(tile);
		
		totalSize += m_tileWidth;
	} while (totalSize < visibleSizeWidth + m_tileWidth);

	repositionTilesStartingFrom(0);
	Director::getInstance()->getScheduler()->scheduleUpdate(this, 1, false);

	return true;
}
int GafFeatures::frameNumber()
{
	if (!_objects || !_objects->count())
	{
		return -1;
	}
	GAFAnimatedObject *object = (GAFAnimatedObject *)_objects->objectAtIndex(0);
	return object->currentFrameIndex();
}
void GafFeatures::setFrameNumber(int aFrameNumber)
{
	if (!_objects || !_objects->count())
	{
		return;
	}
	GAFAnimatedObject *object = (GAFAnimatedObject *)_objects->objectAtIndex(0);
	object->setFrame(aFrameNumber);	
}
int GafFeatures::maxFrameNumber()
{
	if (!_objects || !_objects->count())
	{
		return -1;
	}
	GAFAnimatedObject *object = (GAFAnimatedObject *)_objects->objectAtIndex(0);
	return object->totalFrameCount();	
}
void GafFeatures::toggleReverse(cocos2d::Ref*)
{
    if (m_objects->count() == 0)
    {
        return;
    }
    GAFAnimatedObject *obj = (GAFAnimatedObject *)m_objects->getLastObject();
    obj->setReversed(!obj->isReversed());
}
void GafFeatures::restart()
{
	if (!_objects || !_objects->count())
	{
		return;
	}
	GAFAnimatedObject *object = (GAFAnimatedObject *)_objects->objectAtIndex(0);
	object->stop();
	object->start();
}
Esempio n. 7
0
GAFAnimatedObject * GAFAsset::createObjectAndRun(bool looped)
{
	GAFAnimatedObject * res = createObject();
	if (res)
	{
		res->setLooped(looped);
		res->start();
	}
	return res;
}
void GafFeatures::restart(cocos2d::Ref*)
{
    if (!m_objects || !m_objects->count())
    {
        return;
    }

    GAFAnimatedObject *object = (GAFAnimatedObject *)m_objects->getObjectAtIndex(0);
    object->stop();
    object->start();
}
Esempio n. 9
0
void Gun::emitProjectile()
{
    GAFAnimatedObject* model = m_projectile->createObjectAndRun(true);
    model->setPosition(m_projectileOffset);

    Mat4 transform = getNodeToWorldTransform();

    Node* container = Node::create();
    container->setPosition(m_emissionPoint);
    addChild(container);
    Projectile* p = Projectile::create(model, m_projectileDamage, m_projectileSpeed, container);
    removeChild(container);

    Director::getInstance()->getRunningScene()->addChild(p);
}
Esempio n. 10
0
void GafFeatures::prevSequence( cocos2d::Ref* )
{
    GAFAnimatedObject *object = (GAFAnimatedObject *)m_objects->getObjectAtIndex(0);

    m_currentSequence--;

    if (m_currentSequence < 0)
    {
        m_currentSequence = m_objectSequencesNames.size() - 1;
    }

    const char* secName = m_objectSequencesNames[m_currentSequence].c_str();
    object->playSequence(secName, true);
    
    m_sequenceName->setString(secName);
}
Esempio n. 11
0
void GafFeatures::removeFromScene(int aCount)
{
	if (!_objects || !aCount)
	{
		return;
	}
	if (aCount > _objects->count())
	{
		aCount = _objects->count();
	}
	for (int i = 0; i < aCount; ++i)
	{
		GAFAnimatedObject *obj = (GAFAnimatedObject *) _objects->lastObject();
		obj->removeFromParentAndCleanup(true);
		_objects->removeLastObject();
	}
}
Esempio n. 12
0
void GafFeatures::playpause(cocos2d::Ref*)
{
    if (!m_objects || !m_objects->count())
    {
        return;
    }

    GAFAnimatedObject *object = (GAFAnimatedObject *)m_objects->getObjectAtIndex(0);

    if (object->isAnimationRunning())
    {
        object->pauseAnimation();
    }
    else
    {
        object->resumeAnimation();
    }
}
Esempio n. 13
0
void GafFeatures::playpause()
{
	if (!_objects || !_objects->count())
	{
		return;
	}
	GAFAnimatedObject *object = (GAFAnimatedObject *)_objects->objectAtIndex(0);
	

	if (object->isAnimationRunning())
	{
		object->pause();
	}
	else
	{
		object->resume();
	}

}
Esempio n. 14
0
void GafFeatures::addObjectsToScene(int aCount)
{
	if (!aCount)
	{
		return;
	}
	if (!_asset)
	{		
		_asset =  GAFAsset::create(_jsons[_anim_index]);
		CC_SAFE_RETAIN(_asset);
	}
	if (!_objects)
	{
		_objects = CCArray::create();
		_objects->retain();
	}
	if (_asset)
	{
		int initialCount = _objects->count();
		for (int i = initialCount; i < initialCount + aCount; ++i)
		{
			GAFAnimatedObject *object = _asset->createObjectAndRun(true);
			object->setZOrder(100 * i);
			addChild(object);
			float s = CCDirector::sharedDirector()->getWinSize().height / 640;
			if (s > 1) s = 1;
			object->setScale(s);			
			CCSize winSize = CCDirector::sharedDirector()->getWinSize();
			object->setPosition(winSize.width * (0.4 + 0.05 * i), winSize.height * 0.6);
			_objects->addObject(object);
			
			// will work only if animation has sequence
			object->playSequence("walk", true);
		}
	}
}
bool MainMenuScene::init()
{
    if (!Scene::init())
    {
        return false;
    }
    
    Size visibleSize = Director::getInstance()->getVisibleSize();

    GAFAnimatedObject* logo = GAFAnimatedObject::createAndRun("logo/logo.gaf", false);
    logo->setPosition(0, visibleSize.height);
    addChild(logo);

    MenuItem* startButton = MenuItemSprite::create(
        Sprite::create("button_logo_idle.png"),
        Sprite::create("button_logo_selected.png"),
        CC_CALLBACK_1(MainMenuScene::advanceToGame, this));
    Menu* menu = Menu::create(startButton, NULL);

    startButton->setPosition(visibleSize.width / 2, 50);
    menu->setPosition(Vec2::ZERO);
    menu->setTag(1);
    addChild(menu, 1);
	
	glClearColor(1, 1, 1, 1.0);

    m_label = Label::create("1 enemies", "arial", 20);
    m_label->setColor(Color3B::RED);
    MenuItem* toggleEnemiesCount = MenuItemLabel::create(m_label, CC_CALLBACK_1(MainMenuScene::toggleEnemiesCount, this));
    Menu* menu2 = Menu::create(toggleEnemiesCount, NULL);
    toggleEnemiesCount->setPosition(visibleSize.width - 60 , 50);
    menu2->setPosition(Vec2::ZERO);
    addChild(menu2);
    
    return true;
}
Esempio n. 16
0
void GafFeatures::addObjectsToScene()
{
    if (!m_asset)
    {
        StartCounter();
        m_asset = GAFAsset::create(m_files[m_anim_index], this);
        double loadingTime = GetCounter();

        cocos2d::log("Loading time [%f]\n", loadingTime);

        std::ostringstream ss;
        ss << m_files[m_anim_index] << " ";
        ss << loadingTime;

        //m_loadingTimeLabel->setString(ss.str().c_str());
        
        ss.str("");
        
        ss << "VRAM: ";
        ss << m_asset->getTextureAtlas()->getMemoryConsumptionStat();
        ss << " bytes";
        
        m_vramStat->setString(ss.str());
        
        CC_SAFE_RETAIN(m_asset);
    }

    if (!m_objects)
    {
        m_objects = cocos2d::__Array::create();
        m_objects->retain();
    }

    const cocos2d::Size size = cocos2d::Director::getInstance()->getWinSizeInPixels();

    if (m_asset)
    {
        GAFAnimatedObject *object = m_asset->createObject();
        
        object->setLocalZOrder(0);
        addChild(object);
        
        float scaleFactor = cocos2d::Director::getInstance()->getContentScaleFactor();
        object->setPosition(centerScreenPosition(m_asset, size / scaleFactor));
        
        m_objects->addObject(object);
        
        m_objectSequencesNames.clear();
#if CC_TARGET_PLATFORM == CC_PLATFORM_IOS
        CocosDenshion::SimpleAudioEngine::getInstance()->stopAllEffects();
        
        for(auto& effect : m_musicEffects)
        {
            CocosDenshion::SimpleAudioEngine::getInstance()->unloadEffect(effect.second.c_str());
        }
#endif
        m_musicEffects.clear();
        
        const AnimationSequences_t& secDictionary = m_asset->getAnimationSequences();
        if (!secDictionary.empty())
        {
            for (AnimationSequences_t::const_iterator i = secDictionary.begin(), e = secDictionary.end(); i != e; ++i)
            {
                const std::string& seqName = i->first;
                std::string::size_type pos = seqName.find("__audio:");
                if (pos != std::string::npos)
                {
                    std::string effectName = seqName.substr(pos + 8) + ".wav";
#if CC_TARGET_PLATFORM == CC_PLATFORM_IOS
                    CocosDenshion::SimpleAudioEngine::getInstance()->preloadEffect(effectName.c_str());
#endif
                    m_musicEffects[i->second.startFrameNo] = std::move(effectName);
                }
                else
                {
                    m_objectSequencesNames.push_back(i->first);
                }
            }
        }
        
        enableSequenceControllers(!m_objectSequencesNames.empty());
        
        // will work only if animation has a sequence
        object->playSequence("walk", true);
        object->setLooped(true);
        object->start();
        
        object->setSequenceDelegate(this);
        object->setFramePlayedDelegate(this);
        
    }
}