// achievements scene
SceneAchievements::SceneAchievements() : IGScene()
{
	IGLog("SceneAchievements init");
	
	// load the resources
	IwGetResManager()->LoadGroup("achievements.group");
	
	// the background
	IGSprite* spriteBackground = new IGSprite("background_wood", IGPoint(160,240), 0);
	this->addChild(spriteBackground);

	// header
	IGSprite* spriteHeader = new IGSprite("achievements_header", IGPoint(160,41), 1);
	this->addChild(spriteHeader);

	// the menu items
	buttonBack = new AchievementsButtonBack();
	buttonBack->setOpacity(64);
	AchievementsButtonMenu* buttonMenu = new AchievementsButtonMenu();
	buttonNext = new AchievementsButtonNext();
	this->addChild(buttonBack);
	this->addChild(buttonMenu);
	this->addChild(buttonNext);

	// pages
	pageNumber = 0;
	numPages = (int)(ACHIEVEMENT_NUM / 5);
	if(ACHIEVEMENT_NUM % 5 > 0)
		numPages++;

	// display achievements
	updateAchievements();
}
void SceneAchievements::pageNext() {
	if(pageNumber < numPages-1) {
		pageNumber++;
		if(pageNumber == numPages-1)
			buttonNext->setOpacity(64);
		buttonBack->setOpacity(255);
		updateAchievements();
	}
}
void SceneAchievements::pageBack() {
	if(pageNumber > 0) {
		pageNumber--;
		if(pageNumber == 0)
			buttonBack->setOpacity(64);
		buttonNext->setOpacity(255);
		updateAchievements();
	}
}
Пример #4
0
void TroopsMover::moveTroops(Army* army, Hexagon* endHex)
{
    // used for achievements and shake
    const int armySize = army->getTroopsCount();
    const int endHexArmySize = endHex->getTroopsCount();
    Hexagon* startHex = army->getCurrentHex();
    
    const int troops = army->getTroopsCount();
    startHex->removeArmy(army);
    
    if(troops == 0){
        army->free();
        return;
    }
    
    if(endHex->getOwner() == startHex->getOwner()){
        endHex->addArmy(army);
    }else{
        
        AttackResult attackResult = getAttackResult(army, endHex);
        updateAchievements(army->getCurrentHex()->getOwner(), attackResult, armySize, endHexArmySize, endHex);
        handleAttackResult(attackResult, army, startHex, endHex);
        
        if(attackResult == DefenderWins){
            if(endHex->getOwner()) EffectPlayer::playAttackEffect();
        }
        
        checkAndShake(armySize, endHexArmySize, endHex);
        
    }
    
    if((endHex->getTroopsCount() > 0) && (startHex != endHex)){
        endHex->runScaleAction();
    }

}