Example #1
0
CCTexture2D* Sky::generateTexture()
{
    CCRenderTexture* pRenderTexture = CCRenderTexture::create(m_nTextureSize, m_nTextureSize);
    pRenderTexture->beginWithClear(0.55f, 0.80f, 0.86f, 1.0f);
    
    //gradient
    float alpha = 1.0f;
    ccColor4B color1 = {255, 255, 255, 0};
    ccColor4B color2 = {255, 255, 255, 255};
    CCLayerGradient* pLayerColor = CCLayerGradient::create(color1, color2);
    pLayerColor->setContentSize(CCSizeMake(m_nTextureSize, m_nTextureSize));
    pLayerColor->setPosition(ccp(0, 0));
    pLayerColor->visit();
    
    //noise
    CCSprite* pSprite = CCSprite::create("noise.png");
    pSprite->setPosition(ccp(m_nTextureSize / 2, m_nTextureSize / 2));
    pSprite->setBlendFunc((ccBlendFunc){GL_DST_COLOR, GL_ZERO});
    pSprite->setScale(m_nTextureSize / 512.0f);
    pSprite->visit();
    
    pRenderTexture->end();
    CCTexture2D* pTex = pRenderTexture->getSprite()->getTexture();
    ccTexParams params = {GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT};
    pTex->setTexParameters(&params);
    return pTex;

}
Example #2
0
	void TilemapRender::generateBackground()
	{
		ostringstream texturePath;
		texturePath<<"resources.pak/terrain/";
		texturePath<<m_SetID<<"-14.png";
		
		CCRenderTexture* rt = CCRenderTexture::create(64,64);
		rt->begin();
		CCSprite* tile1 = CCSprite::create(texturePath.str().c_str());
		tile1->setAnchorPoint(ccp(0,0));
		tile1->setPosition(ccp(0,0));
		tile1->visit();
		rt->end();

		CCTexture2D* texture = rt->getSprite()->getTexture();
		ccTexParams tp = {GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT};
		texture->setTexParameters(&tp);
		m_SpriteB->setTexture(texture);
		m_SpriteB->setTextureRect(CCRectMake(0, 0, m_MapWidth*64, m_MapHeight*64));
	}
Example #3
0
// on "init" you need to initialize your instance
bool LevelGameScene::init()
{
	if ( !CCLayerColor::initWithColor( ccc4(100, 100, 100, 255) ) )
	{
		return false;
	}

	CCSize vs = CCDirector::sharedDirector()->getVisibleSize();
	CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

	// Fondo con la textura de madera
	ccTexParams tp = { GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT};
	CCTexture2D* texture = CCTextureCache::sharedTextureCache()->addImage("purty_wood.png");
				 texture->setTexParameters(&tp);
	CCSprite* background = CCSprite::createWithTexture(texture, CCRectMake(0, 0, vs.width, vs.height));
			  background->setPosition( ccp( vs.width/2, vs.height/2 ) );

	this->addChild(background, 1);

	CCMenuItem* level1 = CCMenuItemImage::create("btn_level_1.png", "btn_level_1_h.png", this, menu_selector(LevelGameScene::level1Callback));
				level1->setPosition(ccp(vs.width/2 - 275, vs.height/2));

	CCMenuItem* level2 = CCMenuItemImage::create("btn_level_2.png", "btn_level_2_h.png", this, menu_selector(LevelGameScene::level2Callback));
				level2->setPosition(ccp(vs.width/2, vs.height/2));

	CCMenuItem* level3 = CCMenuItemImage::create("btn_level_3.png", "btn_level_3_h.png", this, menu_selector(LevelGameScene::level3Callback));
				level3->setPosition(ccp(vs.width/2 + 275, vs.height/2));

	CCMenu* menu = CCMenu::create(level1, level2, level3, NULL);
			menu->setPosition(ccp(0,0));

	this->addChild(menu, 5);

    this->setTouchEnabled(true);

    return true;
}
Example #4
0
// on "init" you need to initialize your instance
bool GameScene::init()
{
    if ( !CCLayer::init() )
    {
        return false;
    }

    // Variables de tamanyo
    CCSize vs = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

    // Layer con los botones al hacer pause
    _layerPause = CCLayerColor::create(ccc4(255,255,255,0));
    _layerPause->setContentSize(CCSizeMake(350, 100));
    _layerPause->ignoreAnchorPointForPosition(false);
    _layerPause->setAnchorPoint(ccp(0.5, 0.5));
    _layerPause->setPosition(ccp(vs.width/2, vs.height/2));
    _layerPause->retain();

    CCMenuItem* button_resume = CCMenuItemImage::create("btn_resume.png", "btn_resume_h.png", this, menu_selector(GameScene::menuResumeCallback));
    button_resume->setPosition(ccp(50, 50));
    CCMenuItem* button_restart = CCMenuItemImage::create("btn_restart.png", "btn_restart_h.png", this, menu_selector(GameScene::menuRestartCallback));
    button_restart->setPosition(ccp(175, 50));
    CCMenuItem* button_exit = CCMenuItemImage::create("btn_exit.png", "btn_exit_h.png", this, menu_selector(GameScene::menuExitCallback));
    button_exit->setPosition(ccp(300, 50));

    CCMenu* menu_pause = CCMenu::create(button_resume, button_restart, button_exit, NULL);
    menu_pause->setPosition(ccp(0,0));

    _layerPause->addChild(menu_pause);

    // Layer que se muestra al terminar la carrera
    _layerEnd = CCLayerColor::create(ccc4(0,0,0,0));
    _layerEnd->setContentSize(CCSizeMake(225, 225));
    _layerEnd->ignoreAnchorPointForPosition(false);
    _layerEnd->setAnchorPoint(ccp(0.5, 0.5));
    _layerEnd->setPosition(ccp(vs.width/2, vs.height/2));
    _layerEnd->retain();

    CCMenuItem* button_end_restart = CCMenuItemImage::create("btn_restart.png", "btn_restart_h.png", this, menu_selector(GameScene::menuRestartCallback));
    button_end_restart->setPosition(ccp(50, 50));
    CCMenuItem* button_end_exit = CCMenuItemImage::create("btn_exit.png", "btn_exit_h.png", this, menu_selector(GameScene::menuExitCallback));
    button_end_exit->setPosition(ccp(175, 50));

    CCMenu* menu_end = CCMenu::create(button_end_restart, button_end_exit, NULL);
    menu_end->setPosition(ccp(0,0));

    CCLayerColor* layerTime = CCLayerColor::create(ccc4(255,255,255,255));
    layerTime->setContentSize(CCSizeMake(225, 100));
    layerTime->ignoreAnchorPointForPosition(false);
    layerTime->setAnchorPoint(ccp(0.5, 0.5));
    layerTime->setPosition(ccp(112.5, 175));
    layerTime->retain();

    _labelTimeEnd = CCLabelTTF::create("Time:\n0:00:000", "fonts/FrancoisOne.ttf", 30, CCSizeMake(225, 100), kCCTextAlignmentCenter);
    _labelTimeEnd->setColor(ccc3(0,0,0));
    _labelTimeEnd->setPosition(ccp(112.5, 50));
    layerTime->addChild(_labelTimeEnd);

    _layerEnd->addChild(menu_end);
    _layerEnd->addChild(layerTime);


    // Boton de pause (menu)
    CCMenuItem* button_pause = CCMenuItemImage::create("btn_pause.png", "btn_pause_h.png", this, menu_selector(GameScene::menuPauseCallback));
    button_pause->setPosition(ccp(75, vs.height - 75));

    CCMenu* menu = CCMenu::create(button_pause, NULL);
    menu->setPosition(ccp(0,0));

    // Velocidad
    CCString* stringVel = CCString::createWithFormat("%d km/h", (int)_vel);
    _labelVel = CCLabelTTF::create(stringVel->getCString(), "fonts/FrancoisOne.ttf", 30, CCSizeMake(140, 50), kCCTextAlignmentCenter);
    _labelVel->setColor(ccc3(255,255,255));
    _labelVel->setPosition(ccp(vs.width - 72, 50));

    // Distancia
    CCString* stringDist = CCString::createWithFormat("%d m", (int)_dist);
    _labelDist = CCLabelTTF::create(stringDist->getCString(), "fonts/FrancoisOne.ttf", 30, CCSizeMake(140, 50), kCCTextAlignmentCenter);
    _labelDist->setColor(ccc3(255,255,255));
    _labelDist->setPosition(ccp(72, 50));

    // Tiempo
    int hs = _time/3600000;
    int mins = (_time%3600000)/60000;
    int ss = ((_time%3600000)%60000)/1000;
    int ms = ((_time%3600000)%60000)%1000;
    CCString* stringTime = CCString::createWithFormat("%d:%02d:%03d", mins, ss, ms);
    _labelTime = CCLabelTTF::create(stringTime->getCString(), "fonts/FrancoisOne.ttf", 30, CCSizeMake(140, 50), kCCTextAlignmentCenter);
    _labelTime->setColor(ccc3(255,255,255));
    _labelTime->setPosition(ccp(vs.width - 72, vs.height - 50));

    // Click to start
    _labelStart = CCLabelTTF::create("Click to Start", "fonts/FrancoisOne.ttf", 50, CCSizeMake(200, 200), kCCTextAlignmentCenter);
    _labelStart->setColor(ccc3(255,255,255));
    _labelStart->setPosition(ccp(vs.width/2, vs.height/2));
    _labelStart->retain();

    // Hierba
    ccTexParams tp = { GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT};
    CCTexture2D* texture = CCTextureCache::sharedTextureCache()->addImage("texture_grass2.jpg");
    texture->setTexParameters(&tp);
    _grass = CCSprite::createWithTexture(texture, CCRectMake(0, 0, vs.width, vs.height + 256));
    _grass->setPosition( ccp( vs.width/2, vs.height/2 + 128 ) );

    // Carretera
    texture = CCTextureCache::sharedTextureCache()->addImage("texture_road2.jpg");
    texture->setTexParameters(&tp);
    _road = CCSprite::createWithTexture(texture, CCRectMake(0, 0, 512, vs.height + 512));
    _road->setPosition( ccp( vs.width/2, vs.height/2 + 256 ) );

    // Pianos
    texture = CCTextureCache::sharedTextureCache()->addImage("piano.png");
    texture->setTexParameters(&tp);
    _piano1 = CCSprite::createWithTexture(texture, CCRectMake(0, 0, 64, vs.height + 64));
    _piano1->setPosition( ccp(vs.width * 0.15, vs.height / 2 + 32) );
    _piano2 = CCSprite::createWithTexture(texture, CCRectMake(0, 0, 64, vs.height + 64));
    _piano2->setPosition( ccp(vs.width * 0.85, vs.height / 2 + 32) );

    // Coche
    _car = CCSprite::create("car_above_blue.png");
    _car->setPosition(ccp(vs.width/2, 50));

    // Creamos los indicadores de curva
    _curvasI = new CCArray;
    _curvasD = new CCArray;

    for (int i = 1; i <= 5; i++) {
        CCString* str_curvaI = CCString::createWithFormat("curva_izq_%d.png", i);
        CCString* str_curvaD = CCString::createWithFormat("curva_der_%d.png", i);
        CCSprite* curvaI = CCSprite::create(str_curvaI->getCString());
        curvaI->setOpacity(0);
        curvaI->setPosition(ccp(vs.width/2, vs.height/4*3));
        CCSprite* curvaD = CCSprite::create(str_curvaD->getCString());
        curvaD->setOpacity(0);
        curvaD->setPosition(ccp(vs.width/2, vs.height/4*3));
        _curvasI->addObject(curvaI);
        _curvasD->addObject(curvaD);
        this->addChild(curvaI, 5);
        this->addChild(curvaD, 5);
    }

    // Anyadimos los elementos a la vista
    this->addChild(_grass, 1);
    this->addChild(_road, 2);
    this->addChild(_car, 3);
    this->addChild(menu, 5);
    this->addChild(_labelVel, 5);
    this->addChild(_labelDist, 5);
    this->addChild(_labelTime, 5);
    this->addChild(_labelStart, 5);


    // Inicializamos el vector de curvas segun el nivel
    if (_level == 1) {
        _curvas.push_back(Curva(250, 200, 2, false));
        _curvas.push_back(Curva(550, 200, 2, false));
        _curvas.push_back(Curva(1200, 100, 4, false));
        _curvas.push_back(Curva(1650, 200, 2, false));
        _curvas.push_back(Curva(1950, 200, 2, false));
        _curvas.push_back(Curva(2500, 200, 2, false));
        _curvas.push_back(Curva(2800, 200, 2, false));
        _mCircuito = 3000;

    } else if (_level == 2) {
        _curvas.push_back(Curva(100, 150, 2, false));
        _curvas.push_back(Curva(350, 150, 2, false));
        _curvas.push_back(Curva(700, 250, 1, false));
        _curvas.push_back(Curva(1150, 150, 3, false));
        _curvas.push_back(Curva(1500, 100, 4, false));
        _curvas.push_back(Curva(1800, 100, 4, false));
        _curvas.push_back(Curva(2000, 200, 2, true));
        _curvas.push_back(Curva(2300, 50, 5, true));
        _curvas.push_back(Curva(2750, 150, 2, true));
        _curvas.push_back(Curva(3000, 50, 4, true));
        _curvas.push_back(Curva(3100, 100, 2, false));
        _curvas.push_back(Curva(3300, 100, 2, false));
        _curvas.push_back(Curva(3500, 100, 4, false));
        _curvas.push_back(Curva(3800, 250, 2, false));
        _curvas.push_back(Curva(4250, 250, 1, false));
        _curvas.push_back(Curva(4700, 150, 3, false));
        _mCircuito = 5350;

    } else { // _level == 3
        _curvas.push_back(Curva(100, 50, 2, true));
        _curvas.push_back(Curva(250, 50, 2, false));
        _curvas.push_back(Curva(400, 100, 4, false));
        _curvas.push_back(Curva(600, 100, 2, false));
        _curvas.push_back(Curva(800, 50, 4, true));
        _curvas.push_back(Curva(950, 50, 4, true));
        _curvas.push_back(Curva(1100, 100, 2, false));
        _curvas.push_back(Curva(1300, 50, 4, true));
        _curvas.push_back(Curva(1450, 50, 4, true));
        _curvas.push_back(Curva(1600, 100, 4, false));
        _curvas.push_back(Curva(1900, 100, 2, false));
        _curvas.push_back(Curva(2100, 50, 5, true));
        _curvas.push_back(Curva(2450, 100, 2, true));
        _curvas.push_back(Curva(2650, 50, 5, false));
        _curvas.push_back(Curva(2900, 100, 4, false));
        _curvas.push_back(Curva(3200, 150, 2, true));
        _curvas.push_back(Curva(3450, 100, 4, true));
        _curvas.push_back(Curva(3650, 50, 4, true));
        _curvas.push_back(Curva(3800, 100, 4, false));
        _curvas.push_back(Curva(4000, 50, 4, true));
        _curvas.push_back(Curva(4150, 150, 2, true));
        _curvas.push_back(Curva(4400, 100, 2, false));
        _curvas.push_back(Curva(4600, 100, 2, false));
        _curvas.push_back(Curva(4800, 100, 5, true));
        _curvas.push_back(Curva(5000, 50, 2, true));
        _curvas.push_back(Curva(5150, 100, 5, false));
        _curvas.push_back(Curva(5450, 200, 5, true));
        _mCircuito = 5850;
    }

    // Inicializamos el vector de coches en contra
    _oppCars = new CCArray;

    // Activamos el acelerometro y el touch
    this->setTouchEnabled(true);

    // Calculamos el tamanyo de cada tramo para informar al Arduino
    int nleds = CCUserDefault::sharedUserDefault()->getIntegerForKey("nleds");
    _longTramo = (int) (_mCircuito/nleds);

    // Enviamos al Arduino que hemos entrado
    int iColor = CCUserDefault::sharedUserDefault()->getIntegerForKey("color");
    CCDictionary* prms = CCDictionary::create();
    prms->setObject(CCString::createWithFormat("%d", iColor), "color");
    SendMessageWithParams(string("JugadorEntra"), prms);

    return true;
}
Example #5
0
// 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();
	//
	//	/////////////////////////////
	//	// 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("Hello World", "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);
	//
	//	// add "HelloWorld" splash screen"
	//	CCSprite* pSprite = CCSprite::create("HelloWorld.png");
	//
	//	// position the sprite on the center of the screen
	//	pSprite->setPosition(
	//			ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
	//
	//	// add the sprite as a child to this layer
	//	this->addChild(pSprite, 0);

	loadTextures();
	reset();

	CCSize winSize = CCDirector::sharedDirector()->getWinSize();
	ccTexParams tp = { GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_CLAMP_TO_EDGE };

	CCTexture2D* skyTexture =
			CCTextureCache::sharedTextureCache()->textureForKey("sky.png");
	skyTexture->setTexParameters(&tp);
	_sky = CCSprite::createWithTexture(skyTexture,
			CCRectMake(0, 0, winSize.width, 512));
	_sky->setPosition(ccp(winSize.width / 2, winSize.height - 256));
	this->addChild(_sky, 0);

	CCTexture2D* mountainTexture =
			CCTextureCache::sharedTextureCache()->textureForKey("horizon.png");
	mountainTexture->setTexParameters(&tp);
	_mountain = CCSprite::createWithTexture(mountainTexture,
			CCRectMake(0, 0, winSize.width, 512));
	_mountain->setPosition(ccp(winSize.width / 2, 0));
	this->addChild(_mountain, 0);

	CCTexture2D* forestTexture =
			CCTextureCache::sharedTextureCache()->textureForKey(
					"background.png");
	forestTexture->setTexParameters(&tp);
	_forest2 = Forest::create();
	_forest2->setForestTexture(forestTexture);
	this->addChild(_forest2, 0);

	_forest = Forest::create();
	_forest->setForestTexture(forestTexture);
	this->addChild(_forest, 0);

	CCTexture2D* pathTexture =
			CCTextureCache::sharedTextureCache()->textureForKey("path.png");
	pathTexture->setTexParameters(&tp);
	_path = Path::create();
	_path->setPathTexture(pathTexture);
	this->addChild(_path, 0);

	//	CCLOG("begin add shadow");
	//	CCTexture2D* shadowTexture =
	//			CCTextureCache::sharedTextureCache()->textureForKey("shadow.png");
	//	_shadow = Shadow::create();
	//	_shadow->setShadowTexture(shadowTexture);
	//	this->addChild(_shadow, 1);
	//	CCLOG("end add shadow");

	CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(
			"run_frames.plist");
	CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(
			"boost_frames.plist");
	_fox = CCSprite::createWithSpriteFrame(
			CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(
					"fox_1_1.png"));
	_fox->setPosition(ccp(-1000, -1000));
	this->addChild(_fox, 1);

	_inst = CCSprite::createWithTexture(
			CCTextureCache::sharedTextureCache()->textureForKey(
					"instructions.png"));
	_inst->setPosition(ccp(-1000, -1000));
	this->addChild(_inst, 1);

	CCTexture2D* foregrounTexture =
			CCTextureCache::sharedTextureCache()->textureForKey(
					"foreground.png");
	foregrounTexture->setTexParameters(&tp);
	_fgFront = Forest::create();
	_fgFront->setForestTexture(foregrounTexture);
	this->addChild(_fgFront, 1);

	_pointsText = CCLabelTTF::create("", "Arial", 48);
	_pointsText->setPosition(ccp(-1000, 0));
	_pointsText->setColor(ccc3(81, 65, 30));
	this->addChild(_pointsText, 2);

	_recordText = CCLabelTTF::create("", "Arial", 48);
	_recordText->setPosition(ccp(-1000, 0));
	this->addChild(_recordText, 2);

	_newRecordText = CCLabelTTF::create("", "Arial", 48);
	_newRecordText->setPosition(ccp(-1000, 0));
	this->addChild(_newRecordText, 2);

	_failedTipText = CCLabelTTF::create("", "Arial", 48);
	_failedTipText->setPosition(ccp(-1000, 0));
	this->addChild(_failedTipText, 2);

	_instText = CCLabelTTF::create("", "Arial", 60);
	_instText->setPosition(ccp(-1000, 0));
	this->addChild(_instText, 2);

	CCTexture2D* titleTexture =
			CCTextureCache::sharedTextureCache()->textureForKey("Runfield.png");
	_title = CCSprite::createWithTexture(titleTexture);
	_title->setPosition(ccp(-1000, 0));
	this->addChild(_title, 3);

	_mask = CCLayerColor::create(ccc4(0, 0, 0, 255), winSize.width,
			winSize.height);
	_mask->setPosition(ccp(0, 0));
	this->addChild(_mask, 4);

	this->schedule(schedule_selector(HelloWorld::tick));

	return true;
}
Example #6
0
// on "init" you need to initialize your instance
bool GameScene::init()
{
	if ( !CCLayer::init() )
	{
		return false;
	}

	CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
	CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

	// Fondo con la textura de madera
	ccTexParams tp = { GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT};
	CCTexture2D* texture = CCTextureCache::sharedTextureCache()->addImage("purty_wood.png");
				 texture->setTexParameters(&tp);
	CCSprite* background = CCSprite::createWithTexture(texture, CCRectMake(0, 0, visibleSize.width, visibleSize.height));
			  background->setPosition( ccp( visibleSize.width/2, visibleSize.height/2 ) );

	this->addChild(background, 1);

	CCSprite* con_smile = CCSprite::create("con_wait.png", CCRectMake(0,0,64,64) );
			  con_smile->setPosition( ccp(visibleSize.width - 64, visibleSize.height - 64) );
	this->addChild(con_smile, 2);

	int aux_nleds = GameManager::sharedGameManager()->getNLeds();
	bool connected = GameManager::sharedGameManager()->getConnected();

	CCMenuItem *btn_clear = CCMenuItemImage::create("btn_clear.png", "btn_clear_h.png", this, menu_selector(GameScene::menuClearCallback));
				btn_clear->setPosition(ccp(visibleSize.width/2, visibleSize.height - 60));

	CCMenuItem *button_back = CCMenuItemImage::create("btn_volver.png", "btn_volver_h.png", this, menu_selector(GameScene::menuBackCallback));
				button_back->setPosition(ccp(origin.x + 105, visibleSize.height - 60));

	CCMenu* menu;

	if (connected) {
		con_smile->setTexture(CCTextureCache::sharedTextureCache()->addImage("con_ok.png"));

		CCMenuItem *button_send = CCMenuItemImage::create("btn_enviar.png", "btn_enviar_h.png", this, menu_selector(GameScene::menuSendCallback));
					button_send->setPosition(ccp(visibleSize.width - 105, origin.y + 60));
		menu = CCMenu::create(button_send, button_back, btn_clear, NULL);

	} else {
		menu = CCMenu::create(button_back, btn_clear, NULL);
	}

	menu->setPosition(ccp(0,0));
	this->addChild(menu, 5);

	scrollView = CCScrollView::create(CCSizeMake(visibleSize.width, visibleSize.height/3));
	scrollView->setContentSize(CCSizeMake(140*aux_nleds, visibleSize.height/3));
	scrollView->setDirection(kCCScrollViewDirectionHorizontal);
	scrollView->setPosition(ccp(10, visibleSize.height/3));
	scrollView->setTouchEnabled(true);
	this->addChild(scrollView, 5);

	menu_leds = CCMenu::create();
	menu_leds->setPosition(ccp(0,0));
	scrollView->addChild(menu_leds, 5);

	_labels = CCArray::create();
	_labels->retain();

	for (int i=0; i<aux_nleds; i++) {

		CCMenuItem *item_led = CCMenuItemImage::create("LED3.png", "LED3.png", this, menu_selector(GameScene::itemLedCallback));
		//CCSprite *sprite = CCSprite::create( "LED3.png", CCRectMake(0,0,120,120) );
		item_led->setAnchorPoint(CCPointZero);
		item_led->setPosition(ccp(140*i + 10, 0));
		item_led->setTag(i);
		menu_leds->addChild(item_led);

		CCString* i_str = CCString::createWithFormat("%d", i+1);
		CCLabelTTF *label = CCLabelTTF::create(i_str->getCString(), "Helvetica", 25, CCSizeMake(50, 30), kCCTextAlignmentCenter);
		label->setPosition(ccp(140*i + 45, 130));
		label->setAnchorPoint(CCPointZero);
		label->setTag(123);
		label->setColor(ccc3(0,0,255));
		label->setHorizontalAlignment(kCCTextAlignmentCenter);
		scrollView->addChild(label);
		_labels->insertObject(label, i);
	}

	_palette = CCSprite::create( "256colour.png", CCRectMake(0,0,512,128) );
	_palette->setPosition( ccp( origin.x + 256, origin.y + 64 ) );
	this->addChild(_palette, 5);

	_ledsSelected = CCArray::create();
	_ledsSelected->retain();

    this->setTouchEnabled(true);

    return true;
}