Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // GamePlay.m
- // Game
- //
- // Created by Myself on 20/08/10.
- // Copyright 2010 __MyCompanyName__. All rights reserved.
- //
- #import "GamePlay.h"
- #import "GameOver.h"
- #import "HelloWorldScene.h"
- #import "cocos2d.h"
- // OpenFeint
- #import "OFHighScoreService.h"
- #import "OFHighScore.h"
- #import "OFAchievementService.h"
- #import "OFAchievement.h"
- // Constantes
- #define kGraviteMultiplieur 20
- #define kGravite 0.195
- #define SMELLS_GOOD__ @"550802"
- #define COOK_EATER__ @"550812"
- #define LOUIS_VUITON__ @"550822"
- #define CRAZY_SHOES__ @"550832"
- #define HOT_LIPS__ @"550842"
- #define GIRL_POWA__ @"552042"
- #define EXPERIENCER__ @"552042"
- //Ici on crée les éléments qu'on pourra utiliser partout dans helloworldScene.m
- //-----------------------------------------------------------------------------
- // Tags besoin pour collision
- enum {
- kTagPerso,
- kTagGateau,
- kTagRougeL,
- kTagSac,
- kTagChaussure,
- kTagParfum,
- kTagSoucoupe,
- //
- kbothSacAction,
- kbothChaussureAction,
- kbothRougeLAction,
- kbothGateauAction,
- kbothParfumAction
- };
- //On déclare les CCSprites
- CCSprite *fond;
- CCSprite *fond2;
- CCSprite *perso;
- CCSprite *gateau;
- CCSprite *sac;
- CCSprite *chaussure;
- CCSprite *parfum;
- CCSprite *rougeLevres;
- CCSprite *soucoupe;
- //menu reprendre, bouton pause
- CCMenu *pauseMenu;
- CCMenuItem *pauseBtn;
- //On déclare la gravité
- CGPoint gravite;
- //On crée le (int)score et (NSString) score et (font)score
- int score;
- NSString *scoreString;
- CCBitmapFontAtlas *scoreFont;
- // Texte d'animation (3,2,1 Go) du début
- CCBitmapFontAtlas *texteMotiv;
- //On crée une variable qui contient les données de la taille de la vue
- CGSize size;
- //On crée les booléens
- BOOL fondAutoriz; // Si les fonds peuvent bouger
- BOOL accelAutoriz; // Si l'accéléromètre peut être utilisé
- BOOL targetsAutoriz; // Si les targets(gateaux, etc)peuvent être crées
- BOOL scoreAutoriz; // Si le score peut être augmenté
- BOOL blockSuprMenuBtn; // Pour qu'on supprime une seule fois le bouton Pause
- BOOL appuiBoutonPause; // Pour pas qu'on appuie sur le BtnPause lors du Menu
- BOOL peutPauser; // Pour pas pauser avant la fin du 1,2,3 GO !
- // Autorisations de collision
- BOOL soucoupeAutoriz;
- // AutorizCollide
- BOOL peutCollideAnim;
- //On crée le int qui fera décaler les fonds
- int decalFonds = 4;
- //On crée le int qui limitera les pauses
- int nombrePauses;
- //Floats utilisés par les actions communes (effets)
- float durationFading = 0.2; // temps pour le fondu
- float durationScaling = 1.0; // en combien de temps l'objet changera de taille
- float scalingMod = 1.5; // par combien sera multiplié la taille de l'objet
- // int decal soucoupe X
- int decalSoucX = 3;
- // int decal soucoupe Y
- int decalSoucY = 3;
- //Init des actions utilisées à la collision
- id actionFading;
- id actionScaling;
- id bothActions;
- id actionMoveDone;
- //-----------------------------------------------------------------------------
- @implementation GamePlay
- +(id) scene
- {
- // 'scene' is an autorelease object.
- CCScene *scene = [CCScene node];
- // 'layer' is an autorelease object.
- GamePlay *layer = [GamePlay node];
- // add layer as a child to scene
- [scene addChild: layer];
- // return the scene
- return scene;
- }
- // on "init" you need to initialize your instance
- -(id) init
- {
- if( (self=[super init] )) {
- //Activer les paramètres de l'accéléromètre
- [UIAccelerometer sharedAccelerometer].updateInterval = 0.01;
- [UIAccelerometer sharedAccelerometer].delegate = self;
- // On initialise le score
- score = 0;
- scoreString = [NSString stringWithFormat:@"%d", score];
- // Dans la variable size mettre la valeur de taille de la vue
- size = [[CCDirector sharedDirector] winSize];
- // On definit la gravité à nulle
- gravite = CGPointMake(0,0);
- // On initialise le nombre de pauses à 0
- nombrePauses = 0;
- //On init les booléens
- fondAutoriz = NO; // Si les fonds peuvent bouger
- accelAutoriz = NO; // Si l'accéléromètre peut être utilisé
- targetsAutoriz = NO; // Si les targets(gateaux, etc)peuvent être crées
- scoreAutoriz = NO; // Si le score peut être augmenté
- peutPauser = NO; // Pour pas qu'on puisse pauser avant la fin du 1,2,3 GO !
- blockSuprMenuBtn = YES; // Pour qu'on supprime une seule fois le bouton Pause
- appuiBoutonPause = YES; // Pour pas qu'on appuie sur le BtnPause lors du Menu
- // Autorisations de collision
- soucoupeAutoriz = YES;
- peutCollideAnim = YES;
- if (peutCollideAnim) {
- NSLog(@"peutCollideAnim = true");
- }
- if (peutCollideAnim == NO) {
- NSLog(@"peutCollideAnim = false");
- }
- //On définit l'image utilisée par nos différents CCSprites
- perso = [CCSprite spriteWithFile:@"Perso.png"];
- fond = [CCSprite spriteWithFile:@"fond-jeu.jpg"];
- fond2 = [CCSprite spriteWithFile:@"fond-jeu.jpg"];
- //On positionne nos CCSprites
- perso.position = ccp(size.width/2, 530);
- fond.position = ccp (size.width/2, 960);
- fond2.position = ccp(size.width/2, 0);
- //On ajoute nos CCSprites à la scène
- [self addChild:fond];
- [self addChild:fond2];
- [self addChild:perso z:0 tag:kTagPerso];
- //On crée le bouton pause
- pauseBtn = [CCMenuItemImage itemFromNormalImage:@"pauseBtn.png" selectedImage:@"pauseBtn.png" target:self selector:@selector(pauseGame:)];
- [pauseBtn setAnchorPoint:ccp(1,1)];
- pauseBtn.position = ccp(315, 475);
- pauseMenu = [CCMenu menuWithItems:pauseBtn, nil];
- pauseMenu.position = CGPointZero;
- [self addChild:pauseMenu];
- //On initialise le texte score
- scoreFont = [CCBitmapFontAtlas bitmapFontAtlasWithString:scoreString fntFile:@"Police.fnt"];
- scoreFont.position = ccp(scoreFont.contentSize.width/2, size.height-scoreFont.contentSize.height/2+10);
- [scoreFont setAnchorPoint:ccp(0,1)];
- [self addChild:scoreFont];
- //Init des actions utilisées à la collision
- actionFading = [CCFadeOut actionWithDuration:durationFading];
- actionScaling = [CCScaleBy actionWithDuration:durationScaling scale:scalingMod];
- bothActions = [[CCSpawn actions:actionFading, actionScaling, nil] retain];
- actionMoveDone = [[CCCallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)] retain];
- //On dit au personnage de se déplacer au début du jeu pour faire +cool que 1sec après pour que
- //la transition ait le temps de se faire
- [self runAction:[CCSequence actions:
- [CCDelayTime actionWithDuration:1],
- [CCCallFunc actionWithTarget:self selector:@selector(initPerso)],
- nil]];
- // On crée l'animation
- texteMotiv = [CCBitmapFontAtlas bitmapFontAtlasWithString:@"3" fntFile:@"Police.fnt"];
- texteMotiv.position = ccp(size.width/2, size.height/2);
- [self addChild:texteMotiv];
- [self runAction:[CCSequence actions:
- [CCDelayTime actionWithDuration:2],
- [CCCallFunc actionWithTarget:self selector:@selector(texteMotivAnim)], nil]];
- // schedule a repeating callback on every frame
- [self schedule:@selector(nextFrame:)];
- // On actualise le texte on every frame
- [self schedule:@selector(actualizeText:)];
- // Toutes les secondes on ajoute un objet à bouffer
- [self schedule:@selector(ajoutElements:) interval:1.0];
- // Toutes les 5.5 sec on ajoute une soucoupe
- [self schedule:@selector(ajoutSoucoupe:) interval:5.5];
- // Toutes les secondes on vérifie si on peut appuyer sur le bouton pause ou non
- [self schedule:@selector(verifyPauseMenu:) interval:1.0];
- }
- return self;
- }
- // On lance le 2
- -(void)texteMotivAnim {
- [texteMotiv setString:@"2"];
- [self runAction:[CCSequence actions:
- [CCDelayTime actionWithDuration:1],
- [CCCallFunc actionWithTarget:self selector:@selector(texteMotivAnim2)],
- nil]];
- }
- // On lance le 1
- -(void)texteMotivAnim2 {
- [texteMotiv setString:@"1"];
- [self runAction:[CCSequence actions:
- [CCDelayTime actionWithDuration:1],
- [CCCallFunc actionWithTarget:self selector:@selector(texteMotivAnim3)],
- nil]];
- [texteMotiv runAction:[CCSequence actions:[CCDelayTime actionWithDuration:1],[CCFadeOut actionWithDuration:0], nil]];
- }
- // On lance le Go !
- -(void)texteMotivAnim3 {
- [texteMotiv setString:@"Go"];
- id fadeActionIn = [CCFadeIn actionWithDuration:0.5];
- id fadeActionOut = [CCFadeOut actionWithDuration:0.3];
- id scaleAction = [CCScaleBy actionWithDuration:0.5 scale:1.8f];
- id scaleAndFadeIn = [CCSpawn actions:fadeActionIn, scaleAction, nil];
- id scaleAndFadeOut = [CCSpawn actions:fadeActionOut, scaleAction, nil];
- [texteMotiv runAction:[CCSequence actions:scaleAndFadeIn, scaleAndFadeOut,[CCCallFuncN actionWithTarget:self selector:@selector(AutorizationPause:)], nil]];
- }
- // on initialise le perso
- -(void)initPerso {
- [perso runAction: [CCMoveTo actionWithDuration:0.5 position:ccp(size.width/2, 300)]];
- fondAutoriz = YES; //On autorise la mouvence des fonds
- //Puis on attend deux secondes avant d'autoriser l'utilisation de l'accéléromètre
- [self runAction:[CCSequence actions:
- [CCDelayTime actionWithDuration:3],
- [CCCallFunc actionWithTarget:self selector:@selector(Autorizations)],
- nil]];
- }
- // on autorise l'accelerometre, score, ajoutelments
- -(void)Autorizations {
- accelAutoriz = YES; //Lorsque la méthode Autorizations est appelée on autorise l'utilisation de l'accéléromètre
- targetsAutoriz = YES; //Lorsque la méthode Autorizations est appelée on autorise la creation d'éléments
- scoreAutoriz = YES; // On autorise l'augmentation de scores
- }
- -(void)AutorizationPause:(id)sender {
- peutPauser = YES;
- }
- // on prépare l'ajout d'éléments
- -(void)addTarget {
- // Definition des images utilisees
- gateau = [CCSprite spriteWithFile:@"Gateau.png"];
- sac = [CCSprite spriteWithFile:@"Sac.png"];
- chaussure = [CCSprite spriteWithFile:@"Chaussure.png"];
- parfum = [CCSprite spriteWithFile:@"Parfum.png"];
- rougeLevres = [CCSprite spriteWithFile:@"Rouge-Levres.png"];
- int nombreMinPourcentage = 1;
- int nombreMaxPourcentage = 100;
- int range = nombreMaxPourcentage - nombreMinPourcentage;
- int nombreAleatoire = (arc4random() % range) + nombreMinPourcentage;
- // SAC
- if (nombreAleatoire >= 2 && nombreAleatoire <= 51) {
- // On détermine où on va être afficher l'élément sur l'axe X
- int minX = 0+sac.contentSize.width/2;
- int maxX = 320-sac.contentSize.width/2;
- int rangeX = maxX - minX;
- int actualX = (arc4random() % rangeX) + minX;
- // On positionne l'élément sur l'axe X calculé ci-dessus et en dessous de la limite infer. de l'écran
- sac.position = ccp(actualX, size.height-480-sac.contentSize.height/2);
- [self addChild:sac z:0 tag:kTagSac]; // On ajoute l'élément à la vue
- // On détermine la vitesse de l'élément
- int minDuration = 2.0;
- int maxDuration = 3.0;
- int rangeDuration = maxDuration - minDuration;
- int actualDuration = (arc4random() % rangeDuration) + minDuration;
- // Cree les actions liées à l'élément
- id actionMove = [CCMoveTo actionWithDuration:actualDuration
- position:ccp(actualX, size.height+25)];
- id actionMoveDone = [CCCallFuncN actionWithTarget:self
- selector:@selector(spriteMoveFinished:)];
- [sac runAction:[CCSequence actions:actionMove, actionMoveDone, nil]];
- }
- // GATEAU
- if (nombreAleatoire >= 52 && nombreAleatoire <= 77) {
- // On détermine où on va être afficher l'élément sur l'axe X
- int minX = 0+gateau.contentSize.width/2;
- int maxX = 320-gateau.contentSize.width/2;
- int rangeX = maxX - minX;
- int actualX = (arc4random() % rangeX) + minX;
- // On positionne l'élément sur l'axe X calculé ci-dessus et en dessous de la limite infer. de l'écran
- gateau.position = ccp(actualX, size.height-480-gateau.contentSize.height/2);
- [self addChild:gateau z:0 tag:kTagGateau]; // On ajoute l'élément à la vue
- // On détermine la vitesse de l'élément
- int minDuration = 2.0;
- int maxDuration = 3.0;
- int rangeDuration = maxDuration - minDuration;
- int actualDuration = (arc4random() % rangeDuration) + minDuration;
- // Cree les actions liées à l'élément
- id actionMove = [CCMoveTo actionWithDuration:actualDuration
- position:ccp(actualX, size.height+25)];
- id actionMoveDone = [CCCallFuncN actionWithTarget:self
- selector:@selector(spriteMoveFinished:)];
- [gateau runAction:[CCSequence actions:actionMove, actionMoveDone, nil]];
- }
- // PARFUM
- if (nombreAleatoire == 1) {
- // On détermine où on va être afficher l'élément sur l'axe X
- int minX = 0+parfum.contentSize.width/2;
- int maxX = 320-parfum.contentSize.width/2;
- int rangeX = maxX - minX;
- int actualX = (arc4random() % rangeX) + minX;
- // On positionne l'élément sur l'axe X calculé ci-dessus et en dessous de la limite infer. de l'écran
- parfum.position = ccp(actualX, size.height-480-parfum.contentSize.height/2);
- [self addChild:parfum z:0 tag:kTagParfum]; // On ajoute l'élément à la vue
- // On détermine la vitesse de l'élément
- int minDuration = 2.0;
- int maxDuration = 3.0;
- int rangeDuration = maxDuration - minDuration;
- int actualDuration = (arc4random() % rangeDuration) + minDuration;
- // Cree les actions liées à l'élément
- id actionMove = [CCMoveTo actionWithDuration:actualDuration
- position:ccp(actualX, size.height+25)];
- id actionMoveDone = [CCCallFuncN actionWithTarget:self
- selector:@selector(spriteMoveFinished:)];
- [parfum runAction:[CCSequence actions:actionMove, actionMoveDone, nil]];
- }
- // ROUGE À LÈVRES
- if (nombreAleatoire >= 78 && nombreAleatoire <= 83) {
- // On détermine où on va être afficher l'élément sur l'axe X
- int minX = 0+rougeLevres.contentSize.width/2;
- int maxX = 320-rougeLevres.contentSize.width/2;
- int rangeX = maxX - minX;
- int actualX = (arc4random() % rangeX) + minX;
- // On positionne l'élément sur l'axe X calculé ci-dessus et en dessous de la limite infer. de l'écran
- rougeLevres.position = ccp(actualX, size.height-480-rougeLevres.contentSize.height/2);
- [self addChild:rougeLevres z:0 tag:kTagRougeL]; // On ajoute l'élément à la vue
- // On détermine la vitesse de l'élément
- int minDuration = 2.0;
- int maxDuration = 3.0;
- int rangeDuration = maxDuration - minDuration;
- int actualDuration = (arc4random() % rangeDuration) + minDuration;
- // Cree les actions liées à l'élément
- id actionMove = [CCMoveTo actionWithDuration:actualDuration
- position:ccp(actualX, size.height+25)];
- id actionMoveDone = [CCCallFuncN actionWithTarget:self
- selector:@selector(spriteMoveFinished:)];
- [rougeLevres runAction:[CCSequence actions:actionMove, actionMoveDone, nil]];
- }
- // CHAUSSURE
- if (nombreAleatoire >= 84 && nombreAleatoire <= 100) {
- // On détermine où on va être afficher l'élément sur l'axe X
- int minX = 0+chaussure.contentSize.width/2;
- int maxX = 320-chaussure.contentSize.width/2;
- int rangeX = maxX - minX;
- int actualX = (arc4random() % rangeX) + minX;
- // On positionne l'élément sur l'axe X calculé ci-dessus et en dessous de la limite infer. de l'écran
- chaussure.position = ccp(actualX, size.height-480-chaussure.contentSize.height/2);
- [self addChild:chaussure z:0 tag:kTagChaussure]; // On ajoute l'élément à la vue
- // On détermine la vitesse de l'élément
- int minDuration = 2.0;
- int maxDuration = 3.0;
- int rangeDuration = maxDuration - minDuration;
- int actualDuration = (arc4random() % rangeDuration) + minDuration;
- // Cree les actions liées à l'élément
- id actionMove = [CCMoveTo actionWithDuration:actualDuration
- position:ccp(actualX, size.height+25)];
- id actionMoveDone = [CCCallFuncN actionWithTarget:self
- selector:@selector(spriteMoveFinished:)];
- [chaussure runAction:[CCSequence actions:actionMove, actionMoveDone, nil]];
- }
- }
- // +5.5sec ajout de soucoupe
- -(void)ajoutSoucoupe:(ccTime)dt {
- id actionMoveDone = [CCCallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)];
- [soucoupe runAction:actionMoveDone];
- soucoupe = [CCSprite spriteWithFile:@"Soucoupe.png"];
- soucoupe.position = ccp(size.width/2, 0-soucoupe.contentSize.height/2);
- [self addChild:soucoupe z:0 tag:kTagSoucoupe];
- }
- // on supprime l'élément quand l'anim est finnie
- -(void)spriteMoveFinished:(id)sender {
- CCSprite *sprite = (CCSprite *)sender;
- [self removeChild:sprite cleanup:YES];
- }
- // on ajoute les elements toutes les secondes
- -(void)ajoutElements:(ccTime)dt {
- if (targetsAutoriz)
- [self addTarget];
- }
- // gestion des collisions, scores, déplacements fonds/soucoupe
- -(void) nextFrame:(ccTime)dt{
- if (peutCollideAnim) {
- NSLog(@"peutCollideAnim = true");
- }
- if (peutCollideAnim == NO) {
- NSLog(@"peutCollideAnim = false");
- }
- // On déplace le perso en fonction de l'accel
- //--------------------------------------
- if (accelAutoriz) { // Si l'utilisation de l'accéléromètre est autorisée
- //Alors on affecte la position .x du perso par la gravitée = acceleromètre
- perso.position = ccp(perso.position.x + gravite.x, perso.position.y);
- }
- // On gère les fonds
- //-----------------
- if (fondAutoriz) { //Si le décalage des fonds est autorisé
- //Alors on décale les fonds de 5 pixels par tick
- fond2.position = ccp(fond2.position.x, fond2.position.y + decalFonds);
- fond.position = ccp(fond.position.x, fond.position.y + decalFonds);
- }
- if (fond2.position.y >= 480 && fond.position.y >= 1440) { // Si le fond 2 dépasse par le haut de l'écran
- fond.position = ccp(fond.position.x, -480); //Alors on repositionne le fond1 en dessous du fond2
- }
- if (fond.position.y >= 480 && fond2.position.y >= 1440) { // Si le fond1 dépasse par le haut de l'écran
- fond2.position = ccp(fond.position.x, -480); //Alors on repositionne le fond2 en dessous du fond1
- }
- // On gère le dépassement de l'écran du perso
- // -----------------------------------------
- //Si le perso dépasse de l'écran en .x par la droite
- if (perso.position.x > size.width+perso.contentSize.width/2) {
- //alors on fait revenir le perso par la gauche, puisque 0 en .x est l'extrémité gauche de l'écran
- perso.position = CGPointMake(0-perso.contentSize.width/2, perso.position.y);
- }
- // Si le perso dépasse de l'écran en .x par la gauche
- if (perso.position.x < 0-perso.contentSize.width/2) {
- //Alors on fait revenir le perso par la droite de l'écran puisque size.width = 320
- // ce qui est l'extrémité droite de l'écran
- perso.position = CGPointMake(size.width+perso.contentSize.width/2, perso.position.y);
- }
- // On déplace la soucoupe
- soucoupe.position = ccp(soucoupe.position.x + decalSoucX , soucoupe.position.y + decalSoucY);
- if (soucoupe.position.x >= 320-soucoupe.contentSize.width/2 || soucoupe.position.x <= 0+soucoupe.contentSize.width/2) {
- decalSoucX = -decalSoucX;
- }
- // On crée des nodes : besoin pour collision
- CCNode *perso = [self getChildByTag:kTagPerso]; //lié au CCSprite perso
- CCNode *gateau = [self getChildByTag:kTagGateau]; //lié au CCSprite gateau
- CCNode *sac = [self getChildByTag:kTagSac]; //lié au CCSprite sac
- CCNode *chaussure = [self getChildByTag:kTagChaussure]; //lié au CCSprite chaussure
- CCNode *parfum = [self getChildByTag:kTagParfum]; //lié au CCSprite parfum
- CCNode *rougeLevres = [self getChildByTag:kTagRougeL]; //lié au CCSprite rougeLevres
- CCNode *soucoupe = [self getChildByTag:kTagSoucoupe]; //lié au CCSprite soucoupe
- // SOUCOUPE PERSO
- if (CGRectIntersectsRect([perso boundingBox], [soucoupe boundingBox])) {
- if (soucoupeAutoriz) {
- NSLog(@"soucoupe/perso");
- // Envoi du score OpenFeint
- [OFHighScoreService setHighScore:score forLeaderboard:@"469004" onSuccess:OFDelegate() onFailure:OFDelegate()];
- // On va à la scene GameOver
- [[CCDirector sharedDirector] pushScene:[CCFadeBLTransition transitionWithDuration:1 scene:[GameOver node]]];
- // Unlock le succès EXPERIENCER
- [OFAchievementService unlockAchievement:EXPERIENCER__];
- }
- soucoupeAutoriz = NO;
- }
- // GATEAU PERSO
- if (CGRectIntersectsRect([perso boundingBox], [gateau boundingBox])) {
- if (peutCollideAnim==YES) {
- NSLog(@"gateau/perso");
- // reset the flag so the user can't launch the animation anymore
- peutCollideAnim = NO;
- // Incrémente le score
- score = score+5;
- // Unlock le succès COOK EATER
- [OFAchievementService unlockAchievement:COOK_EATER__];
- // Lance le fondu
- [gateau runAction:[CCSequence actions:bothActions, actionMoveDone, peutCollideAnim=YES, nil]];
- }
- }
- // PARFUM PERSO
- if (CGRectIntersectsRect([perso boundingBox], [parfum boundingBox])) {
- if (peutCollideAnim==YES) {
- NSLog(@"parfum/perso");
- // reset the flag so the user can't launch the animation anymore
- peutCollideAnim = NO;
- // Incrémente le score
- score = score+40;
- // Unlock le succès SMELLS GOOD
- [OFAchievementService unlockAchievement:SMELLS_GOOD__];
- // Lance le fondu
- [parfum runAction:[CCSequence actions:bothActions, actionMoveDone, peutCollideAnim=YES, nil]];
- }
- }
- // CHAUSSURE PERSO
- if (CGRectIntersectsRect([perso boundingBox], [chaussure boundingBox])) {
- if (peutCollideAnim==YES) {
- NSLog(@"chaussure/perso");
- // reset the flag so the user can't launch the animation anymore
- peutCollideAnim = NO;
- // Incrémente le score
- score = score+7.5;
- // Unlock le succès CRAZY SHOES
- [OFAchievementService unlockAchievement:CRAZY_SHOES__];
- // Lance le fondu
- [chaussure runAction:[CCSequence actions:bothActions, actionMoveDone, peutCollideAnim=YES, nil]];
- }
- }
- // SAC PERSO
- if (CGRectIntersectsRect([perso boundingBox], [sac boundingBox])) {
- if (peutCollideAnim==YES) {
- NSLog(@"sac/perso");
- // reset the flag so the user can't launch the animation anymore
- peutCollideAnim = NO;
- // Incrémente le score
- score = score+1.8;
- // Unlock le succès LOUIS VUITTON
- [OFAchievementService unlockAchievement:LOUIS_VUITON__];
- // Lance le fondu
- [sac runAction:[CCSequence actions:bothActions, actionMoveDone, peutCollideAnim=YES, nil]];
- }
- }
- // ROUGE À LÈVRES PERSO
- if (CGRectIntersectsRect([perso boundingBox], [rougeLevres boundingBox])) {
- if (peutCollideAnim==YES) {
- NSLog(@"rougeAL/perso");
- // reset the flag so the user can't launch the animation anymore
- peutCollideAnim = NO;
- // Incrémente le score
- score = score+10;
- // Unlock le succès HOT LIPS
- [OFAchievementService unlockAchievement:HOT_LIPS__];
- // Lance le fondu
- [rougeLevres runAction:[CCSequence actions:bothActions, actionMoveDone, peutCollideAnim=YES, nil]];
- }
- }
- // SOUCOUPE GATEAU
- if (CGRectIntersectsRect([soucoupe boundingBox], [gateau boundingBox])) {
- if (peutCollideAnim==YES) {
- NSLog(@"gateau/soucoupe");
- // reset the flag so the user can't launch the animation anymore
- peutCollideAnim = NO;
- // Lance le fondu
- [gateau runAction:[CCSequence actions:bothActions, actionMoveDone, peutCollideAnim=YES, nil]];
- }
- }
- // SOUCOUPE SAC
- if (CGRectIntersectsRect([soucoupe boundingBox], [sac boundingBox])) {
- if (peutCollideAnim==YES) {
- NSLog(@"sac/soucoupe");
- // reset the flag so the user can't launch the animation anymore
- peutCollideAnim = NO;
- // Lance le fondu
- [sac runAction:[CCSequence actions:bothActions, actionMoveDone, peutCollideAnim=YES, nil]];
- }
- }
- // SOUCOUPE CHAUSSURE
- if (CGRectIntersectsRect([soucoupe boundingBox], [chaussure boundingBox])) {
- if (peutCollideAnim==YES) {
- NSLog(@"chaussure/soucoupe");
- // reset the flag so the user can't launch the animation anymore
- peutCollideAnim = NO;
- // Lance le fondu
- [chaussure runAction:[CCSequence actions:bothActions, actionMoveDone,peutCollideAnim=YES, nil]];
- }
- }
- // SOUCOUPE PARFUM
- if (peutCollideAnim==YES) {
- if (CGRectIntersectsRect([soucoupe boundingBox], [parfum boundingBox])) {
- NSLog(@"parfum/soucoupe");
- // reset the flag so the user can't launch the animation anymore
- peutCollideAnim = NO;
- // Lance le fondu
- [parfum runAction:[CCSequence actions:bothActions, actionMoveDone, peutCollideAnim=YES, nil]];
- }
- }
- // SOUCOUPE ROUGE À LÈVRES
- if (peutCollideAnim==YES) {
- if (CGRectIntersectsRect([soucoupe boundingBox], [rougeLevres boundingBox])) {
- NSLog(@"RAL/soucoupe");
- // reset the flag so the user can't launch the animation anymore
- peutCollideAnim = NO;
- // Lance le fondu
- [rougeLevres runAction:[CCSequence actions:bothActions, actionMoveDone, peutCollideAnim=YES, nil]];
- }
- }
- }
- // On actualise le score
- -(void) actualizeText:(ccTime)dt{
- if (scoreAutoriz) {
- scoreString = [NSString stringWithFormat:@"%d", score];
- [scoreFont setString:scoreString];
- }
- }
- // acceleromètre influe sur gravite
- -(void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration {
- gravite.x = acceleration.x * kGraviteMultiplieur; //La gravité en .x (abscisses) est affectée par l'accéléromètre
- }
- // on met le jeu en pause
- -(void)pauseGame:(id)sender {
- // si on est pas dans le 1,2,3 GO !
- if (peutPauser) {
- // si le menu n'est pas déjà présent on peut pas cliquer sur le menu
- if (appuiBoutonPause == YES) {
- nombrePauses++; // on incrémente le nombre de pause (limite à 3)
- if (nombrePauses <= 3) {
- //on met le jeu en pause
- [[CCDirector sharedDirector] pause];
- texteMotiv.visible = false;
- //On crée le menu pause
- CCMenuItem *replayBtn = [CCMenuItemImage itemFromNormalImage:@"replayBtn.png" selectedImage:@"replayBtn.png" target:self selector:@selector(replayGame:)];
- CCMenuItem *menuBtn = [CCMenuItemImage itemFromNormalImage:@"btnMenu.png" selectedImage:@"btnMenu.png" target:self selector:@selector(backToMenu:)];
- replayBtn.position = ccp(size.width/2, size.height/2);
- menuBtn.position = ccp(320-menuBtn.contentSize.width/2-10, 0+menuBtn.contentSize.height/2+10);
- pauseMenu = [CCMenu menuWithItems:replayBtn, menuBtn, nil];
- pauseMenu.position = CGPointZero;
- [self addChild:pauseMenu];
- appuiBoutonPause = NO;
- }
- }
- }
- }
- -(void)verifyPauseMenu:(ccTime)dt {
- if (nombrePauses >= 3) {
- if (blockSuprMenuBtn) {
- //effet de sortie fondante alpha
- id actionFadeOut = [CCFadeOut actionWithDuration:0.5];
- id actionMoveDone = [CCCallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)];
- [pauseBtn runAction:[CCSequence actions:actionFadeOut, actionMoveDone, nil]];
- blockSuprMenuBtn = NO;
- }
- }
- }
- -(void)backToMenu:(id)sender {
- NSLog(@"btn menu");
- [[CCDirector sharedDirector] resume];
- //sauvegarder score openFeint
- [OFHighScoreService setHighScore:score forLeaderboard:@"469004" onSuccess:OFDelegate() onFailure:OFDelegate()];
- //effet de sortie fondante alpha
- id actionFadeOut = [CCFadeOut actionWithDuration:0.5];
- id actionMoveDone = [CCCallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)];
- [pauseMenu runAction:[CCSequence actions:actionFadeOut, actionMoveDone, nil]];
- [[CCDirector sharedDirector] pushScene:[CCSplitRowsTransition transitionWithDuration:1 scene:[HelloWorld node]]];
- }
- // on reprend le jeu
- -(void)replayGame:(id)sender {
- [[CCDirector sharedDirector] resume];
- texteMotiv.visible = true;
- //effet de sortie fondante alpha
- id actionFadeOut = [CCFadeOut actionWithDuration:0.5];
- id actionMoveDone = [CCCallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)];
- [pauseMenu runAction:[CCSequence actions:actionFadeOut, actionMoveDone, nil]];
- appuiBoutonPause = YES; // Pour qu'on puisse ré-appuyer sur le bouton pause
- }
- // On libère la mémoire
- -(void)dealloc {
- [super dealloc];
- fond = NULL;
- [fond release];
- fond2 = NULL;
- [fond2 release];
- perso = NULL;
- [perso release];
- soucoupe = NULL;
- [soucoupe release];
- gateau = NULL;
- [gateau release];
- sac = NULL;
- [sac release];
- chaussure = NULL;
- [chaussure release];
- rougeLevres = NULL;
- [rougeLevres release];
- parfum = NULL;
- [parfum release];
- //actions
- [bothActions release];
- [actionMoveDone release];
- }
- @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement