# HG changeset patch # User koda # Date 1328453546 -3600 # Node ID e049b5bb0ad18a1100e1e7520a11ce23e071e389 # Parent 6bf169f1e97c6089690bc0da86c4a7029e8c4bd3 BUUUUURN OBJC AMMOMENU BUUUURNhg diff! (on a separate note, this reduces the codesize by ~37k) diff -r 6bf169f1e97c -r e049b5bb0ad1 hedgewars/uAmmos.pas --- a/hedgewars/uAmmos.pas Sat Feb 04 23:06:22 2012 +0100 +++ b/hedgewars/uAmmos.pas Sun Feb 05 15:52:26 2012 +0100 @@ -49,7 +49,7 @@ var StoreCnt: Longword; implementation -uses uLocale, uMobile, uVariables, uCommands, uUtils, uCaptions, uDebug; +uses uLocale, uVariables, uCommands, uUtils, uCaptions, uDebug; type TAmmoCounts = array[TAmmoType] of Longword; var StoresList: array[0..Pred(cMaxHHs)] of PHHAmmo; @@ -273,7 +273,6 @@ end end end; -uMobile.AmmoUpdate; end; function HHHasAmmo(var Hedgehog: THedgehog; Ammo: TAmmoType): boolean; diff -r 6bf169f1e97c -r e049b5bb0ad1 hedgewars/uMobile.pas --- a/hedgewars/uMobile.pas Sat Feb 04 23:06:22 2012 +0100 +++ b/hedgewars/uMobile.pas Sun Feb 05 15:52:26 2012 +0100 @@ -27,7 +27,6 @@ procedure startLoadingIndicator; cdecl; external; procedure stopLoadingIndicator; cdecl; external; procedure saveFinishedSynching; cdecl; external; -procedure updateVisualsNewTurn; cdecl; external; function isApplePhone: Boolean; cdecl; external; procedure AudioServicesPlaySystemSound(num: LongInt); cdecl; external; {$ENDIF} @@ -36,7 +35,6 @@ procedure GameLoading; inline; procedure GameLoaded; inline; -procedure AmmoUpdate; // do not inline procedure NewTurnBeginning; inline; procedure SaveLoadingEnded; inline; @@ -88,21 +86,11 @@ {$ENDIF} end; -procedure AmmoUpdate; // do not inline -begin -{$IFDEF IPHONEOS} - if (CurrentTeam = nil) or (CurrentTeam^.ExtDriven) or (CurrentTeam^.Hedgehogs[0].BotLevel <> 0) then - exit(); // the other way around throws a compiler error - updateVisualsNewTurn(); -{$ENDIF} -end; - procedure NewTurnBeginning; inline; begin {$IFDEF IPHONEOS} clearView(); {$ENDIF} - AmmoUpdate(); end; procedure SaveLoadingEnded; inline; diff -r 6bf169f1e97c -r e049b5bb0ad1 hedgewars/uStore.pas --- a/hedgewars/uStore.pas Sat Feb 04 23:06:22 2012 +0100 +++ b/hedgewars/uStore.pas Sun Feb 05 15:52:26 2012 +0100 @@ -1055,18 +1055,14 @@ // these values in x and y make the window appear in the center x:= SDL_WINDOWPOS_CENTERED_MASK; y:= SDL_WINDOWPOS_CENTERED_MASK; - flags:= SDL_WINDOW_OPENGL or SDL_WINDOW_SHOWN; + // SDL_WINDOW_RESIZABLE makes the window respond to rotation events on mobile devices + flags:= SDL_WINDOW_OPENGL or SDL_WINDOW_SHOWN or SDL_WINDOW_RESIZABLE; {$IFDEF MOBILE} - // make the sdl window appear on the second monitor when present - x:= x or (SDL_GetNumVideoDisplays() - 1); - y:= y or (SDL_GetNumVideoDisplays() - 1); - if isPhone() then SDL_SetHint('SDL_IOS_ORIENTATIONS','LandscapeLeft LandscapeRight'); - - // on mobile the SDL_WINDOW_RESIZABLE makes the window respond to rotation events - flags:= flags or SDL_WINDOW_BORDERLESS or SDL_WINDOW_RESIZABLE; + // no need for borders on mobile devices + flags:= flags or SDL_WINDOW_BORDERLESS; {$ENDIF} if SDLwindow = nil then diff -r 6bf169f1e97c -r e049b5bb0ad1 project_files/HedgewarsMobile/Classes/AmmoMenuViewController.h --- a/project_files/HedgewarsMobile/Classes/AmmoMenuViewController.h Sat Feb 04 23:06:22 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -/* - * Hedgewars-iOS, a Hedgewars port for iOS devices - * Copyright (c) 2009-2011 Vittorio Giovara - * - * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * File created on 03/10/2010. - */ - - -#import - - -@interface AmmoMenuViewController : UIViewController { - NSArray *buttonsArray; - NSArray *imagesArray; - - UILabel *nameLabel; - UILabel *extraLabel; - UILabel *captionLabel; - - uint8_t *delay; - BOOL *shouldUpdateImage; - CGPoint currentPoint; - CGPoint placingPoint; - BOOL isVisible; -} - -@property (retain) NSArray *buttonsArray; -@property (retain) NSArray *imagesArray; -@property (nonatomic,retain) UILabel *nameLabel; -@property (nonatomic,retain) UILabel *extraLabel; -@property (nonatomic,retain) UILabel *captionLabel; -@property (assign) BOOL isVisible; - --(void) buttonPressed:(id) sender; --(void) buttonReleased:(id) sender; --(void) buttonCancelled:(id) sender; --(void) appearInView:(UIView *)container; --(void) disappear; --(void) updateAmmoVisuals; --(void) loadLabels; --(void) loadAmmoStuff:(id) object; - -@end diff -r 6bf169f1e97c -r e049b5bb0ad1 project_files/HedgewarsMobile/Classes/AmmoMenuViewController.m --- a/project_files/HedgewarsMobile/Classes/AmmoMenuViewController.m Sat Feb 04 23:06:22 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,390 +0,0 @@ -/* - * Hedgewars-iOS, a Hedgewars port for iOS devices - * Copyright (c) 2009-2011 Vittorio Giovara - * - * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * File created on 03/10/2010. - */ - - -#import "AmmoMenuViewController.h" -#import - - -#define BTNS_PER_ROW 9 -#define DEFAULT_DESCRIPTION IS_IPAD() ? \ - NSLocalizedString(@"Hold your finger on a weapon to see what it does.\nYou can move this window anywhere on the screen.",@"") : \ - NSLocalizedString(@"Hold your finger on a weapon to see what it does.\nTap anywhere to dismiss.",@"") - -@implementation AmmoMenuViewController -@synthesize imagesArray, buttonsArray, nameLabel, extraLabel, captionLabel, isVisible; - --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { - return rotationManager(interfaceOrientation); -} - -#pragma mark - -#pragma mark view handling --(void) viewDidLoad { - self.view.frame = CGRectMake(0, 0, 480, 320); - self.view.backgroundColor = [UIColor blackColor]; - self.view.layer.borderColor = [[UIColor whiteColor] CGColor]; - self.view.layer.borderWidth = 1.3f; - [self.view.layer setCornerRadius:10]; - [self.view.layer setMasksToBounds:YES]; - self.view.autoresizingMask = UIViewAutoresizingNone; - placingPoint = CGPointMake(-1, -1); - - self.isVisible = NO; - delay = (uint8_t *)calloc(HW_getNumberOfWeapons(), sizeof(uint8_t)); - HW_getAmmoDelays(delay); - - shouldUpdateImage = (BOOL *)calloc(HW_getNumberOfWeapons(), sizeof(BOOL)); - - [super viewDidLoad]; -} - --(void) viewWillAppear:(BOOL)animated { - [self updateAmmoVisuals]; - [super viewWillAppear:animated]; -} - --(void) appearInView:(UIView *)container { - [self viewWillAppear:YES]; - [container addSubview:self.view]; - - if (placingPoint.x == -1 || placingPoint.y == -1) - placingPoint = container.center; - self.view.center = placingPoint; - - self.isVisible = YES; - if (IS_IPAD() == NO) - HW_pause(); -} - --(void) disappear { - if (self.isVisible) - [self.view removeFromSuperview]; - self.isVisible = NO; - placingPoint = self.view.center; - if (IS_IPAD() == NO) - HW_pauseToggle(); -} - -#pragma mark - -#pragma mark drawing --(void) loadLabels { - 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 darkYellowColor]; - 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, self.view.frame.size.height-50, 415, 53)]; - description.backgroundColor = [UIColor clearColor]; - description.textColor = [UIColor whiteColor]; - description.text = DEFAULT_DESCRIPTION; - 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()]; - UIImage *ammoStoreImage = [[UIImage alloc] initWithContentsOfFile:str]; - CGFloat theScale = [[UIScreen mainScreen] safeScale]; - - NSMutableArray *imgs = [[NSMutableArray alloc] initWithCapacity:HW_getNumberOfWeapons()]; - NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:HW_getNumberOfWeapons()]; - int i, j, e; - for (i = 0, j = 0, e = 0; i < HW_getNumberOfWeapons(); i++) { - int x, y; - float w, radius; - - // move utilities aside and make 'em rounded - if (HW_isWeaponAnEffect(i)) { - x = 432; - y = 20 + 48*e++; - w = 1.5; - radius = 22; - } else { - x = 10+(j%BTNS_PER_ROW)*44; - y = 10+(j/BTNS_PER_ROW)*44; - if (j / BTNS_PER_ROW % 2 != 0) - x += 20; - w = 1; - radius = 6; - j++; - } - - UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; - button.frame = CGRectMake(x, y, 40, 40); - button.tag = i; - button.layer.borderColor = [[UIColor lightYellowColor] CGColor]; - button.layer.borderWidth = w; - [button.layer setCornerRadius:radius]; - [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(buttonCancelled:) forControlEvents:UIControlEventTouchUpOutside|UIControlEventTouchCancel]; - [button setTitleColor:[UIColor lightYellowColor] forState:UIControlStateNormal]; - button.titleLabel.backgroundColor = [UIColor blackColor]; - button.titleLabel.font = [UIFont boldSystemFontOfSize:[UIFont smallSystemFontSize]]; - [button.titleLabel.layer setCornerRadius:3]; - [button.titleLabel.layer setMasksToBounds:YES]; - button.titleLabel.layer.borderColor = [[UIColor whiteColor] CGColor]; - button.titleLabel.layer.borderWidth = 1; - [self.view addSubview:button]; - [array addObject:button]; - - int size = 32 * theScale; - int x_src = ((i*size)/(int)(ammoStoreImage.size.height * theScale))*size; - int y_src = (i*size)%(int)(ammoStoreImage.size.height * theScale); - UIImage *img = [ammoStoreImage cutAt:CGRectMake(x_src, y_src, size, size)]; - [imgs addObject:img]; - } - [self performSelectorOnMainThread:@selector(setButtonsArray:) withObject:array waitUntilDone:NO]; - [array release]; - - [self performSelectorOnMainThread:@selector(setImagesArray:) withObject:imgs waitUntilDone:NO]; - [imgs release]; - [ammoStoreImage release]; - - [self performSelectorOnMainThread:@selector(loadLabels) withObject:nil waitUntilDone:NO]; - - [self performSelectorOnMainThread:@selector(updateAmmoVisuals) withObject:nil waitUntilDone:YES]; - UIActivityIndicatorView *spinner = (UIActivityIndicatorView *)object; - [spinner stopAnimating]; - [pool drain]; -} - --(void) updateAmmoVisuals { - if (self.buttonsArray == nil || self.imagesArray == nil) { - UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; - spinner.hidesWhenStopped = YES; - spinner.center = self.view.center; - [spinner startAnimating]; - [self.view addSubview:spinner]; - [NSThread detachNewThreadSelector:@selector(loadAmmoStuff:) toTarget:self withObject:spinner]; - [spinner release]; - return; - } - - int *loadout = (int *)calloc(HW_getNumberOfWeapons(), sizeof(int)); - int res = HW_getAmmoCounts(loadout); - int turns = HW_getTurnsForCurrentTeam(); - - if (res == 0) { - self.view.userInteractionEnabled = YES; - - for (int i = 0; i < HW_getNumberOfWeapons(); i++) { - UIButton *button = [self.buttonsArray objectAtIndex:i]; - if (loadout[i] > 0) { - if (delay[i]-turns >= 0) { - button.layer.borderColor = [[UIColor lightGrayColor] CGColor]; - [button setTitle:[NSString stringWithFormat:@" %d ",delay[i]-turns+1] forState:UIControlStateNormal]; - if (button.currentBackgroundImage == nil || shouldUpdateImage[i] == NO) { - UIImage *img = [self.imagesArray objectAtIndex:i]; - [button setBackgroundImage:[img convertToGrayScale] forState:UIControlStateNormal]; - shouldUpdateImage[i] = YES; - } - } else { - button.layer.borderColor = [[UIColor lightYellowColor] CGColor]; - [button setTitle:nil forState:UIControlStateNormal]; - if (button.currentBackgroundImage == nil || shouldUpdateImage[i] == YES) { - UIImage *img = [self.imagesArray objectAtIndex:i]; - [button setBackgroundImage:img forState:UIControlStateNormal]; - shouldUpdateImage[i] = NO; - } - } - button.enabled = YES; - } else { - if (button.enabled == YES) - [button setBackgroundImage:nil forState:UIControlStateNormal]; - button.layer.borderColor = [[UIColor darkGrayColor] CGColor]; - button.enabled = NO; - shouldUpdateImage[i] = NO; - } - } - } else { - self.view.userInteractionEnabled = NO; - } - - free(loadout); - loadout = NULL; -} - -#pragma mark - -#pragma mark user interaction --(void) buttonPressed:(id) sender { - UIButton *theButton = (UIButton *)sender; - if (self.nameLabel == nil || self.extraLabel == nil) - [self loadLabels]; - - 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)]; - - self.nameLabel.backgroundColor = [UIColor blackColor]; - self.captionLabel.backgroundColor = [UIColor blackColor]; - self.extraLabel.backgroundColor = [UIColor blackColor]; - - int y, x = 8; - // display labels on top for lower buttons - if (theButton.tag > 41) - y = 5; - else - y = (HW_getNumberOfWeapons()/BTNS_PER_ROW)*40; - - self.nameLabel.frame = CGRectMake(x, y, 200, 20); - self.captionLabel.frame = CGRectMake(x+200, y, 220, 20); - self.extraLabel.frame = CGRectMake(x+2, y+20, 415, 53); -} - --(void) buttonCancelled:(id) sender { - self.nameLabel.text = nil; - self.extraLabel.text = nil; - self.captionLabel.text = nil; - self.extraLabel.backgroundColor = [UIColor clearColor]; - self.captionLabel.backgroundColor = [UIColor clearColor]; - self.nameLabel.backgroundColor = [UIColor clearColor]; -} - --(void) buttonReleased:(id) sender { - UIButton *theButton = (UIButton *)sender; - if (self.nameLabel == nil || self.extraLabel == nil) - [self loadLabels]; - - if (theButton.currentTitle == nil) { - HW_setWeapon(theButton.tag); - [AudioManagerController playClickSound]; - if (IS_DUALHEAD() == NO) - [self disappear]; - } - [self buttonCancelled:sender]; -} - --(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - NSSet *allTouches = [event allTouches]; - - if (IS_IPAD() && [touches count] == 1) { - self.view.layer.borderWidth = 3.5; - currentPoint = [[[allTouches allObjects] objectAtIndex:0] locationInView:self.view]; - } - - if (IS_IPAD() == NO) - [self disappear]; -} - --(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { - self.view.layer.borderWidth = 1.3; -} - -// better window dragging implementation by -// http://iphonedevelopertips.com/graphics/drag-an-image-within-the-bounds-of-superview.html --(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { - if (IS_IPAD() && [touches count] == 1) { - // Get active location upon move - CGPoint activePoint = [[touches anyObject] locationInView:self.view]; - - // Determine new point based on where the touch is now located - CGPoint newPoint = CGPointMake(self.view.center.x + (activePoint.x - currentPoint.x), - self.view.center.y + (activePoint.y - currentPoint.y)); - - // Make sure we stay within the bounds of the parent view - float midPointX = CGRectGetMidX(self.view.bounds); - if (newPoint.x > self.view.superview.bounds.size.width - midPointX) - newPoint.x = self.view.superview.bounds.size.width - midPointX; - else if (newPoint.x < midPointX) - newPoint.x = midPointX; - - float midPointY = CGRectGetMidY(self.view.bounds); - if (newPoint.y > self.view.superview.bounds.size.height - midPointY) - newPoint.y = self.view.superview.bounds.size.height - midPointY; - else if (newPoint.y < midPointY) - newPoint.y = midPointY; - - self.view.center = newPoint; - } -} - --(void) touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { - [self touchesEnded:touches withEvent:event]; -} - -#pragma mark - -#pragma mark memory --(void) didReceiveMemoryWarning { - self.imagesArray = nil; - if (self.isVisible == NO) - self.buttonsArray = nil; - self.nameLabel = nil; - self.extraLabel = nil; - self.captionLabel = nil; - MSG_MEMCLEAN(); - [super didReceiveMemoryWarning]; -} - --(void) viewDidUnload { - self.imagesArray = nil; - self.buttonsArray = nil; - self.nameLabel = nil; - self.extraLabel = nil; - self.captionLabel = nil; - free(delay); - delay = NULL; - free(shouldUpdateImage); - shouldUpdateImage = NULL; - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} - --(void) dealloc { - releaseAndNil(nameLabel); - releaseAndNil(extraLabel); - releaseAndNil(captionLabel); - releaseAndNil(imagesArray); - releaseAndNil(buttonsArray); - [super dealloc]; -} - -@end diff -r 6bf169f1e97c -r e049b5bb0ad1 project_files/HedgewarsMobile/Classes/CreationChamber.m --- a/project_files/HedgewarsMobile/Classes/CreationChamber.m Sat Feb 04 23:06:22 2012 +0100 +++ b/project_files/HedgewarsMobile/Classes/CreationChamber.m Sun Feb 05 15:52:26 2012 +0100 @@ -31,7 +31,6 @@ [settings setObject:[NSNumber numberWithBool:NO] forKey:@"alternate"]; [settings setObject:[NSNumber numberWithBool:YES] forKey:@"music"]; [settings setObject:[NSNumber numberWithBool:YES] forKey:@"sound"]; - [settings setObject:[NSNumber numberWithBool:NO] forKey:@"classic_menu"]; [settings setObject:[NSNumber numberWithBool:YES] forKey:@"sync_ws"]; // don't overwrite these two strings when present diff -r 6bf169f1e97c -r e049b5bb0ad1 project_files/HedgewarsMobile/Classes/DefinesAndMacros.h --- a/project_files/HedgewarsMobile/Classes/DefinesAndMacros.h Sat Feb 04 23:06:22 2012 +0100 +++ b/project_files/HedgewarsMobile/Classes/DefinesAndMacros.h Sun Feb 05 15:52:26 2012 +0100 @@ -74,7 +74,6 @@ #define MSG_MEMCLEAN() DLog(@"has cleaned up some memory"); #define MSG_DIDUNLOAD() DLog(@"unloaded"); -#define IS_DUALHEAD() ([[UIScreen class] respondsToSelector:@selector(screens)] && [[UIScreen screens] count] > 1) #define IS_IPAD() (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) #define IS_NOT_POWERFUL(x) ([x hasPrefix:@"iPhone1"] || [x hasPrefix:@"iPod1,1"] || [x hasPrefix:@"iPod2,1"]) #define IS_NOT_VERY_POWERFUL(x) ([x hasPrefix:@"iPad1"] || [x hasPrefix:@"iPhone2"] || [x hasPrefix:@"iPod3"] || [x hasPrefix:@"iPod4"]) diff -r 6bf169f1e97c -r e049b5bb0ad1 project_files/HedgewarsMobile/Classes/GameInterfaceBridge.m --- a/project_files/HedgewarsMobile/Classes/GameInterfaceBridge.m Sat Feb 04 23:06:22 2012 +0100 +++ b/project_files/HedgewarsMobile/Classes/GameInterfaceBridge.m Sun Feb 05 15:52:26 2012 +0100 @@ -123,15 +123,9 @@ NSString *localeString = [[NSString alloc] initWithFormat:@"%@.txt",[[NSLocale preferredLanguages] objectAtIndex:0]]; NSUserDefaults *settings = [NSUserDefaults standardUserDefaults]; - if (IS_DUALHEAD()) { - CGRect screenBounds = [[[UIScreen screens] objectAtIndex:1] bounds]; - width = screenBounds.size.width; - height = screenBounds.size.height; - } else { - CGRect screenBounds = [[UIScreen mainScreen] safeBounds]; - width = screenBounds.size.width; - height = screenBounds.size.height; - } + CGRect screenBounds = [[UIScreen mainScreen] safeBounds]; + width = screenBounds.size.width; + height = screenBounds.size.height; NSString *horizontalSize = [[NSString alloc] initWithFormat:@"%d", (int)(width * screenScale)]; NSString *verticalSize = [[NSString alloc] initWithFormat:@"%d", (int)(height * screenScale)]; diff -r 6bf169f1e97c -r e049b5bb0ad1 project_files/HedgewarsMobile/Classes/GeneralSettingsViewController.m --- a/project_files/HedgewarsMobile/Classes/GeneralSettingsViewController.m Sat Feb 04 23:06:22 2012 +0100 +++ b/project_files/HedgewarsMobile/Classes/GeneralSettingsViewController.m Sun Feb 05 15:52:26 2012 +0100 @@ -88,9 +88,6 @@ case 90: //synched weapons/scheme [settings setObject:[NSNumber numberWithBool:theSwitch.on] forKey:@"sync_ws"]; break; - case 60: //classic menu - [settings setObject:[NSNumber numberWithBool:theSwitch.on] forKey:@"classic_menu"]; - break; default: DLog(@"Wrong tag"); break; @@ -121,7 +118,7 @@ return 2; break; case 2: // other options - return 3; + return 2; break; default: DLog(@"Nope"); @@ -234,12 +231,6 @@ switchContent.on = [[settings objectForKey:@"sync_ws"] boolValue]; switchContent.tag = 90; break; - case 2: - cell.textLabel.text = NSLocalizedString(@"Classic Ammo Menu", @""); - cell.detailTextLabel.text = NSLocalizedString(@"Select which style of ammo menu you prefer",@"from the settings table"); - switchContent.on = [[settings objectForKey:@"classic_menu"] boolValue]; - switchContent.tag = 60; - break; default: DLog(@"Nope"); break; diff -r 6bf169f1e97c -r e049b5bb0ad1 project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.h --- a/project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.h Sat Feb 04 23:06:22 2012 +0100 +++ b/project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.h Sun Feb 05 15:52:26 2012 +0100 @@ -27,12 +27,10 @@ @interface HedgewarsAppDelegate : SDLUIKitDelegate { MainMenuViewController *mainViewController; UIWindow *uiwindow; - UIWindow *secondWindow; } @property (nonatomic,retain) MainMenuViewController *mainViewController; @property (nonatomic,retain) UIWindow *uiwindow; -@property (nonatomic,retain) UIWindow *secondWindow; @end diff -r 6bf169f1e97c -r e049b5bb0ad1 project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m --- a/project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m Sat Feb 04 23:06:22 2012 +0100 +++ b/project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m Sun Feb 05 15:52:26 2012 +0100 @@ -34,7 +34,7 @@ @end @implementation HedgewarsAppDelegate -@synthesize mainViewController, uiwindow, secondWindow; +@synthesize mainViewController, uiwindow; #pragma mark - #pragma mark AppDelegate methods @@ -42,7 +42,6 @@ if (self = [super init]){ mainViewController = nil; uiwindow = nil; - secondWindow = nil; } return self; } @@ -50,7 +49,6 @@ -(void) dealloc { [mainViewController release]; [uiwindow release]; - [secondWindow release]; [super dealloc]; } @@ -67,20 +65,6 @@ [self.mainViewController release]; self.uiwindow.backgroundColor = [UIColor blackColor]; [self.uiwindow makeKeyAndVisible]; - - // check for dual monitor support - if (IS_DUALHEAD()) { - DLog(@"Dualhead mode"); - self.secondWindow = [[UIWindow alloc] initWithFrame:[[[UIScreen screens] objectAtIndex:1] bounds]]; - self.secondWindow.backgroundColor = [UIColor blackColor]; - self.secondWindow.screen = [[UIScreen screens] objectAtIndex:1]; - UIImage *titleImage = [UIImage imageWithContentsOfFile:@"title.png"]; - UIImageView *titleView = [[UIImageView alloc] initWithImage:titleImage]; - titleView.center = self.secondWindow.center; - [self.secondWindow addSubview:titleView]; - [titleView release]; - [self.secondWindow makeKeyAndVisible]; - } } -(void) applicationDidReceiveMemoryWarning:(UIApplication *)application { diff -r 6bf169f1e97c -r e049b5bb0ad1 project_files/HedgewarsMobile/Classes/ObjcExports.m --- a/project_files/HedgewarsMobile/Classes/ObjcExports.m Sat Feb 04 23:06:22 2012 +0100 +++ b/project_files/HedgewarsMobile/Classes/ObjcExports.m Sun Feb 05 15:52:26 2012 +0100 @@ -21,7 +21,6 @@ #import "ObjcExports.h" #import "OverlayViewController.h" -#import "AmmoMenuViewController.h" // cache the grenade time @@ -64,7 +63,7 @@ overlay_instance.view.userInteractionEnabled = NO; } CGPoint center = overlay_instance.view.center; - CGPoint loaderCenter = ((IS_DUALHEAD() || [HWUtils gameType] == gtSave) ? center : CGPointMake(center.x, center.y * 5/3)); + CGPoint loaderCenter = ([HWUtils gameType] == gtSave) ? center : CGPointMake(center.x, center.y * 5/3); overlay_instance.loadingIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; overlay_instance.loadingIndicator.hidesWhenStopped = YES; @@ -119,10 +118,6 @@ grenadeTime = 2; } -void updateVisualsNewTurn(void) { - [overlay_instance.amvc updateAmmoVisuals]; -} - // dummy function to prevent linkage fail int SDL_main(int argc, char **argv) { return 0; diff -r 6bf169f1e97c -r e049b5bb0ad1 project_files/HedgewarsMobile/Classes/OverlayViewController.h --- a/project_files/HedgewarsMobile/Classes/OverlayViewController.h Sat Feb 04 23:06:22 2012 +0100 +++ b/project_files/HedgewarsMobile/Classes/OverlayViewController.h Sun Feb 05 15:52:26 2012 +0100 @@ -23,7 +23,6 @@ @class InGameMenuViewController; @class HelpPageViewController; -@class AmmoMenuViewController; @interface OverlayViewController : UIViewController { // the timer that dims the overlay @@ -36,17 +35,11 @@ // the help menu HelpPageViewController *helpPage; - - // the objc ammomenu - AmmoMenuViewController *amvc; // ths touch section CGFloat initialDistanceForPinching; CGPoint startingPoint; BOOL isAttacking; - - // dual head support - NSInteger initialScreenCount; // various other widgets UIActivityIndicatorView *loadingIndicator; @@ -57,14 +50,10 @@ @property (nonatomic,retain) id popoverController; @property (nonatomic,retain) InGameMenuViewController *popupMenu; @property (nonatomic,retain) HelpPageViewController *helpPage; -@property (nonatomic,retain) AmmoMenuViewController *amvc; @property (nonatomic,retain) UIActivityIndicatorView *loadingIndicator; @property (nonatomic,retain) UIButton *confirmButton; @property (nonatomic,retain) UISegmentedControl *grenadeTimeSegment; -@property (assign) NSInteger initialScreenCount; - - +(OverlayViewController *)mainOverlay; -(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; diff -r 6bf169f1e97c -r e049b5bb0ad1 project_files/HedgewarsMobile/Classes/OverlayViewController.m --- a/project_files/HedgewarsMobile/Classes/OverlayViewController.m Sat Feb 04 23:06:22 2012 +0100 +++ b/project_files/HedgewarsMobile/Classes/OverlayViewController.m Sun Feb 05 15:52:26 2012 +0100 @@ -22,22 +22,20 @@ #import "OverlayViewController.h" #import "InGameMenuViewController.h" #import "HelpPageViewController.h" -#import "AmmoMenuViewController.h" #import "CGPointUtils.h" #import "ObjcExports.h" #define HIDING_TIME_DEFAULT [NSDate dateWithTimeIntervalSinceNow:2.7] #define HIDING_TIME_NEVER [NSDate dateWithTimeIntervalSinceNow:10000] -#define doDim() [dimTimer setFireDate: (IS_DUALHEAD()) ? HIDING_TIME_NEVER : HIDING_TIME_DEFAULT] +#define doDim() [dimTimer setFireDate:HIDING_TIME_DEFAULT] #define doNotDim() [dimTimer setFireDate:HIDING_TIME_NEVER] static OverlayViewController *mainOverlay; @implementation OverlayViewController -@synthesize popoverController, popupMenu, helpPage, amvc, initialScreenCount, loadingIndicator, - confirmButton, grenadeTimeSegment; +@synthesize popoverController, popupMenu, helpPage, loadingIndicator, confirmButton, grenadeTimeSegment; #pragma mark - #pragma mark rotation @@ -52,7 +50,6 @@ if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { isAttacking = NO; isPopoverVisible = NO; - initialScreenCount = (IS_DUALHEAD() ? 2 : 1); loadingIndicator = nil; mainOverlay = self; } @@ -67,7 +64,7 @@ // fill all the screen available as sdlview disables autoresizing self.view.frame = [[UIScreen mainScreen] safeBounds]; // the timer used to dim the overlay - dimTimer = [[NSTimer alloc] initWithFireDate:(IS_DUALHEAD()) ? HIDING_TIME_NEVER : [NSDate dateWithTimeIntervalSinceNow:6] + dimTimer = [[NSTimer alloc] initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:6] interval:1000 target:self selector:@selector(dimOverlay) @@ -81,18 +78,6 @@ selector:@selector(showHelp:) name:@"show help ingame" object:nil]; - - if (IS_IPAD()) { - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(numberOfScreensIncreased) - name:UIScreenDidConnectNotification - object:nil]; - - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(numberOfScreensDecreased) - name:UIScreenDidDisconnectNotification - object:nil]; - } // present the overlay self.view.alpha = 0; @@ -115,7 +100,6 @@ self.helpPage = nil; [self dismissPopover]; self.popoverController = nil; - self.amvc = nil; self.loadingIndicator = nil; MSG_DIDUNLOAD(); [super viewDidUnload]; @@ -126,8 +110,6 @@ self.popupMenu = nil; if (self.helpPage.view.superview == nil) self.helpPage = nil; - if (self.amvc.view.superview == nil) - self.amvc = nil; if (self.loadingIndicator.superview == nil) self.loadingIndicator = nil; if (self.confirmButton.superview == nil) @@ -146,7 +128,6 @@ releaseAndNil(popupMenu); releaseAndNil(helpPage); releaseAndNil(popoverController); - releaseAndNil(amvc); releaseAndNil(loadingIndicator); releaseAndNil(confirmButton); releaseAndNil(grenadeTimeSegment); @@ -154,32 +135,6 @@ [super dealloc]; } --(void) numberOfScreensIncreased { - if (self.initialScreenCount == 1) { - UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"New display detected" - message:NSLocalizedString(@"Hedgewars supports multi-monitor configurations, but the screen has to be connected before launching the game.",@"") - delegate:nil - cancelButtonTitle:@"Ok" - otherButtonTitles:nil]; - [alert show]; - [alert release]; - HW_pause(); - } -} - --(void) numberOfScreensDecreased { - if (self.initialScreenCount == 2) { - UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Oh noes! Display disconnected" - message:NSLocalizedString(@"A monitor has been disconnected while playing and this has ended the match! You need to restart the game if you wish to use the second display again.",@"") - delegate:nil - cancelButtonTitle:@"Ok" - otherButtonTitles:nil]; - [alert show]; - [alert release]; - HW_terminate(NO); - } -} - #pragma mark - #pragma mark overlay appearance // nice transition for dimming, should be called only by the timer himself @@ -281,34 +236,14 @@ break; case 10: [AudioManagerController playClickSound]; - clearView(); HW_pause(); - if (self.amvc.isVisible && IS_DUALHEAD() == NO) { - doDim(); - [self.amvc disappear]; - } clearView(); [self showPopover]; break; case 11: [AudioManagerController playClickSound]; clearView(); - - if (IS_DUALHEAD() || [[[NSUserDefaults standardUserDefaults] objectForKey:@"classic_menu"] boolValue] == NO) { - if (self.amvc == nil) - self.amvc = [[AmmoMenuViewController alloc] init]; - - if (self.amvc.isVisible) { - doDim(); - [self.amvc disappear]; - } else { - if (HW_isAmmoMenuNotAllowed() == NO) { - doNotDim(); - [self.amvc appearInView:self.view]; - } - } - } else - HW_ammoMenu(); + HW_ammoMenu(); break; default: DLog(@"Nope"); @@ -420,10 +355,6 @@ if (isPopoverVisible) [self dismissPopover]; - if (self.amvc.isVisible && IS_DUALHEAD() == NO) { - doDim(); - [self.amvc disappear]; - } // reset default dimming doDim(); diff -r 6bf169f1e97c -r e049b5bb0ad1 project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj --- a/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Sat Feb 04 23:06:22 2012 +0100 +++ b/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Sun Feb 05 15:52:26 2012 +0100 @@ -235,7 +235,6 @@ 61D0BDF91457508C0011A899 /* ExtraCategories.m in Sources */ = {isa = PBXBuildFile; fileRef = 61D0BDF81457508C0011A899 /* ExtraCategories.m */; }; 61D205A1127CDD1100ABD83E /* ObjcExports.m in Sources */ = {isa = PBXBuildFile; fileRef = 61D205A0127CDD1100ABD83E /* ObjcExports.m */; }; 61D3D2A51290E03A003CE7C3 /* irc.png in Resources */ = {isa = PBXBuildFile; fileRef = 61D3D2A41290E03A003CE7C3 /* irc.png */; }; - 61DE8F221257EB1100B80214 /* AmmoMenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 61DE8F211257EB1100B80214 /* AmmoMenuViewController.m */; }; 61DF0EDC1284DF2300F3F10B /* HelpPageLobbyViewController-iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 61DF0EDB1284DF2300F3F10B /* HelpPageLobbyViewController-iPhone.xib */; }; 61DF0F211284F72A00F3F10B /* HelpPageInGameViewController-iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 61DF0F201284F72A00F3F10B /* HelpPageInGameViewController-iPhone.xib */; }; 61E1F4F811D004240016A5AA /* adler32.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61E1F4F711D004240016A5AA /* adler32.pas */; }; @@ -649,8 +648,6 @@ 61D2059F127CDD1100ABD83E /* ObjcExports.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ObjcExports.h; path = Classes/ObjcExports.h; sourceTree = ""; }; 61D205A0127CDD1100ABD83E /* ObjcExports.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ObjcExports.m; path = Classes/ObjcExports.m; sourceTree = ""; }; 61D3D2A41290E03A003CE7C3 /* irc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = irc.png; path = Resources/Icons/irc.png; sourceTree = ""; }; - 61DE8F201257EB1100B80214 /* AmmoMenuViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AmmoMenuViewController.h; sourceTree = ""; }; - 61DE8F211257EB1100B80214 /* AmmoMenuViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AmmoMenuViewController.m; sourceTree = ""; }; 61DF0EDB1284DF2300F3F10B /* HelpPageLobbyViewController-iPhone.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = "HelpPageLobbyViewController-iPhone.xib"; sourceTree = ""; }; 61DF0F201284F72A00F3F10B /* HelpPageInGameViewController-iPhone.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = "HelpPageInGameViewController-iPhone.xib"; sourceTree = ""; }; 61E1F4F711D004240016A5AA /* adler32.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = adler32.pas; path = ../../hedgewars/adler32.pas; sourceTree = SOURCE_ROOT; }; @@ -967,8 +964,6 @@ 6163EE6C11CC253F001C0453 /* Overlay */ = { isa = PBXGroup; children = ( - 61DE8F201257EB1100B80214 /* AmmoMenuViewController.h */, - 61DE8F211257EB1100B80214 /* AmmoMenuViewController.m */, 616591F811CA9BA200D6E256 /* InGameMenuViewController.h */, 616591F911CA9BA200D6E256 /* InGameMenuViewController.m */, 616591F611CA9BA200D6E256 /* OverlayViewController.h */, @@ -1701,7 +1696,6 @@ 611D9BFB12497E9800008271 /* SavedGamesViewController.m in Sources */, 619C5AF4124F7E3100D041AE /* LuaPas.pas in Sources */, 619C5BA2124FA59000D041AE /* MapPreviewButtonView.m in Sources */, - 61DE8F221257EB1100B80214 /* AmmoMenuViewController.m in Sources */, 61399013125D19C0003C2DC0 /* uMobile.pas in Sources */, 61D205A1127CDD1100ABD83E /* ObjcExports.m in Sources */, 61006F95128DE31F00EBA7F7 /* CreationChamber.m in Sources */,