Beispiel #1
0
void toggleDisplay(){
	int temp = displayMode + 1;
	temp = temp % 3;
	displayMode = temp;
	clearDisplay();
	if(displayMode == 0){
		displaySpeed();
	}else if(displayMode == 1){
		displayDistance();
	}else if(displayMode == 2){
		displayTime();
	}
}
Beispiel #2
0
void displayCalculations(){

	switch(displayMode){
	case 0:
		displaySpeed();
		break;
	case 1:
		displayDistance();
		break;
	case 2:
		displayTime();
		break;
	default:
		displayNumbers(-1,-1,-1,-1);
		break;
	}

}
Beispiel #3
0
void PlayLayer::gameProc(float delta) {
    
    this->updateSpeed();
    cocos2d::Size s = Director::getInstance()->getWinSize();
    
    DoodleTruck *doodleTruck = DoodleTruck::sharedDoodleTruck();

	extern float g_accelY;
	
#ifdef DEBUG_MODE
	extern float g_accelX;
    //[lblTest setString:[NSString stringWithFormat:@"%f %f", g_accelX, g_accelY]];
#endif	
	if (tilt_enabled) {
        cpSpace *space = DoodleTruck::sharedDoodleTruck()->getSpace();
		space->gravity = cpv(g_accelY * DEFAULT_GRAVITY, DEFAULT_GRAVITY);
	}
	
	Sprite *truck_sprite = truck->getBodySprite();
	Vec2 pt_diff = truck_sprite->getPosition() - truck_oldpos;
	
	truck_oldpos= truck_sprite->getPosition();
	
	/*float end_pos = receiver_sprite->getPosition().x - receiver_sprite->getContentSize().width / 2.0f + 60 * doodleTruck->getScaleX();
	if (truck_sprite->getPosition().x >= end_pos) {
        doneFinish();
	}*/
	
    
    if (truck_sprite->getPosition().x > 100/* && truck_sprite->getPosition().x < end_pos*/) {
		
        displayDistance(truck_sprite->getPosition().x);
        terrain->setOffsetX(truck_sprite->getPosition().x);
        moving_layer->setPosition(moving_layer->getPosition() - pt_diff);
	}
	
	/*if (fabs(pt_diff.x) < 2.5) {
		if (fabs(truck->getBodySprite()->getRotation()) > 120.0f)
			doneTruckReversed();
	}*/
    
    
    // UPDATE COIN
    numCoinLabel->setString(CoinManager::sharedCoinManager()->getCoinString());
    
    // UPDATE FUEL
    float fuel = CoinManager::sharedCoinManager()->getFuel();
    fuel -= 0.3;
    if(fuel <= 0) {
        fuel = 0;
    }
    CoinManager::sharedCoinManager()->setFuel(fuel);
    displayFuelProgress(fuel);
    
    if(fuel < 20 && fuelCharged) {
        fuelCharged = false;
        fuelWarning->setVisible(true);
        fuelWarning->setOpacity(0);
        
        FadeIn * fadeIn = FadeIn::create(0.5);
        FadeOut * fadeOut = FadeOut::create(0.3);
        
        fuelWarning->runAction(Sequence::create(fadeIn, fadeOut, fadeIn, fadeOut, fadeIn, fadeOut, fadeIn, fadeOut, fadeIn, fadeOut, fadeIn, fadeOut, NULL));
    }
    
    if(fuel > 20 && !fuelCharged) {
        fuelCharged = true;
        fuelWarning->stopAllActions();
        fuelWarning->setVisible(false);
    }
    
    // UPDATE RPM
    int rpm = pt_diff.x  / delta;
    measureRPM->setRPM(rpm);
    
}
Beispiel #4
0
void PlayLayer::setupChild() {
    
    Director::getInstance()->getTextureCache()->removeAllTextures();
	
    cocos2d::Size s = Director::getInstance()->getWinSize();
    DoodleTruck *doodleTruck = DoodleTruck::sharedDoodleTruck();

	old_wheel_rot = 0.0f;
	diff_rot = 0.0f;
	game_stoped = false;
	game_result = GAME_PAUSE;
	truck_reversed = false;
	g_sound_enabled = true;
	tilt_enabled = false;
	
    Sky *sky = new Sky();
    this->addChild(sky);
  
    moving_layer = Layer::create();
    
    this->addChild(moving_layer);
    
    doodleTruck->initBox2D();
	
    if(terrain != NULL) {
        delete terrain;
    }
    terrain = new Terrain();
    terrain->setupChipmunk();
		
    if(truck != NULL)
        delete truck;
	truck = new Truck();
    
    moving_layer->addChild(truck->getDriver_Head(), NEAR_LAYER);
    moving_layer->addChild(truck->getDriver_Body(), NEAR_LAYER);
	moving_layer->addChild(truck->getBodySprite(), NEAR_LAYER);
	moving_layer->addChild(truck->getLWheelSprite(), NEAR_LAYER);
	moving_layer->addChild(truck->getRWheelSprite(), NEAR_LAYER);
	truck->adjustPosition(Vec2(ROAD_BEGIN_x * doodleTruck->getScaleX(), 332/*roadManager->getMinY()*/));
	truck->setupChipmunk();
	truck_oldpos = truck->getBodySprite()->getPosition();
    terrain->setOffsetX(truck->getBodySprite()->getPosition().x - 281.66);
    moving_layer->addChild(terrain, 5);
    
    CoinManager::sharedCoinManager()->showCoinData(moving_layer);
    
    //roadManager->addVisibleRoad(moving_layer);
	
    
    forward_item = new DirectionSprite(FORWARD, this);
    backward_item = new DirectionSprite(BACKWARD, this);
    
	forward_item->setPosition(Vec2(s.width/7 * 6, s.height/6));
	backward_item->setPosition(Vec2(s.width/7, s.height/6));
    this->addChild(forward_item);
    this->addChild(backward_item);
    forward_item->setScale(DoodleTruck::sharedDoodleTruck()->getScaleY());
    backward_item->setScale(DoodleTruck::sharedDoodleTruck()->getScaleY());
    
    measureRPM = new MeasureRPM();
    measureBoost = new MeasureBoost();
    this->addChild(measureRPM);
    this->addChild(measureBoost);
    measureRPM->setScale(measureRPM->getScale() * 0.8);
    measureBoost->setScale(measureBoost->getScale() * 0.8);
    measureRPM->setPosition(Vec2(s.width/7 * 2.75, s.height/6));
    measureBoost->setPosition(Vec2(s.width/7 * 4.25, s.height/6));
    
    Sprite *disSprite = XSprite::xspriteWithFileWithYScale("distance-icon.png");
    this->addChild(disSprite);
    disSprite->setPosition(disSprite->getContentSize().width * doodleTruck->getScaleY() / 2 + 10,
                           s.height - disSprite->getContentSize().height * doodleTruck->getScaleY() / 2 - 5);
    
    char str[100];
    sprintf(str, "0m / %dm", LevelManager::sharedLevelManager()->getLevelDistance(currentLevel));
    curDistanceLabel = Label::createWithBMFont("gamefont.fnt", str);
    curDistanceLabel->setScale(0.9);
    this->addChild(curDistanceLabel);
    curDistanceLabel->setAnchorPoint(Vec2(0, 0.5));
    curDistanceLabel->setPosition(disSprite->getPosition() + Vec2(disSprite->getContentSize().width * doodleTruck->getScaleY() / 2 + 10, 0));
    
    Label *tempLabel = Label::createWithBMFont("gamefont.fnt", "(");
    tempLabel->setScale(0.9);
    this->addChild(tempLabel);
    tempLabel->setAnchorPoint(Vec2(0, 0.5));
    tempLabel->setPosition(curDistanceLabel->getPosition() + Vec2(curDistanceLabel->getContentSize().width * curDistanceLabel->getScaleX() + 30, 0));
    
    Sprite *bestDisSprite = Sprite::create("best-length.png");
    bestDisSprite->setScale(curDistanceLabel->getContentSize().height / bestDisSprite->getContentSize().height);
    bestDisSprite->setAnchorPoint(Vec2(0, 0.5));
    this->addChild(bestDisSprite);
    bestDisSprite->setPosition(tempLabel->getPosition() + Vec2(tempLabel->getContentSize().width + 7, -10));
    
    sprintf(str, "%dm)", bestDistance);
    bestDistanceLabel = Label::createWithBMFont("gamefont.fnt", str);
    bestDistanceLabel->setScale(0.9);
    this->addChild(bestDistanceLabel);
    bestDistanceLabel->setAnchorPoint(Vec2(0, 0.5));
    bestDistanceLabel->setPosition(bestDisSprite->getPosition() + Vec2(bestDisSprite->getContentSize().width * bestDisSprite->getScale() + 10, 10));
    
    Sprite *fuelSprite = XSprite::xspriteWithFileWithYScale("fuel-icon.png");
    this->addChild(fuelSprite);
    fuelSprite->setPosition(fuelSprite->getContentSize().width * doodleTruck->getScaleY() / 2 + 10,
                            s.height - fuelSprite->getContentSize().height * doodleTruck->getScaleY() * 3 / 2 - 10);
    
    Sprite *progressBg = Sprite::create("progressbar-bg.png");
    this->addChild(progressBg, 3);
    progressBg->setAnchorPoint(Vec2(0, 0.5));
    progressBg->setPosition(curDistanceLabel->getPosition().x, fuelSprite->getPosition().y);
    
    progressSprite = Sprite::create("progressbar.png");
    progress = ProgressTimer::create(progressSprite);
    progress->setScale(1.0, progressBg->getContentSize().width / progress->getContentSize().width);
    progress->setType(ProgressTimer::Type::BAR);
    progress->setAnchorPoint(Vec2(0, 0.5));
    progress->setPosition(progressBg->getPosition() + Vec2(2, 1));
    progress->setMidpoint(Vec2(0, 1));
    progress->setBarChangeRate(Vec2(1, 0));
    this->addChild(progress, 2);
    displayFuelProgress(100);
    
    
    fuelCharged = true;
    fuelWarning = Sprite::create("fuel-warning.png");
    fuelWarning->setPosition(Vec2(s.width / 2, s.height * 0.4));
    fuelWarning->setVisible(false);
    this->addChild(fuelWarning, 30);
    
    
    Sprite *coinSprite = XSprite::xspriteWithFileWithYScale("coin-icon.png");
    this->addChild(coinSprite);
    coinSprite->setPosition(coinSprite->getContentSize().width * doodleTruck->getScaleY() / 2 + 10,
                            s.height - coinSprite->getContentSize().height * doodleTruck->getScaleY() * 5 / 2 - 15);
    
    numCoinLabel = Label::createWithBMFont("gamefont.fnt", "000 000");
    numCoinLabel->setScale(0.9);
    this->addChild(numCoinLabel);
    numCoinLabel->setAnchorPoint(Vec2(0, 0.5));
    numCoinLabel->setPosition(curDistanceLabel->getPosition().x, coinSprite->getPosition().y);
    
    PauseSprite *pauseSprite = new PauseSprite();
    this->addChild(pauseSprite);
    pauseSprite->setScale(pauseSprite->getScaleY() * 1.3);
    pauseSprite->setPosition(s.width - pauseSprite->getContentSize().width * pauseSprite->getScale() / 2 - 5,
                             s.height - pauseSprite->getContentSize().height * pauseSprite->getScale() / 2 - 5);
    
    initRealX = truck->getBodySprite()->getPosition().x;
    currentDistance = 0;
    displayDistance(initRealX);
    

	if (doodleTruck->getMode())
		game_time = getLimitTime(doodleTruck->getMapIndex());
	else
		game_time = 0;
		
    MenuItemImage * item_time_title = MenuItemImage::create(IMG_TIME, IMG_TIME);
	doodleTruck->adjustScale(item_time_title);
	item_time_title->setPosition(Vec2(item_time_title->getContentSize().width / 2.0f * doodleTruck->getScaleX(),
                                      s.height - item_time_title->getContentSize().height * doodleTruck->getScaleY()));
	int min = game_time / 60;
	int sec = game_time - min * 60;
	
	
    moving_layer->addChild(ChipmunkDebugNode::create(DoodleTruck::sharedDoodleTruck()->getSpace()));
	
	if (!sound_load_flag) {
		//loadSound(doodleTruck->isSoundEnabled());
		sound_load_flag = true;
	}
	//loadMusic(doodleTruck->isMusicEnabled());
	//playMusic();
	
	this->addCollisionFunc();
	
	// set up the time delay
    DelayTime *delayAction = DelayTime::create(0.5f);
    // perform the selector call
        
    CallFunc *callSelectorAction = CallFunc::create(CC_CALLBACK_0(PlayLayer::startSchedules, this));
    // run the action
    this->runAction(Sequence::create(delayAction, callSelectorAction, NULL));
}