//
//  HangmanViewController.m
//  Hangman
//
//  Created by Rich on 1/25/11.
//  Copyright 2011 Swarthmore College. All rights reserved.
//

#import "HangmanViewController.h"

@implementation HangmanViewController

- (HangmanModel *)model {
	if (!model) {
		model = [[HangmanModel alloc] init];
	}
	return model;
}


- (NSMutableSet *)keys
{
	if (!keys) {
		keys = [[NSMutableSet alloc] init];
	}
	return keys;
}



- (void)won
{
	newGameButton.hidden = NO;
	statusMessage.text = @"You won";
	statusMessage.hidden = NO;		
}

- (void)lost
{
	wordLabel.text = [[self model] giveUp];
	newGameButton.hidden = NO;
	statusMessage.text = @"You lost";
	statusMessage.hidden = NO;	
}

- (IBAction)pressLetter:(UIButton *)sender
{
	NSLog(@"%@", [sender currentTitle]);
	sender.alpha = 0.5;
	[[self keys] addObject:sender];
	[sender setEnabled:NO];
	if ([[sender currentTitle] isEqual:@"?"]) {
		[self lost];
	} else {
	
		NSString* revealed = [[self model] guessLetter:[sender currentTitle]];
		wordLabel.text = revealed;
		
		int numstrikes = [self model].badGuesses;
		for (int i = 0; i < numstrikes; i++) {
			UILabel* strike = [strikes objectAtIndex:i];
			strike.alpha = 1.0;
		}
	
		if ([[self model] won]) {
			[self won];
		} else if ([[self model] lost]) {
			[self lost];
		}
	}
}


- (IBAction)newGame
{
	[[self model] newGame];
	NSString* revealed = [[self model] revealedWord];

	wordLabel.text = revealed;
	
	for (int i = 0; i < [strikes count]; i++) {
		UILabel* strike = [strikes objectAtIndex:i];
		strike.alpha = 0.1;
	}
	newGameButton.hidden = YES;
	statusMessage.hidden = YES;
	for (UIButton* key in keys) {
		key.alpha = 1.0;
		key.enabled = YES;
	}
	
}


/*
// The designated initializer. Override to perform setup that is required before the view is loaded.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
*/

/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/



// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
	wordLabel.text = [self model].revealedWord;
	strikes = [[NSArray alloc] initWithObjects:strike1, strike2, strike3, strike4, strike5, strike6, strike7,
			   strike8,strike9, nil];

	for (UILabel* strike in strikes) {
		strike.alpha = 0.1;
	}
}



/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/

- (void)didReceiveMemoryWarning {
	// Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
	
	// Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
	// Release any retained subviews of the main view.
	// e.g. self.myOutlet = nil;
}


- (void)dealloc {
	[model release];
	[strikes release];
	[keys release];
    [super dealloc];
}

@end
