Example #1
0
void GraphicManager::garbageCollection()
{
	if(settings.getInteger(Config::TEXTURE_MANAGEMENT))
	{
		int t = time(nullptr);
		if(loaded_textures > settings.getInteger(Config::TEXTURE_CLEAN_THRESHOLD) &&
				t - lastclean > settings.getInteger(Config::TEXTURE_CLEAN_PULSE))
		{
			ImageMap::iterator iit = image_space.begin();
			while(iit != image_space.end())
			{
				iit->second->clean(t);
				++iit;
			}
			SpriteMap::iterator sit = sprite_space.begin();
			while(sit != sprite_space.end())
			{
				GameSprite* gs = dynamic_cast<GameSprite*>(sit->second);
				if(gs) gs->clean(t);
				++sit;
			}
			lastclean = t;
		}
	}
}
Example #2
0
GameSprite* SpriteHandler::getSpriteToMap(cocos2d::CCPoint &tilePos, VillagerClass villagerClass)
{
    GameSprite* targetSprite = getSpriteByVillagerClass(villagerClass);
    SpriteClass* spriteClass = GlobalHelper::getSpriteClassByVillagerClass(villagerClass);
    
    if (!targetSprite){
        return NULL;
    }
    
    GameSprite* newSprite = (GameSprite*)targetSprite->copy();
    newSprite->retain();
    
    newSprite->defaults_doc = spriteClass->defaultContent;
    newSprite->config_doc = spriteClass->configContent;
    newSprite->spriteClass = spriteClass->targetClass;
    newSprite->villagerClass = villagerClass;
    
    newSprite->makeSprite(&tilePos);
    
    spritesOnMap->addObject(newSprite);
    
    // GameHUD::getThis()->onSpriteAddedToMap(newSprite);
    
    return newSprite;
}
Example #3
0
void IceBlock::makeMove(GameDirection direction){
	if (getState() == BoxStateMoving) return;
	CCPoint currentPos = getTileMapPosition();
	CCPoint vector = GAMEUTILS->getTiledVectorFromDirection(direction);
	CCPoint point = ccp(currentPos.x + vector.x, currentPos.y - vector.y);
	// Jest �ciana
	if (GAMEUTILS->isWallPresent(point)){
		stopMoving();
		type = GAME_TYPE_BOX;
		properities |= PPUSHABLE;
	}
	GameSprite* obj = GAMEUTILS->objectAt(point, this);
	if (obj ){

		if ((obj->properities & PSHOOTABLE) && type == GAME_TYPE_BULLET){
			obj->getKill();
		}

		//this->hit(direction, obj);

		stopMoving();
		//fixPosition();
		type = GAME_TYPE_BOX;
		properities |= PPUSHABLE;
	}
	else{
		setState(BoxStateMoving);
		GameSprite::makeMove(direction);
		this->direction = direction;
	}



}
GameEngine* GameEngine::loadSkyboxSprite(void)
{
        //GameSprite *loadedSkyboxSprite;
        //string name = "skybox";
        //string meshFile = "meshes/skydome.obj";
        //string textureFile = "textures/redband_skydome.tga";
        ////string textureFile = "textures/hubble_huge.bmp";
        ////string textureFile = "textures/milky_way.bmp";
        ////string textureFile = "textures/earth_map.bmp";

        //int numTriangles = 960;
        //loadedSkyboxSprite = new GameSprite(numTriangles, meshFile, textureFile);
        //loadedSkyboxSprite->init();

        //sprites.insert(std::pair<string,GameSprite*>(name, loadedSkyboxSprite));
        GameSprite *loadedSkyboxSprite;
        string name = "skybox";
        string meshFile = "meshes/skydome.obj";
        string textureFile = "textures/redband_skydome.tga";
        //string textureFile = "textures/hubble_huge.bmp";
        //string textureFile = "textures/milky_way.bmp";
        //string textureFile = "textures/earth_map.bmp";

        int numTriangles = 960;
        loadedSkyboxSprite = new GameSprite(numTriangles, meshFile, textureFile);
        loadedSkyboxSprite->init();

        sprites.insert(std::pair<string,GameSprite*>(name, loadedSkyboxSprite));

        return this;
}
Example #5
0
void GameLayer::createStarGrid() {
    //create grid
    float gridFrame = _screenSize.width * 0.1f;
    int tile = 32;
    int rows = (_screenSize.height - 4 * gridFrame)/tile;
    int cols = (_screenSize.width  - 2 * gridFrame)/tile;
    
    int count = _planets->count();
    GameSprite * planet;
    CCPoint cell;
    bool overlaps;
    for (int r = 0; r < rows; r++) {
        for (int c = 0; c < cols; c++) {
            cell = ccp(gridFrame + c * tile, 2 * gridFrame + r * tile);
            overlaps = false;
            for (int j = 0; j < count; j++) {
                planet = (GameSprite *) _planets->objectAtIndex(j);
                if (pow(planet->getPositionX() - cell.x, 2) + pow(planet->getPositionY() - cell.y, 2) <= pow(planet->getRadius() * 1.2f, 2)) {
                    overlaps = true;
                }
            }
            if (!overlaps) _grid.push_back(cell);
        }
    }
    CCLOG("POSSIBLE STARS: %i", _grid.size());
    
}
Example #6
0
int main()
{
  GameSprite *s = new GameSprite(200, 100, 10, 10, "mario.jpg");
  s->setId("Mario");
  s->draw();
  delete s;
  return 0;
}
Example #7
0
uint8_t Item::getMiniMapColor() const
{
	GameSprite* spr = item_db[id].sprite;
	if(spr) {
		return spr->getMiniMapColor();
	}
	return 0;
}
Example #8
0
/*
 * 描画処理。
 */
