bool
MCFaceBox::init(const char *aFaceFilepath, const char *aBoxFilepath)
{
    
    do {
        CCImage *aFaceImage = new CCImage;
        CC_BREAK_IF(! aFaceImage);
        CCImage *aBoxImage = new CCImage;
        CC_BREAK_IF(! aBoxImage);
        CCTexture2D *aFaceTexture = new CCTexture2D;
        CC_BREAK_IF(! aFaceTexture);
        CCTexture2D *aBoxTexture = new CCTexture2D;
        CC_BREAK_IF(! aBoxTexture);
        
        CC_BREAK_IF(! aFaceImage->initWithImageFile(aFaceFilepath));
        CC_BREAK_IF(! aBoxImage->initWithImageFile(aBoxFilepath));
        
        CC_BREAK_IF(! aFaceTexture->initWithImage(aFaceImage));
        CC_BREAK_IF(! aBoxTexture->initWithImage(aBoxImage));
        
        return init(aFaceTexture, aBoxTexture);
    } while (0);
    
    return false;
}
Example #2
0
MapControl::MapControl( const RawTile& tile ): m_tBeginPos(CCPointZero)
{
	setTouchEnabled(true);
	m_bIsNew = true;
	CCSize size = CCDirector::sharedDirector()->getWinSize();
    m_pSprite = NULL;
	m_Map.initPhysicMap(size.width,size.height,tile,(void*)this);
	m_firstEnd.tv_sec = m_firstEnd.tv_usec = 0;
    
    CCImage* pImage = m_Map.getBgImage();
    CCTexture2D* pTexture = new CCTexture2D();
    pTexture->initWithImage(pImage);
    
    
    m_pSprite = CCSprite::createWithTexture(pTexture);
    m_pSprite->setPosition(ccp(size.width/2, size.height/2));
    float winw = size.width; //获取屏幕宽度
    float winh = size.height;//获取屏幕高度
    
    float spx = m_pSprite->getTextureRect().getMaxX();
    float spy = m_pSprite->getTextureRect().getMaxY();
    
    m_pSprite->setScaleX(winw/spx); //设置精灵宽度缩放比例
    m_pSprite->setScaleY(winh/spy);
    m_pSprite->retain();
    
    m_pControlLayer = NULL;
    m_bMutiTouch = false;
    m_fMutiDistance = 0.0;
    m_offsetX = m_offsetY = 0.0;
    m_nTouches = 0;
    m_dScale = 1.0;
}
Example #3
0
ToyBrick* ToyLayer::CreateBrick_Circle()
{
		int num = CommonHelper::GetRandomNum(1, 30);

		//image && texture
		char path[255];
		sprintf(path, "Images/ToyBrick/Circle/%d.png", num);

		CCImage *img = new CCImage();
		img->autorelease();
		if (!img->initWithImageFile(path, cocos2d::CCImage::kFmtPng))
		{
				return NULL;
		}

		CCTexture2D *texture = new CCTexture2D();
		texture->autorelease();
		if (!texture->initWithImage(img))
		{
				return NULL;
		}

		//
		ToyBrick *brick = ToyBrick::create();
		CCSize size = texture->getContentSize();
		brick->Init(texture, CCRectMake(0, 0, size.width, size.height));
		brick->SetAsCircle(64);

		return brick;
}
Example #4
0
int Bitmap::handler_method_create_sprite(int bitmap_instance ,void* image)
{
	Bitmap* bitmap = (Bitmap*)bitmap_instance;
	CCSprite* sp = NULL;
	CCImage* ccimage = (CCImage*)image;
	if (image)
	{
		CCTexture2D* texture = new CCTexture2D;
		texture->autorelease();
		texture->initWithImage(ccimage);
		sp = CCSprite::createWithTexture(texture);
		
		CCAssert(sp,"f**k! image file error!");

		bitmap->p->m_width = sp->getContentSize().width;
		bitmap->p->m_height = sp->getContentSize().height;
	}
	else
	{
		sp = CCSprite::create();
		sp->setContentSize(CCSizeMake(bitmap->p->m_width,bitmap->p->m_height));
	}
	//sp->getTexture()->setAliasTexParameters();
	sp->retain();
	bitmap->p->m_emuBitmap = sp;
	
	delete ccimage;
	return 0;
}
void ChatWidget::setRecHead(std::string *head)
{
    float bw = 70;
    float bh = 70;
    if(head == 0 || head->size() == 0)
        return;
    if(m_toLabel)
        m_toLabel->setVisible(false);
    if(m_toHead && m_toHead->getParent()){
        m_toHead->removeFromParentAndCleanup(true);
        m_toHead = 0;
    }
    CCImage *img = new CCImage;
    img->initWithImageData((void*)head->c_str(),head->size(),
                           CCImage::kFmtUnKnown);
    CCTexture2D *texture = new CCTexture2D;
    texture->initWithImage(img);
    delete img;
    m_toHead = CCSprite::create();
    m_toHead->initWithTexture(texture);
    CCSize headSize = m_toHead->getContentSize();
    m_toHead->setScaleX(60 / headSize.width);
    m_toHead->setScaleY(60 / headSize.height);
    m_toButton->CCNode::addChild(m_toHead);
    m_toHead->setAnchorPoint(ccp(0.5,0.5));
    m_toHead->setPosition(ccp(bw/2,bh/2));
}
Example #6
0
AnimatedCell::AnimatedCell(int cellX, int cellY, int spacing, const char* pngFileName) {
	this->setSpace(spacing);
	this->setPngFileName(pngFileName);

	animation_ = CCAnimation::create();
	CCImage* image = new CCImage();
	image->initWithImageFile(pngFileName);
	CCTexture2D* texture = new CCTexture2D();
	texture->initWithImage(image);

	oneWidth_ = texture->getPixelsWide() / spacing;
	oneHeight_ = texture->getPixelsHigh();

	for (int i=0; i<spacing; i++) {
		animation_->addSpriteFrameWithTexture(texture, 
			CCRectMake(i*oneWidth_, 0, oneWidth_, oneHeight_));
	}
	CCSpriteFrame* frm = ((CCAnimationFrame*)(animation_->getFrames()->objectAtIndex(0)))->getSpriteFrame();

	this->initWithSpriteFrame(frm);
	animation_->setDelayPerUnit(0.5f);

	animate_ = CCRepeatForever::create(CCAnimate::create(animation_));

	setCell(cellX, cellY);
}
Example #7
0
JNIEXPORT void JNICALL Java_game_mobile_infinity_FacebookManager_jniCallbackPicture(JNIEnv*  env, jobject thiz, jstring jid , jbyteArray  jimage)
{

	const char *id = env->GetStringUTFChars(  jid, 0);

	CCString* cfbID = CCString::createWithFormat("%s",id);

	int len  = env->GetArrayLength(jimage);
	char* byteData = (char*)malloc(len);
	env->GetByteArrayRegion(jimage,0,len,(jbyte*)byteData);


	CCImage* imf = new CCImage();
	imf->initWithImageData(byteData,len);
	imf->autorelease();

	CCTexture2D* pTexture = new CCTexture2D();
	pTexture->initWithImage(imf);
	pTexture->autorelease();

	CCSprite *sprit = CCSprite::createWithTexture(pTexture);
	Facebook_Manager::sharedInstance()->Callback_Picture(cfbID, sprit);


	env->ReleaseStringUTFChars(  jid, id);

}
ToyBrick* DancingBoneLayer::CreateArm()
{
	//image && texture
	char path[255];
	sprintf(path, "Images/DancingBone/arm.png");

	CCImage *img = new CCImage();
	img->autorelease();
	if (!img->initWithImageFile(path, CCImage::kFmtPng))
	{
		return NULL;
	}

	CCTexture2D *texture = new CCTexture2D();
	texture->autorelease();
	if (!texture->initWithImage(img))
	{
		return NULL;
	}

	//
	ToyBrick *brick = ToyBrick::create();
	CCSize size = texture->getContentSize();
	brick->Init(texture, CCRectMake(0, 0, size.width, size.height));

	//vector (24, 102)
	CCPointArray *vector = CCPointArray::create(4);
	vector->addControlPoint(ccp(-12, -50));
	vector->addControlPoint(ccp(12, -50));
	vector->addControlPoint(ccp(12, 50));
	vector->addControlPoint(ccp(-12, 50));
	brick->SetAsPolygon(vector);

	return brick;
}
Example #9
0
CCTexture2D* Util::getGrayTexture(const char* filename){
		typedef enum {  
			RED = 0,  
			GREEN = 1,  
			BLUE = 2,  
			ALPHA = 3  
		} PIXELS;  
		CCImage *image = new CCImage();
		image->initWithImageFile(filename);
		unsigned char* pixels = image->getData();
		int len = image->getDataLen();
		uint32_t *p = (uint32_t *)pixels;
		for(int i=0;i<len;i++){
			uint8_t *rgbaPixel = (uint8_t *) &p[i];
			//uint32_t gray = 0.3 * rgbaPixel[RED] + 0.59 * rgbaPixel[GREEN] + 0.11 * rgbaPixel[BLUE];
			uint32_t gray = 1.2*rgbaPixel[RED] + 1.0*rgbaPixel[GREEN] + 0.0*rgbaPixel[BLUE];
			// set the pixels to gray  
			rgbaPixel[RED] = gray;  
			rgbaPixel[GREEN] = gray;  
			rgbaPixel[BLUE] = gray;  
		} 

		CCTexture2D* texture = new CCTexture2D();  
		texture->autorelease();
		texture->initWithImage(image);
		image->release();

		return texture;
}
void AskAsFriendDialog::finish()
{
    LangDef *lang = ResourceMgr::getInstance()->getLangDef();

    BasButton *okButton = new BasButton;
    okButton->setButtonInfo(lang->getStringById(StringEnum::Ok).data(),"fonts/uifont24.fnt","default","buttonbg",
                            CCSizeMake(0,0));
    okButton->setClickCB(m_okListener,m_okFunc);

    this->addChild(okButton);
    okButton->setBottomMargin(m_edgeSize);
    okButton->setBottom("parent",uilib::Bottom);
    okButton->setHorizontal("parent",0.75);

    BasButton *rejectButton = new BasButton;
    rejectButton->setButtonInfo(lang->getStringById(StringEnum::Reject).data(),"fonts/uifont24.fnt","default","buttonbg",
                                CCSizeMake(0,0));
    rejectButton->setClickCB(m_rejectListener,m_rejectFunc);

    this->addChild(rejectButton);
    rejectButton->setBottomMargin(m_edgeSize);
    rejectButton->setBottom("parent",uilib::Bottom);
    rejectButton->setHorizontal("parent",0.25);
    BasWidget *headWidget;
    if(!m_askHead.empty()){
        CCImage *img = new CCImage;
        img->initWithImageData((void*)m_askHead.c_str(),m_askHead.size(),
                               CCImage::kFmtUnKnown);
        CCTexture2D *texture = new CCTexture2D;
        texture->initWithImage(img);
        delete img;
        CCSprite *sprite = CCSprite::create();
        sprite->initWithTexture(texture);
        headWidget = new BasNodeDelegateWidget(sprite);

        this->addChild(headWidget);
        headWidget->setHorizontal("parent",0.5);
        headWidget->setVertical("parent",0.3);
    }else{
        CCSprite *sprite = CCSprite::createWithSpriteFrameName("headdefault.png");
        headWidget = new BasNodeDelegateWidget(sprite);

        this->addChild(headWidget);
        headWidget->setHorizontal("parent",0.5);
        headWidget->setVertical("parent",0.3);
    }
    m_askWord.insert(0,"    ");
    TextScrollArea *area = new TextScrollArea;
    area->setTheme("","");
    area->setTextInfo(m_askWord,getSystemFont(),40,ccWHITE);
    this->addChild(area);
    area->setLeft("parent",uilib::Left);
    area->setRight("parent",uilib::Right);
    area->setLeftMargin(10);
    area->setRightMargin(10);
    area->setTop(headWidget->getName(),uilib::Bottom);
    area->setBottom(rejectButton->getName(),uilib::Top);
}
Example #11
0
void EaseSpriteDemo::onEnter()
{
	CCLayer::onEnter();

	// Example:
	// You can create a sprite using a Texture2D
	CCTexture2D* tex = new CCTexture2D();
	UIImage* pImage = new UIImage();
	
	if(pImage->initWithContentsOfFile(CCFileUtils::fullPathFromRelativePath(s_pPathGrossini)))
	{
		tex->initWithImage(pImage);
		m_grossini = CCSprite::spriteWithTexture(tex); 
		m_grossini->retain();

	}

	tex->release();
	delete pImage;
	
	// Example:
	// Or you can create an sprite using a filename. PNG and BMP files are supported. Probably TIFF too
	m_tamara = CCSprite::spriteWithFile(s_pPathSister1); m_tamara->retain();
	m_kathia = CCSprite::spriteWithFile(s_pPathSister2); m_kathia->retain();
	
	addChild( m_grossini, 3);
	addChild( m_kathia, 2);
	addChild( m_tamara, 1);

	CGSize s = CCDirector::sharedDirector()->getWinSize();

	m_grossini->setPosition( CGPointMake(60, 50) );
	m_kathia->setPosition( CGPointMake(60, 150) );
	m_tamara->setPosition( CGPointMake(60, 250) );

	CCLabelTTF* label = CCLabelTTF::labelWithString(title().c_str(), "Arial", 32);
	addChild(label);
	label->setPosition( CGPointMake(s.width/2, s.height-50) );

	CCMenuItemImage *item1 = CCMenuItemImage::itemFromNormalImage(s_pPathB1, s_pPathB2, this, menu_selector(EaseSpriteDemo::backCallback) );
	CCMenuItemImage *item2 = CCMenuItemImage::itemFromNormalImage(s_pPathR1, s_pPathR2, this, menu_selector(EaseSpriteDemo::restartCallback) );
	CCMenuItemImage *item3 = CCMenuItemImage::itemFromNormalImage(s_pPathF1, s_pPathF2, this, menu_selector(EaseSpriteDemo::nextCallback) );

	CCMenu *menu = CCMenu::menuWithItems(item1, item2, item3, NULL);

	menu->setPosition( CGPointZero );
	item1->setPosition( CGPointMake( s.width/2 - 100,30) );
	item2->setPosition( CGPointMake( s.width/2, 30) );
	item3->setPosition( CGPointMake( s.width/2 + 100,30) );
	
	addChild(menu, 1);	
}
Example #12
0
CCSprite* XieziLayer::generateSnapshot(){
    
    CCSize mainSize=S_RM->getSizeWithName("xiezi_webview_size");
    CCPoint mainPoint=S_RM->getPositionWithName("xiezi_main");
    
    CCSprite* snapshot=(CCSprite*)this->getChildByTag(kTagSnapshot);
    
    const char* data=m_webView->callWebWithJs("getCanvasBase64Data()");
    int length=(int)strlen(data);
    
    if(length>0){
        
        string pngData=StringUtils::base64Decode(data, (int)strlen(data));
        CCImage* img=new CCImage();
        img->autorelease();
        img->initWithImageData(const_cast<char*>(pngData.c_str()), (int)pngData.length());
        CCTexture2D *texture = new CCTexture2D();
        texture->initWithImage(img);
        texture->autorelease();
        
        if (snapshot) {
            snapshot->setTexture(texture);
        }else{
            snapshot= CCSprite::createWithTexture(texture);
            snapshot->setPosition(mainPoint);
            snapshot->setTag(kTagSnapshot);
            
            if (mainSize.width!=snapshot->getContentSize().width) {
                snapshot->setScale(mainSize.width/snapshot->getContentSize().width);
            }
            this->addChild(snapshot);
        }
        
    }else{
        if (!snapshot) {
            snapshot=CCSprite::createWithSpriteFrameName("tianzige.png");
            snapshot->setPosition(mainPoint);
            
            CCLabelTTF* label=CCLabelTTF::create(m_hanzi->getzi().c_str(), "KaiTi.ttf", 400.0);
            label->setColor(ccc3(100,53,14));
            label->setPosition(ccp(mainSize.width/2, mainSize.height/2));
            snapshot->addChild(label);
            
            snapshot->setTag(kTagSnapshot);
            
            this->addChild(snapshot);
        }
    }
    
    return snapshot;
}
Example #13
0
void CMainCityUI::imageLoadSuccessCallBack(string sTag, vector<char>* pBuffer)
{
	CCImage* img = new CCImage;
	img->initWithImageData((unsigned char*)pBuffer->data(), pBuffer->size());
	CCTexture2D* texture = new CCTexture2D();
    texture->initWithImage(img);
	CLayout* headPart = (CLayout*)m_ui->findWidgetById("head_part");

	CCSprite* head = (CCSprite*)headPart->getChildByTag(15);
//	head->removeFromParent();
	//head->setTexture(texture);

	string path = HttpLoadImage::getInstance()->getStoragePath("download/fbImg",sTag.c_str())+".jpg";
	string buff(pBuffer->begin(), pBuffer->end());
	CCLOG("path: %s", path.c_str());
	FILE *fp = fopen(path.c_str(), "wb+");
	fwrite(buff.c_str(), 1, pBuffer->size(),  fp);
	fclose(fp);

//	CCSprite *headbg = (CCSprite*)(m_ui->findWidgetById("headbg"));
// 	CCClippingNode *clip = CCClippingNode::create();	
// 	CCSprite *fbimg = CCSprite::createWithTexture(texture);
// 	clip->addChild(fbimg);
// 
// 	clip->setPosition(headbg->getPosition());
// 	clip->setContentSize(CCSizeMake(110,110));
// 
// 	static ccColor4F red ={1,0,1};
// 	float radius = 106;
// 	const int nCount = 200;
// 	const float angle = 2.0f* (float)M_PI/nCount;
// 	CCPoint circle[nCount];
// 	for(int i=0; i<nCount; i++)
// 	{
// 		float radian = i*angle;
// 		circle[i].x = radius * cosf(radian);
// 		circle[i].y = radius * sinf(radian); 
// 	}
// 	CCDrawNode *stencil= CCDrawNode::create();
// 	stencil->drawPolygon(circle,nCount,red,0,red);
// 	clip->setStencil(stencil);	
// 	m_ui->addChild(clip);
	CCSprite *headBg = (CCSprite *)(headPart->findWidgetById("headbg"));
	CCSprite *headSpr = MakeFaceBookHeadToCircle(CCSprite::createWithTexture(texture));
	headSpr->setTag(15);
	headSpr->setPosition(headBg->getPosition());
	headPart->addChild(headSpr);
	head->removeFromParent();
	img->release();
}
bool MainMenuBtnLayer::init()
{
    bool bRet = false;
    do
    {
        // Super init first
        CC_BREAK_IF(!CCLayer::init());

        CCSize size = CCDirector::sharedDirector()->getWinSize();


        CCImage menufile;
        menufile.initWithImageFile("Buttons.png");
        CCTexture2D *menuTexture = new CCTexture2D();
        menuTexture->initWithImage(&menufile);

        CCMenuItemSprite *startgameitem = CCMenuItemSprite::create(CCSprite::createWithTexture(menuTexture, CCRectMake(6, 2, 166, 28)),
                                          CCSprite::createWithTexture(menuTexture, CCRectMake(6, 35, 166, 28)),
                                          CCSprite::createWithTexture(menuTexture, CCRectMake(6, 70, 166, 28)),
                                          this, menu_selector (MainMenuBtnLayer::menucallback));
        startgameitem->setTag(MAINMENU_ID_START);
        CCMenuItemSprite *settings = CCMenuItemSprite::create(CCSprite::createWithTexture(menuTexture, CCRectMake(188, 2, 166, 28)),
                                     CCSprite::createWithTexture(menuTexture, CCRectMake(188, 35, 166, 28)),
                                     CCSprite::createWithTexture(menuTexture, CCRectMake(188, 70, 166, 28)),
                                     this, menu_selector (MainMenuBtnLayer::menucallback));
        settings->setTag(MAINMENU_ID_SETTING);
        CCMenuItemSprite *about = CCMenuItemSprite::create(CCSprite::createWithTexture(menuTexture, CCRectMake(370, 2, 166, 28)),
                                  CCSprite::createWithTexture(menuTexture, CCRectMake(370, 35, 166, 28)),
                                  CCSprite::createWithTexture(menuTexture, CCRectMake(370, 70, 166, 28)),
                                  this, menu_selector (MainMenuBtnLayer::menucallback));
        about->setTag(MAINMENU_ID_ABOUT);
        CCMenuItemSprite *quit = CCMenuItemSprite::create(CCSprite::createWithTexture(menuTexture, CCRectMake(552, 2, 166, 28)),
                                 CCSprite::createWithTexture(menuTexture, CCRectMake(552, 35, 166, 28)),
                                 CCSprite::createWithTexture(menuTexture, CCRectMake(552, 70, 166, 28)),
                                 this, menu_selector (MainMenuBtnLayer::menucallback));
        quit->setTag(MAINMENU_ID_QUIT);

        CCMenu *menu = CCMenu::create(startgameitem, settings, about, quit, NULL);
        menu->alignItemsVerticallyWithPadding(10);
        menu->setPosition(ccp(size.width * 0.5f, size.height * 0.5f));
        this->addChild(menu);

        bRet = true;

    } while(0);

    return bRet;
}
void HelloWorld::updateSquare(float tm){
	for(int i = 0; i < 64; i++){
		CCSprite *sprite = diamonds[i];

		char str[20];
		CCImage *image = new CCImage();

		int color = getDiamond(str);
		base[i] = color;
		image->initWithImageFile(str, CCImage::kFmtJpg);

		CCTexture2D* texture = new CCTexture2D();
		texture->initWithImage(image);
		sprite->setTexture(texture);
	}
}
void HelloWorld::ccTouchEnded(cocos2d::CCTouch *pTouches, cocos2d::CCEvent *pEvent){
	if(m_score<0){
		return;
	}
	CCPoint  point = pTouches->getLocation();
	char pos[100];

	int y_ = (int)((point.y-diamondRect.origin.y)/dh);
	int y = 7-y_;
	int x  = (int)((point.x-diamondRect.origin.x)/dw);
	int result[64] = {0};
	if(y>=8||x>=8){
		return;
	}
	int count = handlerTouchInSquare(y*8+x, result);
	if(count < 3)
		return;

	for(int i = 0; i < count; i++){
		CCSprite *sprite = diamonds[result[i]];
		CCRotateBy *rotateAct = new CCRotateBy();
		rotateAct->initWithDuration(0.2f, 90.0f);
		sprite->runAction(rotateAct);
		
		char str[20];
		CCImage *image = new CCImage();
		
		int color = getDiamond(str);
		base[result[i]] = color;
		image->initWithImageFile(str, CCImage::kFmtJpg);

		CCTexture2D* texture = new CCTexture2D();
		texture->initWithImage(image);
		sprite->setTexture(texture);
	}
	//delete rotateAct;
	m_score += 5*count;
	char str[20];
	sprintf(str, "Score: %d", m_score);
	pLabelScore->setString(str);
	//fflush(file);
}
Example #17
0
bool DefaultLayer::init()
{
    if (!CCLayer::init())
        return false;

    // ask director the window size
    CCSize window_size = CCDirector::sharedDirector()->getWinSize();

	CCImage* temp_img = new CCImage();
	temp_img->initWithImageFile("atlas.png");

	CCTexture2D* texture = new CCTexture2D();
	texture->initWithImage(temp_img);
	texture->autorelease();
	delete temp_img;

	// this will have a capacity for 4 sprites instead of the default which is 20
	CCSpriteBatchNode* batch = CCSpriteBatchNode::createWithTexture(texture, 4);

	// Since I don't have HD versions of the image but I've set enableRetinaDisplay to true, the framework
	// is using a scaling factor of 2 to divide the image by. This is because it thinks the image was from the low resolution
	// version, which would mean that running in retina (i.e. 2x larger screen) should make the image look half as big. By calling
	// getContentSize over getContentSizeInPixels I'm getting the size of the image as it is represented for the appropriate
	// draw mode. If I actually had HD art, I believe I could just call getContentSizeInPixels and that they'd both be the same.
	CCSize tex_size(texture->getContentSize());

	for (int i = 0; i < 4; i++)
	{
		CCSprite* sprite = CCSprite::create();

		// The texture rect coords are luckily normal and just like a Photoshop canvas
		CCRect r((i % 2) == 0 ? 0 : tex_size.width / 2.0f, (i / 2) == 0 ? 0 : tex_size.height / 2.0f, tex_size.width/2.0f, tex_size.height/2.0f);

		sprite->initWithTexture(texture, r);
		sprite->setPosition(ccp(sprite->getContentSize().width / 2.0f + (i % 2)*200, sprite->getContentSize().height + (i/2)*150));
		batch->addChild(sprite);
	}

	addChild(batch);

    return true;
}
//-------------------------------------------------------------------------
bool FKCW_UI_ProgressIndicator::initWithMessage(const string& message)
{
	if(!CCLayerColor::initWithColor(m_tagDimColor)) 
	{
		return false;
	}

	// 保存消息
	m_strMessage = message;

	// 创建Label
	m_pMsgLabel = CCLabelTTF::create(m_strMessage.c_str(),
		"Helvetica",
		28 / CC_CONTENT_SCALE_FACTOR());

	// 提示器
	CCImage* image = new CCImage();
	image->initWithImageData((void*)s_SpinnerPng, 1043);
	CCTexture2D* tex = new CCTexture2D();
	tex->initWithImage(image);
	m_pIndicator = CCSprite::createWithTexture(tex);
	CC_SAFE_RETAIN(m_pIndicator);
	image->release();
	tex->release();

	_RelayOut();
	addChild(m_pIndicator);
	addChild(m_pMsgLabel);

	// 开启事件
	setTouchEnabled(true);
	setTouchMode(kCCTouchesOneByOne);
	setTouchPriority(-MAX_INT);
	setKeypadEnabled(true);

	// 开启帧更新
	scheduleUpdate();
	
	return true;
}
bool CCProgressHUD::initWithMessage(const string& message) {
    if(!CCLayerColor::initWithColor(m_dimColor)) {
        return false;
    }
    
    // set message
    m_message = message;
    
    // create label
    m_msgLabel = CCLabelTTF::create(m_message.c_str(),
                                        "Helvetica",
                                        28 / CC_CONTENT_SCALE_FACTOR());
    
    // indicator
    CCImage* image = new CCImage();
    image->initWithImageData((void*)s_spinner_png, 1043);
    CCTexture2D* tex = new CCTexture2D();
    tex->initWithImage(image);
    m_indicator = CCSprite::createWithTexture(tex);
    CC_SAFE_RETAIN(m_indicator);
    CC_SAFE_RELEASE(image);
    CC_SAFE_RELEASE(tex);
    
    // layout
    relayout();
    addChild(m_indicator);
    addChild(m_msgLabel);
    
    // enable event
    setTouchEnabled(true);
    setTouchMode(kCCTouchesOneByOne);
    setTouchPriority(-MAX_INT);
    setKeypadEnabled(true);
    
    // schedule update
    scheduleUpdate();
    
    return true;
}
Example #20
0
ToyBrick* ToyLayer::CreateBrick_Rectangle()
{
		int num = CommonHelper::GetRandomNum(1, 20);

		//image && texture
		char path[255];
		sprintf(path, "Images/ToyBrick/Rectangle/%d.png", num);

		CCImage *img = new CCImage();
		img->autorelease();
		if (!img->initWithImageFile(path, cocos2d::CCImage::kFmtPng))
		{
				return NULL;
		}

		CCTexture2D *texture = new CCTexture2D();
		texture->autorelease();
		if (!texture->initWithImage(img))
		{
				return NULL;
		}


		//
		ToyBrick *brick = ToyBrick::create();
		CCSize size = texture->getContentSize();
		brick->Init(texture, CCRectMake(0, 0, size.width, size.height));
		
		//vector
		CCPointArray *vector = CCPointArray::create(4);
		vector->addControlPoint(ccp(-52, -52));
		vector->addControlPoint(ccp(52, -52));
		vector->addControlPoint(ccp(52, 52));
		vector->addControlPoint(ccp(-52, 52));
		brick->SetAsPolygon(vector);

		return brick;
}
void RequestTopaz::onHttpRequestCompletedNoEncrypt(CCNode *sender, void *data)
{
    CCHttpResponse* res = (CCHttpResponse*) data;
    char dumpData[110*110*2];
    
    // 프로필 사진 받아오기 실패
    if (!res || !res->isSucceed())
    {
        //CCLog("res failed. error buffer: %s", res->getErrorBuffer());
        return;
    }
    
    // dump data
    std::vector<char> *buffer = res->getResponseData();
    for (unsigned int i = 0 ; i < buffer->size() ; i++)
        dumpData[i] = (*buffer)[i];
    dumpData[buffer->size()] = NULL;
    
    // make texture2D
    CCImage* img = new CCImage;
    img->initWithImageData(dumpData, (int)buffer->size());
    CCTexture2D* texture = new CCTexture2D();
    texture->initWithImage(img);
    
    // set CCSprite (profile 모음 리스트에 갱신)
    int numOfList = friendList.size();
    int index = atoi(res->getHttpRequest()->getTag());
    
    ProfileSprite* psp = ProfileSprite::GetObj(friendList[index]->GetImageUrl());
    psp->SetSprite(texture);
    psp->SetLoadingDone(true);
    
    // 화면에 보이는 스프라이트 교체
    if (spriteClassScroll == NULL)
        return;
    spriteClassScroll->ChangeSprite(-888*(numOfList-index), psp->GetProfile());
    ((CCSprite*)spriteClassScroll->FindSpriteByTag(-777*(numOfList-index)))->setOpacity(255);
}
Example #22
0
/* @todo CGImageRef
-(CCTexture2D*) addCGImage: (CGImageRef) imageref forKey: (string & )key
{
	CCAssert(imageref != nil, @"TextureCache: image MUST not be nill");

	CCTexture2D * tex = nil;

	// If key is nil, then create a new texture each time
	if( key && (tex=[textures objectForKey: key] ) ) {
		return tex;
	}

	// prevents overloading the autorelease pool
	UIImage *image = [[UIImage alloc] initWithCGImage:imageref];
	tex = [[CCTexture2D alloc] initWithImage: image];
	[image release];

	if(tex && key)
		[textures setObject: tex forKey:key];
	else
		CCLOG(@"cocos2d: Couldn't add CGImage in CCTextureCache");

	return [tex autorelease];
}*/
CCTexture2D* CCTextureCache::addUIImage(CCImage *image, const char *key)
{
	CCAssert(image != NULL && key != NULL, "TextureCache: image MUST not be nill");

	CCTexture2D * texture = NULL;
	std::string forKey = key;

	m_pDictLock->lock();

	do 
	{
		// If key is nil, then create a new texture each time
		if(texture = m_pTextures->objectForKey(forKey))
		{
			break;
		}

		// prevents overloading the autorelease pool
		texture = new CCTexture2D();
		texture->initWithImage(image);

		if(texture)
		{
			m_pTextures->setObject(texture, forKey);
			texture->autorelease();
		}
		else
		{
			CCLOG("cocos2d: Couldn't add UIImage in CCTextureCache");
		}

	} while (0);
	
	m_pDictLock->unlock();

	return texture;
}
bool MainMenuCtrlLayer::init()
{
    bool ret = false;
    
    do {
        CC_BREAK_IF(!CCLayer::init());
        
        CCSize winSize = CCDirector::sharedDirector()->getWinSize();
        
        // 菜单
        // 菜单纹理
        CCImage menuImage;
        menuImage.initWithImageFile("menu.png");
        CCTexture2D *menuTexture = new CCTexture2D();
        menuTexture->initWithImage(&menuImage);
        
        // 菜单选项
        CCMenuItemSprite *newGameMenuItem = CCMenuItemSprite::itemFromNormalSprite(CCSprite::spriteWithTexture(menuTexture, CCRectMake(0, 0, 126, 33)), CCSprite::spriteWithTexture(menuTexture, CCRectMake(0, 33, 126, 33)), CCSprite::spriteWithTexture(menuTexture, CCRectMake(0, 33 * 2, 126, 33)), this, menu_selector(MainMenuCtrlLayer::mainMenuCallback));
        newGameMenuItem->setTag(MAINMENU_ID_NEW_GAME);
        
        CCMenuItemSprite *settingMenuItem = CCMenuItemSprite::itemFromNormalSprite(CCSprite::spriteWithTexture(menuTexture, CCRectMake(126, 0, 126, 33)), CCSprite::spriteWithTexture(menuTexture, CCRectMake(126, 33, 126, 33)), CCSprite::spriteWithTexture(menuTexture, CCRectMake(126, 33 * 2, 126, 33)), this, menu_selector(MainMenuCtrlLayer::mainMenuCallback));
        settingMenuItem->setTag(MAINMENU_ID_SETTING);
        
        CCMenuItemSprite *aboutMenuItem = CCMenuItemSprite::itemFromNormalSprite(CCSprite::spriteWithTexture(menuTexture, CCRectMake(252, 0, 126, 33)), CCSprite::spriteWithTexture(menuTexture, CCRectMake(252, 33, 126, 33)), CCSprite::spriteWithTexture(menuTexture, CCRectMake(252, 33 * 2, 126, 33)), this, menu_selector(MainMenuCtrlLayer::mainMenuCallback));
        aboutMenuItem->setTag(MAINMENU_ID_ABOUT);
        
        CCMenu *mainMenu = CCMenu::menuWithItems(newGameMenuItem, settingMenuItem, aboutMenuItem, NULL);
        mainMenu->alignItemsVerticallyWithPadding(10);
        mainMenu->setPosition(ccp(winSize.width / 2, winSize.height / 2 - 80));
        this->addChild(mainMenu);
        
        ret = true;
    } while (0);
    
    return ret;
}
Example #24
0
CCTexture2D* Util::getGrayTexture(CCTexture2D* texture){
		typedef enum {  
			RED = 0,  
			GREEN = 1,  
			BLUE = 2,  
			ALPHA = 3  
		} PIXELS;  
		CCSize textSize = texture->getContentSize();
		CCSprite *temporarySprite = CCSprite::createWithTexture(texture);
		//就这么一小句搞了我半天了,不过能出来也值了
		temporarySprite->setAnchorPoint(ccp(0,0));
		CCRenderTexture *rt = CCRenderTexture::create(textSize.width, textSize.height);
		rt->begin();
		temporarySprite->visit();
		rt->end();
		
		CCImage *image = rt->newCCImage();
		unsigned char* pixels = image->getData();
		int len = image->getDataLen();
		uint32_t *p = (uint32_t *)pixels;
		for(int i=0;i<len;i++){
			uint8_t *rgbaPixel = (uint8_t *) &p[i];
			//uint32_t gray = 0.3 * rgbaPixel[RED] + 0.59 * rgbaPixel[GREEN] + 0.11 * rgbaPixel[BLUE];
			uint32_t gray = 1.2*rgbaPixel[RED] + 1.0*rgbaPixel[GREEN] + 0.0*rgbaPixel[BLUE];
			// set the pixels to gray  
			rgbaPixel[RED] = gray;  
			rgbaPixel[GREEN] = gray;  
			rgbaPixel[BLUE] = gray;  
		}
		CCTexture2D* newtexture = new CCTexture2D();  
		newtexture->autorelease();
		newtexture->initWithImage(image);

		image->release();
		return newtexture;
}
void HelloWorld::update(float dt)
{
	bool bComputeAgain = false;

	if (m_bSpeedUp)
		m_fElapsedTime = 1.0;
	else
		m_fElapsedTime += dt * 0.5;
	//m_fScale = pow(2.0f, m_fElapsedTime);

	if (m_fElapsedTime >= 1.0)
	//if (m_fScale >= 2.0)
	{
		//m_fScale /= 2.0;
		//m_fElapsedTime = 0;
		m_fElapsedTime = fmod(m_fElapsedTime, 1.0f);
		bComputeAgain = true;
	}

	//static int off = 0;

	// RGBA raw data 세팅함.
	/*
	float c1,c2,c3,c4,c5,c6,v;
	int indexColor;
	int offset = 0;

    c1=(float)(rand()%5+1);
    c2=(float)(rand()%5+1);
    c3=(float)(rand()%5+1);
    c4=(float)(rand()%10+1);
    c5=(float)(rand()%512+1);
    c6=(float)(rand()%512+1);

	for (int i=0; i<IMAGE_HEIGHT; i++)
	{
		for (int j=0; j<IMAGE_WIDTH; j++)
	    {
			v = cos((float)(j-256+c5)/(cos((float)i/c1)+c3))+
			  cos((float)(j)*(float)(i/c2)+c6)+
			  cos((float)(j/c3)*(float)(i/c4)+c5);

			// 최종 결과물 = 높이값
			indexColor = v*10.5+64;
			if (indexColor<0)
				indexColor = 0;
			else if (indexColor>255)
				indexColor=255; //(indexColor-64)*8;

			m_pIndexm_pIndexBuffer[offset++] = indexColor;
		}
	}
	*/
	int i,   j;
	int x_q1, x_q3;
	int y_q1, y_q3;

	if (bComputeAgain)
	{
		// 각각 25%, 75% 지점의 좌표를 구한다.
		x_q1 = IMAGE_WIDTH/4;
		x_q3 = IMAGE_WIDTH - IMAGE_WIDTH/4 -1;
		y_q1 = IMAGE_HEIGHT/4;
		y_q3 = IMAGE_HEIGHT - IMAGE_HEIGHT/4 -1;


		for (i=0; i<IMAGE_HEIGHT/4; i++)
		{
			for (j=0; j<IMAGE_WIDTH/4; j++)
			{
				m_pIndexBuffer[i*2*IMAGE_WIDTH+j*2]  = GetBuffer((y_q1+i)*IMAGE_WIDTH+x_q1+j,-1,-1);
				m_pIndexBuffer[i*2*IMAGE_WIDTH+j*2+1]= GetBuffer((y_q1+i)*IMAGE_WIDTH+x_q1+j,0,-1);
				m_pIndexBuffer[i*2*IMAGE_WIDTH+IMAGE_WIDTH-j*2-1]=GetBuffer((y_q1+i)*IMAGE_WIDTH+x_q3-j,1,-1);
				m_pIndexBuffer[i*2*IMAGE_WIDTH+IMAGE_WIDTH-j*2-2]=GetBuffer((y_q1+i)*IMAGE_WIDTH+x_q3-j,0,-1);

				m_pIndexBuffer[(i*2+1)*IMAGE_WIDTH+j*2]=GetBuffer((y_q1+i)*IMAGE_WIDTH+x_q1+j,-1,0);
				m_pIndexBuffer[(i*2+1)*IMAGE_WIDTH+j*2+1]=GetBuffer((y_q1+i)*IMAGE_WIDTH+x_q1+j,0,0);
				m_pIndexBuffer[(i*2+2)*IMAGE_WIDTH-j*2-1]=GetBuffer((y_q1+i)*IMAGE_WIDTH+x_q3-j,1,0);
				m_pIndexBuffer[(i*2+2)*IMAGE_WIDTH-j*2-2]=GetBuffer((y_q1+i)*IMAGE_WIDTH+x_q3-j,0,0);

				m_pIndexBuffer[(IMAGE_HEIGHT-1-i*2)*IMAGE_WIDTH+j*2]=GetBuffer((y_q3-i)*IMAGE_WIDTH+x_q1+j,-1,1);
				m_pIndexBuffer[(IMAGE_HEIGHT-1-i*2)*IMAGE_WIDTH+j*2+1]=GetBuffer((y_q3-i)*IMAGE_WIDTH+x_q1+j,0,1);
				m_pIndexBuffer[(IMAGE_HEIGHT-1-i*2+1)*IMAGE_WIDTH-j*2-1]=GetBuffer((y_q3-i)*IMAGE_WIDTH+x_q3-j,1,1);
				m_pIndexBuffer[(IMAGE_HEIGHT-1-i*2+1)*IMAGE_WIDTH-j*2-2]=GetBuffer((y_q3-i)*IMAGE_WIDTH+x_q3-j,0,1);

				m_pIndexBuffer[(IMAGE_HEIGHT-2-i*2)*IMAGE_WIDTH+j*2]=GetBuffer((y_q3-i)*IMAGE_WIDTH+x_q1+j,-1,0);
				m_pIndexBuffer[(IMAGE_HEIGHT-2-i*2)*IMAGE_WIDTH+j*2+1]=GetBuffer((y_q3-i)*IMAGE_WIDTH+x_q1+j,0,0);
				m_pIndexBuffer[(IMAGE_HEIGHT-2-i*2+1)*IMAGE_WIDTH-j*2-1]=GetBuffer((y_q3-i)*IMAGE_WIDTH+x_q3-j,1,0);
				m_pIndexBuffer[(IMAGE_HEIGHT-2-i*2+1)*IMAGE_WIDTH-j*2-2]=GetBuffer((y_q3-i)*IMAGE_WIDTH+x_q3-j,0,0);
			}
		}

		// 가운데 4 pixel에 랜덤값을 더함.
		m_pIndexBuffer[(IMAGE_HEIGHT/2-1)*IMAGE_WIDTH+(IMAGE_WIDTH/2-1)]+=rand()%6-2;
		m_pIndexBuffer[(IMAGE_HEIGHT/2-1)*IMAGE_WIDTH+(IMAGE_WIDTH/2)]+=rand()%5-2;
		m_pIndexBuffer[(IMAGE_HEIGHT/2)*IMAGE_WIDTH+(IMAGE_WIDTH/2-1)]+=rand()%5-2;
		m_pIndexBuffer[(IMAGE_HEIGHT/2)*IMAGE_WIDTH+(IMAGE_WIDTH/2)]+=rand()%5-2;

		// 인덱스 -> 이미지 변환
		IndexToImage(m_pIndexBuffer, m_pImageBuffer, m_pPaletteBuffer, IMAGE_WIDTH*IMAGE_HEIGHT);
		//off++;

		m_pBitmap = new CCImage();
		m_pBitmap->initWithImageData(m_pImageBuffer, IMAGE_WIDTH*IMAGE_HEIGHT*4, CCImage::kFmtRawData, IMAGE_WIDTH, IMAGE_HEIGHT, 8);
		CCTexture2D *pTex = new CCTexture2D();
		pTex->initWithImage(m_pBitmap);
		//m_pScreen->removeFromParentAndCleanup(true);
		//m_pScreen = CCSprite::createWithTexture(pTex);
		m_pScreen->setTextureRect(CCRectMake(0, 0, IMAGE_WIDTH, IMAGE_HEIGHT));
		m_pScreen->setTexture(pTex);
		pTex->release();
		m_pBitmap->release();
	}

	/*
    // position the sprite on the center of the screen
    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

    m_pScreen->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));

    // add the sprite as a child to this layer
    this->addChild(m_pScreen, 0);
	*/

	// 스프라이트의 크기를 조정
	m_pScreen->setScale(1.0+m_fElapsedTime);
	//m_pScreen->setScale(1.0+m_fScale);
}
Example #26
0
CCTexture2D * CCTextureCache::addImage(const char * path)
{
	CCAssert(path != NULL, "TextureCache: fileimage MUST not be NULL");

	CCTexture2D * texture = NULL;
	// Split up directory and filename
	// MUTEX:
	// Needed since addImageAsync calls this method from a different thread
	
	m_pDictLock->lock();

	// remove possible -HD suffix to prevent caching the same image twice (issue #1040)
    std::string pathKey = path;
	CCFileUtils::ccRemoveHDSuffixFromFile(pathKey);

    pathKey = CCFileUtils::fullPathFromRelativePath(pathKey.c_str());
	texture = m_pTextures->objectForKey(pathKey);

    std::string fullpath = pathKey; // (CCFileUtils::fullPathFromRelativePath(path));
	if( ! texture ) 
	{
		std::string lowerCase(path);
		for (unsigned int i = 0; i < lowerCase.length(); ++i)
		{
			lowerCase[i] = tolower(lowerCase[i]);
		}
		// all images are handled by UIImage except PVR extension that is handled by our own handler
		// if ( [[path lowercaseString] hasSuffix:@".pvr"] )
		do 
		{
			if (std::string::npos != lowerCase.find(".pvr"))
			{
#ifdef _POWERVR_SUPPORT_
				texture = this->addPVRTCImage(fullpath.c_str());
#endif
			}
			// Issue #886: TEMPORARY FIX FOR TRANSPARENT JPEGS IN IOS4
			else if (std::string::npos != lowerCase.find(".jpg") || std::string::npos != lowerCase.find(".jpeg"))
			{
				CCImage image;
                CCFileData data(fullpath.c_str(), "rb");
                unsigned long nSize  = data.getSize();
                unsigned char* pBuffer = data.getBuffer();
                CC_BREAK_IF(! image.initWithImageData((void*)pBuffer, nSize, CCImage::kFmtJpg));

				texture = new CCTexture2D();
				texture->initWithImage(&image);

				if( texture )
				{
#if CC_ENABLE_CACHE_TEXTTURE_DATA
                    // cache the texture file name
                    VolatileTexture::addImageTexture(texture, fullpath.c_str(), CCImage::kFmtJpg);
#endif

					m_pTextures->setObject(texture, pathKey);
					texture->release();
				}
				else
				{
					CCLOG("cocos2d: Couldn't add image:%s in CCTextureCache", path);
				}
			}
			else
			{
				// prevents overloading the autorelease pool
				CCImage image;
                CCFileData data(fullpath.c_str(), "rb");
                unsigned long nSize  = data.getSize();
                unsigned char* pBuffer = data.getBuffer();
                CC_BREAK_IF(! image.initWithImageData((void*)pBuffer, nSize, CCImage::kFmtPng));

				texture = new CCTexture2D();
				texture->initWithImage(&image);

				if( texture )
				{
#if CC_ENABLE_CACHE_TEXTTURE_DATA
                    // cache the texture file name
                    VolatileTexture::addImageTexture(texture, fullpath.c_str(), CCImage::kFmtPng);
#endif

					m_pTextures->setObject(texture, pathKey);
					texture->release();
				}
				else
				{
					CCLOG("cocos2d: Couldn't add image:%s in CCTextureCache", path);
				}
			}

		} while (0);
	}
	m_pDictLock->unlock();
	return texture;
}
void HelloWorld::tick(ccTime dt)
{
	int velocityIterations = 8;
	int positionIterations = 1;
	world->Step(dt, velocityIterations, positionIterations);
	for (b2Body* b = world->GetBodyList(); b; b=b->GetNext())
	{
		if(b->GetUserData() != NULL)
		{
			CCSprite *myActor = (CCSprite *)b->GetUserData();
			myActor->setPosition(ccp(b->GetPosition().x * PTM_RATIO, b->GetPosition().y * PTM_RATIO));
			myActor->setRotation(-1 * CC_RADIANS_TO_DEGREES(b->GetAngle()));
		}
	}

	//Arm is being released
	if (releasingArm && bulletJoint)
	{
		if(armJoint->GetJointAngle() <= CC_DEGREES_TO_RADIANS(10))
		{
			releasingArm = false;
			world->DestroyJoint(bulletJoint);
			bulletJoint = NULL;
			this->schedule(schedule_selector(HelloWorld::resetBullet), 5.0f);
		}
	}

	//Bullet is moving
	if (bulletBody != nullptr && bulletJoint == NULL)
	{
		b2Vec2 position = bulletBody->GetPosition();
		CCPoint myPosition = this->getPosition();
		CCSize screenSize = CCDirector::sharedDirector()->getWinSize();

		if(position.x > screenSize.width / 2.0f / PTM_RATIO)
		{
			myPosition.x = -MIN(960.0f - screenSize.width, position.x * PTM_RATIO - screenSize.width / 2.0f);
			this->setPosition(myPosition);
		}
	}

	set<b2Body*>::iterator pos;
	for(pos = contactListener->contacts.begin(); pos != contactListener->contacts.end(); ++pos)
	{
		b2Body *body = *pos;
		CCNode *contactNode = (CCNode *) body->GetUserData();
		CCPoint position = contactNode->getPosition();
		this->removeChild(contactNode,true);
		world->DestroyBody(body);
		for(vector<b2Body*>::size_type i = 0; i >= targets->size(); i++)
		{
			try
			{
				if(targets->at(i) == body)
				{
					if(i == targets->size()-1)
					{
						printf("asdf");
					}
					targets->erase(targets->begin() + i);
				}
			}
			catch(exception e)
			{
				enemies->clear();
				break;
			}
		}
		for(vector<b2Body*>::size_type i = 0; i >= enemies->size(); i++)
		{
			try
			{
				if(enemies->at(i) == body)
				{
					if(i == enemies->size()-1)
					{
						printf("asdf");
					}
					enemies->erase(enemies->begin() + i);
				}
			}
			catch(exception e)
			{
				enemies->clear();
				break;
			}
		}

		CCParticleSun* explosion = new CCParticleSun();
		explosion->initWithTotalParticles(200);
		//explosion->setTotalParticles(200);
		explosion->setAutoRemoveOnFinish(true);
		explosion->setStartSize(10.0f);
		explosion->setSpeed(70.0f);
		explosion->setAnchorPoint(ccp(0.5f,0.5f));
		explosion->setPosition(position);
		explosion->setDuration(1.0f);
		CCTexture2D *tex = new CCTexture2D();
		CCImage *img = new CCImage();
		img->initWithImageFile("fire.png");
		tex->initWithImage(img);
		explosion->setTexture(tex);
		this->addChild(explosion, 11);
		explosion->release();
	}

	contactListener->contacts.clear();
}
Example #28
0
void MRemoteSprite::setLocalSrc(std::string srcLocalPath)
{
    srcLocalPath = MFileDownloader::getLocalFilePath(srcLocalPath);
 
    if (_sprite != nullptr)
    {
        _sprite->removeFromParent();
        _sprite = nullptr;
    }
    
    CCImage *image = nullptr;
    if (isSpecialSrc(srcLocalPath))
    {
        image = get_special_ccimage(srcLocalPath, getOpacitySrc(srcLocalPath));
    }
    else if (isSpecialSrcSmall(srcLocalPath))
    {
        image = get_special_ccimage(srcLocalPath, getOpacitySrcSmall(srcLocalPath));
    }
    else
    {
        image = get_ccimage(srcLocalPath);
    }
    
    if (image == nullptr)
    {
        M_DEBUG( "!!! get image failed, file >> " << srcLocalPath );
        this->dispatchEvent(EVENT_CARD_DOWNLOAD_OK);
        return ;
    }
    
    CCTexture2D *texture = nullptr;
    if (isGray())
    {
        texture = mlib::create_gray_texture(image);
    }
    else
    {
        texture = new CCTexture2D();
        texture->autorelease();
        
        if( texture &&
           texture->initWithImage(image) )
        {
        }
    }
    
    if (texture != nullptr)
    {
        if (sizeShow().equals(CCSizeZero))
        {
            _sprite = MSprite::createWithTexture(texture);
        }
        else
        {
            CCSize cSize = texture->getContentSize();
            _sprite = MSprite::createWithTexture(texture, CCRectMake((cSize.width - sizeShow().width) / 2, (cSize.height - sizeShow().height) / 2, sizeShow().width, sizeShow().height));
        }
    }
    
    if (_sprite != nullptr)
    {
        if (alignment() == RemoteSpritAlignmentBottom)
        {
            _sprite->setAnchorPoint(ccp(0.5, 0));
            _sprite->setPosition(ccp(getContentSize().width/2, 0));
        }
        else    // default alignment: center
        {
            _sprite->setAnchorPoint(ccp(0.5, 0.5));
            _sprite->setPosition(ccp(getContentSize().width/2, getContentSize().height/2));
        }
        
        _sprite->setColor(_color);
        _sprite->setOpacity(_opacity);
        this->addChild(_sprite);
        _srcPath = srcLocalPath;
    }
    _isGrayChange = false;
    this->dispatchEvent(EVENT_CARD_DOWNLOAD_OK);
}
Example #29
0
	void GameScene::start(float dt)
	{
		bool autoPlay = true;

		// apply loaded image
		for(auto it = mImageDictionary.begin(); it != mImageDictionary.end(); it++)
		{
			CCTexture2D* texture = new CCTexture2D();
			if(false == texture->initWithImage(it->second))
			{
				delete texture;
				continue;
			}

			mBgaDictionary[it->first] = texture;
		}

		for(auto it = mBmsDocument.channel().begin(); it != mBmsDocument.channel().end(); it++)
		{
			const std::string& channel = it->first;
			if(channel.find("01") != std::string::npos)
			{
				mChannelPlayers[channel] = new WaveChannelPlayer(it->second, mWavDictionary);
			}
			else if(channel.find("02") != std::string::npos)
			{
				//mChannelPlayers[channel] = new BarScaleChannelPlayer(it->second);
			}
			else if(channel.find("03") != std::string::npos)
			{
				mChannelPlayers[channel] = new BpmChannelPlayer(it->second);
			}
			else 
			{
				int iChannel = base36ToInt(channel.c_str());
				if(base36ToInt("10") < iChannel && iChannel < base36ToInt("70") && channel[1] != '0'/*exclude 20, 30, 40, ...*/)
				{
					int mappedKey = -1;
					for(int i=0; i<sizeof(keyChannelMap)/sizeof(keyChannelMap[0]); i++)
					{
						if(channel == keyChannelMap[i])
						{
							mappedKey = i;
							break;
						}
					}
					if(mappedKey < 0)
					{
						mChannelPlayers[channel] = new WaveChannelPlayer(it->second, mWavDictionary);
					}
					else
					{
						mChannelPlayers[channel] = new PlayChannelPlayer(it->second, mWavDictionary, Key::MappedKey(mappedKey), autoPlay);
					}
				}
				else if(
					base36ToInt(ChannelType::BGA_BASE) == iChannel ||
					base36ToInt(ChannelType::BGA_LAYER) == iChannel ||
					base36ToInt(ChannelType::BGA_LAYER2) == iChannel
					)
				{
					BgaChannelPlayer* bgaPlayer = new BgaChannelPlayer(it->second, mBgaDictionary, base36ToInt(ChannelType::BGA_POOR) == iChannel);
					mChannelPlayers[channel] = bgaPlayer;
					bgaPlayer->getSprite()->setContentSize(Size(640, 480));
					bgaPlayer->getSprite()->setPosition(Point(640, 480));
					addChild(bgaPlayer->getSprite());
				}
			}
		}

		{//panel
			// load skin
			CCTexture2D* skinTexture = CCTextureCache::sharedTextureCache()->addImage(Panel::SKIN_PATH);
			// no antialias
			skinTexture->setAliasTexParameters();

			CCNode* panel = CCNode::create();
			addChild(panel);

			Panel* frontPanel = new FrontPanel;
			Panel* backPanel = new BackPanel(mChannelPlayers);
			Panel* controlPanel = new ControlPanel;

			panel->addChild(backPanel);
			panel->addChild(frontPanel);
			panel->addChild(controlPanel);

			// fit panel to screen
			panel->setScale(CCDirector::sharedDirector()->getOpenGLView()->getDesignResolutionSize().height / 480);
		}

		mCurrentBpm = mBmsDocument.header().getBpm();

		//끝낼 마디 설정
		mEndPosition = 0;
		for(auto it = mBmsDocument.channel().begin(); it != mBmsDocument.channel().end(); it++)
		{
			if(it->second->endPosition() > mEndPosition)
				mEndPosition = it->second->endPosition();
		}
		mEndPosition += 1;

		// 시간 관련 초기화
		mLastBpmTime = mStartTime = currentTime();
		mLastBpmMeter = 0;
		origTime = mStartTime;// - 60000;
		origMadi = origPosit = 0;
		mBarScale = 1.0f;
		nowMadi = -1;

		// TODO 플레이노트 초기화(시간, 키 수 등)

		bMiss = false;
		bAuto = true;
		mScore = 0;
		mCombo = 0;

		// emit reset
		Event::GameConfigEvent configEvent(*mSong, 1, autoPlay, mStartTime);
		Director::getInstance()->getEventDispatcher()->dispatchCustomEvent(Event::GameConfigEvent::RESET, &configEvent);
	}
// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !CCLayer::init() )
    {
        return false;
    }
    
    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

	m_fElapsedTime = 0;
	m_fScale = 1.0;
	m_bSpeedUp = false;

    /////////////////////////////
    // 2. add a menu item with "X" image, which is clicked to quit the program
    //    you may modify it.

    // add a "close" icon to exit the progress. it's an autorelease object
    CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
                                        "CloseNormal.png",
                                        "CloseSelected.png",
                                        this,
                                        menu_selector(HelloWorld::menuCloseCallback));
    
	pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 ,
                                origin.y + pCloseItem->getContentSize().height/2));

    // create menu, it's an autorelease object
    CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
    pMenu->setPosition(CCPointZero);
    this->addChild(pMenu, 1);

    /////////////////////////////
    // 3. add your codes below...

    // add a label shows "Hello World"
    // create and initialize a label
    
    CCLabelTTF* pLabel = CCLabelTTF::create("Map Maker", "Arial", 24);
    
    // position the label on the center of the screen
    pLabel->setPosition(ccp(origin.x + visibleSize.width/2,
                            origin.y + visibleSize.height - pLabel->getContentSize().height));

    // add the label as a child to this layer
    this->addChild(pLabel, 1);


	// 버퍼 생성 및 팔레트 로딩
	m_pPaletteBuffer = new unsigned char[NUM_PALETTES * 4];				// RGBA * 256 인덱스 컬러
	m_pIndexBuffer	 = new unsigned char[IMAGE_WIDTH * IMAGE_HEIGHT];	// 인덱스 컬러로 된 이미지 버퍼
	m_pImageBuffer   = new unsigned char[IMAGE_WIDTH * IMAGE_HEIGHT*4];	// RGBA * 512 * 512

	/*
	// LAND.COL로 부터 팔레트 로딩
	std::string sFilePath = std::string("");
	sFilePath += CCFileUtils::sharedFileUtils()->fullPathForFilename("LAND.COL");

	FILE *pal_file = fopen(sFilePath.c_str(), "rb");
	if (pal_file)
    {
		fread(&head, sizeof(ColHeader), 1, pal_file);
		//if (head.num_cols > NUM_PALETTES)
		//	head.num_cols = NUM_PALETTES;
		fread(palette, 256*3, 1, pal_file);
		fclose(pal_file);

		// 팔레트 변환 RGB -> RGBA
		BuildPal(palette, m_pPaletteBuffer);
    }
	*/

	// PNG로부터 팔레트 로딩
	GetPaletteFromFile("mapheight.png", m_pPaletteBuffer, 256);

    // add generating "Map" screen"

	// 인덱스 컬러로 된 이미지에 랜덤 값을 채운다.
	for (int i = 0; i < IMAGE_WIDTH*IMAGE_HEIGHT; i++)
		m_pIndexBuffer[i] = rand()%NUM_PALETTES;
	// 인덱스 -> 이미지 변환
	IndexToImage(m_pIndexBuffer, m_pImageBuffer, m_pPaletteBuffer, IMAGE_WIDTH*IMAGE_HEIGHT);

	m_pBitmap = new CCImage();
	m_pBitmap->initWithImageData(m_pImageBuffer, IMAGE_WIDTH*IMAGE_HEIGHT*4, CCImage::kFmtRawData, IMAGE_WIDTH, IMAGE_HEIGHT, 8);
	CCTexture2D *pTex = new CCTexture2D();
	pTex->initWithImage(m_pBitmap);
    m_pScreen = CCSprite::createWithTexture(pTex);
	pTex->release();
	m_pBitmap->release();

    // position the sprite on the center of the screen
    m_pScreen->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
	m_pScreen->setScale( 2.0 );

    // add the sprite as a child to this layer
    this->addChild(m_pScreen, 0);

	setTouchEnabled(true);
	this->scheduleUpdate();
    
    return true;
}