diff -r 070fdd33ce0d -r 928e2040d34f project_files/HedgewarsMobile/Classes/AmmoMenuViewController.m --- a/project_files/HedgewarsMobile/Classes/AmmoMenuViewController.m Sat Oct 16 19:01:11 2010 +0200 +++ b/project_files/HedgewarsMobile/Classes/AmmoMenuViewController.m Sun Oct 17 17:47:07 2010 +0200 @@ -28,7 +28,7 @@ #define BTNS_PER_ROW 9 @implementation AmmoMenuViewController -@synthesize imagesArray, buttonsArray, isVisible; +@synthesize imagesArray, buttonsArray, nameLabel, extraLabel, captionLabel, isVisible; -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { return rotationManager(interfaceOrientation); @@ -87,6 +87,39 @@ #pragma mark - #pragma mark drawing +-(void) prepareLabels { + int x = 12; + int y = (HW_getNumberOfWeapons()/BTNS_PER_ROW)*44 + 18; + UILabel *name = [[UILabel alloc] initWithFrame:CGRectMake(x, y, 200, 20)]; + name.backgroundColor = [UIColor clearColor]; + name.textColor = UICOLOR_HW_YELLOW_BODER; + name.font = [UIFont boldSystemFontOfSize:[UIFont labelFontSize]]; + self.nameLabel = name; + [self.view addSubview:self.nameLabel]; + [name release]; + + UILabel *caption = [[UILabel alloc] initWithFrame:CGRectMake(x+200, y, 220, 20)]; + caption.backgroundColor = [UIColor clearColor]; + caption.textColor = [UIColor whiteColor]; + caption.font = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]]; + caption.adjustsFontSizeToFitWidth = YES; + caption.minimumFontSize = 8; + self.captionLabel = caption; + [self.view addSubview:self.captionLabel]; + [caption release]; + + UILabel *description = [[UILabel alloc] initWithFrame:CGRectMake(x+2, y+20, 410, 53)]; + description.backgroundColor = [UIColor clearColor]; + description.textColor = [UIColor whiteColor]; + description.font = [UIFont italicSystemFontOfSize:[UIFont systemFontSize]]; + description.adjustsFontSizeToFitWidth = YES; + description.minimumFontSize = 8; + description.numberOfLines = 0; + self.extraLabel = description; + [self.view addSubview:self.extraLabel]; + [description release]; +} + -(void) loadAmmoStuff:(id) object { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSString *str = [NSString stringWithFormat:@"%@/AmmoMenu/Ammos.png",GRAPHICS_DIRECTORY()]; @@ -124,6 +157,7 @@ [button.layer setMasksToBounds:YES]; [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown]; [button addTarget:self action:@selector(buttonReleased:) forControlEvents:UIControlEventTouchUpInside]; + [button addTarget:self action:@selector(buttonCancel:) forControlEvents:UIControlEventTouchUpOutside|UIControlEventTouchCancel]; [button setTitleColor:UICOLOR_HW_YELLOW_TEXT forState:UIControlStateNormal]; button.titleLabel.backgroundColor = [UIColor blackColor]; button.titleLabel.font = [UIFont boldSystemFontOfSize:[UIFont smallSystemFontSize]]; @@ -210,15 +244,38 @@ #pragma mark - #pragma mark user interaction --(void) buttonPressed:(id) sender { +-(void) buttonPressed:(id) sender { UIButton *theButton = (UIButton *)sender; - if (theButton.currentTitle != nil) { - DLog(@"eeee"); - } + if (self.nameLabel == nil || self.extraLabel == nil) + [self prepareLabels]; + + self.nameLabel.text = [NSString stringWithUTF8String:HW_getWeaponNameByIndex(theButton.tag)]; + // description contains a lot of unnecessary stuff, we clean it by removing .|, !| and ?| + NSString *description = [NSString stringWithUTF8String:HW_getWeaponDescriptionByIndex(theButton.tag)]; + NSArray *elements = [description componentsSeparatedByString:@".|"]; + NSArray *purgedElements = [[elements objectAtIndex:0] componentsSeparatedByString:@"!|"]; + NSArray *morePurgedElements = [[purgedElements objectAtIndex:0] componentsSeparatedByString:@"?|"]; + self.extraLabel.text = [[[morePurgedElements objectAtIndex:0] stringByReplacingOccurrencesOfString:@"|" withString:@" "] stringByAppendingString:@"."]; + if (theButton.currentTitle != nil) + self.captionLabel.text = NSLocalizedString(@"This weapon is locked",@""); + else + self.captionLabel.text = [NSString stringWithUTF8String:HW_getWeaponCaptionByIndex(theButton.tag)]; +} + +-(void) buttonCancel:(id) sender { + self.nameLabel.text = nil; + self.extraLabel.text = nil; + self.captionLabel.text = nil; } -(void) buttonReleased:(id) sender { UIButton *theButton = (UIButton *)sender; + if (self.nameLabel == nil || self.extraLabel == nil) + [self prepareLabels]; + + self.nameLabel.text = nil; + self.extraLabel.text = nil; + self.captionLabel.text = nil; if (theButton.currentTitle == nil) { HW_setWeapon(theButton.tag); playSound(@"clickSound"); @@ -267,6 +324,9 @@ -(void) didReceiveMemoryWarning { self.imagesArray = nil; self.buttonsArray = nil; + self.nameLabel = nil; + self.extraLabel = nil; + self.captionLabel = nil; MSG_MEMCLEAN(); [super didReceiveMemoryWarning]; } @@ -275,6 +335,9 @@ [[NSNotificationCenter defaultCenter] removeObserver:self]; self.imagesArray = nil; self.buttonsArray = nil; + self.nameLabel = nil; + self.extraLabel = nil; + self.captionLabel = nil; free(delay); delay = NULL; free(shouldUpdateImage); @@ -284,6 +347,9 @@ } -(void) dealloc { + [nameLabel release]; + [extraLabel release]; + [captionLabel release]; [imagesArray release]; [buttonsArray release]; [super dealloc];