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; } } }
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; }
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; }
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()); }
int main() { GameSprite *s = new GameSprite(200, 100, 10, 10, "mario.jpg"); s->setId("Mario"); s->draw(); delete s; return 0; }
uint8_t Item::getMiniMapColor() const { GameSprite* spr = item_db[id].sprite; if(spr) { return spr->getMiniMapColor(); } return 0; }
/* * 描画処理。 */ void WideUseFrame::draw() { for( int i = 0; i < spriteList->count(); i++ ) { GameSprite* sprite = spriteList->getObjectAtIndex( i ); layerID->reEntry(sprite->getZOrder(), sprite); } }
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; }
/* * 表示設定。 */ void WideUseFrame::setIsVisible( bool value ) { for( int i = 0; i < spriteList->count(); i++ ) { GameSprite* sprite = spriteList->getObjectAtIndex( i ); sprite->setVisible( value ); } }
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; }
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; }
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; }
GameSprite* GameSprite::create() { GameSprite* pRet = new GameSprite(); if (pRet && pRet->init()) { pRet->autorelease(); } else { CC_SAFE_DELETE(pRet); } return pRet; }
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; }
GameSprite* GameSprite::createWithSpriteFrame(SpriteFrame *pSpriteFrame) { GameSprite* pRet = new GameSprite(); if (pRet && pRet->initWithSpriteFrame(pSpriteFrame)) { pRet->autorelease(); } else { CC_SAFE_DELETE(pRet); } return pRet; }
GameSprite* GameSprite::create(const char *pszFileName) { GameSprite* pRet = new GameSprite(); if (pRet && pRet->initWithFile(pszFileName)) { pRet->autorelease(); } else { CC_SAFE_DELETE(pRet); } return pRet; }
// 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; }
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; }
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; } }
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)); } } } } }
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; }
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; } }
/* * スプライト生成。 */ 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 ); } } } }