Skip to content

Commit

Permalink
fix bonus glitch and add info background awesome sauce
Browse files Browse the repository at this point in the history
  • Loading branch information
rantao committed Oct 4, 2012
1 parent bff4c42 commit 77bc0a2
Show file tree
Hide file tree
Showing 3 changed files with 141 additions and 13 deletions.
69 changes: 58 additions & 11 deletions Trifecta/GameBoardView.m
Expand Up @@ -59,7 +59,7 @@ -(void) frameEachCellWithCell:(Cell*) cell {

-(void) touchedAtPoint:(CGPoint) point andEndedMove:(BOOL)didEndMove {
self.touchPoint = point;
int cellAtColumnNumber = floor((point.x / self.frame.size.width) * self.gameViewController.numColumns);
int cellAtColumnNumber = floor((point.x / self.frame.size.width) * self.numColumns);
int cellAtRowNumber = floor(((self.bounds.size.height - point.y) / self.frame.size.height * self.numRows));
if (!(cellAtRowNumber >= [[[self.columns objectAtIndex:cellAtColumnNumber] cells] count])) {
Cell *cell = [[[self.columns objectAtIndex:cellAtColumnNumber] cells] objectAtIndex:cellAtRowNumber];
Expand All @@ -81,7 +81,7 @@ -(void) touchedAtPoint:(CGPoint) point andEndedMove:(BOOL)didEndMove {
-(void) addNewCellWithColor:(UIColor *)color withSize:(double)size
{
self.counter ++;
int columnNumberToAddTo = rand() % self.gameViewController.numColumns;
int columnNumberToAddTo = rand() % self.numColumns;
//check if column is full
Column *columnToAddTo = [self.columns objectAtIndex:columnNumberToAddTo];
if ([columnToAddTo.cells count] < columnToAddTo.numRows) {
Expand Down Expand Up @@ -140,9 +140,49 @@ -(void) calculateScore:(int) totalToDelete {
int scoredPoints = totalToDelete*totalToDelete*100;
self.score += scoredPoints;
if (totalToDelete > 6) {
[self addBonusTime:totalToDelete-6];
if (self.gameViewController.gameType == 0) {
[self addBonusTime:totalToDelete-6];

} else {
[self addScoreBonus:totalToDelete-6];
}
}
}

-(void) addScoreBonus: (int) bonus {
// draw bonus
CATextLayer *bonusLayer = [CATextLayer new];
[bonusLayer setFont:@"04b03"];
[bonusLayer setFontSize:14];
bonusLayer.frame = CGRectMake(0,0, 150, 50);
bonusLayer.contentsScale = [[UIScreen mainScreen] scale];
[bonusLayer setAlignmentMode:kCAAlignmentCenter];
[bonusLayer setString:[NSString stringWithFormat:@"x%d\nscore bonus", bonus]];
[bonusLayer setForegroundColor:[UIColorFromRGB(0xFFffff) CGColor]];
[bonusLayer setBackgroundColor:[[UIColor clearColor] CGColor]];
[bonusLayer setMasksToBounds:YES];
[bonusLayer setShadowRadius:5.0];
//bonusLayer.opacity = 0.0;

CALayer *shadowLayer = [CALayer new];
shadowLayer.frame = CGRectMake(self.touchPoint.x, self.touchPoint.y, 150, 50);
shadowLayer.position = self.touchPoint;
shadowLayer.backgroundColor = [[UIColor clearColor] CGColor];
shadowLayer.shadowColor = [[UIColor blackColor] CGColor];
shadowLayer.shadowOpacity = 0.8;
shadowLayer.shadowOffset = CGSizeMake(0,0);
shadowLayer.shadowRadius = 3;
shadowLayer.zPosition = 1000;

[shadowLayer addSublayer:bonusLayer];
[self.layer addSublayer:shadowLayer];
[self transformLayer:shadowLayer withBonus:bonus];
[self translatePositionWithLayer:shadowLayer];
[self changeOpacityOfLayer:shadowLayer];

self.gameViewController.timePast -= 5 * bonus;


}

-(void) addBonusTime:(int) bonus {
Expand All @@ -158,6 +198,7 @@ -(void) addBonusTime:(int) bonus {
[bonusLayer setBackgroundColor:[[UIColor clearColor] CGColor]];
[bonusLayer setMasksToBounds:YES];
[bonusLayer setShadowRadius:5.0];
//bonusLayer.opacity = 0.0;

CALayer *shadowLayer = [CALayer new];
shadowLayer.frame = CGRectMake(self.touchPoint.x, self.touchPoint.y, 150, 50);
Expand All @@ -184,14 +225,14 @@ -(void)changeOpacityOfLayer:(CALayer *)bonusLayer
{
[CATransaction begin];
CAKeyframeAnimation *changeOpacity = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
[changeOpacity setDuration:2];
[changeOpacity setValues:@[@0.5, @1.0, @0.0]];
animationCompletionBlock theBlock = ^void(void)
{
[bonusLayer removeFromSuperlayer];
};
changeOpacity.delegate = self;
[changeOpacity setValue: theBlock forKey: kAnimationCompletionBlock];
[changeOpacity setDuration:2.1];
[changeOpacity setValues:@[@0.0, @1.0, @0.0]];
// animationCompletionBlock theBlock = ^void(void)
// {
// [bonusLayer removeFromSuperlayer];
// };
// changeOpacity.delegate = self;
// [changeOpacity setValue: theBlock forKey: kAnimationCompletionBlock];
[bonusLayer addAnimation:changeOpacity forKey:@"opacity"];
[CATransaction commit];
}
Expand All @@ -201,6 +242,12 @@ -(void)translatePositionWithLayer: (CALayer *) bonusLayer {
CAKeyframeAnimation *translateLayer = [CAKeyframeAnimation animationWithKeyPath:@"position.y"];
[translateLayer setDuration:2];
[translateLayer setValues:@[[NSNumber numberWithFloat: bonusLayer.position.y], [NSNumber numberWithFloat:self.frame.origin.y]]];
animationCompletionBlock theBlock = ^void(void)
{
[bonusLayer removeFromSuperlayer];
};
translateLayer.delegate = self;
[translateLayer setValue: theBlock forKey: kAnimationCompletionBlock];
[bonusLayer addAnimation:translateLayer forKey:@"position.y"];
[CATransaction commit];
}
Expand Down
2 changes: 2 additions & 0 deletions Trifecta/GameViewController.m
Expand Up @@ -86,6 +86,7 @@ -(void) saveLocationsToUserDefaultsForSize:(int) size withGameType:(int) type wi
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:score forKey:[NSString stringWithFormat:@"%dscore%d",size,type]];
}

-(void) addNewCells {
[self.gameBoard addNewCellWithColor:[self randomColor]withSize:self.gameBoard.frame.size.width / self.numColumns];
}
Expand Down Expand Up @@ -134,6 +135,7 @@ -(void)setUpGame
self.gameBoard.counter = 0;
self.gameBoard.numRows = numRows;
self.gameBoard.gameViewController = self;
self.gameBoard.numColumns = self.numColumns;

[self.view addSubview:self.gameBoard];
int randomSeedNumber = arc4random();
Expand Down
83 changes: 81 additions & 2 deletions Trifecta/InfoViewController.m
Expand Up @@ -7,9 +7,14 @@
//

#import "InfoViewController.h"
#import "GameBoardView.h"
#import "Column.h"
#import "Cell.h"

@interface InfoViewController ()

@property (nonatomic) int numColumns;
@property (nonatomic, strong) GameBoardView* gameBoard;
@property (nonatomic, strong) NSTimer *addCellsTimer;
@end

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
Expand All @@ -31,10 +36,13 @@ - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
[self setUpBackgroundGame];

UILabel *copywrite = [[UILabel alloc] initWithFrame:CGRectMake(20, self.view.frame.size.height/4.0, self.view.frame.size.width - 40, 200.0)];
copywrite.font = [UIFont fontWithName:@"04b03" size:18];
copywrite.backgroundColor = [UIColor clearColor];
copywrite.textColor = UIColorFromRGB(0xFF0095);
copywrite.textColor = UIColorFromRGB(0x000000);
// copywrite.textColor = UIColorFromRGB(0xFF0095);
copywrite.numberOfLines = 7;
copywrite.text = @"Copyright (c) 2012\n\nKris Fields\n&\nRan Tao\n\nin San Francisco";
copywrite.textAlignment = UITextAlignmentCenter;
Expand All @@ -47,7 +55,77 @@ - (void)viewDidLoad
[self.view addSubview:copywrite];
[self.view addSubview:goBack];


}


-(void)setUpBackgroundGame
{
self.numColumns = 40;
double sizeOfCell = self.view.frame.size.width/self.numColumns;
int numRows = self.view.frame.size.height/sizeOfCell;
double boardGameWidth = self.numColumns * sizeOfCell;
double boardGameHeight = numRows * sizeOfCell;
NSMutableArray *tempColumns = [NSMutableArray new];
self.gameBoard = [[GameBoardView alloc] initWithFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, boardGameWidth, boardGameHeight)];
self.gameBoard.counter = 0;
self.gameBoard.numRows = numRows;
self.gameBoard.numColumns = self.numColumns;
//self.gameBoard.gameViewController = self;

[self.view addSubview:self.gameBoard];
int randomSeedNumber = arc4random();
srand(randomSeedNumber);


[self setupCellsTimerWithInterval:0.02];



for (int c=0; c < self.numColumns; c++) {
Column *column = [Column new];
column.columnPosition = c;
column.numRows = numRows;
for (int r=0; r < numRows/8; r++) {
Cell *cell = [[Cell alloc] initWithBoard:self.gameBoard withColor:[self randomColor] withRow:r withColumn:c withSize:self.gameBoard.frame.size.width / self.numColumns];
cell.isFalling = NO;
// [self.gameBoard frameEachCellWithCell:cell];
[column.cells addObject:cell];
}
[tempColumns addObject:column];
}
self.gameBoard.columns = tempColumns;
[self.gameBoard drawGameBoard];
}

-(void) setupCellsTimerWithInterval:(double) interval {
self.addCellsTimer = [NSTimer scheduledTimerWithTimeInterval:interval target:self selector:@selector(addNewCells) userInfo:nil repeats:YES];
}

-(void) addNewCells {
[self.gameBoard addNewCellWithColor:[self randomColor]withSize:self.gameBoard.frame.size.width / self.numColumns];
}

-(UIColor *)randomColor
{
NSArray *arrayOfColors = [NSArray new];
if (self.numColumns < 10) {
arrayOfColors = @[UIColorFromRGB(0xAD00FF), UIColorFromRGB(0xFF0095), UIColorFromRGB(0x0040FF)];
return [arrayOfColors objectAtIndex:rand() % 3];

} else if (self.numColumns < 14){
arrayOfColors = @[UIColorFromRGB(0x12C100), UIColorFromRGB(0xAD00FF), UIColorFromRGB(0xFF0095), UIColorFromRGB(0x0040FF)];
return [arrayOfColors objectAtIndex:rand() % 4];

} else if (self.numColumns < 20){
arrayOfColors = @[UIColorFromRGB(0x12C100), UIColorFromRGB(0xAD00FF), UIColorFromRGB(0xFF0095), UIColorFromRGB(0x0040FF),UIColorFromRGB(0xFFEE00)];
return [arrayOfColors objectAtIndex:rand() % 5];

}else {
arrayOfColors = @[UIColorFromRGB(0xAD00FF), UIColorFromRGB(0xFF0095), UIColorFromRGB(0x0040FF), UIColorFromRGB(0x12C100), UIColorFromRGB(0xFF9000), UIColorFromRGB(0xFFEE00)];
return [arrayOfColors objectAtIndex:rand() % 6];

}

}

Expand All @@ -58,6 +136,7 @@ - (void)viewDidUnload
}

-(void) backButtonPressed:(UIButton *) button {
[self.addCellsTimer invalidate];
[self dismissModalViewControllerAnimated:YES];
}

Expand Down

0 comments on commit 77bc0a2

Please sign in to comment.