King Mode: Fix king placement phase not working correctly with multiple teams in a clan
New king placement phase rules:
* Before the game begins, each team can walk with their king and teleport for free, everything else is disabled
* This special round does not count towards the round counter, like in gfPlaceHog
* TotalRounds is set to -1 during this round, like in gfPlaceHog
Under the old rules, this was much more hacky. The delay of all delay-less weapons was just set to 1
The problem with the old rules was that if any clan had more than 1 team, eventually the weapon delay will time out before all kings have been placed.
/*
* Hedgewars-iOS, a Hedgewars port for iOS devices
* Copyright (c) 2009-2012 Vittorio Giovara <vittorio.giovara@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#import "StatsPageViewController.h"
@implementation StatsPageViewController
@synthesize statsArray;
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return rotationManager(interfaceOrientation);
}
- (void)viewDidLoad {
UITableView *aTableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStyleGrouped];
aTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[aTableView setBackgroundColorForAnyTable:[UIColor clearColor]];
NSString *imgName = (IS_IPAD()) ? @"mediumBackground~ipad.png" : @"smallerBackground~iphone.png";
UIImage *img = [[UIImage alloc] initWithContentsOfFile:imgName];
UIImageView *background = [[UIImageView alloc] initWithImage:img];
background.frame = self.view.frame;
background.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view insertSubview:background atIndex:0];
aTableView.separatorColor = [UIColor darkYellowColor];
aTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
aTableView.delegate = self;
aTableView.dataSource = self;
aTableView.rowHeight = 44;
[self.view addSubview:aTableView];
[super viewDidLoad];
}
#pragma mark - Helpers
- (NSString *)teamNameFromInfo: (NSArray *)info
{
NSString *teamName = [NSString stringWithString:[info objectAtIndex:2]];
for (int i=3; i < [info count]; i++)
{
teamName = [teamName stringByAppendingFormat:@" %@", [info objectAtIndex:i]];
}
return teamName;
}
#pragma mark -
#pragma mark Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 3;
}
- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section {
if (section == 0)
return 1;
else if (section == 1)
return [[self.statsArray objectAtIndex:0] count];
else
return [self.statsArray count] - 2;
}
-(UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier0 = @"Cell0";
NSInteger section = [indexPath section];
NSInteger row = [indexPath row];
NSString *imgName = @"";
NSString *imgPath = ICONS_DIRECTORY();
UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier0];
if (cell == nil)
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier0];
if (section == 0) { // winning team
imgName = @"star";
imgPath = [[NSBundle mainBundle] resourcePath];
cell.textLabel.text = [self.statsArray objectAtIndex:1];
cell.textLabel.textColor = [UIColor lightYellowColor];
} else if (section == 1) { // teams ranking
// color, # kills, teamname
NSArray *info = [[[self.statsArray objectAtIndex:0] objectAtIndex:row] componentsSeparatedByString:@" "];
NSUInteger color = [[info objectAtIndex:0] intValue];
cell.textLabel.textColor = [UIColor colorWithRed:((color >> 16) & 0xFF)/255.0f
green:((color >> 8) & 0xFF)/255.0f
blue:(color & 0xFF)/255.0f
alpha:1.0f];
cell.textLabel.text = [NSString stringWithFormat:@"%d. %@ (%@ %@)", row+1, [self teamNameFromInfo:info], [info objectAtIndex:1], NSLocalizedString(@"kills", nil)];
imgName = [NSString stringWithFormat:@"StatsMedal%d",row+1];
} else if (section == 2) { // general info
imgName = @"iconDamage";
cell.textLabel.text = [self.statsArray objectAtIndex:row + 2];
cell.textLabel.textColor = [UIColor lightYellowColor];
}
NSString *imgString = [[NSString alloc] initWithFormat:@"%@/%@.png",imgPath,imgName];
UIImage *img = [[UIImage alloc] initWithContentsOfFile:imgString];
UIImageView *imgView = [[UIImageView alloc] initWithImage:img];
cell.imageView.image = img;
cell.accessoryView = imgView;
cell.textLabel.textAlignment = NSTextAlignmentCenter;
cell.textLabel.adjustsFontSizeToFitWidth = YES;
cell.backgroundColor = [UIColor blackColor];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}
- (CGFloat)tableView:(UITableView *)aTableView heightForHeaderInSection:(NSInteger)section {
return (section == 0) ? 160 : 40;
}
-(UIView *)tableView:(UITableView *)aTableView viewForHeaderInSection:(NSInteger)section {
if (section == 0) {
UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, aTableView.frame.size.width, 160)];
header.autoresizingMask = UIViewAutoresizingFlexibleWidth;
UIImage *img = [[UIImage alloc] initWithContentsOfFile:@"smallerTitle.png"];
UIImageView *imgView = [[UIImageView alloc] initWithImage:img];
imgView.center = CGPointMake(aTableView.frame.size.width/2, 160/2);
imgView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
[header addSubview:imgView];
return header;
} else
return nil;
}
- (CGFloat)tableView:(UITableView *)aTableView heightForFooterInSection:(NSInteger)section {
return aTableView.rowHeight + 30;
}
-(UIView *)tableView:(UITableView *)aTableView viewForFooterInSection:(NSInteger)section {
if (section == 2) {
UIView *footer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width * 70 / 100, aTableView.rowHeight)];
footer.autoresizingMask = UIViewAutoresizingFlexibleWidth;
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 17, self.view.frame.size.width * 70 / 100, aTableView.rowHeight)
andTitle:NSLocalizedString(@"Done",@"")];
button.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
[button addTarget:self action:@selector(dismissView) forControlEvents:UIControlEventTouchUpInside];
[footer addSubview:button];
return footer;
} else
return nil;
}
#pragma mark -
#pragma mark button delegate
- (void)dismissView {
[[AudioManagerController mainManager] playClickSound];
[self dismissViewControllerAnimated:YES completion:nil];
}
#pragma mark -
#pragma mark Memory management
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
self.statsArray = nil;
}
@end