# HG changeset patch # User koda # Date 1263487123 0 # Node ID dcd248e04f3d3208aae8acd5ddbbd85b453e7f90 # Parent 3207e0eacd43a3c45a012ff964e74a3d780ed322 can use latest sdlimage, work on setting panel and option when launching the game, minor fixes diff -r 3207e0eacd43 -r dcd248e04f3d cocoaTouch/GameSetup.h --- a/cocoaTouch/GameSetup.h Wed Jan 13 09:41:35 2010 +0000 +++ b/cocoaTouch/GameSetup.h Thu Jan 14 16:38:43 2010 +0000 @@ -10,13 +10,14 @@ @interface GameSetup : NSObject { - NSLocale *locale; + NSString *localeString; + NSDictionary *systemSettings; BOOL engineProtocolStarted; } -@property (nonatomic, retain) NSLocale *locale; -@property (nonatomic) BOOL engineProtocolStarted; +@property (nonatomic, retain) NSString *localeString; +@property (retain) NSDictionary *systemSettings; -(void) setArgsForLocalPlay; -(void) engineProtocol; diff -r 3207e0eacd43 -r dcd248e04f3d cocoaTouch/GameSetup.m --- a/cocoaTouch/GameSetup.m Wed Jan 13 09:41:35 2010 +0000 +++ b/cocoaTouch/GameSetup.m Thu Jan 14 16:38:43 2010 +0000 @@ -11,13 +11,14 @@ #import "SDL_net.h" #import "PascalImports.h" -#define IPC_PORT 51342 -#define IPC_PORT_STR "51342" + #define BUFFER_SIZE 256 // they should go in the interface TCPsocket sd, csd; /* Socket descriptor, Client socket descriptor */ +NSInteger ipcPort; + int sendToEngine (NSString * string) { Uint8 length = [string length]; @@ -28,12 +29,14 @@ @implementation GameSetup -@synthesize locale, engineProtocolStarted; +@synthesize localeString, systemSettings; -(id) init { self = [super init]; - self.locale = [NSLocale currentLocale]; - self.engineProtocolStarted = NO; + self.localeString = [[[NSLocale currentLocale] localeIdentifier] stringByAppendingString:@".txt"]; + self.systemSettings = nil; + engineProtocolStarted = NO; + ipcPort = 51342; return self; } @@ -62,7 +65,7 @@ } /* Resolving the host using NULL make network interface to listen */ - if (SDLNet_ResolveHost(&ip, NULL, IPC_PORT) < 0) { + if (SDLNet_ResolveHost(&ip, NULL, ipcPort) < 0) { fprintf(stderr, "SDLNet_ResolveHost: %s\n", SDLNet_GetError()); exit(EXIT_FAILURE); } @@ -238,42 +241,47 @@ } -(void) setArgsForLocalPlay { - NSString *localeString = [[self.locale localeIdentifier] stringByAppendingString:@".txt"]; - NSLog(localeString); + NSString *portNumber = [[NSString alloc] initWithFormat:@"%d",ipcPort]; + /*for (NSString *theString in [NSLocale ISOLanguageCodes]) { + NSLog(theString); + }*/ + memset(forward_argv, 0, forward_argc); forward_argc = 18; forward_argv = (char **)realloc(forward_argv, forward_argc * sizeof(char *)); //forward_argv[i] = malloc( (strlen(argv[i])+1) * sizeof(char)); - forward_argv[ 1] = forward_argv[0]; // (UNUSED) - forward_argv[ 2] = "320"; // cScreenWidth (NO EFFECT) - forward_argv[ 3] = "480"; // cScreenHeight (NO EFFECT) - forward_argv[ 4] = "32"; // cBitsStr - forward_argv[ 5] = IPC_PORT_STR; // ipcPort; - forward_argv[ 6] = "1"; // cFullScreen (NO EFFECT) + forward_argv[ 1] = forward_argv[0]; // (UNUSED) + forward_argv[ 2] = "320"; // cScreenWidth + forward_argv[ 3] = "480"; // cScreenHeight + forward_argv[ 4] = "16"; // cBitsStr + forward_argv[ 5] = [portNumber UTF8String]; // ipcPort; + forward_argv[ 6] = "1"; // cFullScreen (NO EFFECT) forward_argv[ 7] = "0"; // isSoundEnabled (TOSET) - forward_argv[ 8] = "1"; // cVSyncInUse (UNUSED) + forward_argv[ 8] = "1"; // cVSyncInUse (UNUSED) forward_argv[ 9] = [localeString UTF8String]; // cLocaleFName forward_argv[10] = "100"; // cInitVolume (TOSET) - forward_argv[11] = "8"; // cTimerInterval - forward_argv[12] = "Data"; // PathPrefix + forward_argv[11] = "8"; // cTimerInterval + forward_argv[12] = "Data"; // PathPrefix forward_argv[13] = "1"; // cShowFPS (TOSET?) forward_argv[14] = "0"; // cAltDamage (TOSET) forward_argv[15] = "Koda"; // UserNick (DecodeBase64(ParamStr(15)) FTW) <- TODO forward_argv[16] = "0"; // isMusicEnabled (TOSET) - forward_argv[17] = "0"; // cReducedQuality + forward_argv[17] = "0"; // cReducedQuality -fprintf(stderr, forward_argv[9]); + [portNumber release]; return; } -/* - -(void) dealloc { + +-(void) dealloc { + [self.systemSettings release]; + [self.localeString autorelease]; [super dealloc]; } - */ + @end diff -r 3207e0eacd43 -r dcd248e04f3d cocoaTouch/MainMenuViewController.m --- a/cocoaTouch/MainMenuViewController.m Wed Jan 13 09:41:35 2010 +0000 +++ b/cocoaTouch/MainMenuViewController.m Thu Jan 14 16:38:43 2010 +0000 @@ -26,7 +26,7 @@ // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. -(void) viewDidLoad { - self.versionLabel = @"Hedgewars version 0.9.13-dev"; + self.versionLabel.text = @"Hedgewars version 0.9.13-dev"; [super viewDidLoad]; } @@ -37,13 +37,14 @@ return (interfaceOrientation == UIInterfaceOrientationPortrait); } */ - +/* - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } +*/ - (void)viewDidUnload { // Release any retained subviews of the main view. @@ -61,9 +62,22 @@ [super dealloc]; } +// disable the buttons when to prevent launching twice the game +-(void) viewWillDisappear:(BOOL)animated { + passandplayButton.enabled = NO; + netplayButton.enabled = NO; + storeButton.enabled = NO; + [super viewWillDisappear:animated]; +} + +-(void) viewWillAppear:(BOOL)animated { + passandplayButton.enabled = YES; + netplayButton.enabled = YES; + storeButton.enabled = YES; + [super viewWillAppear:animated]; +} + -(IBAction) startPlaying { - // TODO: support IPC and start a thread - [[SDLUIKitDelegate sharedAppDelegate] startSDLgame]; } diff -r 3207e0eacd43 -r dcd248e04f3d cocoaTouch/SDLOverrides/SDL_uikitview.m --- a/cocoaTouch/SDLOverrides/SDL_uikitview.m Wed Jan 13 09:41:35 2010 +0000 +++ b/cocoaTouch/SDLOverrides/SDL_uikitview.m Thu Jan 14 16:38:43 2010 +0000 @@ -76,6 +76,7 @@ [menuButton addTarget:[self superclass] action:@selector(attackButtonPressed) forControlEvents:UIControlEventTouchUpInside]; [self addSubview:menuButton]; + [[SDLUIKitDelegate sharedAppDelegate].window makeKeyAndVisible]; self.multipleTouchEnabled = YES; return self; diff -r 3207e0eacd43 -r dcd248e04f3d cocoaTouch/SettingsViewController.h --- a/cocoaTouch/SettingsViewController.h Wed Jan 13 09:41:35 2010 +0000 +++ b/cocoaTouch/SettingsViewController.h Thu Jan 14 16:38:43 2010 +0000 @@ -10,7 +10,21 @@ @interface SettingsViewController : UIViewController { - + UITextField *username; + UITextField *password; + UISwitch *musicOn; + UISwitch *effectsOn; + UISlider *volumeSlider; + UILabel *volumeLabel; } +@property (nonatomic, retain) IBOutlet UITextField *username; +@property (nonatomic, retain) IBOutlet UITextField *password; +@property (nonatomic, retain) IBOutlet UISwitch *musicOn; +@property (nonatomic, retain) IBOutlet UISwitch *effectsOn; +@property (nonatomic, retain) IBOutlet UISlider *volumeSlider; +@property (nonatomic, retain) IBOutlet UILabel *volumeLabel; +-(IBAction) sliderChanged: (id)sender; +-(IBAction) backgroundTap: (id)sender; +-(IBAction) textFieldDoneEditing: (id)sender; @end diff -r 3207e0eacd43 -r dcd248e04f3d cocoaTouch/SettingsViewController.m --- a/cocoaTouch/SettingsViewController.m Wed Jan 13 09:41:35 2010 +0000 +++ b/cocoaTouch/SettingsViewController.m Thu Jan 14 16:38:43 2010 +0000 @@ -11,23 +11,75 @@ @implementation SettingsViewController -/* - // The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { - if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { - // Custom initialization - } - return self; +@synthesize username, password, musicOn, effectsOn, volumeSlider, volumeLabel; + +-(NSString *)dataFilePath: (NSString *)fileName { + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *documentsDirectory = [paths objectAtIndex:0]; + return [documentsDirectory stringByAppendingPathComponent:fileName]; } -*/ + -/* -// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. -- (void)viewDidLoad { - [super viewDidLoad]; +-(void) viewDidLoad { + NSString *filePath = [self dataFilePath:@"settings.plist"]; + + if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) { + NSUserDefaults *data = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath]; + username.text = [data objectForKey:@"username"]; + password.text = [data objectForKey:@"password"]; + if (1 == [[data objectForKey:@"music"] intValue]) { + musicOn.on = YES; + } else { + musicOn.on = NO; + } + if (1 == [[data objectForKey:@"effects"] intValue]) { + effectsOn.on = YES; + } else { + effectsOn.on = NO; + } + [volumeSlider setValue:[[data objectForKey:@"volume"] intValue] animated:NO]; + NSString *tmpVol = [[NSString alloc] initWithFormat:@"%d", (int) volumeSlider.value]; + volumeLabel.text = tmpVol; + [tmpVol release]; + } + + +/* + UIApplication *app = [UIApplication sharedApplication]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(applicationWillTerminate:) + name:UIApplicationWillTerminateNotification + object:app]; +*/ [super viewDidLoad]; } -*/ + +-(void) viewDidUnload { + self.username = nil; + self.password = nil; + self.musicOn = nil; + self.effectsOn = nil; + self.volumeLabel = nil; + self.volumeSlider = nil; + [super viewDidUnload]; +} +//- (void)applicationWillTerminate:(NSNotification *)notification { +-(void) viewWillDisappear:(BOOL)animated { + NSMutableDictionary *saveArray = [[NSMutableDictionary alloc] init]; + NSString *tmpMus = (musicOn.on) ? @"1" : @"0"; + NSString *tmpEff = (effectsOn.on) ? @"1" : @"0"; + + [saveArray setObject:username.text forKey:@"username"]; + [saveArray setObject:password.text forKey:@"password"]; + [saveArray setObject:tmpMus forKey:@"music"]; + [saveArray setObject:tmpEff forKey:@"effects"]; + [saveArray setObject:volumeLabel.text forKey:@"volume"]; + + [saveArray writeToFile:[self dataFilePath:@"settings.plist"] atomically:YES]; + [saveArray release]; + [super viewWillDisappear:animated]; +} + /* // Override to allow orientations other than the default portrait orientation. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { @@ -36,20 +88,30 @@ } */ -- (void)didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. +-(IBAction) backgroundTap: (id)sender { + [username resignFirstResponder]; + [password resignFirstResponder]; +} + +-(IBAction) textFieldDoneEditing: (id)sender { + [sender resignFirstResponder]; } -- (void)viewDidUnload { - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; +-(IBAction) sliderChanged: (id) sender { + UISlider *slider = (UISlider *)sender; + int progress = slider.value; + NSString *newLabel = [[NSString alloc] initWithFormat:@"%d",progress]; + self.volumeLabel.text = newLabel; + [newLabel release]; } - -- (void)dealloc { +-(void) dealloc { + [username release]; + [password release]; + [musicOn release]; + [effectsOn release]; + [volumeLabel release]; + [volumeSlider release]; [super dealloc]; } diff -r 3207e0eacd43 -r dcd248e04f3d cocoaTouch/SettingsViewController.xib --- a/cocoaTouch/SettingsViewController.xib Wed Jan 13 09:41:35 2010 +0000 +++ b/cocoaTouch/SettingsViewController.xib Thu Jan 14 16:38:43 2010 +0000 @@ -2,13 +2,13 @@ 784 - 10A394 - 732 - 1027.1 - 430.00 + 10C540 + 740 + 1038.25 + 458.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 60 + 62 YES @@ -38,16 +38,135 @@ 292 - {320, 460} + + YES + + + 274 + {320, 431} + + NO + 4 + NO + + NSImage + Background.png + + + + + 292 + {{130, 135}, {152, 31}} + + NO + NO + 0 + + 3 + username + + 3 + MAA + + 2 + + + YES + YES + 17 + + 1 + 9 + + + + + 292 + {{130, 174}, {152, 31}} + + NO + NO + 0 + + 3 + network password (if any) + + 3 + MAA + + + YES + YES + 17 + + 1 + 9 + YES + + + + + 292 + {{38, 373}, {243, 23}} + + NO + YES + YES + 0 + 0 + 100 + 100 + NO + + + + 292 + {{188, 242}, {94, 27}} + + NO + YES + YES + 0 + 0 + YES + + + + 292 + {{188, 294}, {94, 27}} + + NO + YES + YES + 0 + 0 + YES + + + + 292 + {{56, 316}, {42, 21}} + + NO + YES + NO + + + 1 + MSAxIDEAA + + + 1 + 10 + + + {320, 431} 3 MQA - - 2 - - + @@ -61,6 +180,99 @@ 3 + + + username + + + + 13 + + + + password + + + + 14 + + + + musicOn + + + + 15 + + + + effectsOn + + + + 16 + + + + backgroundTap: + + + 1 + + 17 + + + + textFieldDoneEditing: + + + 20 + + 18 + + + + textFieldDoneEditing: + + + 20 + + 19 + + + + volumeLabel + + + + 21 + + + + volumeSlider + + + + 23 + + + + sliderChanged: + + + 3 + + 25 + + + + sliderChanged: + + + 4 + + 26 + @@ -74,6 +286,16 @@ 1 + + YES + + + + + + + + @@ -87,6 +309,41 @@ + + 4 + + + + + 5 + + + + + 6 + + + + + 7 + + + + + 8 + + + + + 9 + + + + + 20 + + + @@ -95,15 +352,31 @@ YES -1.CustomClassName -2.CustomClassName + 1.CustomClassName 1.IBEditorWindowLastContentRect 1.IBPluginDependency + 20.IBPluginDependency + 4.IBPluginDependency + 5.IBPluginDependency + 6.IBPluginDependency + 7.IBPluginDependency + 8.IBPluginDependency + 9.IBPluginDependency YES SettingsViewController UIResponder + UIControl {{556, 412}, {320, 480}} com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -122,7 +395,7 @@ - 3 + 26 @@ -130,20 +403,299 @@ SettingsViewController UIViewController + + YES + + YES + backgroundTap: + sliderChanged: + textFieldDoneEditing: + + + YES + id + id + id + + + + YES + + YES + effectsOn + musicOn + password + username + volumeLabel + volumeSlider + + + YES + UISwitch + UISwitch + UITextField + UITextField + UILabel + UISlider + + IBProjectSource - SettingsViewController.h + ../../../hedge.build/trunk/cocoaTouch/SettingsViewController.h + + + + + YES + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSNetServices.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPort.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSStream.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSXMLParser.h + + + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CAAnimation.h + + + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CALayer.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIAccessibility.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UINibLoading.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIResponder.h + + + + UIControl + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIControl.h + + + + UIImageView + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIImageView.h + + + + UILabel + UIView + + IBFrameworkSource + UIKit.framework/Headers/UILabel.h + + + + UIResponder + NSObject + + + + UISearchBar + UIView + + IBFrameworkSource + UIKit.framework/Headers/UISearchBar.h + + + + UISearchDisplayController + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UISearchDisplayController.h + + + + UISlider + UIControl + + IBFrameworkSource + UIKit.framework/Headers/UISlider.h + + + + UISwitch + UIControl + + IBFrameworkSource + UIKit.framework/Headers/UISwitch.h + + + + UITextField + UIControl + + IBFrameworkSource + UIKit.framework/Headers/UITextField.h + + + + UIView + + + + UIView + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIView.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UINavigationController.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UITabBarController.h + + + + UIViewController + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIViewController.h 0 + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 YES - + ../../../Documents/xcode/hwengine/hwengine.xcodeproj 3 3.1 diff -r 3207e0eacd43 -r dcd248e04f3d hedgewars/options.inc --- a/hedgewars/options.inc Wed Jan 13 09:41:35 2010 +0000 +++ b/hedgewars/options.inc Thu Jan 14 16:38:43 2010 +0000 @@ -27,7 +27,7 @@ {$DEFINE GLES11} {$DEFINE TOUCHINPUT} {$DEFINE LOWRES} - {$UNDEF SDL_IMAGE_NEWER} + {$DEFINE SDL_IMAGE_NEWER} {$ENDIF} {$IFNDEF DARWIN}