# HG changeset patch # User koda # Date 1278196439 -7200 # Node ID a8ddf681ba7db199c034f5e910f592824f5fe5fb # Parent c28a86f379f6d1fb373a11782e8ad47684adb4c8 initial support for customizing weaponset diff -r c28a86f379f6 -r a8ddf681ba7d project_files/HedgewarsMobile/Classes/CommodityFunctions.h --- a/project_files/HedgewarsMobile/Classes/CommodityFunctions.h Sat Jul 03 15:31:36 2010 +0200 +++ b/project_files/HedgewarsMobile/Classes/CommodityFunctions.h Sun Jul 04 00:33:59 2010 +0200 @@ -37,6 +37,8 @@ #define MSG_MEMCLEAN() DLog(@"has cleaned up some memory"); #define MSG_DIDUNLOAD() DLog(@"unloaded"); +#define CURRENT_AMMOSIZE 46 + void createTeamNamed (NSString *nameWithoutExt); void createWeaponNamed (NSString *nameWithoutExt); void createSchemeNamed (NSString *nameWithoutExt); diff -r c28a86f379f6 -r a8ddf681ba7d project_files/HedgewarsMobile/Classes/CommodityFunctions.m --- a/project_files/HedgewarsMobile/Classes/CommodityFunctions.m Sat Jul 03 15:31:36 2010 +0200 +++ b/project_files/HedgewarsMobile/Classes/CommodityFunctions.m Sun Jul 04 00:33:59 2010 +0200 @@ -54,8 +54,8 @@ } NSDictionary *theWeapon = [[NSDictionary alloc] initWithObjectsAndKeys: + [NSNumber numberWithInt:CURRENT_AMMOSIZE],@"version", @"9391929422199121032235111001201000000211110111",@"ammostore_initialqt", -// rope on itouch @"0000099999000000000000000000000099900000099999",@"ammostore_initialqt", @"0405040541600655546554464776576666666155510111",@"ammostore_probability", @"0000000000000205500000040007004000000000200000",@"ammostore_delay", @"1311110312111111123114111111111111111211111111",@"ammostore_crate", nil]; diff -r c28a86f379f6 -r a8ddf681ba7d project_files/HedgewarsMobile/Classes/GameSetup.m --- a/project_files/HedgewarsMobile/Classes/GameSetup.m Sat Jul 03 15:31:36 2010 +0200 +++ b/project_files/HedgewarsMobile/Classes/GameSetup.m Sun Jul 04 00:33:59 2010 +0200 @@ -98,20 +98,26 @@ NSString *weaponPath = [[NSString alloc] initWithFormat:@"%@/%@",WEAPONS_DIRECTORY(),ammostoreName]; NSDictionary *ammoData = [[NSDictionary alloc] initWithContentsOfFile:weaponPath]; [weaponPath release]; + NSString *update = @""; - NSString *ammloadt = [[NSString alloc] initWithFormat:@"eammloadt %@", [ammoData objectForKey:@"ammostore_initialqt"]]; + // if we're loading an older version of ammos fill the engine message with 0s + int diff = CURRENT_AMMOSIZE - [[ammoData objectForKey:@"version"] intValue]; + if (diff != 0) + update = [NSString stringWithCharacters:(const unichar*)"0000000000000000000000000000000000" length:diff]; + + NSString *ammloadt = [[NSString alloc] initWithFormat:@"eammloadt %@%@", [ammoData objectForKey:@"ammostore_initialqt"], update]; [self sendToEngine: ammloadt]; [ammloadt release]; - NSString *ammprob = [[NSString alloc] initWithFormat:@"eammprob %@", [ammoData objectForKey:@"ammostore_probability"]]; + NSString *ammprob = [[NSString alloc] initWithFormat:@"eammprob %@%@", [ammoData objectForKey:@"ammostore_probability"], update]; [self sendToEngine: ammprob]; [ammprob release]; - NSString *ammdelay = [[NSString alloc] initWithFormat:@"eammdelay %@", [ammoData objectForKey:@"ammostore_delay"]]; + NSString *ammdelay = [[NSString alloc] initWithFormat:@"eammdelay %@%@", [ammoData objectForKey:@"ammostore_delay"], update]; [self sendToEngine: ammdelay]; [ammdelay release]; - NSString *ammreinf = [[NSString alloc] initWithFormat:@"eammreinf %@", [ammoData objectForKey:@"ammostore_crate"]]; + NSString *ammreinf = [[NSString alloc] initWithFormat:@"eammreinf %@%@", [ammoData objectForKey:@"ammostore_crate"], update]; [self sendToEngine: ammreinf]; [ammreinf release]; diff -r c28a86f379f6 -r a8ddf681ba7d project_files/HedgewarsMobile/Classes/MainMenuViewController.m --- a/project_files/HedgewarsMobile/Classes/MainMenuViewController.m Sat Jul 03 15:31:36 2010 +0200 +++ b/project_files/HedgewarsMobile/Classes/MainMenuViewController.m Sun Jul 04 00:33:59 2010 +0200 @@ -94,7 +94,8 @@ [alert release]; [pool release]; - [NSThread exit]; + + // TODO: instead of this useless runtime initialization, check that all ammos remain compatible with engine } #pragma mark - diff -r c28a86f379f6 -r a8ddf681ba7d project_files/HedgewarsMobile/Classes/SingleSchemeViewController.m --- a/project_files/HedgewarsMobile/Classes/SingleSchemeViewController.m Sat Jul 03 15:31:36 2010 +0200 +++ b/project_files/HedgewarsMobile/Classes/SingleSchemeViewController.m Sun Jul 04 00:33:59 2010 +0200 @@ -112,9 +112,9 @@ NSString *schemeFile = [[NSString alloc] initWithFormat:@"%@/%@.plist",SCHEMES_DIRECTORY(),self.title]; NSMutableArray *scheme = [[NSMutableArray alloc] initWithContentsOfFile:schemeFile]; + [schemeFile release]; self.schemeArray = scheme; [scheme release]; - [schemeFile release]; [self.tableView reloadData]; } diff -r c28a86f379f6 -r a8ddf681ba7d project_files/HedgewarsMobile/Classes/SingleWeaponViewController.h --- a/project_files/HedgewarsMobile/Classes/SingleWeaponViewController.h Sat Jul 03 15:31:36 2010 +0200 +++ b/project_files/HedgewarsMobile/Classes/SingleWeaponViewController.h Sun Jul 04 00:33:59 2010 +0200 @@ -10,7 +10,18 @@ @interface SingleWeaponViewController : UITableViewController { - + UIImage *ammoStoreImage; + NSArray *ammoNames; + NSInteger ammoSize; + + char *quantity; + char *probability; + char *delay; + char *crateness; } +@property (nonatomic,retain) UIImage *ammoStoreImage; +@property (nonatomic,retain) NSArray *ammoNames; + + @end diff -r c28a86f379f6 -r a8ddf681ba7d project_files/HedgewarsMobile/Classes/SingleWeaponViewController.m --- a/project_files/HedgewarsMobile/Classes/SingleWeaponViewController.m Sat Jul 03 15:31:36 2010 +0200 +++ b/project_files/HedgewarsMobile/Classes/SingleWeaponViewController.m Sun Jul 04 00:33:59 2010 +0200 @@ -7,143 +7,180 @@ // #import "SingleWeaponViewController.h" - +#import "WeaponCellView.h" +#import "CommodityFunctions.h" +#import "UIImageExtra.h" @implementation SingleWeaponViewController - - -#pragma mark - -#pragma mark Initialization +@synthesize ammoStoreImage, ammoNames; -/* -- (id)initWithStyle:(UITableViewStyle)style { - // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. - if ((self = [super initWithStyle:style])) { - } - return self; +-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { + return rotationManager(interfaceOrientation); } -*/ - #pragma mark - #pragma mark View lifecycle - -/* -- (void)viewDidLoad { +-(void) viewDidLoad { [super viewDidLoad]; + + NSArray *array = [[NSArray alloc] initWithObjects: + NSLocalizedString(@"Grenade",@""), + NSLocalizedString(@"Cluster Bomb",@""), + NSLocalizedString(@"Bazooka",@""), + NSLocalizedString(@"Homing Bee",@""), + NSLocalizedString(@"Shotgun",@""), + NSLocalizedString(@"Pick Hammer",@""), + NSLocalizedString(@"Skip",@""), + NSLocalizedString(@"Rope",@""), + NSLocalizedString(@"Mine",@""), + NSLocalizedString(@"Deagle",@""), + NSLocalizedString(@"Dynamite",@""), + NSLocalizedString(@"Fire Punch",@""), + NSLocalizedString(@"Slash",@""), + NSLocalizedString(@"Baseball bat",@""), + NSLocalizedString(@"Parachute",@""), + NSLocalizedString(@"Air Attack",@""), + NSLocalizedString(@"Mines Attack",@""), + NSLocalizedString(@"Blow Torch",@""), + NSLocalizedString(@"Construction",@""), + NSLocalizedString(@"Teleport",@""), + NSLocalizedString(@"Switch Hedgehog",@""), + NSLocalizedString(@"Mortar",@""), + NSLocalizedString(@"Kamikaze",@""), + NSLocalizedString(@"Cake",@""), + NSLocalizedString(@"Seduction",@""), + NSLocalizedString(@"Watermelon Bomb",@""), + NSLocalizedString(@"Hellish Hand Grenade",@""), + NSLocalizedString(@"Napalm Attack",@""), + NSLocalizedString(@"Drill Rocket",@""), + NSLocalizedString(@"Ballgun",@""), + NSLocalizedString(@"RC Plane",@""), + NSLocalizedString(@"Low Gravity",@""), + NSLocalizedString(@"Extra Damage",@""), + NSLocalizedString(@"Invulnerable",@""), + NSLocalizedString(@"Extra Time",@""), + NSLocalizedString(@"Laser Sight",@""), + NSLocalizedString(@"Vampirism",@""), + NSLocalizedString(@"Sniper Rifle",@""), + NSLocalizedString(@"Flying Saucer",@""), + NSLocalizedString(@"Molotov Cocktail",@""), + NSLocalizedString(@"Birdy",@""), + NSLocalizedString(@"Portable Portal Device",@""), + NSLocalizedString(@"Piano Attack",@""), + NSLocalizedString(@"Old Limburger",@""), + NSLocalizedString(@"Sine Gun",@""), + NSLocalizedString(@"Flamethrower",@""), + nil]; + self.ammoNames = array; + [array release]; - // Uncomment the following line to preserve selection between presentations. - self.clearsSelectionOnViewWillAppear = NO; - - // Uncomment the following line to display an Edit button in the navigation bar for this view controller. - // self.navigationItem.rightBarButtonItem = self.editButtonItem; -} -*/ - -/* -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; + ammoSize = [self.ammoNames count]; + quantity = (char *)malloc(sizeof(char)*ammoSize); + probability = (char *)malloc(sizeof(char)*ammoSize); + delay = (char *)malloc(sizeof(char)*ammoSize); + crateness = (char *)malloc(sizeof(char)*ammoSize); + + NSString *str = [NSString stringWithFormat:@"%@/AmmoMenu/Ammos.png",GRAPHICS_DIRECTORY()]; + UIImage *img = [[UIImage alloc] initWithContentsOfFile:str]; + self.ammoStoreImage = img; + [img release]; + + self.tableView.rowHeight = 75; } -*/ -/* -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; -} -*/ -/* -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; + +-(void) viewWillAppear:(BOOL) animated { + [super viewWillAppear:animated]; + + NSString *ammoFile = [[NSString alloc] initWithFormat:@"%@/%@.plist",WEAPONS_DIRECTORY(),self.title]; + NSDictionary *weapon = [[NSDictionary alloc] initWithContentsOfFile:ammoFile]; + [ammoFile release]; + + const char *tmp1 = [[weapon objectForKey:@"ammostore_initialqt"] UTF8String]; + const char *tmp2 = [[weapon objectForKey:@"ammostore_probability"] UTF8String]; + const char *tmp3 = [[weapon objectForKey:@"ammostore_delay"] UTF8String]; + const char *tmp4 = [[weapon objectForKey:@"ammostore_crate"] UTF8String]; + [weapon release]; + + // if the new weaponset is diffrent from the older we need to update it replacing + // the missing ammos with 0 quantity + int oldlen = strlen(tmp1); + for (int i = 0; i < oldlen; i++) { + quantity[i] = tmp1[i]; + probability[i] = tmp2[i]; + delay[i] = tmp3[i]; + crateness[i] = tmp4[i]; + } + for (int i = oldlen; i < ammoSize; i++) { + quantity[i] = '0'; + probability[i] = '0'; + delay[i] = '0'; + crateness[i] = '0'; + } + + [self.tableView reloadData]; } -*/ -/* -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; + +-(void) viewWillDisappear:(BOOL) animated { + [super viewWillDisappear:animated]; + + NSString *quantityStr = [NSString stringWithUTF8String:quantity]; + NSString *probabilityStr = [NSString stringWithUTF8String:probability]; + NSString *delayStr = [NSString stringWithUTF8String:delay]; + NSString *cratenessStr = [NSString stringWithUTF8String:crateness]; + + NSDictionary *weapon = [[NSDictionary alloc] initWithObjectsAndKeys: + [NSNumber numberWithInt:CURRENT_AMMOSIZE],@"version", + quantityStr,@"ammostore_initialqt", + probabilityStr,@"ammostore_probability", + delayStr,@"ammostore_delay", + cratenessStr,@"ammostore_crate", nil]; + + NSString *ammoFile = [[NSString alloc] initWithFormat:@"%@/%@.plist",WEAPONS_DIRECTORY(),self.title]; + [weapon writeToFile:ammoFile atomically:YES]; + [ammoFile release]; + [weapon release]; } -*/ -/* -// Override to allow orientations other than the default portrait orientation. -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - // Return YES for supported orientations - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} -*/ - #pragma mark - #pragma mark Table view data source - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - // Return the number of sections. - return 0; +-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { + return 1; } -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - // Return the number of rows in the section. - return 0; +-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return ammoSize; } // Customize the appearance of table view cells. -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - +-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; + NSInteger row = [indexPath row]; - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; + WeaponCellView *cell = (WeaponCellView *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; + cell = [[[WeaponCellView alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; } - // Configure the cell... - + int x = ((row*32)/1024)*32; + int y = (row*32)%1024; + + UIImage *img = [[self.ammoStoreImage cutAt:CGRectMake(x, y, 32, 32)] makeRoundCornersOfSize:CGSizeMake(7, 7)]; + cell.weaponIcon.image = img; + cell.weaponName.text = [ammoNames objectAtIndex:row]; + + cell.initialQt.titleLabel.text = [NSString stringWithFormat:@"%c",quantity[row]]; + cell.probability.titleLabel.text = [NSString stringWithFormat:@"%c",probability[row]]; + cell.delay.titleLabel.text = [NSString stringWithFormat:@"%c",delay[row]]; + cell.initialQt.titleLabel.text = [NSString stringWithFormat:@"%c",crateness[row]]; return cell; } -/* -// Override to support conditional editing of the table view. -- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { - // Return NO if you do not want the specified item to be editable. - return YES; -} -*/ - - -/* -// Override to support editing the table view. -- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { - - if (editingStyle == UITableViewCellEditingStyleDelete) { - // Delete the row from the data source - [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES]; - } - else if (editingStyle == UITableViewCellEditingStyleInsert) { - // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view - } -} -*/ - - -/* -// Override to support rearranging the table view. -- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { -} -*/ - - -/* -// Override to support conditional rearranging of the table view. -- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { - // Return NO if you do not want the item to be re-orderable. - return YES; -} -*/ - - #pragma mark - #pragma mark Table view delegate - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // Navigation logic may go here. Create and push another view controller. /* <#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil]; @@ -157,21 +194,23 @@ #pragma mark - #pragma mark Memory management - -- (void)didReceiveMemoryWarning { +-(void) didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; - // Relinquish ownership any cached data, images, etc that aren't in use. } -- (void)viewDidUnload { - // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand. - // For example: self.myOutlet = nil; +-(void) viewDidUnload { + free(quantity); + free(probability); + free(delay); + free(crateness); + [super viewDidUnload]; + MSG_DIDUNLOAD(); } -- (void)dealloc { +-(void) dealloc { [super dealloc]; } diff -r c28a86f379f6 -r a8ddf681ba7d project_files/HedgewarsMobile/Classes/UIImageExtra.h --- a/project_files/HedgewarsMobile/Classes/UIImageExtra.h Sat Jul 03 15:31:36 2010 +0200 +++ b/project_files/HedgewarsMobile/Classes/UIImageExtra.h Sun Jul 04 00:33:59 2010 +0200 @@ -15,6 +15,7 @@ -(UIImage *)mergeWith:(UIImage *)secondImage atPoint:(CGPoint) secondImagePoint; -(UIImage *)mergeWith:(UIImage *)secondImage atPoint:(CGPoint) secondImagePoint atSize:(CGSize) resultingSize; -(id) initWithContentsOfFile:(NSString *)path andCutAt:(CGRect) rect; +-(UIImage *)cutAt:(CGRect) rect; -(UIImage *)convertToGrayScale; -(UIImage *)maskImageWith:(UIImage *)maskImage; -(UIImage *)makeRoundCornersOfSize:(CGSize) sizewh; diff -r c28a86f379f6 -r a8ddf681ba7d project_files/HedgewarsMobile/Classes/UIImageExtra.m --- a/project_files/HedgewarsMobile/Classes/UIImageExtra.m Sat Jul 03 15:31:36 2010 +0200 +++ b/project_files/HedgewarsMobile/Classes/UIImageExtra.m Sun Jul 04 00:33:59 2010 +0200 @@ -61,16 +61,16 @@ if (nil != image) { // get its CGImage representation with a give size - CGImageRef cgImgage = CGImageCreateWithImageInRect([image CGImage], rect); + CGImageRef cgImage = CGImageCreateWithImageInRect([image CGImage], rect); // clean memory [image release]; // create a UIImage from the CGImage (memory must be allocated already) - UIImage *sprite = [self initWithCGImage:cgImgage]; + UIImage *sprite = [self initWithCGImage:cgImage]; // clean memory - CGImageRelease(cgImgage); + CGImageRelease(cgImage); // return resulting image return sprite; @@ -80,6 +80,15 @@ } } +-(UIImage *)cutAt:(CGRect) rect { + CGImageRef cgImage = CGImageCreateWithImageInRect([self CGImage], rect); + + UIImage *res = [UIImage imageWithCGImage:cgImage]; + CGImageRelease(cgImage); + + return res; +} + -(UIImage *)convertToGrayScale { // Create image rectangle with current image width/height CGRect imageRect = CGRectMake(0, 0, self.size.width, self.size.height); diff -r c28a86f379f6 -r a8ddf681ba7d project_files/HedgewarsMobile/Classes/WeaponCellView.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/HedgewarsMobile/Classes/WeaponCellView.h Sun Jul 04 00:33:59 2010 +0200 @@ -0,0 +1,30 @@ +// +// WeaponCellView.h +// Hedgewars +// +// Created by Vittorio on 03/07/10. +// Copyright 2010 __MyCompanyName__. All rights reserved. +// + +#import + + +@interface WeaponCellView : UITableViewCell { + UILabel *weaponName; + UIImageView *weaponIcon; + + UIButton *initialQt; + UIButton *probability; + UIButton *delay; + UIButton *crateQt; +} + +@property (nonatomic,retain) UILabel *weaponName; +@property (nonatomic,retain) UIImageView *weaponIcon; + +@property (nonatomic,retain) UIButton *initialQt; +@property (nonatomic,retain) UIButton *probability; +@property (nonatomic,retain) UIButton *delay; +@property (nonatomic,retain) UIButton *crateQt; + +@end diff -r c28a86f379f6 -r a8ddf681ba7d project_files/HedgewarsMobile/Classes/WeaponCellView.m --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/HedgewarsMobile/Classes/WeaponCellView.m Sun Jul 04 00:33:59 2010 +0200 @@ -0,0 +1,95 @@ +// +// WeaponCellView.m +// Hedgewars +// +// Created by Vittorio on 03/07/10. +// Copyright 2010 __MyCompanyName__. All rights reserved. +// + +#import "WeaponCellView.h" +#import "CommodityFunctions.h" + +@implementation WeaponCellView +@synthesize weaponName, weaponIcon, initialQt, probability, delay, crateQt; + +-(id) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) { + // Initialization code + weaponName = [[UILabel alloc] init]; + weaponName.backgroundColor = [UIColor clearColor]; + weaponName.font = [UIFont boldSystemFontOfSize:[UIFont labelFontSize]]; + weaponIcon = [[UIImageView alloc] init]; + + NSString *imgStr; + initialQt = [[UIButton alloc] init]; + imgStr = [NSString stringWithFormat:@"%@/iconAmmo.png",BTN_DIRECTORY()]; + [initialQt setBackgroundImage:[UIImage imageWithContentsOfFile:imgStr] forState:UIControlStateNormal]; + + probability = [[UIButton alloc] init]; + imgStr = [NSString stringWithFormat:@"%@/iconDamage.png",BTN_DIRECTORY()]; + [probability setBackgroundImage:[UIImage imageWithContentsOfFile:imgStr] forState:UIControlStateNormal]; + + delay = [[UIButton alloc] init]; + imgStr = [NSString stringWithFormat:@"%@/iconTime.png",BTN_DIRECTORY()]; + [delay setBackgroundImage:[UIImage imageWithContentsOfFile:imgStr] forState:UIControlStateNormal]; + + crateQt = [[UIButton alloc] init]; + imgStr = [NSString stringWithFormat:@"%@/iconBox.png",BTN_DIRECTORY()]; + [crateQt setBackgroundImage:[UIImage imageWithContentsOfFile:imgStr] forState:UIControlStateNormal]; + + [self.contentView addSubview:weaponName]; + [self.contentView addSubview:weaponIcon]; + [self.contentView addSubview:initialQt]; + [self.contentView addSubview:probability]; + [self.contentView addSubview:delay]; + [self.contentView addSubview:crateQt]; + } + return self; +} + +-(void) layoutSubviews { + [super layoutSubviews]; + + CGRect contentRect = self.contentView.bounds; + CGFloat boundsX = contentRect.origin.x; + CGRect frame; + + frame = CGRectMake(boundsX+10, 5, 32, 32); + weaponIcon.frame = frame; + + frame = CGRectMake(boundsX+50, 9, 200, 25); + weaponName.frame = frame; + + // second line + frame = CGRectMake(boundsX+20, 40, 32, 32); + initialQt.frame = frame; + + frame = CGRectMake(boundsX+60, 40, 32, 32); + probability.frame = frame; + + frame = CGRectMake(boundsX+100, 40, 32, 32); + delay.frame = frame; + + frame = CGRectMake(boundsX+140, 40, 32, 32); + crateQt.frame = frame; +} + +/* +-(void) setSelected:(BOOL)selected animated:(BOOL)animated { + [super setSelected:selected animated:animated]; + // Configure the view for the selected state +} +*/ + +-(void) dealloc { + [weaponName release]; + [weaponIcon release]; + [initialQt release]; + [probability release]; + [delay release]; + [crateQt release]; + [super dealloc]; +} + + +@end diff -r c28a86f379f6 -r a8ddf681ba7d project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj --- a/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Sat Jul 03 15:31:36 2010 +0200 +++ b/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Sun Jul 04 00:33:59 2010 +0200 @@ -152,6 +152,7 @@ 61F9040F11DF59D10068B24D /* netplayButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F9040D11DF59D10068B24D /* netplayButton.png */; }; 61F9041411DF5E9B0068B24D /* toolbarBackground.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F9041311DF5E9B0068B24D /* toolbarBackground.png */; }; 61F9043A11DF64E20068B24D /* bluebox.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F9043911DF64E20068B24D /* bluebox.png */; }; + 61F904D711DF7DA30068B24D /* WeaponCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 61F904D611DF7DA30068B24D /* WeaponCellView.m */; }; 922F64900F10F53100DC6EC0 /* libfpc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 928301170F10CAFC00CC5A3C /* libfpc.a */; }; /* End PBXBuildFile section */ @@ -399,6 +400,8 @@ 61F9040D11DF59D10068B24D /* netplayButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = netplayButton.png; path = "../../../../Desktop/ForKoda/Main Menu/netplayButton.png"; sourceTree = SOURCE_ROOT; }; 61F9041311DF5E9B0068B24D /* toolbarBackground.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = toolbarBackground.png; path = "Resources/Frontend-iPad/toolbarBackground.png"; sourceTree = ""; }; 61F9043911DF64E20068B24D /* bluebox.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bluebox.png; path = "Resources/Frontend-iPad/bluebox.png"; sourceTree = ""; }; + 61F904D511DF7DA30068B24D /* WeaponCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeaponCellView.h; sourceTree = ""; }; + 61F904D611DF7DA30068B24D /* WeaponCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WeaponCellView.m; sourceTree = ""; }; 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 928301170F10CAFC00CC5A3C /* libfpc.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libfpc.a; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -618,6 +621,8 @@ 6163EE7D11CC2600001C0453 /* SingleWeaponViewController.m */, 616591FE11CA9BA200D6E256 /* SingleSchemeViewController.h */, 616591FF11CA9BA200D6E256 /* SingleSchemeViewController.m */, + 61F904D511DF7DA30068B24D /* WeaponCellView.h */, + 61F904D611DF7DA30068B24D /* WeaponCellView.m */, ); name = "Second Level"; sourceTree = ""; @@ -1028,7 +1033,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "#copy new stuff over old stuff\nrm -rf ${PROJECT_DIR}/Data\ncp -R ${PROJECT_DIR}/../../share/hedgewars/Data ${PROJECT_DIR}/Data\n\n#copy some files from QTfrontend/res\nmkdir ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/btn*.png ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/icon*.png ${PROJECT_DIR}/Data/Graphics/Btn\ncp -R ${PROJECT_DIR}/../../QTfrontend/res/botlevels ${PROJECT_DIR}/Data/Graphics/Hedgehog/botlevels\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hedgehog/botlevels/.svn*\n\n#delete all CMakeLists.txt and image source files\nfind ${PROJECT_DIR}/Data -name CMakeLists.txt -delete\nfind ${PROJECT_DIR}/Data -name *.svg -delete\nfind ${PROJECT_DIR}/Data -name *.sifz -delete\nfind ${PROJECT_DIR}/Data -name *.xcf -delete\n\n#delete desktop frontend translation\nrm -rf ${PROJECT_DIR}/Data/Locale/hedgewars_*\n\n#delete dummy maps\nrm -rf ${PROJECT_DIR}/Data/Maps/{test*,KnockBall,Ruler,BasketBall}\n\n#the following ones must be removed when their support is implemented\n\n#delete some voices\nrm -rf ${PROJECT_DIR}/Data/Sounds/voices/{Classic,British,Mobster,Pirate,Robot,Russian,Singer,Surfer}\n\n#delete all names\nrm -rf ${PROJECT_DIR}/Data/Names/\n\n#delete all missions\nrm -rf ${PROJECT_DIR}/Data/Missions/\n\n#delete all reserved hats\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/Reserved/"; + shellScript = "#copy new stuff over old stuff\nrm -rf ${PROJECT_DIR}/Data\ncp -R ${PROJECT_DIR}/../../share/hedgewars/Data ${PROJECT_DIR}/Data\n\n#copy some files from QTfrontend/res\nmkdir ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/btn*.png ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/ammopic.png ${PROJECT_DIR}/Data/Graphics/Btn/iconAmmo.png\ncp ${PROJECT_DIR}/../../QTfrontend/res/icon*.png ${PROJECT_DIR}/Data/Graphics/Btn\ncp -R ${PROJECT_DIR}/../../QTfrontend/res/botlevels ${PROJECT_DIR}/Data/Graphics/Hedgehog/botlevels\n\n#delete all CMakeLists.txt and image source files\nfind ${PROJECT_DIR}/Data -name CMakeLists.txt -delete\nfind ${PROJECT_DIR}/Data -name *.svg -delete\nfind ${PROJECT_DIR}/Data -name *.sifz -delete\nfind ${PROJECT_DIR}/Data -name *.xcf -delete\n\n#delete desktop frontend translation\nrm -rf ${PROJECT_DIR}/Data/Locale/hedgewars_*\n\n#delete dummy maps\nrm -rf ${PROJECT_DIR}/Data/Maps/{test*,KnockBall,Ruler,BasketBall}\n\n#the following ones must be removed when their support is implemented\n\n#delete some voices\nrm -rf ${PROJECT_DIR}/Data/Sounds/voices/{Classic,British,Mobster,Pirate,Robot,Russian,Singer,Surfer}\n\n#delete all names\nrm -rf ${PROJECT_DIR}/Data/Names/\n\n#delete all missions\nrm -rf ${PROJECT_DIR}/Data/Missions/\n\n#delete all reserved hats\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/Reserved/"; showEnvVarsInLog = 0; }; 9283011B0F10CB2D00CC5A3C /* Build libfpc.a */ = { @@ -1133,6 +1138,7 @@ 6165929E11CA9E2F00D6E256 /* SDL_uikitappdelegate.m in Sources */, 6163EE7E11CC2600001C0453 /* SingleWeaponViewController.m in Sources */, 61E1F4F811D004240016A5AA /* adler32.pas in Sources */, + 61F904D711DF7DA30068B24D /* WeaponCellView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };