From c7919309e974174f4ff167790d3b8969496ed879 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Sun, 6 Mar 2011 01:11:28 +0100 Subject: [PATCH] added pong vm --- erlang_js | 2 +- games/Pong/Classes/GGSNetwork.h | 4 +- games/Pong/Classes/GGSNetwork.m | 88 +- games/Pong/Classes/PongViewController.m | 35 +- games/Pong/Pong.xcodeproj/jeena.mode1v3 | 134 +- games/Pong/Pong.xcodeproj/jeena.pbxuser | 2290 ++--------------------- src/ggs_api.js | 21 +- src/ggs_coordinator.erl | 2 +- src/ggs_gamevm.erl | 21 +- src/ggs_gamevm_p.erl | 279 +++ src/ggs_player.erl | 9 +- src/ggs_table.erl | 22 +- tests/ggs_coordinator_test.erl | 8 +- 13 files changed, 567 insertions(+), 2348 deletions(-) create mode 100644 src/ggs_gamevm_p.erl diff --git a/erlang_js b/erlang_js index 709b568..2f2785f 160000 --- a/erlang_js +++ b/erlang_js @@ -1 +1 @@ -Subproject commit 709b568efbc99c954507d1593bc5633f900bc5dc +Subproject commit 2f2785fafb0da6db75810eb6fa97d09c58257588 diff --git a/games/Pong/Classes/GGSNetwork.h b/games/Pong/Classes/GGSNetwork.h index 664fc19..66c007a 100644 --- a/games/Pong/Classes/GGSNetwork.h +++ b/games/Pong/Classes/GGSNetwork.h @@ -25,8 +25,8 @@ @property (nonatomic, retain) NSString *gameToken; - (id)initWithDelegate:(id)delegate; -- (NSData *)makeMessageWithCommand:(NSString *)command andArgs:(NSString *)args; -- (void)parseHeader:(NSData *)headerData; +- (NSData *)makeMessageFor:(NSString *)serverOrGame withCommand:(NSString *)command andArgs:(NSString *)args; +- (void)parseAndSetHeader:(NSData *)headerData; - (void)define:(NSString *)sourceCode; - (void)sendCommand:(NSString *)command withArgs:(NSString *)args; diff --git a/games/Pong/Classes/GGSNetwork.m b/games/Pong/Classes/GGSNetwork.m index 1003c48..fbf635f 100644 --- a/games/Pong/Classes/GGSNetwork.m +++ b/games/Pong/Classes/GGSNetwork.m @@ -17,6 +17,7 @@ #define HEADER_DELIMITER [@"\n\n" dataUsingEncoding:NSUTF8StringEncoding] +#define NO_TAG 7 #define CONNECT_HEAD 8 #define CONNECT_BODY 9 #define HELLO_HEAD 10 @@ -25,6 +26,8 @@ #define DEFINE_BODY 13 #define COMMAND_HEAD 14 #define COMMAND_BODY 15 +#define HEAD 16 +#define BODY 17 @synthesize asyncSocket, delegate, gameToken, currentHeaders; @@ -34,28 +37,27 @@ asyncSocket = [[AsyncSocket alloc] initWithDelegate:self]; [asyncSocket connectToHost:GGS_HOST onPort:GGS_PORT error:nil]; - [asyncSocket readDataToData:HEADER_DELIMITER withTimeout:NO_TIMEOUT tag:CONNECT_HEAD]; + [asyncSocket readDataToData:HEADER_DELIMITER withTimeout:NO_TIMEOUT tag:HEAD]; } return self; } -- (NSData *)makeMessageWithCommand:(NSString *)command andArgs:(NSString *)args { - return [[NSString stringWithFormat:@"Token: %@\nServer-Command: %@\nContent-Length: %i\n\n%@", +- (NSData *)makeMessageFor:(NSString *)serverOrGame withCommand:(NSString *)command andArgs:(NSString *)args { + return [[NSString stringWithFormat:@"Token: %@\n%@-Command: %@\nContent-Length: %i\n\n%@", self.gameToken, + serverOrGame, command, [args length], args] dataUsingEncoding:NSUTF8StringEncoding]; } - (void)define:(NSString *)sourceCode { - [asyncSocket writeData:[self makeMessageWithCommand:@"define" andArgs:sourceCode] withTimeout:NO_TIMEOUT tag:DEFINE_HEAD]; - [asyncSocket readDataToData:HEADER_DELIMITER withTimeout:NO_TIMEOUT tag:DEFINE_BODY]; + [asyncSocket writeData:[self makeMessageFor:@"Server" withCommand:@"define" andArgs:sourceCode] withTimeout:NO_TIMEOUT tag:NO_TAG]; } - (void)sendCommand:(NSString *)command withArgs:(NSString *)args { - [asyncSocket writeData:[self makeMessageWithCommand:command andArgs:args] withTimeout:NO_TIMEOUT tag:COMMAND_HEAD]; - [asyncSocket readDataToData:HEADER_DELIMITER withTimeout:NO_TIMEOUT tag:COMMAND_BODY]; + [asyncSocket writeData:[self makeMessageFor:@"Game" withCommand:command andArgs:args] withTimeout:NO_TIMEOUT tag:NO_TAG]; } - (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port { @@ -64,53 +66,49 @@ - (void)onSocket:(AsyncSocket *)sender didReadData:(NSData *)data withTag:(long)tag { - if (tag == CONNECT_HEAD) { - - [self parseHeader:data]; - - if ([self.currentHeaders objectForKey:@"Size"] != nil) { - [asyncSocket readDataToLength:[[self.currentHeaders objectForKey:@"Size"] intValue] withTimeout:NO_TIMEOUT tag:CONNECT_BODY]; - } - - - } else if (tag == CONNECT_BODY) { + + if (tag == HEAD) { + [self parseAndSetHeader:data]; - NSString *response = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; - self.gameToken = response; - [response release]; - [delegate GGSNetwork:self ready:YES]; - - } else if (tag == DEFINE_HEAD) { - - [self.delegate GGSNetwork:self defined:YES]; - - } else if (tag == DEFINE_BODY) { - - // nothing to do - - } else if (tag == COMMAND_HEAD) { - - [self parseHeader:data]; - - if ([self.currentHeaders objectForKey:@"Size"] != nil) { - [asyncSocket readDataToLength:[[self.currentHeaders objectForKey:@"Size"] intValue] withTimeout:NO_TIMEOUT tag:COMMAND_BODY]; + NSInteger size = [[self.currentHeaders objectForKey:@"Content-Size"] intValue]; + if (size > 0) { + [asyncSocket readDataToLength:size withTimeout:NO_TIMEOUT tag:BODY]; + } else { + [delegate GGSNetwork:self receivedCommand:[self.currentHeaders objectForKey:@"Client-Command"] withArgs:@""]; + [asyncSocket readDataToData:HEADER_DELIMITER withTimeout:NO_TIMEOUT tag:HEAD]; } - } else if (tag == COMMAND_BODY) { + } else { NSString *response = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; - if ([self.currentHeaders objectForKey:@"Client-Command"] != nil) { - [delegate GGSNetwork:self receivedCommand:[self.currentHeaders objectForKey:@"Client-Command"] withArgs:response]; - [asyncSocket readDataToData:HEADER_DELIMITER withTimeout:NO_TIMEOUT tag:COMMAND_BODY]; + + NSString *command = [self.currentHeaders objectForKey:@"Client-Command"]; + if ([command isEqualToString:@"defined"]) { + + if ([response isEqualToString:@"ok"]) { + [delegate GGSNetwork:self defined:YES]; + } else { + [delegate GGSNetwork:self defined:NO]; + } + + } else if ([command isEqualToString:@"hello"]) { + + self.gameToken = response; + + [delegate GGSNetwork:self ready:YES]; + + } else { + [delegate GGSNetwork:self receivedCommand:command withArgs:response]; } - [response release]; + + [asyncSocket readDataToData:HEADER_DELIMITER withTimeout:NO_TIMEOUT tag:HEAD]; } } -- (void)parseHeader:(NSData *)headerData { +- (void)parseAndSetHeader:(NSData *)headerData { NSString *headerString = [[NSString alloc] initWithData:headerData encoding:NSUTF8StringEncoding]; NSArray *headers = [headerString componentsSeparatedByString:@"\n"]; - + NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity:[headers count]]; for (NSInteger i=0; i<[headers count]; i++) { @@ -118,8 +116,8 @@ if ([header rangeOfString:@"Client-Command: "].location == 0) { [dict setValue:[header substringFromIndex:16] forKey:@"Client-Command"]; - } else if ([header rangeOfString:@"Size: "].location == 0) { - [dict setValue:[header substringFromIndex:6] forKey:@"Size"]; + } else if ([header rangeOfString:@"Content-Size: "].location == 0) { + [dict setValue:[header substringFromIndex:14] forKey:@"Content-Size"]; } } diff --git a/games/Pong/Classes/PongViewController.m b/games/Pong/Classes/PongViewController.m index 8a9b1de..4f7a3d2 100644 --- a/games/Pong/Classes/PongViewController.m +++ b/games/Pong/Classes/PongViewController.m @@ -18,7 +18,10 @@ #define WIDTH 480 #define HEIGHT 320 -@synthesize ballView, player1View, player2View, tapToBegin, pointsP1, pointsP2; +#define TOX(x) ( WIDTH / 100 * (x)) +#define TOY(y) ( HEIGHT / 100 * (y)) + +@synthesize ballView, player1View, player2View, tapToBegin, pointsP1, pointsP2, ggsNetwork; /* // The designated initializer. Override to perform setup that is required before the view is loaded. @@ -38,6 +41,10 @@ } */ +-(BOOL)canBecomeFirstResponder { + return YES; +} + #pragma mark - #pragma mark GGSNetwork Delegate @@ -47,16 +54,28 @@ - (void)GGSNetwork:(GGSNetwork *)_ggsNetwork defined:(BOOL)defined { if (defined) { - [ggsNetwork sendCommand:@"nick" withArgs:@"jeena"]; - [ggsNetwork sendCommand:@"chat" withArgs:@"Hi everybody I'm pong."]; + [ggsNetwork sendCommand:@"ready" withArgs:@""]; } else { NSLog(@"Not defined"); } } -- (void)GGSNetwork:(GGSNetwork *)ggsNetwork receivedCommand:(NSString *)command withArgs:(NSString *)args { +- (void)GGSNetwork:(GGSNetwork *)_ggsNetwork receivedCommand:(NSString *)command withArgs:(NSString *)args { NSLog(@"Command: %@; Args: %@", command, args); + + if ([command isEqualToString:@"ball"]) { + NSArray *ball = [args componentsSeparatedByString:@","]; + ballView.center = CGPointMake([[ball objectAtIndex:0] intValue], [[ball objectAtIndex:1] intValue]); + } else if ([command isEqualToString:@"player1_y"]) { + player1View.center = CGPointMake(20, TOY([args intValue])); + } else if ([command isEqualToString:@"player2_y"]) { + player2View.center = CGPointMake(WIDTH - 40, TOY([args intValue])); + } else if ([command isEqualToString:@"player1_points"]) { + pointsP1.text = args; + } else if ([command isEqualToString:@"player2_points"]) { + pointsP2.text = args; + } } @@ -70,8 +89,8 @@ ggsNetwork = [[GGSNetwork alloc] initWithDelegate:self]; gamePaused = YES; - [self startPositions]; - [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(moveBall) userInfo:nil repeats:YES]; + //[self startPositions]; + //[NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(moveBall) userInfo:nil repeats:YES]; } -(void)viewDidAppear:(BOOL)animated { @@ -104,7 +123,7 @@ // e.g. self.myOutlet = nil; } - +/* # pragma mark - # pragma mark Ball @@ -222,7 +241,7 @@ pointsP1.text = @"0"; pointsP2.text = @"0"; } - +*/ # pragma mark - # pragma mark Dealloc diff --git a/games/Pong/Pong.xcodeproj/jeena.mode1v3 b/games/Pong/Pong.xcodeproj/jeena.mode1v3 index 2254fb4..99db5bd 100644 --- a/games/Pong/Pong.xcodeproj/jeena.mode1v3 +++ b/games/Pong/Pong.xcodeproj/jeena.mode1v3 @@ -271,7 +271,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 11 + 8 1 0 @@ -296,7 +296,7 @@ 186 RubberWindowFrame - 1041 121 1267 1297 0 0 2560 1418 + 1164 121 1267 1297 0 0 2560 1418 Module PBXSmartGroupTreeModule @@ -314,7 +314,7 @@ PBXProjectModuleGUID 1CE0B20306471E060097A5F4 PBXProjectModuleLabel - GGSNetwork.m + PongViewController.m PBXSplitModuleInNavigatorKey Split0 @@ -322,11 +322,11 @@ PBXProjectModuleGUID 1CE0B20406471E060097A5F4 PBXProjectModuleLabel - GGSNetwork.m + PongViewController.m _historyCapacity 0 bookmark - 1FBEC151131B2C52006D5497 + 1F369E7B1323081C004E7A99 history 1FBEBF151319F5C1006D5497 @@ -334,11 +334,11 @@ 1FBEC002131AA71C006D5497 1FBEC05C131B085D006D5497 1FBEC05D131B085D006D5497 - 1FBEC124131B2559006D5497 - 1FBEC12D131B2581006D5497 - 1FBEC12E131B2581006D5497 - 1FBEC141131B2757006D5497 - 1FBEC13C131B26A1006D5497 + 1F369E761323081C004E7A99 + 1F369E771323081C004E7A99 + 1F369E781323081C004E7A99 + 1F369E791323081C004E7A99 + 1F369E7A1323081C004E7A99 SplitCount @@ -350,14 +350,14 @@ GeometryConfiguration Frame - {{0, 0}, {1059, 1064}} + {{0, 0}, {1059, 1251}} RubberWindowFrame - 1041 121 1267 1297 0 0 2560 1418 + 1164 121 1267 1297 0 0 2560 1418 Module PBXNavigatorGroup Proportion - 1064pt + 1251pt ContentConfiguration @@ -370,14 +370,14 @@ GeometryConfiguration Frame - {{0, 1069}, {1059, 187}} + {{0, 1256}, {1059, 0}} RubberWindowFrame - 1041 121 1267 1297 0 0 2560 1418 + 1164 121 1267 1297 0 0 2560 1418 Module XCDetailModule Proportion - 187pt + 0pt Proportion @@ -396,9 +396,9 @@ TableOfContents - 1FBEBE4E1319CC38006D5497 + 1F369E7C1323081C004E7A99 1CE0B1FE06471DED0097A5F4 - 1FBEBE4F1319CC38006D5497 + 1F369E7D1323081C004E7A99 1CE0B20306471E060097A5F4 1CE0B20506471E060097A5F4 @@ -536,15 +536,15 @@ 5 WindowOrderList - 1FBEBE9F1319D79C006D5497 - 1FBEBEA01319D79C006D5497 - 1FA056A412F0B540003F1373 + 1F369E861323081C004E7A99 + 1F369E871323081C004E7A99 1CD10A99069EF8BA00B06720 + 1FA056A412F0B540003F1373 1C78EAAD065D492600B07095 - /Users/jeena/Projects/Pong/Pong.xcodeproj + /Users/jeena/Student/GGS/games/Pong/Pong.xcodeproj WindowString - 1041 121 1267 1297 0 0 2560 1418 + 1164 121 1267 1297 0 0 2560 1418 WindowToolsV3 @@ -560,14 +560,12 @@ Dock - BecomeActive - ContentConfiguration PBXProjectModuleGUID 1CD0528F0623707200166675 PBXProjectModuleLabel - PongViewController.m + StatusBarVisibility @@ -623,7 +621,7 @@ TableOfContents 1FA056A412F0B540003F1373 - 1FBEBE501319CC38006D5497 + 1F369E7E1323081C004E7A99 1CD0528F0623707200166675 XCMainBuildResultsModuleGUID @@ -667,8 +665,8 @@ yes sizes - {{0, 0}, {316, 194}} - {{316, 0}, {378, 194}} + {{0, 0}, {316, 201}} + {{316, 0}, {378, 201}} VerticalSplitView @@ -683,8 +681,8 @@ yes sizes - {{0, 0}, {694, 194}} - {{0, 194}, {694, 187}} + {{0, 0}, {694, 201}} + {{0, 201}, {694, 180}} @@ -717,7 +715,7 @@ 148 Frame - {{316, 0}, {378, 194}} + {{316, 0}, {378, 201}} RubberWindowFrame 108 977 694 422 0 0 2560 1418 @@ -745,13 +743,13 @@ TableOfContents 1CD10A99069EF8BA00B06720 - 1FBEBE981319D79C006D5497 + 1F369E7F1323081C004E7A99 1C162984064C10D400B95A72 - 1FBEBE991319D79C006D5497 - 1FBEBE9A1319D79C006D5497 - 1FBEBE9B1319D79C006D5497 - 1FBEBE9C1319D79C006D5497 - 1FBEBE9D1319D79C006D5497 + 1F369E801323081C004E7A99 + 1F369E811323081C004E7A99 + 1F369E821323081C004E7A99 + 1F369E831323081C004E7A99 + 1F369E841323081C004E7A99 ToolbarConfiguration xcode.toolbar.config.debugV3 @@ -760,11 +758,15 @@ WindowToolGUID 1CD10A99069EF8BA00B06720 WindowToolIsVisible - + + FirstTimeWindowDisplayed + Identifier windowTool.find + IsVertical + Layout @@ -779,26 +781,16 @@ PBXProjectModuleGUID 1CDD528C0622207200134675 PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1CD0528D0623707200166675 - - SplitCount - 1 - + StatusBarVisibility - 1 + GeometryConfiguration Frame - {{0, 0}, {781, 167}} + {{0, 0}, {781, 212}} RubberWindowFrame - 62 385 781 470 0 0 1440 878 + 1185 925 781 470 0 0 2560 1418 Module PBXNavigatorGroup @@ -807,11 +799,11 @@ Proportion - 50% + 212pt BecomeActive - 1 + ContentConfiguration PBXProjectModuleGUID @@ -822,18 +814,18 @@ GeometryConfiguration Frame - {{8, 0}, {773, 254}} + {{0, 217}, {781, 212}} RubberWindowFrame - 62 385 781 470 0 0 1440 878 + 1185 925 781 470 0 0 2560 1418 Module PBXProjectFindModule Proportion - 50% + 212pt Proportion - 428pt + 429pt Name @@ -843,23 +835,21 @@ PBXProjectFindModule StatusbarIsVisible - 1 + TableOfContents 1C530D57069F1CE1000CFCEE - 1C530D58069F1CE1000CFCEE - 1C530D59069F1CE1000CFCEE + 1FC1C556131C35AC00D1FF71 + 1FC1C557131C35AC00D1FF71 1CDD528C0622207200134675 - 1C530D5A069F1CE1000CFCEE - 1CE0B1FE06471DED0097A5F4 1CD0528E0623707200166675 WindowString - 62 385 781 470 0 0 1440 878 + 1185 925 781 470 0 0 2560 1418 WindowToolGUID 1C530D57069F1CE1000CFCEE WindowToolIsVisible - 0 + Identifier @@ -890,18 +880,18 @@ GeometryConfiguration Frame - {{0, 0}, {662, 564}} + {{0, 0}, {673, 481}} RubberWindowFrame - 1852 70 662 605 0 0 2560 1418 + 3600 653 673 522 2560 0 1920 1200 Module PBXDebugCLIModule Proportion - 564pt + 481pt Proportion - 564pt + 481pt Name @@ -915,13 +905,13 @@ TableOfContents 1C78EAAD065D492600B07095 - 1FBEBE9E1319D79C006D5497 + 1F369E851323081C004E7A99 1C78EAAC065D492600B07095 ToolbarConfiguration xcode.toolbar.config.consoleV3 WindowString - 1852 70 662 605 0 0 2560 1418 + 3600 653 673 522 2560 0 1920 1200 WindowToolGUID 1C78EAAD065D492600B07095 WindowToolIsVisible diff --git a/games/Pong/Pong.xcodeproj/jeena.pbxuser b/games/Pong/Pong.xcodeproj/jeena.pbxuser index 3ec1a00..f609c15 100644 --- a/games/Pong/Pong.xcodeproj/jeena.pbxuser +++ b/games/Pong/Pong.xcodeproj/jeena.pbxuser @@ -20,6 +20,66 @@ 1FA0569112F0B513003F1373 /* Pong */, ); }; + 1F369E761323081C004E7A99 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1FBEC030131AF83B006D5497 /* GGSDelegate.h */; + name = "GGSDelegate.h: 16"; + rLen = 0; + rLoc = 283; + rType = 0; + vrLen = 531; + vrLoc = 0; + }; + 1F369E771323081C004E7A99 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1FBEBFED131A97F8006D5497 /* GGSNetwork.h */; + name = "GGSNetwork.h: 28"; + rLen = 0; + rLoc = 748; + rType = 0; + vrLen = 910; + vrLoc = 0; + }; + 1F369E781323081C004E7A99 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; + name = "GGSNetwork.m: 60"; + rLen = 0; + rLoc = 1529; + rType = 0; + vrLen = 2676; + vrLoc = 860; + }; + 1F369E791323081C004E7A99 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; + name = "PongViewController.h: 11"; + rLen = 0; + rLoc = 207; + rType = 0; + vrLen = 1144; + vrLoc = 0; + }; + 1F369E7A1323081C004E7A99 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; + name = "PongViewController.m: 24"; + rLen = 0; + rLoc = 522; + rType = 0; + vrLen = 1968; + vrLoc = 37; + }; + 1F369E7B1323081C004E7A99 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; + name = "PongViewController.m: 40"; + rLen = 0; + rLoc = 989; + rType = 0; + vrLen = 2275; + vrLoc = 799; + }; 1FA0569112F0B513003F1373 /* Pong */ = { isa = PBXExecutable; activeArgIndices = ( @@ -66,260 +126,6 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 1FB25C6312F4AAD8009AC8AB /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1455; - vrLoc = 0; - }; - 1FB25C6412F4AAD8009AC8AB /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 8D1107310486CEB800E47090 /* Pong-Info.plist */; - }; - 1FB25C6512F4AAD8009AC8AB /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D1107310486CEB800E47090 /* Pong-Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - ); - name = "/Users/jeena/Projects/Pong/Pong-Info.plist"; - rLen = 0; - rLoc = 9223372036854775808; - }; - 1FBEBE4C1319CC38006D5497 /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D1107310486CEB800E47090 /* Pong-Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - ); - name = "/Users/jeena/Projects/Pong/Pong-Info.plist"; - rLen = 0; - rLoc = 9223372036854775808; - }; - 1FBEBE4D1319CC38006D5497 /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D1107310486CEB800E47090 /* Pong-Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - ); - name = "/Users/jeena/Projects/Pong/Pong-Info.plist"; - rLen = 0; - rLoc = 9223372036854775808; - }; - 1FBEBE641319D1E5006D5497 /* PongView.h */ = { - isa = PBXFileReference; - fileEncoding = 4; - lastKnownFileType = sourcecode.c.h; - name = PongView.h; - path = /Users/jeena/Projects/Pong/Classes/PongView.h; - sourceTree = ""; - }; - 1FBEBE651319D1E5006D5497 /* PongView.m */ = { - isa = PBXFileReference; - fileEncoding = 4; - lastKnownFileType = sourcecode.c.objc; - name = PongView.m; - path = /Users/jeena/Projects/Pong/Classes/PongView.m; - sourceTree = ""; - }; - 1FBEBE911319D79C006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* PongAppDelegate.m */; - name = "PongAppDelegate.m: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 2312; - vrLoc = 0; - }; - 1FBEBE921319D79C006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 15"; - rLen = 0; - rLoc = 1137; - rType = 0; - vrLen = 224; - vrLoc = 0; - }; - 1FBEBE931319D79C006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 61"; - rLen = 0; - rLoc = 5614; - rType = 0; - vrLen = 1454; - vrLoc = 0; - }; - 1FBEBE941319D79C006D5497 /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D1107310486CEB800E47090 /* Pong-Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - ); - name = "/Users/jeena/Projects/Pong/Pong-Info.plist"; - rLen = 0; - rLoc = 9223372036854775808; - }; - 1FBEBE951319D79C006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE641319D1E5006D5497 /* PongView.h */; - name = "PongView.h: 17"; - rLen = 0; - rLoc = 185; - rType = 0; - vrLen = 489; - vrLoc = 0; - }; - 1FBEBE961319D79C006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 52"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 1438; - vrLoc = 27; - }; - 1FBEBE971319D79C006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 45"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 1618; - vrLoc = 225; - }; - 1FBEBEAB1319D7F2006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 67"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 1631; - vrLoc = 261; - }; - 1FBEBEB41319DC5A006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 37"; - rLen = 0; - rLoc = 175; - rType = 0; - vrLen = 1612; - vrLoc = 377; - }; - 1FBEBEB51319DC5A006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE641319D1E5006D5497 /* PongView.h */; - name = "PongView.h: 15"; - rLen = 0; - rLoc = 184; - rType = 0; - vrLen = 460; - vrLoc = 0; - }; - 1FBEBEB61319DC5A006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE641319D1E5006D5497 /* PongView.h */; - name = "PongView.h: 17"; - rLen = 0; - rLoc = 184; - rType = 0; - vrLen = 498; - vrLoc = 0; - }; - 1FBEBED01319E5FE006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 55"; - rLen = 0; - rLoc = 175; - rType = 0; - vrLen = 1422; - vrLoc = 27; - }; - 1FBEBED11319E5FE006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE641319D1E5006D5497 /* PongView.h */; - name = "PongView.h: 17"; - rLen = 0; - rLoc = 184; - rType = 0; - vrLen = 501; - vrLoc = 0; - }; - 1FBEBED21319E5FE006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE641319D1E5006D5497 /* PongView.h */; - name = "PongView.h: 16"; - rLen = 0; - rLoc = 184; - rType = 0; - vrLen = 532; - vrLoc = 0; - }; - 1FBEBED81319E723006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 54"; - rLen = 0; - rLoc = 175; - rType = 0; - vrLen = 1546; - vrLoc = 852; - }; - 1FBEBED91319E723006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE641319D1E5006D5497 /* PongView.h */; - name = "PongView.h: 16"; - rLen = 0; - rLoc = 184; - rType = 0; - vrLen = 532; - vrLoc = 0; - }; - 1FBEBEDA1319E723006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE641319D1E5006D5497 /* PongView.h */; - name = "PongView.h: 24"; - rLen = 0; - rLoc = 186; - rType = 0; - vrLen = 591; - vrLoc = 0; - }; - 1FBEBEF61319EEB6006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE641319D1E5006D5497 /* PongView.h */; - name = "PongView.h: 24"; - rLen = 0; - rLoc = 186; - rType = 0; - vrLen = 591; - vrLoc = 0; - }; - 1FBEBEF71319EEB6006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 87"; - rLen = 0; - rLoc = 175; - rType = 0; - vrLen = 1537; - vrLoc = 1310; - }; 1FBEBF151319F5C1006D5497 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D1107310486CEB800E47090 /* Pong-Info.plist */; @@ -331,176 +137,6 @@ rLen = 0; rLoc = 9223372036854775808; }; - 1FBEBF161319F5C1006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* PongAppDelegate.m */; - name = "PongAppDelegate.m: 27"; - rLen = 0; - rLoc = 666; - rType = 0; - vrLen = 2210; - vrLoc = 0; - }; - 1FBEBF171319F5C1006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 58"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 1571; - vrLoc = 894; - }; - 1FBEBF181319F5C1006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 17"; - rLen = 0; - rLoc = 1137; - rType = 0; - vrLen = 397; - vrLoc = 0; - }; - 1FBEBF191319F5C1006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 65"; - rLen = 0; - rLoc = 5613; - rType = 0; - vrLen = 1580; - vrLoc = 37; - }; - 1FBEBF1A1319F5C1006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 26"; - rLen = 0; - rLoc = 777; - rType = 0; - vrLen = 1647; - vrLoc = 0; - }; - 1FBEBF1E1319F691006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 26"; - rLen = 0; - rLoc = 777; - rType = 0; - vrLen = 1647; - vrLoc = 0; - }; - 1FBEBF1F1319F691006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 15"; - rLen = 0; - rLoc = 1137; - rType = 0; - vrLen = 224; - vrLoc = 0; - }; - 1FBEBF201319F691006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE641319D1E5006D5497 /* PongView.h */; - name = "PongView.h: 31"; - rLen = 0; - rLoc = 187; - rType = 0; - vrLen = 768; - vrLoc = 0; - }; - 1FBEBF211319F691006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 69"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 1507; - vrLoc = 744; - }; - 1FBEBF221319F691006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 69"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 1700; - vrLoc = 744; - }; - 1FBEBF351319F93F006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 15"; - rLen = 0; - rLoc = 1137; - rType = 0; - vrLen = 224; - vrLoc = 0; - }; - 1FBEBF361319F93F006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 61"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 1563; - vrLoc = 1106; - }; - 1FBEBF371319F93F006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 10"; - rLen = 0; - rLoc = 191; - rType = 0; - vrLen = 1593; - vrLoc = 168; - }; - 1FBEBF381319F93F006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 10"; - rLen = 0; - rLoc = 191; - rType = 0; - vrLen = 1593; - vrLoc = 168; - }; - 1FBEBF3E1319F9ED006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 60"; - rLen = 0; - rLoc = 5613; - rType = 0; - vrLen = 1502; - vrLoc = 37; - }; - 1FBEBF3F1319F9ED006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 61"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 1670; - vrLoc = 999; - }; - 1FBEBF401319F9ED006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 143"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 1552; - vrLoc = 2030; - }; 1FBEBF4B1319FCDE006D5497 /* AsyncSocket.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {900, 10170}}"; @@ -515,48 +151,20 @@ sepNavVisRange = "{0, 2997}"; }; }; - 1FBEBFAD1319FE92006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 143"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 1548; - vrLoc = 0; - }; 1FBEBFED131A97F8006D5497 /* GGSNetwork.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {900, 958}}"; - sepNavSelRange = "{396, 0}"; - sepNavVisRange = "{0, 743}"; + sepNavIntBoundsRect = "{{0, 0}, {998, 1171}}"; + sepNavSelRange = "{748, 0}"; + sepNavVisRange = "{0, 910}"; }; }; 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {998, 1755}}"; - sepNavSelRange = "{1779, 0}"; - sepNavVisRange = "{1376, 2177}"; + sepNavIntBoundsRect = "{{0, 0}, {998, 1920}}"; + sepNavSelRange = "{1529, 0}"; + sepNavVisRange = "{860, 2676}"; }; }; - 1FBEBFFD131AA714006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "'HEIGHT' undeclared (first use in this function)"; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - rLen = 0; - rLoc = 29; - rType = 1; - }; - 1FBEBFFE131AA714006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 89"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 343; - vrLoc = 1480; - }; 1FBEC001131AA71C006D5497 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 1FBEBF4B1319FCDE006D5497 /* AsyncSocket.h */; @@ -577,471 +185,13 @@ vrLen = 2997; vrLoc = 0; }; - 1FBEC003131AA71C006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFED131A97F8006D5497 /* GGSNetwork.h */; - name = "Network.h: 18"; - rLen = 0; - rLoc = 592; - rType = 0; - vrLen = 376; - vrLoc = 0; - }; - 1FBEC004131AA71C006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 143"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 1577; - vrLoc = 3; - }; - 1FBEC005131AA71C006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 31"; - rLen = 0; - rLoc = 903; - rType = 0; - vrLen = 1578; - vrLoc = 28; - }; - 1FBEC006131AA71C006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "Network.m: 31"; - rLen = 0; - rLoc = 880; - rType = 0; - vrLen = 1219; - vrLoc = 0; - }; - 1FBEC007131AA71C006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "Network.m: 28"; - rLen = 0; - rLoc = 732; - rType = 0; - vrLen = 1164; - vrLoc = 0; - }; - 1FBEC00A131AA739006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "Network.m: 28"; - rLen = 0; - rLoc = 783; - rType = 0; - vrLen = 1160; - vrLoc = 0; - }; - 1FBEC00D131AA74F006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "Network.m: 29"; - rLen = 0; - rLoc = 880; - rType = 0; - vrLen = 1189; - vrLoc = 0; - }; - 1FBEC010131AA773006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "Network.m: 29"; - rLen = 0; - rLoc = 880; - rType = 0; - vrLen = 1189; - vrLoc = 0; - }; - 1FBEC011131AA773006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 31"; - rLen = 0; - rLoc = 903; - rType = 0; - vrLen = 1576; - vrLoc = 28; - }; - 1FBEC012131AA773006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 32"; - rLen = 0; - rLoc = 904; - rType = 0; - vrLen = 1586; - vrLoc = 37; - }; - 1FBEC015131AA78E006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 31"; - rLen = 0; - rLoc = 904; - rType = 0; - vrLen = 1586; - vrLoc = 37; - }; - 1FBEC016131AA78E006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "Network.m: 29"; - rLen = 0; - rLoc = 880; - rType = 0; - vrLen = 1189; - vrLoc = 0; - }; - 1FBEC017131AA78E006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "Network.m: 31"; - rLen = 0; - rLoc = 881; - rType = 0; - vrLen = 1189; - vrLoc = 0; - }; - 1FBEC01A131AA799006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "Network.m: 29"; - rLen = 0; - rLoc = 730; - rType = 0; - vrLen = 1189; - vrLoc = 0; - }; - 1FBEC01D131AA7B8006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "Network.m: 37"; - rLen = 0; - rLoc = 2142; - rType = 0; - vrLen = 1235; - vrLoc = 0; - }; - 1FBEC020131AA7F1006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "Network.m: 32"; - rLen = 0; - rLoc = 796; - rType = 0; - vrLen = 1304; - vrLoc = 0; - }; - 1FBEC023131AA82B006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "Network.m: 36"; - rLen = 0; - rLoc = 830; - rType = 0; - vrLen = 1306; - vrLoc = 0; - }; - 1FBEC026131AF718006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "Network.m: 29"; - rLen = 0; - rLoc = 770; - rType = 0; - vrLen = 1310; - vrLoc = 0; - }; - 1FBEC029131AF724006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "Network.m: 36"; - rLen = 0; - rLoc = 830; - rType = 0; - vrLen = 1310; - vrLoc = 0; - }; - 1FBEC02C131AF749006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "Network.m: 30"; - rLen = 0; - rLoc = 830; - rType = 0; - vrLen = 1213; - vrLoc = 0; - }; - 1FBEC02F131AF752006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "Network.m: 30"; - rLen = 0; - rLoc = 830; - rType = 0; - vrLen = 1213; - vrLoc = 0; - }; 1FBEC030131AF83B006D5497 /* GGSDelegate.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {900, 958}}"; + sepNavIntBoundsRect = "{{0, 0}, {998, 1171}}"; sepNavSelRange = "{283, 0}"; - sepNavVisRange = "{0, 459}"; + sepNavVisRange = "{0, 531}"; }; }; - 1FBEC031131AFA87006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 10"; - rLen = 0; - rLoc = 207; - rType = 0; - vrLen = 262; - vrLoc = 0; - }; - 1FBEC032131AFA87006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEC030131AF83B006D5497 /* GGSDelegate.h */; - name = "GGSDelegate.h: 17"; - rLen = 67; - rLoc = 386; - rType = 0; - vrLen = 382; - vrLoc = 0; - }; - 1FBEC033131AFA87006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 40"; - rLen = 0; - rLoc = 1288; - rType = 0; - vrLen = 1595; - vrLoc = 37; - }; - 1FBEC034131AFA87006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFED131A97F8006D5497 /* GGSNetwork.h */; - name = "GGSNetwork.h: 23"; - rLen = 0; - rLoc = 592; - rType = 0; - vrLen = 600; - vrLoc = 0; - }; - 1FBEC035131AFA87006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 39"; - rLen = 0; - rLoc = 1125; - rType = 0; - vrLen = 1502; - vrLoc = 0; - }; - 1FBEC036131AFA87006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 58"; - rLen = 0; - rLoc = 2393; - rType = 0; - vrLen = 1526; - vrLoc = 26; - }; - 1FBEC037131AFC6B006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 24"; - rLen = 0; - rLoc = 497; - rType = 0; - vrLen = 2165; - vrLoc = 63; - }; - 1FBEC038131AFD26006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 45"; - rLen = 0; - rLoc = 1314; - rType = 0; - vrLen = 1617; - vrLoc = 28; - }; - 1FBEC039131AFD26006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEC030131AF83B006D5497 /* GGSDelegate.h */; - name = "GGSDelegate.h: 17"; - rLen = 0; - rLoc = 404; - rType = 0; - vrLen = 396; - vrLoc = 0; - }; - 1FBEC03A131AFD26006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFED131A97F8006D5497 /* GGSNetwork.h */; - name = "GGSNetwork.h: 27"; - rLen = 0; - rLoc = 736; - rType = 0; - vrLen = 667; - vrLoc = 0; - }; - 1FBEC03B131AFD26006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 50"; - rLen = 65; - rLoc = 1376; - rType = 0; - vrLen = 2152; - vrLoc = 254; - }; - 1FBEC03C131AFD26006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 50"; - rLen = 65; - rLoc = 1376; - rType = 0; - vrLen = 2152; - vrLoc = 254; - }; - 1FBEC03D131AFDBE006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 74"; - rLen = 0; - rLoc = 3211; - rType = 0; - vrLen = 2239; - vrLoc = 286; - }; - 1FBEC03E131AFEC7006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 55"; - rLen = 0; - rLoc = 1617; - rType = 0; - vrLen = 2232; - vrLoc = 286; - }; - 1FBEC03F131B00EA006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFED131A97F8006D5497 /* GGSNetwork.h */; - name = "GGSNetwork.h: 25"; - rLen = 14; - rLoc = 577; - rType = 0; - vrLen = 750; - vrLoc = 0; - }; - 1FBEC040131B00EA006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 75"; - rLen = 0; - rLoc = 3211; - rType = 0; - vrLen = 2099; - vrLoc = 469; - }; - 1FBEC041131B00EA006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 75"; - rLen = 0; - rLoc = 2695; - rType = 0; - vrLen = 2191; - vrLoc = 470; - }; - 1FBEC042131B01D3006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 80"; - rLen = 0; - rLoc = 2982; - rType = 0; - vrLen = 2306; - vrLoc = 437; - }; - 1FBEC043131B0346006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 89"; - rLen = 0; - rLoc = 3372; - rType = 0; - vrLen = 2426; - vrLoc = 873; - }; - 1FBEC052131B04DE006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFED131A97F8006D5497 /* GGSNetwork.h */; - name = "GGSNetwork.h: 22"; - rLen = 0; - rLoc = 396; - rType = 0; - vrLen = 740; - vrLoc = 0; - }; - 1FBEC053131B04DE006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "Invalid receiver type ''"; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - rLen = 1; - rLoc = 110; - rType = 1; - }; - 1FBEC054131B04DE006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 106"; - rLen = 0; - rLoc = 3655; - rType = 0; - vrLen = 2006; - vrLoc = 1374; - }; - 1FBEC059131B085D006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 106"; - rLen = 0; - rLoc = 3655; - rType = 0; - vrLen = 1963; - vrLoc = 0; - }; - 1FBEC05A131B085D006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEC030131AF83B006D5497 /* GGSDelegate.h */; - name = "GGSDelegate.h: 17"; - rLen = 0; - rLoc = 404; - rType = 0; - vrLen = 396; - vrLoc = 0; - }; - 1FBEC05B131B085D006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 10"; - rLen = 0; - rLoc = 207; - rType = 0; - vrLen = 262; - vrLoc = 0; - }; 1FBEC05C131B085D006D5497 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 1D3623240D0F684500981E51 /* PongAppDelegate.h */; @@ -1062,878 +212,6 @@ vrLen = 2203; vrLoc = 0; }; - 1FBEC05E131B085D006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE641319D1E5006D5497 /* PongView.h */; - name = "PongView.h: 32"; - rLen = 0; - rLoc = 186; - rType = 0; - vrLen = 789; - vrLoc = 0; - }; - 1FBEC05F131B085D006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 140"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 1321; - vrLoc = 2304; - }; - 1FBEC060131B085D006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 45"; - rLen = 0; - rLoc = 1314; - rType = 0; - vrLen = 1469; - vrLoc = 524; - }; - 1FBEC061131B085D006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 81"; - rLen = 0; - rLoc = 5498; - rType = 0; - vrLen = 1580; - vrLoc = 557; - }; - 1FBEC062131B0886006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 89"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 346; - vrLoc = 1480; - }; - 1FBEC063131B0886006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 106"; - rLen = 22; - rLoc = 3655; - rType = 0; - vrLen = 128; - vrLoc = 3252; - }; - 1FBEC064131B0886006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "Cannot find protocol declaration for 'GGSDelegate'"; - fRef = 1FBEBFED131A97F8006D5497 /* GGSNetwork.h */; - rLen = 1; - rLoc = 16; - rType = 1; - }; - 1FBEC065131B0886006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFED131A97F8006D5497 /* GGSNetwork.h */; - name = "GGSNetwork.h: 13"; - rLen = 0; - rLoc = 231; - rType = 0; - vrLen = 372; - vrLoc = 371; - }; - 1FBEC066131B0887006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFED131A97F8006D5497 /* GGSNetwork.h */; - name = "GGSNetwork.h: 13"; - rLen = 0; - rLoc = 231; - rType = 0; - vrLen = 372; - vrLoc = 371; - }; - 1FBEC069131B088B006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFED131A97F8006D5497 /* GGSNetwork.h */; - name = "GGSNetwork.h: 13"; - rLen = 0; - rLoc = 231; - rType = 0; - vrLen = 372; - vrLoc = 371; - }; - 1FBEC06A131B088B006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "Expected ';' before ':' token"; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - rLen = 0; - rLoc = 29; - rType = 1; - }; - 1FBEC06B131B088B006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 142"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 367; - vrLoc = 3167; - }; - 1FBEC06C131B0890006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 36"; - rLen = 0; - rLoc = 1175; - rType = 0; - vrLen = 1580; - vrLoc = 557; - }; - 1FBEC06D131B0890006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "Expected ';' before ':' token"; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - rLen = 0; - rLoc = 29; - rType = 1; - }; - 1FBEC06E131B0890006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 142"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 1377; - vrLoc = 2249; - }; - 1FBEC071131B08D5006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 142"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 1477; - vrLoc = 1503; - }; - 1FBEC074131B08E9006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 83"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 1523; - vrLoc = 1503; - }; - 1FBEC075131B08E9006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE641319D1E5006D5497 /* PongView.h */; - name = "PongView.h: 32"; - rLen = 0; - rLoc = 186; - rType = 0; - vrLen = 813; - vrLoc = 0; - }; - 1FBEC078131B08F9006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE641319D1E5006D5497 /* PongView.h */; - name = "PongView.h: 32"; - rLen = 0; - rLoc = 186; - rType = 0; - vrLen = 813; - vrLoc = 0; - }; - 1FBEC07B131B0941006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE641319D1E5006D5497 /* PongView.h */; - name = "PongView.h: 32"; - rLen = 0; - rLoc = 186; - rType = 0; - vrLen = 813; - vrLoc = 0; - }; - 1FBEC07C131B0941006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 44"; - rLen = 0; - rLoc = 1295; - rType = 0; - vrLen = 1571; - vrLoc = 586; - }; - 1FBEC07D131B0941006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 10"; - rLen = 0; - rLoc = 207; - rType = 0; - vrLen = 262; - vrLoc = 0; - }; - 1FBEC07E131B0941006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 12"; - rLen = 0; - rLoc = 370; - rType = 0; - vrLen = 287; - vrLoc = 0; - }; - 1FBEC07F131B094B006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 28"; - rLen = 0; - rLoc = 305; - rType = 0; - vrLen = 316; - vrLoc = 387; - }; - 1FBEC080131B094B006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "'UIView' may not respond to '-zeroPoints'"; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - rLen = 1; - rLoc = 216; - rType = 1; - }; - 1FBEC081131B094B006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 81"; - rLen = 0; - rLoc = 5481; - rType = 0; - vrLen = 236; - vrLoc = 1913; - }; - 1FBEC082131B094D006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 12"; - rLen = 0; - rLoc = 370; - rType = 0; - vrLen = 287; - vrLoc = 0; - }; - 1FBEC083131B09C6006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 12"; - rLen = 0; - rLoc = 370; - rType = 0; - vrLen = 262; - vrLoc = 0; - }; - 1FBEC084131B09C6006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 34"; - rLen = 0; - rLoc = 904; - rType = 0; - vrLen = 1644; - vrLoc = 0; - }; - 1FBEC085131B09C6006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 34"; - rLen = 0; - rLoc = 904; - rType = 0; - vrLen = 1644; - vrLoc = 0; - }; - 1FBEC088131B0A14006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 80"; - rLen = 0; - rLoc = 5304; - rType = 0; - vrLen = 1630; - vrLoc = 587; - }; - 1FBEC08B131B0A29006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 34"; - rLen = 0; - rLoc = 904; - rType = 0; - vrLen = 1672; - vrLoc = 3; - }; - 1FBEC090131B0A9C006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 56"; - rLen = 0; - rLoc = 1847; - rType = 0; - vrLen = 1664; - vrLoc = 721; - }; - 1FBEC091131B0C04006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE641319D1E5006D5497 /* PongView.h */; - name = "PongView.h: 14"; - rLen = 0; - rLoc = 186; - rType = 0; - vrLen = 193; - vrLoc = 0; - }; - 1FBEC092131B0C04006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 33"; - rLen = 0; - rLoc = 1078; - rType = 0; - vrLen = 881; - vrLoc = 0; - }; - 1FBEC093131B0C04006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 18"; - rLen = 0; - rLoc = 305; - rType = 0; - vrLen = 1514; - vrLoc = 0; - }; - 1FBEC094131B0C04006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 40"; - rLen = 0; - rLoc = 903; - rType = 0; - vrLen = 1466; - vrLoc = 0; - }; - 1FBEC095131B0C04006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 69"; - rLen = 0; - rLoc = 1846; - rType = 0; - vrLen = 1647; - vrLoc = 459; - }; - 1FBEC096131B0C44006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE651319D1E5006D5497 /* PongView.m */; - name = "PongView.m: 30"; - rLen = 0; - rLoc = 527; - rType = 0; - vrLen = 577; - vrLoc = 0; - }; - 1FBEC097131B0C44006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 104"; - rLen = 0; - rLoc = 2739; - rType = 0; - vrLen = 1843; - vrLoc = 1234; - }; - 1FBEC098131B0C44006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE641319D1E5006D5497 /* PongView.h */; - name = "PongView.h: 14"; - rLen = 0; - rLoc = 186; - rType = 0; - vrLen = 193; - vrLoc = 0; - }; - 1FBEC099131B0C44006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBE641319D1E5006D5497 /* PongView.h */; - name = "PongView.h: 14"; - rLen = 0; - rLoc = 186; - rType = 0; - vrLen = 193; - vrLoc = 0; - }; - 1FBEC0A0131B0C9D006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 16"; - rLen = 0; - rLoc = 494; - rType = 0; - vrLen = 881; - vrLoc = 0; - }; - 1FBEC0A1131B0C9D006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 9"; - rLen = 0; - rLoc = 167; - rType = 0; - vrLen = 1516; - vrLoc = 0; - }; - 1FBEC0A2131B0C9D006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 200"; - rLen = 0; - rLoc = 5266; - rType = 0; - vrLen = 1278; - vrLoc = 4097; - }; - 1FBEC0A9131B0DF1006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 36"; - rLen = 0; - rLoc = 1098; - rType = 0; - vrLen = 939; - vrLoc = 0; - }; - 1FBEC0AA131B0DF1006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 11"; - rLen = 0; - rLoc = 191; - rType = 0; - vrLen = 1528; - vrLoc = 0; - }; - 1FBEC0AB131B0DF1006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 11"; - rLen = 0; - rLoc = 191; - rType = 0; - vrLen = 1525; - vrLoc = 3; - }; - 1FBEC0B1131B0E5E006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 65"; - rLen = 0; - rLoc = 1628; - rType = 0; - vrLen = 1584; - vrLoc = 320; - }; - 1FBEC0B4131B0F17006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 70"; - rLen = 0; - rLoc = 1689; - rType = 0; - vrLen = 1865; - vrLoc = 1107; - }; - 1FBEC0B7131B0F31006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 78"; - rLen = 0; - rLoc = 1956; - rType = 0; - vrLen = 1876; - vrLoc = 1259; - }; - 1FBEC0BA131B0F8B006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 157"; - rLen = 0; - rLoc = 4192; - rType = 0; - vrLen = 1728; - vrLoc = 2623; - }; - 1FBEC0BD131B0FAD006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 71"; - rLen = 0; - rLoc = 1709; - rType = 0; - vrLen = 1724; - vrLoc = 775; - }; - 1FBEC0C5131B100A006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 71"; - rLen = 0; - rLoc = 1709; - rType = 0; - vrLen = 1701; - vrLoc = 905; - }; - 1FBEC0C8131B103C006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 71"; - rLen = 0; - rLoc = 1709; - rType = 0; - vrLen = 1725; - vrLoc = 772; - }; - 1FBEC0CB131B1081006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 36"; - rLen = 0; - rLoc = 1098; - rType = 0; - vrLen = 939; - vrLoc = 0; - }; - 1FBEC0CC131B1081006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 108"; - rLen = 0; - rLoc = 2775; - rType = 0; - vrLen = 1969; - vrLoc = 1440; - }; - 1FBEC0CD131B1081006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 111"; - rLen = 0; - rLoc = 2815; - rType = 0; - vrLen = 1983; - vrLoc = 1530; - }; - 1FBEC0D0131B10CE006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 36"; - rLen = 0; - rLoc = 1098; - rType = 0; - vrLen = 939; - vrLoc = 0; - }; - 1FBEC0D1131B10CE006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 112"; - rLen = 0; - rLoc = 2818; - rType = 0; - vrLen = 1978; - vrLoc = 1530; - }; - 1FBEC0D2131B10CE006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 71"; - rLen = 0; - rLoc = 1709; - rType = 0; - vrLen = 1588; - vrLoc = 358; - }; - 1FBEC0D9131B1173006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 157"; - rLen = 0; - rLoc = 4192; - rType = 0; - vrLen = 1791; - vrLoc = 2643; - }; - 1FBEC0DC131B117D006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 157"; - rLen = 0; - rLoc = 4192; - rType = 0; - vrLen = 1782; - vrLoc = 2662; - }; - 1FBEC0DF131B1191006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 157"; - rLen = 0; - rLoc = 4192; - rType = 0; - vrLen = 1781; - vrLoc = 2683; - }; - 1FBEC0E6131B1215006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 150"; - rLen = 0; - rLoc = 3862; - rType = 0; - vrLen = 1623; - vrLoc = 2929; - }; - 1FBEC0E9131B12CC006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 123"; - rLen = 0; - rLoc = 3345; - rType = 0; - vrLen = 1671; - vrLoc = 2605; - }; - 1FBEC0EC131B12D5006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 121"; - rLen = 0; - rLoc = 3273; - rType = 0; - vrLen = 1751; - vrLoc = 2607; - }; - 1FBEC0EF131B12ED006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 123"; - rLen = 0; - rLoc = 3345; - rType = 0; - vrLen = 1739; - vrLoc = 2642; - }; - 1FBEC0F2131B1301006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 121"; - rLen = 0; - rLoc = 3272; - rType = 0; - vrLen = 1812; - vrLoc = 2643; - }; - 1FBEC0F3131B1474006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 22"; - rLen = 0; - rLoc = 357; - rType = 0; - vrLen = 1380; - vrLoc = 0; - }; - 1FBEC0F4131B147B006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 22"; - rLen = 0; - rLoc = 357; - rType = 0; - vrLen = 1371; - vrLoc = 0; - }; - 1FBEC0F5131B149B006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 22"; - rLen = 0; - rLoc = 438; - rType = 0; - vrLen = 1439; - vrLoc = 0; - }; - 1FBEC0F6131B149B006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 16"; - rLen = 0; - rLoc = 307; - rType = 0; - vrLen = 1047; - vrLoc = 0; - }; - 1FBEC107131B21E7006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEC030131AF83B006D5497 /* GGSDelegate.h */; - name = "GGSDelegate.h: 17"; - rLen = 0; - rLoc = 404; - rType = 0; - vrLen = 396; - vrLoc = 0; - }; - 1FBEC108131B21E7006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFED131A97F8006D5497 /* GGSNetwork.h */; - name = "GGSNetwork.h: 22"; - rLen = 0; - rLoc = 396; - rType = 0; - vrLen = 743; - vrLoc = 0; - }; - 1FBEC109131B21E7006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 66"; - rLen = 0; - rLoc = 1687; - rType = 0; - vrLen = 1544; - vrLoc = 0; - }; - 1FBEC10A131B21E7006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 16"; - rLen = 0; - rLoc = 307; - rType = 0; - vrLen = 1047; - vrLoc = 0; - }; - 1FBEC10B131B21E7006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 16"; - rLen = 0; - rLoc = 306; - rType = 0; - vrLen = 1039; - vrLoc = 0; - }; - 1FBEC10E131B21FB006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 16"; - rLen = 0; - rLoc = 306; - rType = 0; - vrLen = 1039; - vrLoc = 0; - }; - 1FBEC10F131B21FB006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 155"; - rLen = 0; - rLoc = 4192; - rType = 0; - vrLen = 1644; - vrLoc = 2563; - }; - 1FBEC112131B2298006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 155"; - rLen = 0; - rLoc = 4192; - rType = 0; - vrLen = 1541; - vrLoc = 3; - }; - 1FBEC113131B2298006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 21"; - rLen = 0; - rLoc = 374; - rType = 0; - vrLen = 2049; - vrLoc = 3; - }; - 1FBEC114131B2298006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 52"; - rLen = 0; - rLoc = 1544; - rType = 0; - vrLen = 2299; - vrLoc = 315; - }; - 1FBEC117131B22BF006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 55"; - rLen = 0; - rLoc = 1609; - rType = 0; - vrLen = 2286; - vrLoc = 375; - }; - 1FBEC11A131B2423006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 57"; - rLen = 0; - rLoc = 1625; - rType = 0; - vrLen = 2345; - vrLoc = 406; - }; - 1FBEC121131B2559006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEC030131AF83B006D5497 /* GGSDelegate.h */; - name = "GGSDelegate.h: 16"; - rLen = 0; - rLoc = 283; - rType = 0; - vrLen = 459; - vrLoc = 0; - }; - 1FBEC122131B2559006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFED131A97F8006D5497 /* GGSNetwork.h */; - name = "GGSNetwork.h: 22"; - rLen = 0; - rLoc = 396; - rType = 0; - vrLen = 743; - vrLoc = 0; - }; - 1FBEC123131B2559006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 63"; - rLen = 0; - rLoc = 2142; - rType = 0; - vrLen = 2316; - vrLoc = 406; - }; 1FBEC124131B2559006D5497 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; @@ -1944,64 +222,6 @@ vrLen = 1144; vrLoc = 0; }; - 1FBEC125131B2559006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 46"; - rLen = 0; - rLoc = 1147; - rType = 0; - vrLen = 1526; - vrLoc = 697; - }; - 1FBEC126131B2559006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 45"; - rLen = 0; - rLoc = 1088; - rType = 0; - vrLen = 1614; - vrLoc = 275; - }; - 1FBEC127131B255B006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF60DDB3853001CB0EB /* PongViewController.h */; - name = "PongViewController.h: 16"; - rLen = 0; - rLoc = 304; - rType = 0; - vrLen = 327; - vrLoc = 137; - }; - 1FBEC128131B255B006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "Expected ';' before ':' token"; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - rLen = 1; - rLoc = 231; - rType = 1; - }; - 1FBEC129131B255B006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 231"; - rLen = 0; - rLoc = 5700; - rType = 0; - vrLen = 196; - vrLoc = 5479; - }; - 1FBEC12C131B2581006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 45"; - rLen = 0; - rLoc = 1142; - rType = 0; - vrLen = 1613; - vrLoc = 275; - }; 1FBEC12D131B2581006D5497 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 1FBEC030131AF83B006D5497 /* GGSDelegate.h */; @@ -2012,164 +232,64 @@ vrLen = 459; vrLoc = 0; }; - 1FBEC12E131B2581006D5497 /* PBXTextBookmark */ = { + 1FC1C5D0131C488000D1FF71 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; + name = "GGSNetwork.m: 44"; + rLen = 108; + rLoc = 963; + rType = 0; + vrLen = 2551; + vrLoc = 369; + }; + 1FC1C5D6131C806900D1FF71 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 1FBEBFED131A97F8006D5497 /* GGSNetwork.h */; - name = "GGSNetwork.h: 22"; + name = "GGSNetwork.h: 28"; rLen = 0; - rLoc = 396; + rLoc = 748; rType = 0; - vrLen = 743; + vrLen = 910; vrLoc = 0; }; - 1FBEC12F131B2581006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 74"; - rLen = 0; - rLoc = 2457; - rType = 0; - vrLen = 2367; - vrLoc = 727; - }; - 1FBEC134131B262F006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 55"; - rLen = 0; - rLoc = 1608; - rType = 0; - vrLen = 2492; - vrLoc = 796; - }; - 1FBEC135131B265A006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 42"; - rLen = 0; - rLoc = 1039; - rType = 0; - vrLen = 2411; - vrLoc = 881; - }; - 1FBEC13C131B26A1006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 45"; - rLen = 0; - rLoc = 1125; - rType = 0; - vrLen = 2427; - vrLoc = 900; - }; - 1FBEC13D131B26A1006D5497 /* PBXTextBookmark */ = { + 1FC1C5D7131C806900D1FF71 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 45"; + name = "PongViewController.m: 48"; rLen = 0; - rLoc = 1142; + rLoc = 1280; rType = 0; - vrLen = 1612; - vrLoc = 275; + vrLen = 2007; + vrLoc = 0; }; - 1FBEC13E131B26A1006D5497 /* PBXTextBookmark */ = { + 1FC1C615131D81E200D1FF71 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 45"; + name = "PongViewController.m: 85"; rLen = 0; - rLoc = 1056; + rLoc = 2811; rType = 0; - vrLen = 1684; - vrLoc = 275; - }; - 1FBEC141131B2757006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 28D7ACF70DDB3853001CB0EB /* PongViewController.m */; - name = "PongViewController.m: 45"; - rLen = 0; - rLoc = 1056; - rType = 0; - vrLen = 1660; - vrLoc = 298; - }; - 1FBEC142131B2757006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 103"; - rLen = 0; - rLoc = 3556; - rType = 0; - vrLen = 2399; - vrLoc = 1105; - }; - 1FBEC145131B2B2E006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 103"; - rLen = 0; - rLoc = 3601; - rType = 0; - vrLen = 2422; - vrLoc = 1128; - }; - 1FBEC148131B2B7E006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 101"; - rLen = 0; - rLoc = 3450; - rType = 0; - vrLen = 2326; - vrLoc = 1246; - }; - 1FBEC14B131B2BAA006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 59"; - rLen = 0; - rLoc = 1625; - rType = 0; - vrLen = 2422; - vrLoc = 1128; - }; - 1FBEC14E131B2BE6006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 58"; - rLen = 0; - rLoc = 1625; - rType = 0; - vrLen = 2177; - vrLoc = 1373; - }; - 1FBEC151131B2C52006D5497 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FBEBFEE131A97F8006D5497 /* GGSNetwork.m */; - name = "GGSNetwork.m: 59"; - rLen = 0; - rLoc = 1909; - rType = 0; - vrLen = 2177; - vrLoc = 1376; + vrLen = 2258; + vrLoc = 1218; }; 28D7ACF60DDB3853001CB0EB /* PongViewController.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {460, 795}}"; - sepNavSelRange = "{304, 0}"; - sepNavVisRange = "{137, 327}"; + sepNavIntBoundsRect = "{{0, 0}, {998, 1171}}"; + sepNavSelRange = "{207, 0}"; + sepNavVisRange = "{0, 1144}"; }; }; 28D7ACF70DDB3853001CB0EB /* PongViewController.m */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {900, 3630}}"; - sepNavSelRange = "{1056, 0}"; - sepNavVisRange = "{298, 1660}"; + sepNavIntBoundsRect = "{{0, 0}, {998, 3810}}"; + sepNavSelRange = "{989, 0}"; + sepNavVisRange = "{799, 2275}"; }; }; 29B97313FDCFA39411CA2CEA /* Project object */ = { activeBuildConfigurationName = Debug; activeExecutable = 1FA0569112F0B513003F1373 /* Pong */; - activeSDKPreference = iphonesimulator4.2; + activeSDKPreference = iphoneos4.2; activeTarget = 1D6058900D05DD3D006BFB54 /* Pong */; addToTargets = ( ); @@ -2200,215 +320,27 @@ PBXFileDataSource_Target_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 320608425; - PBXWorkspaceStateSaveDate = 320608425; + PBXPerProjectTemplateStateSaveDate = 321043010; + PBXWorkspaceStateSaveDate = 321043010; }; perUserProjectItems = { - 1FB25C6312F4AAD8009AC8AB = 1FB25C6312F4AAD8009AC8AB /* PBXTextBookmark */; - 1FB25C6412F4AAD8009AC8AB = 1FB25C6412F4AAD8009AC8AB /* PBXBookmark */; - 1FB25C6512F4AAD8009AC8AB = 1FB25C6512F4AAD8009AC8AB /* PlistBookmark */; - 1FBEBE4C1319CC38006D5497 = 1FBEBE4C1319CC38006D5497 /* PlistBookmark */; - 1FBEBE4D1319CC38006D5497 = 1FBEBE4D1319CC38006D5497 /* PlistBookmark */; - 1FBEBE911319D79C006D5497 = 1FBEBE911319D79C006D5497 /* PBXTextBookmark */; - 1FBEBE921319D79C006D5497 = 1FBEBE921319D79C006D5497 /* PBXTextBookmark */; - 1FBEBE931319D79C006D5497 = 1FBEBE931319D79C006D5497 /* PBXTextBookmark */; - 1FBEBE941319D79C006D5497 = 1FBEBE941319D79C006D5497 /* PlistBookmark */; - 1FBEBE951319D79C006D5497 = 1FBEBE951319D79C006D5497 /* PBXTextBookmark */; - 1FBEBE961319D79C006D5497 = 1FBEBE961319D79C006D5497 /* PBXTextBookmark */; - 1FBEBE971319D79C006D5497 = 1FBEBE971319D79C006D5497 /* PBXTextBookmark */; - 1FBEBEAB1319D7F2006D5497 = 1FBEBEAB1319D7F2006D5497 /* PBXTextBookmark */; - 1FBEBEB41319DC5A006D5497 = 1FBEBEB41319DC5A006D5497 /* PBXTextBookmark */; - 1FBEBEB51319DC5A006D5497 = 1FBEBEB51319DC5A006D5497 /* PBXTextBookmark */; - 1FBEBEB61319DC5A006D5497 = 1FBEBEB61319DC5A006D5497 /* PBXTextBookmark */; - 1FBEBED01319E5FE006D5497 = 1FBEBED01319E5FE006D5497 /* PBXTextBookmark */; - 1FBEBED11319E5FE006D5497 = 1FBEBED11319E5FE006D5497 /* PBXTextBookmark */; - 1FBEBED21319E5FE006D5497 = 1FBEBED21319E5FE006D5497 /* PBXTextBookmark */; - 1FBEBED81319E723006D5497 = 1FBEBED81319E723006D5497 /* PBXTextBookmark */; - 1FBEBED91319E723006D5497 = 1FBEBED91319E723006D5497 /* PBXTextBookmark */; - 1FBEBEDA1319E723006D5497 = 1FBEBEDA1319E723006D5497 /* PBXTextBookmark */; - 1FBEBEF61319EEB6006D5497 = 1FBEBEF61319EEB6006D5497 /* PBXTextBookmark */; - 1FBEBEF71319EEB6006D5497 = 1FBEBEF71319EEB6006D5497 /* PBXTextBookmark */; + 1F369E761323081C004E7A99 /* PBXTextBookmark */ = 1F369E761323081C004E7A99 /* PBXTextBookmark */; + 1F369E771323081C004E7A99 /* PBXTextBookmark */ = 1F369E771323081C004E7A99 /* PBXTextBookmark */; + 1F369E781323081C004E7A99 /* PBXTextBookmark */ = 1F369E781323081C004E7A99 /* PBXTextBookmark */; + 1F369E791323081C004E7A99 /* PBXTextBookmark */ = 1F369E791323081C004E7A99 /* PBXTextBookmark */; + 1F369E7A1323081C004E7A99 /* PBXTextBookmark */ = 1F369E7A1323081C004E7A99 /* PBXTextBookmark */; + 1F369E7B1323081C004E7A99 /* PBXTextBookmark */ = 1F369E7B1323081C004E7A99 /* PBXTextBookmark */; 1FBEBF151319F5C1006D5497 = 1FBEBF151319F5C1006D5497 /* PlistBookmark */; - 1FBEBF161319F5C1006D5497 = 1FBEBF161319F5C1006D5497 /* PBXTextBookmark */; - 1FBEBF171319F5C1006D5497 = 1FBEBF171319F5C1006D5497 /* PBXTextBookmark */; - 1FBEBF181319F5C1006D5497 = 1FBEBF181319F5C1006D5497 /* PBXTextBookmark */; - 1FBEBF191319F5C1006D5497 = 1FBEBF191319F5C1006D5497 /* PBXTextBookmark */; - 1FBEBF1A1319F5C1006D5497 = 1FBEBF1A1319F5C1006D5497 /* PBXTextBookmark */; - 1FBEBF1E1319F691006D5497 = 1FBEBF1E1319F691006D5497 /* PBXTextBookmark */; - 1FBEBF1F1319F691006D5497 = 1FBEBF1F1319F691006D5497 /* PBXTextBookmark */; - 1FBEBF201319F691006D5497 = 1FBEBF201319F691006D5497 /* PBXTextBookmark */; - 1FBEBF211319F691006D5497 = 1FBEBF211319F691006D5497 /* PBXTextBookmark */; - 1FBEBF221319F691006D5497 = 1FBEBF221319F691006D5497 /* PBXTextBookmark */; - 1FBEBF351319F93F006D5497 = 1FBEBF351319F93F006D5497 /* PBXTextBookmark */; - 1FBEBF361319F93F006D5497 = 1FBEBF361319F93F006D5497 /* PBXTextBookmark */; - 1FBEBF371319F93F006D5497 = 1FBEBF371319F93F006D5497 /* PBXTextBookmark */; - 1FBEBF381319F93F006D5497 = 1FBEBF381319F93F006D5497 /* PBXTextBookmark */; - 1FBEBF3E1319F9ED006D5497 = 1FBEBF3E1319F9ED006D5497 /* PBXTextBookmark */; - 1FBEBF3F1319F9ED006D5497 = 1FBEBF3F1319F9ED006D5497 /* PBXTextBookmark */; - 1FBEBF401319F9ED006D5497 = 1FBEBF401319F9ED006D5497 /* PBXTextBookmark */; - 1FBEBFAD1319FE92006D5497 = 1FBEBFAD1319FE92006D5497 /* PBXTextBookmark */; - 1FBEBFFD131AA714006D5497 = 1FBEBFFD131AA714006D5497 /* PBXTextBookmark */; - 1FBEBFFE131AA714006D5497 = 1FBEBFFE131AA714006D5497 /* PBXTextBookmark */; 1FBEC001131AA71C006D5497 = 1FBEC001131AA71C006D5497 /* PBXTextBookmark */; 1FBEC002131AA71C006D5497 = 1FBEC002131AA71C006D5497 /* PBXTextBookmark */; - 1FBEC003131AA71C006D5497 = 1FBEC003131AA71C006D5497 /* PBXTextBookmark */; - 1FBEC004131AA71C006D5497 = 1FBEC004131AA71C006D5497 /* PBXTextBookmark */; - 1FBEC005131AA71C006D5497 = 1FBEC005131AA71C006D5497 /* PBXTextBookmark */; - 1FBEC006131AA71C006D5497 = 1FBEC006131AA71C006D5497 /* PBXTextBookmark */; - 1FBEC007131AA71C006D5497 = 1FBEC007131AA71C006D5497 /* PBXTextBookmark */; - 1FBEC00A131AA739006D5497 = 1FBEC00A131AA739006D5497 /* PBXTextBookmark */; - 1FBEC00D131AA74F006D5497 = 1FBEC00D131AA74F006D5497 /* PBXTextBookmark */; - 1FBEC010131AA773006D5497 = 1FBEC010131AA773006D5497 /* PBXTextBookmark */; - 1FBEC011131AA773006D5497 = 1FBEC011131AA773006D5497 /* PBXTextBookmark */; - 1FBEC012131AA773006D5497 = 1FBEC012131AA773006D5497 /* PBXTextBookmark */; - 1FBEC015131AA78E006D5497 = 1FBEC015131AA78E006D5497 /* PBXTextBookmark */; - 1FBEC016131AA78E006D5497 = 1FBEC016131AA78E006D5497 /* PBXTextBookmark */; - 1FBEC017131AA78E006D5497 = 1FBEC017131AA78E006D5497 /* PBXTextBookmark */; - 1FBEC01A131AA799006D5497 = 1FBEC01A131AA799006D5497 /* PBXTextBookmark */; - 1FBEC01D131AA7B8006D5497 = 1FBEC01D131AA7B8006D5497 /* PBXTextBookmark */; - 1FBEC020131AA7F1006D5497 = 1FBEC020131AA7F1006D5497 /* PBXTextBookmark */; - 1FBEC023131AA82B006D5497 = 1FBEC023131AA82B006D5497 /* PBXTextBookmark */; - 1FBEC026131AF718006D5497 = 1FBEC026131AF718006D5497 /* PBXTextBookmark */; - 1FBEC029131AF724006D5497 = 1FBEC029131AF724006D5497 /* PBXTextBookmark */; - 1FBEC02C131AF749006D5497 = 1FBEC02C131AF749006D5497 /* PBXTextBookmark */; - 1FBEC02F131AF752006D5497 = 1FBEC02F131AF752006D5497 /* PBXTextBookmark */; - 1FBEC031131AFA87006D5497 = 1FBEC031131AFA87006D5497 /* PBXTextBookmark */; - 1FBEC032131AFA87006D5497 = 1FBEC032131AFA87006D5497 /* PBXTextBookmark */; - 1FBEC033131AFA87006D5497 = 1FBEC033131AFA87006D5497 /* PBXTextBookmark */; - 1FBEC034131AFA87006D5497 = 1FBEC034131AFA87006D5497 /* PBXTextBookmark */; - 1FBEC035131AFA87006D5497 = 1FBEC035131AFA87006D5497 /* PBXTextBookmark */; - 1FBEC036131AFA87006D5497 = 1FBEC036131AFA87006D5497 /* PBXTextBookmark */; - 1FBEC037131AFC6B006D5497 = 1FBEC037131AFC6B006D5497 /* PBXTextBookmark */; - 1FBEC038131AFD26006D5497 = 1FBEC038131AFD26006D5497 /* PBXTextBookmark */; - 1FBEC039131AFD26006D5497 = 1FBEC039131AFD26006D5497 /* PBXTextBookmark */; - 1FBEC03A131AFD26006D5497 = 1FBEC03A131AFD26006D5497 /* PBXTextBookmark */; - 1FBEC03B131AFD26006D5497 = 1FBEC03B131AFD26006D5497 /* PBXTextBookmark */; - 1FBEC03C131AFD26006D5497 = 1FBEC03C131AFD26006D5497 /* PBXTextBookmark */; - 1FBEC03D131AFDBE006D5497 = 1FBEC03D131AFDBE006D5497 /* PBXTextBookmark */; - 1FBEC03E131AFEC7006D5497 = 1FBEC03E131AFEC7006D5497 /* PBXTextBookmark */; - 1FBEC03F131B00EA006D5497 = 1FBEC03F131B00EA006D5497 /* PBXTextBookmark */; - 1FBEC040131B00EA006D5497 = 1FBEC040131B00EA006D5497 /* PBXTextBookmark */; - 1FBEC041131B00EA006D5497 = 1FBEC041131B00EA006D5497 /* PBXTextBookmark */; - 1FBEC042131B01D3006D5497 = 1FBEC042131B01D3006D5497 /* PBXTextBookmark */; - 1FBEC043131B0346006D5497 = 1FBEC043131B0346006D5497 /* PBXTextBookmark */; - 1FBEC052131B04DE006D5497 = 1FBEC052131B04DE006D5497 /* PBXTextBookmark */; - 1FBEC053131B04DE006D5497 = 1FBEC053131B04DE006D5497 /* PBXTextBookmark */; - 1FBEC054131B04DE006D5497 = 1FBEC054131B04DE006D5497 /* PBXTextBookmark */; - 1FBEC059131B085D006D5497 = 1FBEC059131B085D006D5497 /* PBXTextBookmark */; - 1FBEC05A131B085D006D5497 = 1FBEC05A131B085D006D5497 /* PBXTextBookmark */; - 1FBEC05B131B085D006D5497 = 1FBEC05B131B085D006D5497 /* PBXTextBookmark */; 1FBEC05C131B085D006D5497 = 1FBEC05C131B085D006D5497 /* PBXTextBookmark */; 1FBEC05D131B085D006D5497 = 1FBEC05D131B085D006D5497 /* PBXTextBookmark */; - 1FBEC05E131B085D006D5497 = 1FBEC05E131B085D006D5497 /* PBXTextBookmark */; - 1FBEC05F131B085D006D5497 = 1FBEC05F131B085D006D5497 /* PBXTextBookmark */; - 1FBEC060131B085D006D5497 = 1FBEC060131B085D006D5497 /* PBXTextBookmark */; - 1FBEC061131B085D006D5497 = 1FBEC061131B085D006D5497 /* PBXTextBookmark */; - 1FBEC062131B0886006D5497 = 1FBEC062131B0886006D5497 /* PBXTextBookmark */; - 1FBEC063131B0886006D5497 = 1FBEC063131B0886006D5497 /* PBXTextBookmark */; - 1FBEC064131B0886006D5497 = 1FBEC064131B0886006D5497 /* PBXTextBookmark */; - 1FBEC065131B0886006D5497 = 1FBEC065131B0886006D5497 /* PBXTextBookmark */; - 1FBEC066131B0887006D5497 = 1FBEC066131B0887006D5497 /* PBXTextBookmark */; - 1FBEC069131B088B006D5497 = 1FBEC069131B088B006D5497 /* PBXTextBookmark */; - 1FBEC06A131B088B006D5497 = 1FBEC06A131B088B006D5497 /* PBXTextBookmark */; - 1FBEC06B131B088B006D5497 = 1FBEC06B131B088B006D5497 /* PBXTextBookmark */; - 1FBEC06C131B0890006D5497 = 1FBEC06C131B0890006D5497 /* PBXTextBookmark */; - 1FBEC06D131B0890006D5497 = 1FBEC06D131B0890006D5497 /* PBXTextBookmark */; - 1FBEC06E131B0890006D5497 = 1FBEC06E131B0890006D5497 /* PBXTextBookmark */; - 1FBEC071131B08D5006D5497 = 1FBEC071131B08D5006D5497 /* PBXTextBookmark */; - 1FBEC074131B08E9006D5497 = 1FBEC074131B08E9006D5497 /* PBXTextBookmark */; - 1FBEC075131B08E9006D5497 = 1FBEC075131B08E9006D5497 /* PBXTextBookmark */; - 1FBEC078131B08F9006D5497 = 1FBEC078131B08F9006D5497 /* PBXTextBookmark */; - 1FBEC07B131B0941006D5497 = 1FBEC07B131B0941006D5497 /* PBXTextBookmark */; - 1FBEC07C131B0941006D5497 = 1FBEC07C131B0941006D5497 /* PBXTextBookmark */; - 1FBEC07D131B0941006D5497 = 1FBEC07D131B0941006D5497 /* PBXTextBookmark */; - 1FBEC07E131B0941006D5497 = 1FBEC07E131B0941006D5497 /* PBXTextBookmark */; - 1FBEC07F131B094B006D5497 = 1FBEC07F131B094B006D5497 /* PBXTextBookmark */; - 1FBEC080131B094B006D5497 = 1FBEC080131B094B006D5497 /* PBXTextBookmark */; - 1FBEC081131B094B006D5497 = 1FBEC081131B094B006D5497 /* PBXTextBookmark */; - 1FBEC082131B094D006D5497 = 1FBEC082131B094D006D5497 /* PBXTextBookmark */; - 1FBEC083131B09C6006D5497 = 1FBEC083131B09C6006D5497 /* PBXTextBookmark */; - 1FBEC084131B09C6006D5497 = 1FBEC084131B09C6006D5497 /* PBXTextBookmark */; - 1FBEC085131B09C6006D5497 = 1FBEC085131B09C6006D5497 /* PBXTextBookmark */; - 1FBEC088131B0A14006D5497 = 1FBEC088131B0A14006D5497 /* PBXTextBookmark */; - 1FBEC08B131B0A29006D5497 = 1FBEC08B131B0A29006D5497 /* PBXTextBookmark */; - 1FBEC090131B0A9C006D5497 = 1FBEC090131B0A9C006D5497 /* PBXTextBookmark */; - 1FBEC091131B0C04006D5497 = 1FBEC091131B0C04006D5497 /* PBXTextBookmark */; - 1FBEC092131B0C04006D5497 = 1FBEC092131B0C04006D5497 /* PBXTextBookmark */; - 1FBEC093131B0C04006D5497 = 1FBEC093131B0C04006D5497 /* PBXTextBookmark */; - 1FBEC094131B0C04006D5497 = 1FBEC094131B0C04006D5497 /* PBXTextBookmark */; - 1FBEC095131B0C04006D5497 = 1FBEC095131B0C04006D5497 /* PBXTextBookmark */; - 1FBEC096131B0C44006D5497 = 1FBEC096131B0C44006D5497 /* PBXTextBookmark */; - 1FBEC097131B0C44006D5497 = 1FBEC097131B0C44006D5497 /* PBXTextBookmark */; - 1FBEC098131B0C44006D5497 = 1FBEC098131B0C44006D5497 /* PBXTextBookmark */; - 1FBEC099131B0C44006D5497 = 1FBEC099131B0C44006D5497 /* PBXTextBookmark */; - 1FBEC0A0131B0C9D006D5497 = 1FBEC0A0131B0C9D006D5497 /* PBXTextBookmark */; - 1FBEC0A1131B0C9D006D5497 = 1FBEC0A1131B0C9D006D5497 /* PBXTextBookmark */; - 1FBEC0A2131B0C9D006D5497 = 1FBEC0A2131B0C9D006D5497 /* PBXTextBookmark */; - 1FBEC0A9131B0DF1006D5497 = 1FBEC0A9131B0DF1006D5497 /* PBXTextBookmark */; - 1FBEC0AA131B0DF1006D5497 = 1FBEC0AA131B0DF1006D5497 /* PBXTextBookmark */; - 1FBEC0AB131B0DF1006D5497 = 1FBEC0AB131B0DF1006D5497 /* PBXTextBookmark */; - 1FBEC0B1131B0E5E006D5497 = 1FBEC0B1131B0E5E006D5497 /* PBXTextBookmark */; - 1FBEC0B4131B0F17006D5497 = 1FBEC0B4131B0F17006D5497 /* PBXTextBookmark */; - 1FBEC0B7131B0F31006D5497 = 1FBEC0B7131B0F31006D5497 /* PBXTextBookmark */; - 1FBEC0BA131B0F8B006D5497 = 1FBEC0BA131B0F8B006D5497 /* PBXTextBookmark */; - 1FBEC0BD131B0FAD006D5497 = 1FBEC0BD131B0FAD006D5497 /* PBXTextBookmark */; - 1FBEC0C5131B100A006D5497 = 1FBEC0C5131B100A006D5497 /* PBXTextBookmark */; - 1FBEC0C8131B103C006D5497 = 1FBEC0C8131B103C006D5497 /* PBXTextBookmark */; - 1FBEC0CB131B1081006D5497 = 1FBEC0CB131B1081006D5497 /* PBXTextBookmark */; - 1FBEC0CC131B1081006D5497 = 1FBEC0CC131B1081006D5497 /* PBXTextBookmark */; - 1FBEC0CD131B1081006D5497 = 1FBEC0CD131B1081006D5497 /* PBXTextBookmark */; - 1FBEC0D0131B10CE006D5497 = 1FBEC0D0131B10CE006D5497 /* PBXTextBookmark */; - 1FBEC0D1131B10CE006D5497 = 1FBEC0D1131B10CE006D5497 /* PBXTextBookmark */; - 1FBEC0D2131B10CE006D5497 = 1FBEC0D2131B10CE006D5497 /* PBXTextBookmark */; - 1FBEC0D9131B1173006D5497 = 1FBEC0D9131B1173006D5497 /* PBXTextBookmark */; - 1FBEC0DC131B117D006D5497 = 1FBEC0DC131B117D006D5497 /* PBXTextBookmark */; - 1FBEC0DF131B1191006D5497 = 1FBEC0DF131B1191006D5497 /* PBXTextBookmark */; - 1FBEC0E6131B1215006D5497 = 1FBEC0E6131B1215006D5497 /* PBXTextBookmark */; - 1FBEC0E9131B12CC006D5497 = 1FBEC0E9131B12CC006D5497 /* PBXTextBookmark */; - 1FBEC0EC131B12D5006D5497 = 1FBEC0EC131B12D5006D5497 /* PBXTextBookmark */; - 1FBEC0EF131B12ED006D5497 = 1FBEC0EF131B12ED006D5497 /* PBXTextBookmark */; - 1FBEC0F2131B1301006D5497 = 1FBEC0F2131B1301006D5497 /* PBXTextBookmark */; - 1FBEC0F3131B1474006D5497 = 1FBEC0F3131B1474006D5497 /* PBXTextBookmark */; - 1FBEC0F4131B147B006D5497 = 1FBEC0F4131B147B006D5497 /* PBXTextBookmark */; - 1FBEC0F5131B149B006D5497 = 1FBEC0F5131B149B006D5497 /* PBXTextBookmark */; - 1FBEC0F6131B149B006D5497 = 1FBEC0F6131B149B006D5497 /* PBXTextBookmark */; - 1FBEC107131B21E7006D5497 = 1FBEC107131B21E7006D5497 /* PBXTextBookmark */; - 1FBEC108131B21E7006D5497 = 1FBEC108131B21E7006D5497 /* PBXTextBookmark */; - 1FBEC109131B21E7006D5497 = 1FBEC109131B21E7006D5497 /* PBXTextBookmark */; - 1FBEC10A131B21E7006D5497 = 1FBEC10A131B21E7006D5497 /* PBXTextBookmark */; - 1FBEC10B131B21E7006D5497 = 1FBEC10B131B21E7006D5497 /* PBXTextBookmark */; - 1FBEC10E131B21FB006D5497 = 1FBEC10E131B21FB006D5497 /* PBXTextBookmark */; - 1FBEC10F131B21FB006D5497 = 1FBEC10F131B21FB006D5497 /* PBXTextBookmark */; - 1FBEC112131B2298006D5497 = 1FBEC112131B2298006D5497 /* PBXTextBookmark */; - 1FBEC113131B2298006D5497 = 1FBEC113131B2298006D5497 /* PBXTextBookmark */; - 1FBEC114131B2298006D5497 = 1FBEC114131B2298006D5497 /* PBXTextBookmark */; - 1FBEC117131B22BF006D5497 = 1FBEC117131B22BF006D5497 /* PBXTextBookmark */; - 1FBEC11A131B2423006D5497 = 1FBEC11A131B2423006D5497 /* PBXTextBookmark */; - 1FBEC121131B2559006D5497 = 1FBEC121131B2559006D5497 /* PBXTextBookmark */; - 1FBEC122131B2559006D5497 = 1FBEC122131B2559006D5497 /* PBXTextBookmark */; - 1FBEC123131B2559006D5497 = 1FBEC123131B2559006D5497 /* PBXTextBookmark */; 1FBEC124131B2559006D5497 = 1FBEC124131B2559006D5497 /* PBXTextBookmark */; - 1FBEC125131B2559006D5497 = 1FBEC125131B2559006D5497 /* PBXTextBookmark */; - 1FBEC126131B2559006D5497 = 1FBEC126131B2559006D5497 /* PBXTextBookmark */; - 1FBEC127131B255B006D5497 = 1FBEC127131B255B006D5497 /* PBXTextBookmark */; - 1FBEC128131B255B006D5497 = 1FBEC128131B255B006D5497 /* PBXTextBookmark */; - 1FBEC129131B255B006D5497 = 1FBEC129131B255B006D5497 /* PBXTextBookmark */; - 1FBEC12C131B2581006D5497 = 1FBEC12C131B2581006D5497 /* PBXTextBookmark */; 1FBEC12D131B2581006D5497 = 1FBEC12D131B2581006D5497 /* PBXTextBookmark */; - 1FBEC12E131B2581006D5497 = 1FBEC12E131B2581006D5497 /* PBXTextBookmark */; - 1FBEC12F131B2581006D5497 = 1FBEC12F131B2581006D5497 /* PBXTextBookmark */; - 1FBEC134131B262F006D5497 = 1FBEC134131B262F006D5497 /* PBXTextBookmark */; - 1FBEC135131B265A006D5497 = 1FBEC135131B265A006D5497 /* PBXTextBookmark */; - 1FBEC13C131B26A1006D5497 = 1FBEC13C131B26A1006D5497 /* PBXTextBookmark */; - 1FBEC13D131B26A1006D5497 = 1FBEC13D131B26A1006D5497 /* PBXTextBookmark */; - 1FBEC13E131B26A1006D5497 = 1FBEC13E131B26A1006D5497 /* PBXTextBookmark */; - 1FBEC141131B2757006D5497 = 1FBEC141131B2757006D5497 /* PBXTextBookmark */; - 1FBEC142131B2757006D5497 = 1FBEC142131B2757006D5497 /* PBXTextBookmark */; - 1FBEC145131B2B2E006D5497 = 1FBEC145131B2B2E006D5497 /* PBXTextBookmark */; - 1FBEC148131B2B7E006D5497 = 1FBEC148131B2B7E006D5497 /* PBXTextBookmark */; - 1FBEC14B131B2BAA006D5497 = 1FBEC14B131B2BAA006D5497 /* PBXTextBookmark */; - 1FBEC14E131B2BE6006D5497 = 1FBEC14E131B2BE6006D5497 /* PBXTextBookmark */; - 1FBEC151131B2C52006D5497 = 1FBEC151131B2C52006D5497 /* PBXTextBookmark */; + 1FC1C5D0131C488000D1FF71 = 1FC1C5D0131C488000D1FF71 /* PBXTextBookmark */; + 1FC1C5D6131C806900D1FF71 = 1FC1C5D6131C806900D1FF71 /* PBXTextBookmark */; + 1FC1C5D7131C806900D1FF71 = 1FC1C5D7131C806900D1FF71 /* PBXTextBookmark */; + 1FC1C615131D81E200D1FF71 = 1FC1C615131D81E200D1FF71 /* PBXTextBookmark */; }; sourceControlManager = 1FA0569D12F0B528003F1373 /* Source Control */; userBuildSettings = { diff --git a/src/ggs_api.js b/src/ggs_api.js index 1111cff..4a891df 100644 --- a/src/ggs_api.js +++ b/src/ggs_api.js @@ -1,36 +1,35 @@ function Storage(type) { if (type == "world" || type == "localStorage" || type == "players") { this.type = type; - this.tableToken = tableToken; var self = this; return { setItem: function(key, value) { if(this.type != "players") - callErlang("ggs_db setItem " + escapeErlang([self.tableToken, self.type, key, value])); + callErlang("ggs_db setItem " + escapeErlang([GGS.tableToken, self.type, key, value])); else throw "No such method setItem()"; }, getItem: function(key) { - return callErlang("ggs_db getItem " + escapeErlang([self.tableToken, self.type, key])); + return callErlang("ggs_db getItem " + escapeErlang([GGS.tableToken, self.type, key])); }, key: function(position) { - return callErlang("ggs_db key " + escapeErlang([self.tableToken, self.type, position])); + return callErlang("ggs_db key " + escapeErlang([GGS.tableToken, self.type, position])); }, length: { get: function() { - return callErlang("ggs_db length " + escapeErlang([self.tableToken, self.type])); + return callErlang("ggs_db length " + escapeErlang([GGS.tableToken, self.type])); } }, removeItem: function(key) { if(this.type != "players") - callErlang("ggs_db removeItem " + escapeErlang([self.tableToken, self.type, key])); + callErlang("ggs_db removeItem " + escapeErlang([GGS.tableToken, self.type, key])); else throw "No such method removeItem()"; }, clear: function() { if(this.type != "players") - callErlang("ggs_db clear " + escapeErlang([self.tableToken, self.type])); + callErlang("ggs_db clear " + escapeErlang([GGS.tableToken, self.type])); else throw "No such method clear()"; } @@ -71,13 +70,13 @@ _GGS.prototype.sendCommandToAll = function(command, args) { } _GGS.prototype.serverLog = function(message) { - callErlang("error_logger info_msg " + escapeErlang([message])) + callErlang("'error_logger info_msg " + escapeErlang([message]) + "'"); } function escapeErlang(args) { var str = JSON.stringify(args); str = str.replace("'", "\\\'"); - return "'" + str + "'"; + return str; } function Player(token) { @@ -89,7 +88,9 @@ function Player(token) { return { sendCommand: function(command, args) { - callErlang("ggs_table send_command " + escapeErlang(GGS.tableToken, command, args)); + ejsLog("/tmp/ggs-test.txt", "'ggs_table send_command " + escapeErlang([GGS.tableToken+ "", playerToken, command, args])+"'"); + //callErlang("'ggs_table send_command " + escapeErlang([GGS.tableToken+ "", playerToken, command, args]) + "'"); + ejsLog("/tmp/ggs-test.txt", "done"); } } } diff --git a/src/ggs_coordinator.erl b/src/ggs_coordinator.erl index e9650bb..1f60425 100644 --- a/src/ggs_coordinator.erl +++ b/src/ggs_coordinator.erl @@ -103,7 +103,7 @@ handle_call(join_lobby, From, State) -> Token = helpers:get_new_token(), Players = State#co_state.players, io:format("join_lobby from: ~p~n", [From]), - {Pid, Sock} = From, + {Pid, _Sock} = From, NewState = State#co_state{players = [{Pid, Token} | Players]}, back_up(NewState), {reply, {ok, Token}, NewState}; diff --git a/src/ggs_gamevm.erl b/src/ggs_gamevm.erl index a18a7f4..9e10a52 100644 --- a/src/ggs_gamevm.erl +++ b/src/ggs_gamevm.erl @@ -54,9 +54,10 @@ stop(GameVM) -> init([Table]) -> process_flag(trap_exit, true), {ok, Port} = js_driver:new(), -% %% @TODO: add here default JS API instead {ok, JSAPISourceCode} = file:read_file("src/ggs_api.js"), ok = js:define(Port, JSAPISourceCode), + InitGGSJSString = "var GGS = new _GGS(" ++ Table ++ ");", + ok = js:define(Port, list_to_binary(InitGGSJSString)), {ok, #state { port = Port, table = Table }}. %% private @@ -66,14 +67,20 @@ handle_call({eval, SourceCode}, _From, #state { port = Port } = State) -> {reply, Ret, State}. %% @private -handle_cast({define, SourceCode}, #state { port = Port } = State) -> - ok = js:define(Port, list_to_binary(SourceCode)), - {noreply, State}; +handle_cast({define, SourceCode}, #state { port = Port, table = Table } = State) -> + Ret = js:define(Port, list_to_binary(SourceCode)), + case Ret of + ok -> + ggs_table:notify_all_players(Table, {"defined", "ok"}), + {noreply, State}; + Other -> + ggs_table:notify_all_players(Table, {"defined", "error " ++ Other}), + {noreply, State} + end; handle_cast({player_command, Player, Command, Args}, #state { port = Port } = State) -> - Arguments = string:concat("'", string:concat( - string:join([js_escape(Player), js_escape(Command), js_escape(Args)], "','"), "'")), - Js = list_to_binary(string:concat(string:concat("playerCommand(", Arguments), ");")), + Js = list_to_binary("playerCommand(new Player('" ++ Player ++ "'), '" ++ js_escape(Command) ++ "', '" ++ js_escape(Args) ++ "');"), js_driver:define_js(Port, Js), + erlang:display(binary_to_list(Js)), {noreply, State}; handle_cast(stop, State) -> {stop, normal, State}; diff --git a/src/ggs_gamevm_p.erl b/src/ggs_gamevm_p.erl new file mode 100644 index 0000000..bd1beb3 --- /dev/null +++ b/src/ggs_gamevm_p.erl @@ -0,0 +1,279 @@ +%% @doc This module is responsible for running the game VM:s. You can issue +%% commands to a vm using this module. + +-module(ggs_gamevm_p). +-behaviour(gen_server). + +%% gen_server callbacks +-export([init/1, handle_call/3, handle_cast/2, handle_info/2, + terminate/2, code_change/3]). + +-record(state, { port, table } ). + +%% API +-export([start_link/1, define/2, player_command/4, stop/1, call_js/2]). + + +%% ---------------------------------------------------------------------- +% API implementation + +%% @doc Create a new VM process. The process ID is returned and can be used +%% with for example the define method of this module. +start_link(Table) -> + erlang_js:start(), %% @TODO: should only be done once + {ok, Pid} = gen_server:start_link(?MODULE, [Table], []), + Pid. + +%% @doc Define some new code on the specified VM, returns the atom ok. +define(GameVM, SourceCode) -> + gen_server:cast(GameVM, {define, SourceCode}). + +%% @doc Execute a player command on the specified VM. This function is +%% asynchronous, and returns ok. +%% @spec player_command(GameVM, User, Command, Args) -> ok +%% GameVM = process IS of VM +%% Player = the player running the command +%% Command = a game command to run +%% Args = arguments for the Command parameter +player_command(GameVM, Player, Command, Args) -> + gen_server:cast(GameVM, {player_command, Player, Command, Args}). + +%% @private +% only for tests +call_js(GameVM, SourceCode) -> + gen_server:call(GameVM, {eval, SourceCode}). + +% @doc stops the gamevm process +stop(GameVM) -> + gen_server:cast(GameVM, stop). + + +%% ---------------------------------------------------------------------- + +%% @private +init([Table]) -> + process_flag(trap_exit, true), + {ok, Port} = js_driver:new(), + {ok, JSAPISourceCode} = file:read_file("src/ggs_api.js"), + ok = js:define(Port, JSAPISourceCode), + InitGGSJSString = "var GGS = new _GGS(" ++ Table ++ ");", + ok = js:define(Port, list_to_binary(InitGGSJSString)), + {ok, #state { port = Port, table = Table }}. + +%% private +% only needed for the tests +handle_call({eval, SourceCode}, _From, #state { port = Port } = State) -> + {ok, Ret} = js:eval(Port, list_to_binary(SourceCode)), + {reply, Ret, State}. + +%% @private +handle_cast({define, SourceCode}, #state { port = Port, table = Table } = State) -> + Ret = js:define(Port, list_to_binary(SourceCode)), + case Ret of + ok -> + ggs_table:notify_all_players(Table, {"defined", "ok"}), + {noreply, State}; + Other -> + ggs_table:notify_all_players(Table, {"defined", "error " ++ Other}), + {noreply, State} + end; +handle_cast({player_command, Player, Command, Args}, #state { port = _Port, table = Table } = State) -> + intern_player_command(Table, Player, Command, Args), + {noreply, State}; +handle_cast(stop, State) -> + {stop, normal, State}; +handle_cast(Msg, S) -> + error_logger:error_report([unknown_msg, Msg]), + {noreply, S}. + +%% @private +handle_info(Msg, S) -> + error_logger:error_report([unknown_msg, Msg]), + {noreply, S}. + +%% @private +terminate(_Reason, _State) -> + ok. + +%% @private +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + +%js_escape(S) -> +% lists:flatmap(fun($\') -> [$\\, $\']; (X) -> [X] end, S). + + +intern_player_command(Table, Player, Command, _Args) -> + case Command of + "ready" -> + intern_add_player(Table, Player); + "up" -> + intern_up(Table, Player); + "down" -> + intern_down(Table, Player); + "start" -> + intern_start(Table, Player) + end. + +intern_add_player(Table, Player) -> + {ok, PlayerList} = ggs_table:get_player_list(Table), + case length(PlayerList) of + 1 -> + ggs_db:setItem(Table, local_storage, Player, player1), + ggs_db:setItem(Table, local_storage, player1_y, 50), + ggs_table:send_command(Table, Player, {"welcome", int2str(1)}), + ggs_table:notify_all_players(Table, {"player1_y", int2str(50)}); + 2 -> + ggs_db:setItem(Table, local_storage, Player, player2), + ggs_db:setItem(Table, local_storage, player2_y, 50), + ggs_table:send_command(Table, Player, {"welcome", int2str(2)}), + ggs_table:send_command(Table, Player, {"player1_y", int2str(50)}), + ggs_table:notify_all_players(Table, {"player2_y", int2str(50)}); + _Other -> + ggs_table:send_command(Table, Player, {"not_welcome", ""}) + end. + + +intern_up(Table, Player) -> + case ggs_db:getItem(Table, local_storage, Player) of + player1 -> + Y = ggs_db:getItem(Table, local_storage, player1_y), + NewY = Y - 10, + case NewY >= 0 of + true -> + ggs_db:setItem(Table, local_storage, player1_y, NewY), + ggs_table:notify_all_players(Table, {"player1_y", int2str(NewY)}); + _Other -> + ggs_table:send_command(Table, Player, {"notice", "Already on top"}) + end; + player2 -> + Y = ggs_db:getItem(Table, local_storage, player2_y), + NewY = Y - 10, + case NewY >= 0 of + true -> + ggs_db:setItem(Table, local_storage, player2_y, NewY), + ggs_table:notify_all_players(Table, {"player2_y", int2str(NewY)}); + _Other -> + ggs_table:send_command(Table, Player, {"notice", "Already on top"}) + end + end. + +intern_down(Table, Player) -> + case ggs_db:getItem(Table, local_storage, Player) of + player1 -> + Y = ggs_db:getItem(Table, local_storage, player1_y), + NewY = Y + 10, + case NewY =< 100 of + true -> + ggs_db:setItem(Table, local_storage, player1_y, NewY), + ggs_table:notify_all_players(Table, {"player1_y", int2str(NewY)}); + _Other -> + ggs_table:send_command(Table, Player, {"notice", "Already on bottom"}) + end; + player2 -> + Y = ggs_db:getItem(Table, local_storage, player2_y), + NewY = Y + 10, + case NewY =< 100 of + true -> + ggs_db:setItem(Table, local_storage, player2_y, NewY), + ggs_table:notify_all_players(Table, {"player2_y", int2str(NewY)}); + _Other -> + ggs_table:send_command(Table, Player, {"notice", "Already on bottom"}) + end + end. + +intern_start(Table, Player) -> + case ggs_db:getItem(Table, local_storage, Player) of + player1 -> + ggs_db:setItem(Table, local_storage, player1_ready, true), + ggs_db:setItem(Table, local_storage, player1_points, 0), + case ggs_db:getItem(Table, local_storage, player2_ready) of + true -> + ggs_table:notify_all_players(Table, {"game", "start"}), + ggs_db:setItem(Table, local_storage, ball, {50,50,1,1}), + spawn(fun() -> game_loop([Table]) end); + false -> + ggs_table:send_command(Table, Player, {"game", "wait"}) + end; + player2 -> + ggs_db:setItem(Table, local_storage, player2_ready, true), + ggs_db:setItem(Table, local_storage, player2_points, 0), + case ggs_db:getItem(Table, local_storage, player1_ready) of + true -> + ggs_table:notify_all_players(Table, {"game", "start"}), + ggs_db:setItem(Table, local_storage, ball, {50,50,-1,-1}), + spawn(fun() -> game_loop([Table]) end); + false -> + ggs_table:send_command(Table, Player, {"game", "wait"}) + end + end. + +game_loop([Table]) -> + receive + tick -> + {BX, BY, SX, SY} = step_ball(ggs_db:getItem(Table, local_storage, ball)), + Ball = {BX, BY, SX, SY}, + ggs_db:setItem(Table, local_storage, ball, Ball), + ggs_table:notify_all_players(Table, {"ball", int2str(BX) ++ "," ++ int2str(BY)}), + check_ball(Table, Ball); + 'EXIT' -> + exit(normal) + after 5000 -> + self() ! tick + end. + +int2str(Int) -> + lists:flatten(io_lib:format("~p", [Int])). + +step_ball({BX, BY, SX, SY}) -> + {BX + SX, BY + SY, SX, BY}. + +check_ball(Table, {BX, BY, SX, SY}) -> + % check up and down bounds + case (BY > 90) or (BY < 0) of + true -> + NewSY = -SY; + false -> + NewSY = SY + end, + + % check intersection with player1 + P1Y = ggs_db:getItem(Table, local_storage, player1_y), + case check_intersect({0, P1Y, 10, 30}, {BX, BY, 10, 10}) of + true -> + SX1 = -SX; + false -> + SX1 = SX + end, + + % check intersection with player2 + P2Y = ggs_db:getItem(Table, local_storage, player2_y), + case check_intersect({90, P2Y, 10, 30}, {BX, BY, 10, 10}) of + true -> + SX2 = - SX1; + false -> + SX2 = SX1 + end, + ggs_db:setItem(Table, local_storage, ball, {BX, BY , SX2, NewSY}), + + % check for point player1 + if BX > 90 -> + Player1Points = ggs_db:getItem(Table, local_storage, player1_points), + NewPlayer1Points = Player1Points + 1, + ggs_db:setItem(Table, local_storage, player1_points, NewPlayer1Points), + ggs_table:notify_all_players(Table, {"player1_points", int2str(NewPlayer1Points)}), + exit(normal) + end, + + % check for point player2 + if BX < 0 -> + Player2Points = ggs_db:getItem(Table, local_storage, player2_points), + NewPlayer2Points = Player2Points + 1, + ggs_db:setItem(Table, local_storage, player2_points, NewPlayer2Points), + ggs_table:notify_all_players(Table, {"player2_points", int2str(NewPlayer2Points)}), + exit(normal) + end. + + +check_intersect({AX, AY, AW, AH}, {BX, BY, BW, BH}) -> + not (BX > (AX + AW)) or ((BX + BW) < AX) or (BY > (AY + AH)) or ((BY + BH) < AY). diff --git a/src/ggs_player.erl b/src/ggs_player.erl index 467e3ac..9146799 100644 --- a/src/ggs_player.erl +++ b/src/ggs_player.erl @@ -23,14 +23,14 @@ start_link(Socket) -> % us, otherwise these messages end up in our parent. erlang:port_connect(Socket, self()), {ok, Token} = ggs_coordinator:join_lobby(), - TableStatus = ggs_coordinator:join_table(1337), + TableStatus = ggs_coordinator:join_table("1337"), case TableStatus of {ok, Table} -> notify(self(), self(), {"hello", Token}), loop(#pl_state{socket = Socket, token = Token, table = Table}); {error, no_such_table} -> - ggs_coordinator:create_table({force, 1337}), - {ok, Table} = ggs_coordinator:join_table(1337), + ggs_coordinator:create_table({force, "1337"}), + {ok, Table} = ggs_coordinator:join_table("1337"), notify(self(), self(), {"hello", Token}), loop(#pl_state{socket = Socket, token = Token, table = Table}) end. @@ -42,7 +42,7 @@ start_link(Socket) -> notify(Player, From, Message) -> erlang:display(Message), {Cmd, Data} = Message, - Parsed = ggs_protocol:create_message(Cmd, "text","text", Data), + Parsed = ggs_protocol:create_message(Cmd, "text","text", Data), Player ! {notify, From, Parsed}. %% @doc Get the player token uniquely representing the player. @@ -69,6 +69,7 @@ loop(#pl_state{token = _Token, socket = Socket, table = Table} = State) -> self() ! Parsed, loop(State); {notify, _From, Message} -> + erlang:display(Message), gen_tcp:send(Socket, Message), loop(State); % Below are messages generated by the parser diff --git a/src/ggs_table.erl b/src/ggs_table.erl index 3bcfb7d..57785e8 100644 --- a/src/ggs_table.erl +++ b/src/ggs_table.erl @@ -18,7 +18,7 @@ notify_all_players/2, notify_game/3, get_player_list/1, - notify_player/4]). + send_command/3]). %% ---------------------------------------------------------------------- @@ -66,24 +66,16 @@ notify_game(TablePid, From, Message) -> %% @doc Notify a player sitting at this table with the message supplied. %% Player, Table and From are in token form. -notify_player(TableToken, PlayerToken, From, Message) -> +send_command(TableToken, PlayerToken, Message) -> TablePid = ggs_coordinator:table_token_to_pid(TableToken), - %PlayerPid = ggs_coordinator:player_token_to_pid(PlayerToken), - gen_server:cast(TablePid, {notify_player, PlayerToken, From, Message}). - -send_command(TableToken, PlayerToken, Command, Args) -> - gen_logger:not_implemented(). - -send_command_to_all(TableToken, Command, Args) -> - gen_logger:not_implemented(). - + gen_server:cast(TablePid, {notify_player, PlayerToken, self(), Message}). %% ---------------------------------------------------------------------- %% @private init([TableToken]) -> process_flag(trap_exit, true), - GameVM = ggs_gamevm:start_link(TableToken), + GameVM = ggs_gamevm_p:start_link(TableToken), {ok, #state { game_vm = GameVM, players = [] }}. @@ -110,14 +102,14 @@ handle_cast({notify, Player, Message}, #state { game_vm = GameVM } = State) -> PlayerToken = ggs_coordinator:player_pid_to_token(Player), case Message of {server, define, Args} -> - ggs_gamevm:define(GameVM, Args); + ggs_gamevm_p:define(GameVM, Args); {game, Command, Args} -> - ggs_gamevm:player_command(GameVM, PlayerToken, Command, Args) + ggs_gamevm_p:player_command(GameVM, PlayerToken, Command, Args) end, {noreply, State}; handle_cast({notify_game, Message, From}, #state { game_vm = GameVM } = State) -> - ggs_gamevm:player_command(GameVM, From, Message, ""), + ggs_gamevm_p:player_command(GameVM, From, Message, ""), {noreply, State}; handle_cast({notify_all_players, Message}, #state{players = Players} = State) -> diff --git a/tests/ggs_coordinator_test.erl b/tests/ggs_coordinator_test.erl index 6ec41c6..5fd4056 100644 --- a/tests/ggs_coordinator_test.erl +++ b/tests/ggs_coordinator_test.erl @@ -45,9 +45,9 @@ create_table_test() -> timer:sleep(100), % Forcibly create a table. This functionality should be disabled % in the production system, but is pretty nice for testing. - Response = ggs_coordinator:create_table({force, 1337}), - ?assert(Response == {ok, 1337}). + Response = ggs_coordinator:create_table({force, "1337"}), + ?assert(Response == {ok, "1337"}). join_good_table_test() -> - Response = ggs_coordinator:join_table(1337), - ?assert(Response == {ok, 1337}). + Response = ggs_coordinator:join_table("1337"), + ?assert(Response == {ok, "1337"}).