# HG changeset patch # User koda # Date 1320026896 -3600 # Node ID 6dfad55fd71c47f7bcea68d45e5929b77edb82c9 # Parent 6b2d19ed521ad3e64ba0d1e48de1fec3cb88cd1a unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more) diff -r 6b2d19ed521a -r 6dfad55fd71c hedgewars/uGame.pas --- a/hedgewars/uGame.pas Mon Oct 31 01:44:32 2011 +0100 +++ b/hedgewars/uGame.pas Mon Oct 31 03:08:16 2011 +0100 @@ -77,7 +77,7 @@ AddVisualGear(0, 0, vgtTeamHealthSorter); AddVisualGear(0, 0, vgtSmoothWindBar); {$IFDEF IPHONEOS}InitIPC;{$ENDIF} - uMobile.SaveFinished(); + uMobile.SaveLoadingEnded(); end; end else ProcessGears diff -r 6b2d19ed521a -r 6dfad55fd71c hedgewars/uIO.pas --- a/hedgewars/uIO.pas Mon Oct 31 01:44:32 2011 +0100 +++ b/hedgewars/uIO.pas Mon Oct 31 03:08:16 2011 +0100 @@ -40,7 +40,7 @@ procedure doPut(putX, putY: LongInt; fromAI: boolean); implementation -uses uConsole, uConsts, uVariables, uCommands, uUtils, uDebug, uMobile; +uses uConsole, uConsts, uVariables, uCommands, uUtils, uDebug; type PCmd = ^TCmd; TCmd = packed record @@ -175,8 +175,6 @@ s: shortstring absolute buf; begin -uMobile.SaveBegan(); - // set RDNLY on file open filemode:= 0; {$I-} diff -r 6b2d19ed521a -r 6dfad55fd71c hedgewars/uMobile.pas --- a/hedgewars/uMobile.pas Mon Oct 31 01:44:32 2011 +0100 +++ b/hedgewars/uMobile.pas Mon Oct 31 03:08:16 2011 +0100 @@ -24,11 +24,9 @@ {$IFDEF IPHONEOS} (* iOS calls written in ObjcExports.m *) procedure clearView; cdecl; external; -procedure startSpinningProgress; cdecl; external; -procedure stopSpinningProgress; cdecl; external; -procedure saveBeganSynching; cdecl; external; +procedure startLoadingIndicator; cdecl; external; +procedure stopLoadingIndicator; cdecl; external; procedure saveFinishedSynching; cdecl; external; -procedure setGameRunning(arg: boolean); cdecl; external; procedure updateVisualsNewTurn; cdecl; external; function isApplePhone: Boolean; cdecl; external; procedure AudioServicesPlaySystemSound(num: LongInt); cdecl; external; @@ -40,8 +38,7 @@ procedure GameLoaded; inline; procedure AmmoUpdate; // do not inline procedure NewTurnBeginning; inline; -procedure SaveBegan; inline; -procedure SaveFinished; inline; +procedure SaveLoadingEnded; inline; implementation uses uVariables; @@ -71,14 +68,14 @@ procedure GameLoading; inline; begin {$IFDEF IPHONEOS} - startSpinningProgress(); + startLoadingIndicator(); {$ENDIF} end; procedure GameLoaded; inline; begin {$IFDEF IPHONEOS} - stopSpinningProgress(); + stopLoadingIndicator(); {$ENDIF} end; @@ -101,14 +98,7 @@ AmmoUpdate(); end; -procedure SaveBegan; inline; -begin -{$IFDEF IPHONEOS} - saveBeganSynching(); -{$ENDIF} -end; - -procedure SaveFinished; inline; +procedure SaveLoadingEnded; inline; begin {$IFDEF IPHONEOS} saveFinishedSynching(); diff -r 6b2d19ed521a -r 6dfad55fd71c project_files/HedgewarsMobile/Classes/EngineProtocolNetwork.m --- a/project_files/HedgewarsMobile/Classes/EngineProtocolNetwork.m Mon Oct 31 01:44:32 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/EngineProtocolNetwork.m Mon Oct 31 03:08:16 2011 +0100 @@ -393,7 +393,7 @@ } break; case 'q': - // game ended, can remove the savefile and the trailing overlay (when dualhead) + // game ended, can remove the savefile and present the statistics of the match [self gameHasEndedWithStats:statsArray]; break; case 'Q': diff -r 6b2d19ed521a -r 6dfad55fd71c project_files/HedgewarsMobile/Classes/GameInterfaceBridge.h --- a/project_files/HedgewarsMobile/Classes/GameInterfaceBridge.h Mon Oct 31 01:44:32 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/GameInterfaceBridge.h Mon Oct 31 03:08:16 2011 +0100 @@ -22,9 +22,6 @@ #import #import "EngineProtocolNetwork.h" -typedef enum {gtNone, gtLocal, gtSave, gtMission, gtNet} TGameType; -typedef enum {gsNone, gsInGame, gsEnded, gsInterrupted} TGameStatus; - @class OverlayViewController; @interface GameInterfaceBridge : NSObject { @@ -35,7 +32,6 @@ EngineProtocolNetwork *engineProtocol; NSInteger ipcPort; // Port on which engine will listen - TGameType gameType; } @property (assign) UIViewController *parentController; @@ -45,7 +41,6 @@ @property (nonatomic,retain) EngineProtocolNetwork *engineProtocol; @property (assign) NSInteger ipcPort; -@property (assign) TGameType gameType; -(id) initWithController:(id) viewController; diff -r 6b2d19ed521a -r 6dfad55fd71c project_files/HedgewarsMobile/Classes/GameInterfaceBridge.m --- a/project_files/HedgewarsMobile/Classes/GameInterfaceBridge.m Mon Oct 31 01:44:32 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/GameInterfaceBridge.m Mon Oct 31 03:08:16 2011 +0100 @@ -27,17 +27,15 @@ #import "ObjcExports.h" @implementation GameInterfaceBridge -@synthesize parentController, savePath, overlayController, engineProtocol, ipcPort, gameType; +@synthesize parentController, savePath, overlayController, engineProtocol, ipcPort; -(id) initWithController:(id) viewController { if (self = [super init]) { self.ipcPort = [HWUtils randomPort]; - self.gameType = gtNone; self.savePath = nil; self.parentController = (UIViewController *)viewController; self.engineProtocol = [[EngineProtocolNetwork alloc] initOnPort:self.ipcPort]; - self.engineProtocol.delegate = self; self.overlayController = [[OverlayViewController alloc] initWithNibName:@"OverlayViewController" bundle:nil]; } @@ -113,7 +111,7 @@ gameArgs[ 7] = [[[settings objectForKey:@"music"] stringValue] UTF8String]; //isMusicEnabled gameArgs[ 8] = [[[settings objectForKey:@"alternate"] stringValue] UTF8String]; //cAltDamage gameArgs[ 9] = [rotation UTF8String]; //rotateQt - gameArgs[10] = (self.gameType == gtSave) ? [self.savePath UTF8String] : NULL; //recordFileName + gameArgs[10] = ([HWUtils gameType] == gtSave) ? [self.savePath UTF8String] : NULL; //recordFileName [verticalSize release]; [horizontalSize release]; @@ -121,12 +119,10 @@ [localeString release]; [ipcString release]; - [ObjcExports initialize]; + [HWUtils setGameStatus:gsLoading]; - // this is the pascal fuction that starts the game, wrapped around isInGame - [HedgewarsAppDelegate sharedAppDelegate].isInGame = YES; + // this is the pascal fuction that starts the game Game(gameArgs); - [HedgewarsAppDelegate sharedAppDelegate].isInGame = NO; } // prepares the controllers for hosting a game @@ -185,7 +181,7 @@ // set up variables for a local game -(void) startLocalGame:(NSDictionary *)withOptions { - self.gameType = gtLocal; + [HWUtils setGameType:gtLocal]; NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init]; [outputFormatter setDateFormat:@"yyyy-MM-dd '@' HH.mm"]; @@ -204,16 +200,16 @@ // set up variables for a save game -(void) startSaveGame:(NSString *)atPath { - self.gameType = gtSave; self.savePath = atPath; + [HWUtils setGameType:gtSave]; [self.engineProtocol spawnThread:self.savePath]; [self prepareEngineLaunch]; } -(void) startMissionGame:(NSString *)withScript { - self.gameType = gtMission; self.savePath = nil; + [HWUtils setGameType:gtMission]; NSString *missionPath = [[NSString alloc] initWithFormat:@"escript Missions/Training/%@.lua",withScript]; NSDictionary *config = [NSDictionary dictionaryWithObject:missionPath forKey:@"mission_command"]; @@ -238,7 +234,7 @@ } // can remove the savefile if the replay has ended - if (self.gameType == gtSave) + if ([HWUtils gameType] == gtSave) [[NSFileManager defaultManager] removeItemAtPath:self.savePath error:nil]; [self release]; } diff -r 6b2d19ed521a -r 6dfad55fd71c project_files/HedgewarsMobile/Classes/HWUtils.h --- a/project_files/HedgewarsMobile/Classes/HWUtils.h Mon Oct 31 01:44:32 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/HWUtils.h Mon Oct 31 03:08:16 2011 +0100 @@ -21,10 +21,20 @@ #import +typedef enum {gtNone, gtLocal, gtSave, gtMission, gtNet} TGameType; +typedef enum {gsNone, gsLoading, gsInGame, gsEnded} TGameStatus; + @interface HWUtils : NSObject { } ++(TGameType) gameType; ++(void) setGameType:(TGameType) type; ++(TGameStatus) gameStatus; ++(void) setGameStatus:(TGameStatus) status; ++(BOOL) isGameLaunched; ++(BOOL) isGameRunning; + +(NSString *)modelType; +(NSArray *)teamColors; +(NSInteger) randomPort; diff -r 6b2d19ed521a -r 6dfad55fd71c project_files/HedgewarsMobile/Classes/HWUtils.m --- a/project_files/HedgewarsMobile/Classes/HWUtils.m Mon Oct 31 01:44:32 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/HWUtils.m Mon Oct 31 03:08:16 2011 +0100 @@ -29,8 +29,39 @@ static NSString *cachedModel = nil; static NSArray *cachedColors = nil; +static TGameType gameType = gtNone; +static TGameStatus gameStatus = gsNone; + @implementation HWUtils +#pragma mark - +#pragma mark game status and type info ++(TGameType) gameType { + return gameType; +} + ++(void) setGameType:(TGameType) type { + gameType = type; +} + ++(TGameStatus) gameStatus { + return gameStatus; +} + ++(void) setGameStatus:(TGameStatus) status { + gameStatus = status; +} + ++(BOOL) isGameLaunched { + return ((gameStatus == gsLoading) || (gameStatus == gsInGame)); +} + ++(BOOL) isGameRunning { + return (gameStatus == gsInGame); +} + +#pragma mark - +#pragma mark Helper Functions +(NSString *)modelType { if (cachedModel == nil) { size_t size; diff -r 6b2d19ed521a -r 6dfad55fd71c project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.h --- a/project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.h Mon Oct 31 01:44:32 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.h Mon Oct 31 03:08:16 2011 +0100 @@ -28,13 +28,11 @@ MainMenuViewController *mainViewController; UIWindow *uiwindow; UIWindow *secondWindow; - BOOL isInGame; } @property (nonatomic,retain) MainMenuViewController *mainViewController; @property (nonatomic,retain) UIWindow *uiwindow; @property (nonatomic,retain) UIWindow *secondWindow; -@property (assign) BOOL isInGame; +(HedgewarsAppDelegate *)sharedAppDelegate; diff -r 6b2d19ed521a -r 6dfad55fd71c project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m --- a/project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m Mon Oct 31 01:44:32 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m Mon Oct 31 03:08:16 2011 +0100 @@ -34,7 +34,7 @@ @end @implementation HedgewarsAppDelegate -@synthesize mainViewController, uiwindow, secondWindow, isInGame; +@synthesize mainViewController, uiwindow, secondWindow; // convenience method +(HedgewarsAppDelegate *)sharedAppDelegate { @@ -48,7 +48,6 @@ mainViewController = nil; uiwindow = nil; secondWindow = nil; - isInGame = NO; } return self; } @@ -92,7 +91,7 @@ -(void) applicationDidReceiveMemoryWarning:(UIApplication *)application { [HWUtils releaseCache]; // don't stop music if it is playing - if (self.isInGame) { + if ([HWUtils isGameLaunched]) { [AudioManagerController releaseCache]; } MSG_MEMCLEAN(); @@ -101,7 +100,7 @@ // true multitasking with sdl works only on 4.2 and above; we close the game to avoid a black screen at return -(void) applicationWillResignActive:(UIApplication *)application { - if (self.isInGame && [[[UIDevice currentDevice] systemVersion] floatValue] < 4.2f) + if ([HWUtils isGameLaunched] && [[[UIDevice currentDevice] systemVersion] floatValue] < 4.2f) HW_terminate(NO); [super applicationWillResignActive:application]; diff -r 6b2d19ed521a -r 6dfad55fd71c project_files/HedgewarsMobile/Classes/ObjcExports.h --- a/project_files/HedgewarsMobile/Classes/ObjcExports.h Mon Oct 31 01:44:32 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/ObjcExports.h Mon Oct 31 03:08:16 2011 +0100 @@ -23,16 +23,13 @@ } -+(void) initialize; ++(void) setGrenadeTime:(NSInteger) value; ++(NSInteger) grenadeTime; @end -BOOL isGameRunning(void); -void setGameRunning(BOOL value); -NSInteger cachedGrenadeTime(void); void clearView(void); -void setGrenadeTime(NSInteger value); BOOL isApplePhone(void); void startSpinningProgress(void); diff -r 6b2d19ed521a -r 6dfad55fd71c project_files/HedgewarsMobile/Classes/ObjcExports.m --- a/project_files/HedgewarsMobile/Classes/ObjcExports.m Mon Oct 31 01:44:32 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/ObjcExports.m Mon Oct 31 03:08:16 2011 +0100 @@ -24,10 +24,6 @@ #import "AmmoMenuViewController.h" -// actual game started (controls should be enabled) -static BOOL gameRunning; -// black screen present -static BOOL savedGame; // cache the grenade time static NSInteger grenadeTime; // the reference to the newMenu instance @@ -35,32 +31,16 @@ @implementation ObjcExports -+(void) initialize { - overlay_instance = [OverlayViewController mainOverlay]; - gameRunning = NO; - savedGame = NO; - grenadeTime = 2; ++(void) setGrenadeTime:(NSInteger) value { + grenadeTime = value; +} + ++(NSInteger) grenadeTime { + return grenadeTime; } @end -#pragma mark - -#pragma mark functions called by objc code -BOOL inline isGameRunning() { - return gameRunning; -} - -void inline setGameRunning(BOOL value) { - gameRunning = value; -} - -NSInteger cachedGrenadeTime() { - return grenadeTime; -} - -void inline setGrenadeTime(NSInteger value) { - grenadeTime = value; -} #pragma mark - #pragma mark functions called by pascal code @@ -68,24 +48,51 @@ return (IS_IPAD() == NO); } -void startSpinningProgress() { - gameRunning = NO; - overlay_instance.lowerIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; +void startLoadingIndicator() { + // this is the first ojbc function called by engine, so we have to initialize some variables here + overlay_instance = [OverlayViewController mainOverlay]; + grenadeTime = 2; + if ([HWUtils gameType] == gtSave) { + [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; + + overlay_instance.view.backgroundColor = [UIColor blackColor]; + overlay_instance.view.alpha = 0.75; + overlay_instance.view.userInteractionEnabled = NO; + } CGPoint center = overlay_instance.view.center; - overlay_instance.lowerIndicator.center = (IS_DUALHEAD() ? center : CGPointMake(center.x, center.y * 5/3)); + CGPoint loaderCenter = ((IS_DUALHEAD() || [HWUtils gameType] == gtSave) ? center : CGPointMake(center.x, center.y * 5/3)); - [overlay_instance.lowerIndicator startAnimating]; - [overlay_instance.view addSubview:overlay_instance.lowerIndicator]; - [overlay_instance.lowerIndicator release]; + overlay_instance.loadingIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; + overlay_instance.loadingIndicator.hidesWhenStopped = YES; + overlay_instance.loadingIndicator.center = loaderCenter; + [overlay_instance.loadingIndicator startAnimating]; + [overlay_instance.view addSubview:overlay_instance.loadingIndicator]; + [overlay_instance.loadingIndicator release]; } -void stopSpinningProgress() { - [overlay_instance.lowerIndicator stopAnimating]; - [overlay_instance.lowerIndicator removeFromSuperview]; +void stopLoadingIndicator() { HW_zoomSet(1.7); - if (savedGame == NO) - gameRunning = YES; + if ([HWUtils gameType] != gtSave) { + [overlay_instance.loadingIndicator stopAnimating]; + [overlay_instance.loadingIndicator removeFromSuperview]; + [HWUtils setGameStatus:gsInGame]; + } +} + +void saveFinishedSynching() { + [UIView beginAnimations:@"fading from save synch" context:NULL]; + [UIView setAnimationDuration:1]; + overlay_instance.view.backgroundColor = [UIColor clearColor]; + overlay_instance.view.alpha = 1; + overlay_instance.view.userInteractionEnabled = YES; + [UIView commitAnimations]; + + [overlay_instance.loadingIndicator stopAnimating]; + [overlay_instance.loadingIndicator performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:1]; + + [[UIApplication sharedApplication] setIdleTimerDisabled:NO]; + [HWUtils setGameStatus:gsInGame]; } void clearView() { @@ -105,40 +112,6 @@ grenadeTime = 2; } -void saveBeganSynching() { - savedGame = YES; - stopSpinningProgress(); - [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; - - overlay_instance.view.backgroundColor = [UIColor blackColor]; - overlay_instance.view.alpha = 0.75; - overlay_instance.view.userInteractionEnabled = NO; - - overlay_instance.savesIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; - - overlay_instance.savesIndicator.center = overlay_instance.view.center; - overlay_instance.savesIndicator.hidesWhenStopped = YES; - - [overlay_instance.savesIndicator startAnimating]; - [overlay_instance.view addSubview:overlay_instance.savesIndicator]; - [overlay_instance.savesIndicator release]; -} - -void saveFinishedSynching() { - [UIView beginAnimations:@"fading from save synch" context:NULL]; - [UIView setAnimationDuration:1]; - overlay_instance.view.backgroundColor = [UIColor clearColor]; - overlay_instance.view.alpha = 1; - overlay_instance.view.userInteractionEnabled = YES; - [UIView commitAnimations]; - - [overlay_instance.savesIndicator stopAnimating]; - [overlay_instance.savesIndicator performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:1]; - - [[UIApplication sharedApplication] setIdleTimerDisabled:NO]; - gameRunning = YES; -} - void updateVisualsNewTurn(void) { [overlay_instance.amvc updateAmmoVisuals]; } diff -r 6b2d19ed521a -r 6dfad55fd71c project_files/HedgewarsMobile/Classes/OverlayViewController.h --- a/project_files/HedgewarsMobile/Classes/OverlayViewController.h Mon Oct 31 01:44:32 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/OverlayViewController.h Mon Oct 31 03:08:16 2011 +0100 @@ -49,8 +49,7 @@ NSInteger initialScreenCount; // various other widgets - UIActivityIndicatorView *lowerIndicator; - UIActivityIndicatorView *savesIndicator; + UIActivityIndicatorView *loadingIndicator; UIButton *confirmButton; UISegmentedControl *grenadeTimeSegment; } @@ -59,8 +58,7 @@ @property (nonatomic,retain) InGameMenuViewController *popupMenu; @property (nonatomic,retain) HelpPageViewController *helpPage; @property (nonatomic,retain) AmmoMenuViewController *amvc; -@property (nonatomic,retain) UIActivityIndicatorView *lowerIndicator; -@property (nonatomic,retain) UIActivityIndicatorView *savesIndicator; +@property (nonatomic,retain) UIActivityIndicatorView *loadingIndicator; @property (nonatomic,retain) UIButton *confirmButton; @property (nonatomic,retain) UISegmentedControl *grenadeTimeSegment; diff -r 6b2d19ed521a -r 6dfad55fd71c project_files/HedgewarsMobile/Classes/OverlayViewController.m --- a/project_files/HedgewarsMobile/Classes/OverlayViewController.m Mon Oct 31 01:44:32 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/OverlayViewController.m Mon Oct 31 03:08:16 2011 +0100 @@ -36,7 +36,7 @@ static OverlayViewController *mainOverlay; @implementation OverlayViewController -@synthesize popoverController, popupMenu, helpPage, amvc, initialScreenCount, lowerIndicator, savesIndicator, +@synthesize popoverController, popupMenu, helpPage, amvc, initialScreenCount, loadingIndicator, confirmButton, grenadeTimeSegment; #pragma mark - @@ -53,8 +53,7 @@ isAttacking = NO; isPopoverVisible = NO; initialScreenCount = (IS_DUALHEAD() ? 2 : 1); - lowerIndicator = nil; - savesIndicator = nil; + loadingIndicator = nil; mainOverlay = self; } return self; @@ -119,8 +118,7 @@ [self dismissPopover]; self.popoverController = nil; self.amvc = nil; - self.lowerIndicator = nil; - self.savesIndicator = nil; + self.loadingIndicator = nil; MSG_DIDUNLOAD(); [super viewDidUnload]; } @@ -132,10 +130,8 @@ self.helpPage = nil; if (self.amvc.view.superview == nil) self.amvc = nil; - if (self.lowerIndicator.superview == nil) - self.lowerIndicator = nil; - if (self.savesIndicator.superview == nil) - self.savesIndicator = nil; + if (self.loadingIndicator.superview == nil) + self.loadingIndicator = nil; if (self.confirmButton.superview == nil) self.confirmButton = nil; if (self.grenadeTimeSegment.superview == nil) @@ -153,8 +149,7 @@ releaseAndNil(helpPage); releaseAndNil(popoverController); releaseAndNil(amvc); - releaseAndNil(lowerIndicator); - releaseAndNil(savesIndicator); + releaseAndNil(loadingIndicator); releaseAndNil(confirmButton); releaseAndNil(grenadeTimeSegment); // dimTimer is autoreleased @@ -191,7 +186,7 @@ #pragma mark overlay appearance // nice transition for dimming, should be called only by the timer himself -(void) dimOverlay { - if (isGameRunning()) { + if ([HWUtils isGameRunning]) { [UIView beginAnimations:@"overlay dim" context:NULL]; [UIView setAnimationDuration:0.6]; self.view.alpha = 0.2; @@ -215,7 +210,7 @@ #pragma mark overlay user interaction // dim the overlay when there's no more input for a certain amount of time -(IBAction) buttonReleased:(id) sender { - if (isGameRunning() == NO) + if ([HWUtils isGameRunning] == NO) return; UIButton *theButton = (UIButton *)sender; @@ -248,7 +243,7 @@ -(IBAction) buttonPressed:(id) sender { [self activateOverlay]; - if (isGameRunning() == NO) + if ([HWUtils isGameRunning] == NO) return; if (isPopoverVisible) @@ -333,9 +328,9 @@ -(void) setGrenadeTime:(id) sender { UISegmentedControl *theSegment = (UISegmentedControl *)sender; - if (cachedGrenadeTime() != theSegment.selectedSegmentIndex) { + if ([ObjcExports grenadeTime] != theSegment.selectedSegmentIndex) { HW_setGrenadeTime(theSegment.selectedSegmentIndex + 1); - setGrenadeTime(theSegment.selectedSegmentIndex); + [ObjcExports setGrenadeTime:theSegment.selectedSegmentIndex]; } } @@ -401,7 +396,7 @@ #pragma mark - #pragma mark Custom touch event handling -(BOOL) shouldIgnoreTouch:(NSSet *)allTouches { - if (isGameRunning() == NO) + if ([HWUtils isGameRunning] == NO) return YES; // ignore activity near the dpad and buttons @@ -512,7 +507,7 @@ [grenadeSegment release]; } self.grenadeTimeSegment.frame = CGRectMake(screen.size.height / 2 - 125, screen.size.width, 250, 50); - self.grenadeTimeSegment.selectedSegmentIndex = cachedGrenadeTime(); + self.grenadeTimeSegment.selectedSegmentIndex = [ObjcExports grenadeTime]; self.grenadeTimeSegment.alpha = 1; [self.view addSubview:self.grenadeTimeSegment]; diff -r 6b2d19ed521a -r 6dfad55fd71c project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.m --- a/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.m Mon Oct 31 01:44:32 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.m Mon Oct 31 03:08:16 2011 +0100 @@ -329,7 +329,7 @@ #pragma mark - #pragma mark Memory management -(void) didReceiveMemoryWarning { - if ([[HedgewarsAppDelegate sharedAppDelegate] isInGame]) { + if ([HWUtils isGameLaunched]) { self.tableView = nil; self.lastIndexPath_sc = nil; self.lastIndexPath_we = nil; diff -r 6b2d19ed521a -r 6dfad55fd71c project_files/HedgewarsMobile/Classes/TeamConfigViewController.m --- a/project_files/HedgewarsMobile/Classes/TeamConfigViewController.m Mon Oct 31 01:44:32 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/TeamConfigViewController.m Mon Oct 31 03:08:16 2011 +0100 @@ -271,7 +271,7 @@ #pragma mark - #pragma mark Memory management -(void) didReceiveMemoryWarning { - if ([[HedgewarsAppDelegate sharedAppDelegate] isInGame]) { + if ([HWUtils isGameLaunched]) { self.listOfSelectedTeams = nil; self.listOfAllTeams = nil; self.tableView = nil;