void WideUseFrame::draw()
{
    for( int i = 0; i < spriteList->count(); i++ )
    {
        GameSprite* sprite = spriteList->getObjectAtIndex( i );
        layerID->reEntry(sprite->getZOrder(), sprite);
    }
}
Example #9
0
GameSprite* GameSprite::gameSpriteWithFile(const char *pszFileName){
    GameSprite *sprite = new GameSprite();
    if (sprite && sprite->initWithSpriteFrameName(pszFileName)) {
        sprite->autorelease();
        return sprite;
    }
    CC_SAFE_DELETE(sprite);
    return NULL;
}
Example #10
0
/*
 * 表示設定。
 */
void WideUseFrame::setIsVisible( bool value )
{
    for( int i = 0; i < spriteList->count(); i++ )
    {
        GameSprite* sprite = spriteList->getObjectAtIndex( i );
        
        sprite->setVisible( value );
    }
}
Example #11
0
GameSprite* GameSprite::gameSpriteWithFile(const char *file_name)
{
    GameSprite *sprite = new GameSprite;
    if (sprite && sprite->initWithFile(file_name)) {
        sprite->autorelease();
        return sprite;
    }
    CC_SAFE_DELETE(sprite);
    return nullptr;
}
Example #12
0
GameSprite* GameSprite::gameSpriteWithFile(const char *pszFileName){
    
    GameSprite *sprite = new GameSprite();
    if (sprite && sprite->initWithFile(pszFileName)) {
        CCLog("Ham khoi tao: %p dc goi", sprite);
        sprite->autorelease();
        return sprite;
    }
    
    CC_SAFE_DELETE(sprite);
    return NULL;
}
Example #13
0
bool IceBlock::canBeMoved(GameDirection direction){
	if (type == GAME_TYPE_BOX)return Box::canBeMoved(direction);
	CCPoint currentPos = getTileMapPosition();
	CCPoint vector = GAMEUTILS->getTiledVectorFromDirection(direction);
	CCPoint point = ccp(currentPos.x + vector.x, currentPos.y - vector.y);
	// Jest �ciana
	if (GAMEUTILS->isWallPresent(point)) return false;
	GameSprite* obj = GAMEUTILS->objectAt(point, this);
	if (!obj || obj->getType() == GAME_TYPE_ENEMY){
		return true;
	}
	return false;
}
Example #14
0
GameSprite* GameSprite::create()
{
    GameSprite* pRet = new GameSprite();
    if (pRet && pRet->init())
    {
        pRet->autorelease();
    }
    else
    {
        CC_SAFE_DELETE(pRet);
    }

    return pRet;
}
Example #15
0
GameSprite* GameSprite::createWithTexture(Texture2D *pTexture, const Rect& rect)
{
    GameSprite* pRet = new GameSprite();
    if (pRet && pRet->initWithTexture(pTexture, rect))
    {
        pRet->autorelease();
    }
    else
    {
        CC_SAFE_DELETE(pRet);
    }

    return pRet;
}
Example #16
0
GameSprite* GameSprite::createWithSpriteFrame(SpriteFrame *pSpriteFrame)
{
    GameSprite* pRet = new GameSprite();
    if (pRet && pRet->initWithSpriteFrame(pSpriteFrame))
    {
        pRet->autorelease();
    }
    else
    {
        CC_SAFE_DELETE(pRet);
    }

    return pRet;
}
Example #17
0
GameSprite* GameSprite::create(const char *pszFileName)
{
    GameSprite* pRet = new GameSprite();
    if (pRet && pRet->initWithFile(pszFileName))
    {
        pRet->autorelease();
    }
    else
    {
        CC_SAFE_DELETE(pRet);
    }

    return pRet;
}
Example #18
0
// check the building, to see whether there is vacancy for assign new sprite
bool SpriteRow::hasVacancy()
{
    int count = 0;
    CCArray* allSpritesOnMap = SpriteHandler::getThis()->spritesOnMap;
    for(int i = 0; i < allSpritesOnMap->count(); i++)
    {
        GameSprite* gs = (GameSprite*)allSpritesOnMap->objectAtIndex(i);
        if(gs->getHome() == building)
        {
            count++;
        }
    }
    return count < building->populationLimit;
}
// creates sprites
GameSprite SpriteSheet::CreateSprite( list<XMFLOAT3> collisionTemplate, float width, float height, float velocity, XMFLOAT2 position, int health, int attack, float rotation, XMFLOAT2 scale )
{
	GameSprite sprite;
	sprite.SetCollisionBox( collisionTemplate );
	sprite.SetWidth( width );
	sprite.SetHeight( height );
	sprite.SetVelocity( velocity );
	sprite.SetPosition( position );
	sprite.SetHealth( health );
	sprite.SetAttack( attack );
	sprite.SetRotation( rotation );
	sprite.SetScale( scale );

	return sprite;
}
GameEngine* GameEngine::loadShipSprite(void)
{
        GameSprite *loadedCubeSprite;

        string name = "ship";
        string meshFile = "meshes/ship.obj";
        string textureFile = "textures/spacecraft.tga";

        int numTriangles = 2064;
        loadedCubeSprite = new GameSprite(numTriangles, meshFile, textureFile);
        loadedCubeSprite->init();

        sprites.insert(std::pair<string,GameSprite*>(name, loadedCubeSprite));

        return this;
}
GameEngine* GameEngine::loadGroundSprite(void)
{
        GameSprite *loadedGroundSprite;

        string name = "ground";
        string meshFile = "meshes/ground.obj";
        string textureFile = "textures/grass.tga";

        int numTriangles = 2;
        loadedGroundSprite = new GameSprite(numTriangles, meshFile, textureFile);
        loadedGroundSprite->init();

        sprites.insert(std::pair<string,GameSprite*>(name, loadedGroundSprite));

        return this;
}
Example #22
0
GameSprite* GameSprite::create(string heroName, int player){
	GameSprite *sprite = new GameSprite(heroName);
    Animate *animation;
    if (player == 1){
        animation = HeroAnimation::setAnimate(9, 12, heroName);
    }
    if (player == 2){
        animation = HeroAnimation::setAnimate(5, 8, heroName);
    }
    sprite->setScale(1.4f, 1.4f);
    sprite->runAction(animation);//播放动画
    if (sprite && sprite->initWithFile("singlePoint.png")){
		sprite->autorelease();
		return sprite;
	}
	CC_SAFE_DELETE(sprite);
	return nullptr;
}
GameEngine* GameEngine::loadCubeSprite(void)
{
        GameSprite *loadedCubeSprite;

        //string name = "cube";
        //string meshFile = "meshes/cube.obj";
        //string textureFile = "textures/brushed_metal.tga";
        string name = "cube";
        string meshFile = "meshes/skybox.obj";
        string textureFile = "textures/space_skybox_by_Orindoomhammer_black.tga";

        int numTriangles = 12;
        loadedCubeSprite = new GameSprite(numTriangles, meshFile, textureFile);
        loadedCubeSprite->init();

        sprites.insert(std::pair<string,GameSprite*>(name, loadedCubeSprite));

        return this;
}
Example #24
0
void IceBlock::update(){
	if (currentState == -1)
		return;
	if (type == GAME_TYPE_BOX)return;

	GameSprite* obj = GAMEUTILS->objectAt(getTileMapPosition(), this);
	if (obj&& obj->properities & PSHOOTABLE)
	{
		//this->hit(direction, obj);

		obj->getKill();


		stopMoving();
		//fixPosition();
		type = GAME_TYPE_BOX;
		properities |= PPUSHABLE;
	}

}
Example #25
0
void GameLayer::ccTouchesEnded(CCSet* pTouches, CCEvent* pEvent)
{
    for (CCSetIterator iter = pTouches->begin(); iter != pTouches->end(); ++ iter)
    {
        CCTouch* pTouch = (CCTouch*)(*iter);
        if (pTouch)
        {
            for (int p = 0; p < 2; ++ p)
            {
                GameSprite* pGS = (GameSprite*)m_pArrPlayers->objectAtIndex(p);
                
                if (pGS->getTouch() && pTouch == pGS->getTouch())
                {
                    pGS->setTouch(NULL);
                    pGS->setVector(ccp(0, 0));
                }
            }
        }
    }
}
Example #26
0
void GameLayer::ccTouchesBegan(CCSet* pTouches, CCEvent* pEvent)
{
    for (CCSetIterator iter = pTouches->begin(); iter != pTouches->end(); ++ iter)
    {
        CCTouch* pTouch = (CCTouch*)(*iter);
        if (pTouch)
        {
            CCPoint tap = pTouch->getLocation();
            for (int p = 0; p < 2; ++ p)
            {
                GameSprite* pGS = (GameSprite*)m_pArrPlayers->objectAtIndex(p);
                
                if (pGS->boundingBox().containsPoint(tap))
                {
                    pGS->setTouch(pTouch);
                }
            }
        }
    }
}
void SpriteContainer::AddSprite(std::string key, std::string id, std::string dir, float width, float height)
{
	GameSprite* sprite = new GameSprite();
	sprite->Initialize(id, gDevice->GetDevice(), dir, width, height);

	if (animations.find(key) == animations.end())
	{		
		animations[key] = sprite;
	}
	else
	{
		GameSprite* current = (*animations.find(key)).second;
		while(current->GetNextSprite())
		{
			current = current->GetNextSprite();
		}
		sprite->SetPreviousSprite(current);
		current->SetNextSprite(sprite);
	}
}
bool SpriteContainer::PostInitialize()
{
	if(!postInitialized)
	{
		for(auto iter = animations.begin(); iter != animations.end(); iter++)
		{
			GameSprite* start = iter->second;
			while(start->GetPreviousSprite())
			{
				start = start->GetPreviousSprite();
			}

			GameSprite* current = start;
			while(current->GetNextSprite())
			{
				current = current->GetNextSprite();
			}
			start->SetPreviousSprite(current);
			current->SetNextSprite(start);
		}
	}
	postInitialized = true;
	return postInitialized;
}
Example #29
0
void SpriteHandler::addSpriteToMap(cocos2d::CCPoint &tilePos, VillagerClass villagerClass, bool tutorial)
{
    GameSprite* targetSprite = getSpriteByVillagerClass(villagerClass);
    SpriteClass* spriteClass = GlobalHelper::getSpriteClassByVillagerClass(villagerClass);
     
    if (!targetSprite){
        CCLog("halo 1");
        return;
    }
    
    // CCLog("halo 2");
    
    GameSprite* newSprite = (GameSprite*)targetSprite->copy();
    newSprite->retain();
    
    newSprite->defaults_doc = spriteClass->defaultContent;
    newSprite->config_doc = spriteClass->configContent;
    newSprite->spriteClass = spriteClass->targetClass;
    newSprite->villagerClass = villagerClass;
    
    newSprite->makeSprite(&tilePos);
    
    // set the unique id for that sprite
    string username = UserProfile::getThis()->username;
    stringstream ss;
    ss << username << "_sprite_unique_id";
    
    int uniqueID = CCUserDefault::sharedUserDefault()->getIntegerForKey(ss.str().c_str(), 0);
    newSprite->uniqueID = uniqueID;
    CCUserDefault::sharedUserDefault()->setIntegerForKey(ss.str().c_str(), uniqueID + 1);
    
    spritesOnMap->addObject(newSprite);
    
    // GameHUD::getThis()->onSpriteAddedToMap(newSprite);
    
    if(tutorial)
    {
        TutorialManager::getThis()->spritesArray->addObject(newSprite);
    }
    
    if(TutorialManager::getThis()->active)
    {
        newSprite->getPossessions()->happinessRating = 100;
    }
}
Example #30
0
/*
 *  スプライト生成。
 */
void WideUseFrame::createSprite()
{
    // コーナーの丸くなっている分をすべてオフセットさせるため
    float offset = 25/2;
    
    // ベース
    {
        float frameWidth = 2;
        
        baseSprite = GameSprite::init( "img/wide_use/wide_use_frame_base.png" );
        
        baseSprite->setPosition( x+frameWidth, y+frameWidth );
        baseSprite->setSize( width-(frameWidth*2), height-(frameWidth/2) );
        baseSprite->setAnchorPoint( ccp( 0, 1 ) );
        baseSprite->setOpacity( 128 );
        spriteList->addObject( baseSprite );
    }
    
    // 縦枠
    {
        // 左
        {
            GameSprite* sprite = GameSprite::init( "img/wide_use/wide_use_frame_line_left.png" );

            sprite->setHeight( height-(offset*2) );
            sprite->setPosition( x, y+offset );
            sprite->setAnchorPoint( ccp( 0, 1 ) );
            spriteList->addObject( sprite );
        }
        
        // 右
        {            
            GameSprite* sprite = GameSprite::init( "img/wide_use/wide_use_frame_line_right.png" );
            
            sprite->setHeight( height-(offset*2) );
            sprite->setPosition( x+width, y+offset );
            sprite->setAnchorPoint( ccp( 1, 1 ) );
            spriteList->addObject( sprite );
        }
    }
    
    // 横枠
    {
        // 上
        {
            GameSprite* sprite = GameSprite::init( "img/wide_use/wide_use_frame_line_top.png" );
            
            sprite->setWidth( width-(offset*2) );
            sprite->setPosition( x+offset, y );
            sprite->setAnchorPoint( ccp( 0, 1 ) );
            spriteList->addObject( sprite );
        }
        
        // 下
        {
            GameSprite* sprite = GameSprite::init( "img/wide_use/wide_use_frame_line_bottom.png" );
            
            sprite->setWidth( width-(offset*2) );
            sprite->setPosition( x+offset, y+height );
            sprite->setAnchorPoint( ccp( 0, 0 ) );
            spriteList->addObject( sprite );
        }
    }
    
    // コーナー
    {
        // 左
        {
            // 上
            {
                GameSprite* sprite = GameSprite::init( "img/wide_use/wide_use_frame_corner_lt.png" );
                
                sprite->setPosition( x, y );
                sprite->setAnchorPoint( ccp( 0, 1 ) );
                spriteList->addObject( sprite );
            }
            
            // 下
            {
                GameSprite* sprite = GameSprite::init( "img/wide_use/wide_use_frame_corner_lb.png" );
                
                sprite->setPosition( x, y+height );
                sprite->setAnchorPoint( ccp( 0, 0 ) );
                spriteList->addObject( sprite );
            }
        }
        
        // 右
        {
            // 上
            {
                GameSprite* sprite = GameSprite::init( "img/wide_use/wide_use_frame_corner_rt.png" );
                
                sprite->setPosition( x+width, y );
                sprite->setAnchorPoint( ccp( 1, 1 ) );
                spriteList->addObject( sprite );
            }
            
            // 下
            {
                GameSprite* sprite = GameSprite::init( "img/wide_use/wide_use_frame_corner_rb.png" );
                
                sprite->setPosition( x+width, y+height );
                sprite->setAnchorPoint( ccp( 1, 0 ) );
                spriteList->addObject( sprite );
            }
        }
    }
}