diff options
34 files changed, 1153 insertions, 113 deletions
diff --git a/Cart Collect.xcodeproj/project.pbxproj b/Cartographic.xcodeproj/project.pbxproj index 5ecda95..58ab09b 100755 --- a/Cart Collect.xcodeproj/project.pbxproj +++ b/Cartographic.xcodeproj/project.pbxproj | |||
@@ -101,10 +101,22 @@ | |||
101 | 6C0C140E13F1C3EC003A31B2 /* ValuableObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C0C140D13F1C3EC003A31B2 /* ValuableObject.m */; }; | 101 | 6C0C140E13F1C3EC003A31B2 /* ValuableObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C0C140D13F1C3EC003A31B2 /* ValuableObject.m */; }; |
102 | 6C0C141113F2099B003A31B2 /* Cart.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C0C141013F2099B003A31B2 /* Cart.m */; }; | 102 | 6C0C141113F2099B003A31B2 /* Cart.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C0C141013F2099B003A31B2 /* Cart.m */; }; |
103 | 6C0C141413F20E98003A31B2 /* GameMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C0C141313F20E98003A31B2 /* GameMode.m */; }; | 103 | 6C0C141413F20E98003A31B2 /* GameMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C0C141313F20E98003A31B2 /* GameMode.m */; }; |
104 | 6C18C3CA1402AD9C0005AA4C /* UIImage+ColorMasking.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C18C3C91402AD9C0005AA4C /* UIImage+ColorMasking.m */; }; | ||
105 | 6C18C3D214033DC50005AA4C /* CocosOverlayScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C18C3CD14033DC10005AA4C /* CocosOverlayScrollView.m */; }; | ||
106 | 6C18C3D314033DC60005AA4C /* NMPanelMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C18C3CF14033DC30005AA4C /* NMPanelMenu.m */; }; | ||
107 | 6C18C3D414033DC60005AA4C /* TouchDelegatingView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C18C3D114033DC40005AA4C /* TouchDelegatingView.m */; }; | ||
108 | 6C19F15B14018EE900F9CCD3 /* libTestFlight.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6C19F15A14018EE900F9CCD3 /* libTestFlight.a */; }; | ||
109 | 6C19F1631401917500F9CCD3 /* feedback.png in Resources */ = {isa = PBXBuildFile; fileRef = 6C19F1621401917500F9CCD3 /* feedback.png */; }; | ||
110 | 6C19F1651401917900F9CCD3 /* feedback2.png in Resources */ = {isa = PBXBuildFile; fileRef = 6C19F1641401917900F9CCD3 /* feedback2.png */; }; | ||
104 | 6C29041013EAEB590032DA0F /* TutorialBubble.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C29040F13EAEB590032DA0F /* TutorialBubble.m */; }; | 111 | 6C29041013EAEB590032DA0F /* TutorialBubble.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C29040F13EAEB590032DA0F /* TutorialBubble.m */; }; |
105 | 6C29041213EAEC8A0032DA0F /* framestuff.png in Resources */ = {isa = PBXBuildFile; fileRef = 6C29041113EAEC8A0032DA0F /* framestuff.png */; }; | 112 | 6C29041213EAEC8A0032DA0F /* framestuff.png in Resources */ = {isa = PBXBuildFile; fileRef = 6C29041113EAEC8A0032DA0F /* framestuff.png */; }; |
106 | 6C39CFE013FC2708002B21AF /* tutorial.png in Resources */ = {isa = PBXBuildFile; fileRef = 6C39CFDF13FC2708002B21AF /* tutorial.png */; }; | 113 | 6C39CFE013FC2708002B21AF /* tutorial.png in Resources */ = {isa = PBXBuildFile; fileRef = 6C39CFDF13FC2708002B21AF /* tutorial.png */; }; |
107 | 6C39CFE213FC2713002B21AF /* tutorial2.png in Resources */ = {isa = PBXBuildFile; fileRef = 6C39CFE113FC2713002B21AF /* tutorial2.png */; }; | 114 | 6C39CFE213FC2713002B21AF /* tutorial2.png in Resources */ = {isa = PBXBuildFile; fileRef = 6C39CFE113FC2713002B21AF /* tutorial2.png */; }; |
115 | 6C39CFF313FD4F8B002B21AF /* GameModeSelection.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C39CFF213FD4F89002B21AF /* GameModeSelection.m */; }; | ||
116 | 6C39CFF513FD5526002B21AF /* paintdaubs.png in Resources */ = {isa = PBXBuildFile; fileRef = 6C39CFF413FD5526002B21AF /* paintdaubs.png */; }; | ||
117 | 6C39CFF813FD7638002B21AF /* GameModeSelectionLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C39CFF713FD7637002B21AF /* GameModeSelectionLayer.m */; }; | ||
118 | 6C39D00813FD9037002B21AF /* florence.png in Resources */ = {isa = PBXBuildFile; fileRef = 6C39D00713FD9037002B21AF /* florence.png */; }; | ||
119 | 6C39D01213FD9945002B21AF /* paris.png in Resources */ = {isa = PBXBuildFile; fileRef = 6C39D01113FD9945002B21AF /* paris.png */; }; | ||
108 | 6C39CFE513FC4635002B21AF /* JumpGameMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C39CFE413FC4635002B21AF /* JumpGameMode.m */; }; | 120 | 6C39CFE513FC4635002B21AF /* JumpGameMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C39CFE413FC4635002B21AF /* JumpGameMode.m */; }; |
109 | 6C39CFE713FC46CD002B21AF /* water.png in Resources */ = {isa = PBXBuildFile; fileRef = 6C39CFE613FC46CD002B21AF /* water.png */; }; | 121 | 6C39CFE713FC46CD002B21AF /* water.png in Resources */ = {isa = PBXBuildFile; fileRef = 6C39CFE613FC46CD002B21AF /* water.png */; }; |
110 | 6C39CFE913FC8AC4002B21AF /* jump2.png in Resources */ = {isa = PBXBuildFile; fileRef = 6C39CFE813FC8AC4002B21AF /* jump2.png */; }; | 122 | 6C39CFE913FC8AC4002B21AF /* jump2.png in Resources */ = {isa = PBXBuildFile; fileRef = 6C39CFE813FC8AC4002B21AF /* jump2.png */; }; |
@@ -318,7 +330,7 @@ | |||
318 | /* End PBXContainerItemProxy section */ | 330 | /* End PBXContainerItemProxy section */ |
319 | 331 | ||
320 | /* Begin PBXFileReference section */ | 332 | /* Begin PBXFileReference section */ |
321 | 1D6058910D05DD3D006BFB54 /* Cart Collect.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Cart Collect.app"; sourceTree = BUILT_PRODUCTS_DIR; }; | 333 | 1D6058910D05DD3D006BFB54 /* Cartographic.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Cartographic.app; sourceTree = BUILT_PRODUCTS_DIR; }; |
322 | 1F3B9A2C0EF2145700286867 /* Cart_CollectAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Cart_CollectAppDelegate.h; path = Classes/Cart_CollectAppDelegate.h; sourceTree = SOURCE_ROOT; }; | 334 | 1F3B9A2C0EF2145700286867 /* Cart_CollectAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Cart_CollectAppDelegate.h; path = Classes/Cart_CollectAppDelegate.h; sourceTree = SOURCE_ROOT; }; |
323 | 1F3B9A820EF2151B00286867 /* Cart_Collect_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Cart_Collect_Prefix.pch; sourceTree = SOURCE_ROOT; }; | 335 | 1F3B9A820EF2151B00286867 /* Cart_Collect_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Cart_Collect_Prefix.pch; sourceTree = SOURCE_ROOT; }; |
324 | 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; | 336 | 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; |
@@ -410,17 +422,37 @@ | |||
410 | 6C0C141013F2099B003A31B2 /* Cart.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Cart.m; sourceTree = "<group>"; }; | 422 | 6C0C141013F2099B003A31B2 /* Cart.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Cart.m; sourceTree = "<group>"; }; |
411 | 6C0C141213F20E98003A31B2 /* GameMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GameMode.h; sourceTree = "<group>"; }; | 423 | 6C0C141213F20E98003A31B2 /* GameMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GameMode.h; sourceTree = "<group>"; }; |
412 | 6C0C141313F20E98003A31B2 /* GameMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GameMode.m; sourceTree = "<group>"; }; | 424 | 6C0C141313F20E98003A31B2 /* GameMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GameMode.m; sourceTree = "<group>"; }; |
425 | 6C18C3C81402AD9C0005AA4C /* UIImage+ColorMasking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+ColorMasking.h"; sourceTree = "<group>"; }; | ||
426 | 6C18C3C91402AD9C0005AA4C /* UIImage+ColorMasking.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+ColorMasking.m"; sourceTree = "<group>"; }; | ||
427 | 6C18C3CC14033DBF0005AA4C /* CocosOverlayScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CocosOverlayScrollView.h; sourceTree = "<group>"; }; | ||
428 | 6C18C3CD14033DC10005AA4C /* CocosOverlayScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CocosOverlayScrollView.m; sourceTree = "<group>"; }; | ||
429 | 6C18C3CE14033DC20005AA4C /* NMPanelMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NMPanelMenu.h; sourceTree = "<group>"; }; | ||
430 | 6C18C3CF14033DC30005AA4C /* NMPanelMenu.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NMPanelMenu.m; sourceTree = "<group>"; }; | ||
431 | 6C18C3D014033DC40005AA4C /* TouchDelegatingView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TouchDelegatingView.h; sourceTree = "<group>"; }; | ||
432 | 6C18C3D114033DC40005AA4C /* TouchDelegatingView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TouchDelegatingView.m; sourceTree = "<group>"; }; | ||
433 | 6C19F15A14018EE900F9CCD3 /* libTestFlight.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libTestFlight.a; sourceTree = "<group>"; }; | ||
434 | 6C19F15D14018FDF00F9CCD3 /* TestFlight.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestFlight.h; sourceTree = "<group>"; }; | ||
435 | 6C19F1621401917500F9CCD3 /* feedback.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = feedback.png; sourceTree = "<group>"; }; | ||
436 | 6C19F1641401917900F9CCD3 /* feedback2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = feedback2.png; sourceTree = "<group>"; }; | ||
413 | 6C29040E13EAEB590032DA0F /* TutorialBubble.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TutorialBubble.h; sourceTree = "<group>"; }; | 437 | 6C29040E13EAEB590032DA0F /* TutorialBubble.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TutorialBubble.h; sourceTree = "<group>"; }; |
414 | 6C29040F13EAEB590032DA0F /* TutorialBubble.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TutorialBubble.m; sourceTree = "<group>"; }; | 438 | 6C29040F13EAEB590032DA0F /* TutorialBubble.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TutorialBubble.m; sourceTree = "<group>"; }; |
415 | 6C29041113EAEC8A0032DA0F /* framestuff.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = framestuff.png; sourceTree = "<group>"; }; | 439 | 6C29041113EAEC8A0032DA0F /* framestuff.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = framestuff.png; sourceTree = "<group>"; }; |
416 | 6C39CFDF13FC2708002B21AF /* tutorial.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tutorial.png; sourceTree = "<group>"; }; | 440 | 6C39CFDF13FC2708002B21AF /* tutorial.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tutorial.png; sourceTree = "<group>"; }; |
417 | 6C39CFE113FC2713002B21AF /* tutorial2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tutorial2.png; sourceTree = "<group>"; }; | 441 | 6C39CFE113FC2713002B21AF /* tutorial2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tutorial2.png; sourceTree = "<group>"; }; |
442 | 6C39CFF113FD4F87002B21AF /* GameModeSelection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GameModeSelection.h; sourceTree = "<group>"; }; | ||
443 | 6C39CFF213FD4F89002B21AF /* GameModeSelection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GameModeSelection.m; sourceTree = "<group>"; }; | ||
444 | 6C39CFF413FD5526002B21AF /* paintdaubs.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = paintdaubs.png; sourceTree = "<group>"; }; | ||
445 | 6C39CFF613FD7636002B21AF /* GameModeSelectionLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GameModeSelectionLayer.h; sourceTree = "<group>"; }; | ||
446 | 6C39CFF713FD7637002B21AF /* GameModeSelectionLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GameModeSelectionLayer.m; sourceTree = "<group>"; }; | ||
447 | 6C39D00713FD9037002B21AF /* florence.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = florence.png; sourceTree = "<group>"; }; | ||
448 | 6C39D01113FD9945002B21AF /* paris.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = paris.png; sourceTree = "<group>"; }; | ||
418 | 6C39CFE313FC4635002B21AF /* JumpGameMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JumpGameMode.h; sourceTree = "<group>"; }; | 449 | 6C39CFE313FC4635002B21AF /* JumpGameMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JumpGameMode.h; sourceTree = "<group>"; }; |
419 | 6C39CFE413FC4635002B21AF /* JumpGameMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JumpGameMode.m; sourceTree = "<group>"; }; | 450 | 6C39CFE413FC4635002B21AF /* JumpGameMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JumpGameMode.m; sourceTree = "<group>"; }; |
420 | 6C39CFE613FC46CD002B21AF /* water.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = water.png; sourceTree = "<group>"; }; | 451 | 6C39CFE613FC46CD002B21AF /* water.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = water.png; sourceTree = "<group>"; }; |
421 | 6C39CFE813FC8AC4002B21AF /* jump2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = jump2.png; sourceTree = "<group>"; }; | 452 | 6C39CFE813FC8AC4002B21AF /* jump2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = jump2.png; sourceTree = "<group>"; }; |
422 | 6C39CFEA13FC8ACA002B21AF /* jump.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = jump.png; sourceTree = "<group>"; }; | 453 | 6C39CFEA13FC8ACA002B21AF /* jump.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = jump.png; sourceTree = "<group>"; }; |
423 | 6C5179C513DF3839006F1F38 /* Morning1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Morning1.png; sourceTree = "<group>"; }; | 454 | 6C5179C513DF3839006F1F38 /* Morning1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Morning1.png; sourceTree = "<group>"; }; |
455 | 6CB532581403BA4F00780A5E /* GameModeSelectionDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GameModeSelectionDelegate.h; sourceTree = "<group>"; }; | ||
424 | 6CC89DD813F2F4E6003704F7 /* Entitlements.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Entitlements.plist; sourceTree = "<group>"; }; | 456 | 6CC89DD813F2F4E6003704F7 /* Entitlements.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Entitlements.plist; sourceTree = "<group>"; }; |
425 | 6CC89DDD13F31413003704F7 /* TutorialMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TutorialMode.h; sourceTree = "<group>"; }; | 457 | 6CC89DDD13F31413003704F7 /* TutorialMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TutorialMode.h; sourceTree = "<group>"; }; |
426 | 6CC89DDE13F31413003704F7 /* TutorialMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TutorialMode.m; sourceTree = "<group>"; }; | 458 | 6CC89DDE13F31413003704F7 /* TutorialMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TutorialMode.m; sourceTree = "<group>"; }; |
@@ -631,6 +663,7 @@ | |||
631 | 506EDBA5102F4C9F00A389B3 /* AVFoundation.framework in Frameworks */, | 663 | 506EDBA5102F4C9F00A389B3 /* AVFoundation.framework in Frameworks */, |
632 | 506EE1A91030508200A389B3 /* libcocos2d libraries.a in Frameworks */, | 664 | 506EE1A91030508200A389B3 /* libcocos2d libraries.a in Frameworks */, |
633 | 3F8395D113D746200059AEE8 /* libsqlite3.0.dylib in Frameworks */, | 665 | 3F8395D113D746200059AEE8 /* libsqlite3.0.dylib in Frameworks */, |
666 | 6C19F15B14018EE900F9CCD3 /* libTestFlight.a in Frameworks */, | ||
634 | ); | 667 | ); |
635 | runOnlyForDeploymentPostprocessing = 0; | 668 | runOnlyForDeploymentPostprocessing = 0; |
636 | }; | 669 | }; |
@@ -654,7 +687,7 @@ | |||
654 | 19C28FACFE9D520D11CA2CBB /* Products */ = { | 687 | 19C28FACFE9D520D11CA2CBB /* Products */ = { |
655 | isa = PBXGroup; | 688 | isa = PBXGroup; |
656 | children = ( | 689 | children = ( |
657 | 1D6058910D05DD3D006BFB54 /* Cart Collect.app */, | 690 | 1D6058910D05DD3D006BFB54 /* Cartographic.app */, |
658 | 506EE05E10304ED200A389B3 /* libcocos2d libraries.a */, | 691 | 506EE05E10304ED200A389B3 /* libcocos2d libraries.a */, |
659 | ); | 692 | ); |
660 | name = Products; | 693 | name = Products; |
@@ -665,7 +698,7 @@ | |||
665 | children = ( | 698 | children = ( |
666 | 504DFC8A10AF177C006D82FE /* LICENSE.cocos2d */, | 699 | 504DFC8A10AF177C006D82FE /* LICENSE.cocos2d */, |
667 | 504DFC8B10AF177C006D82FE /* LICENSE.cocosdenshion */, | 700 | 504DFC8B10AF177C006D82FE /* LICENSE.cocosdenshion */, |
668 | 506EDAA3102F461B00A389B3 /* cocos2d Sources */, | 701 | 506EDAA3102F461B00A389B3 /* Libraries */, |
669 | 2D500B1D0D5A766B00DBA0E3 /* Classes */, | 702 | 2D500B1D0D5A766B00DBA0E3 /* Classes */, |
670 | 29B97315FDCFA39411CA2CEA /* Other Sources */, | 703 | 29B97315FDCFA39411CA2CEA /* Other Sources */, |
671 | 50F4144210692EE7002A0D5E /* Resources */, | 704 | 50F4144210692EE7002A0D5E /* Resources */, |
@@ -687,6 +720,7 @@ | |||
687 | 29B97323FDCFA39411CA2CEA /* Frameworks */ = { | 720 | 29B97323FDCFA39411CA2CEA /* Frameworks */ = { |
688 | isa = PBXGroup; | 721 | isa = PBXGroup; |
689 | children = ( | 722 | children = ( |
723 | 6C19F15A14018EE900F9CCD3 /* libTestFlight.a */, | ||
690 | 3F8395D013D746200059AEE8 /* libsqlite3.0.dylib */, | 724 | 3F8395D013D746200059AEE8 /* libsqlite3.0.dylib */, |
691 | DCCBF1B60F6022AE0040855A /* CoreGraphics.framework */, | 725 | DCCBF1B60F6022AE0040855A /* CoreGraphics.framework */, |
692 | DCCBF1B80F6022AE0040855A /* Foundation.framework */, | 726 | DCCBF1B80F6022AE0040855A /* Foundation.framework */, |
@@ -704,6 +738,7 @@ | |||
704 | 2D500B1D0D5A766B00DBA0E3 /* Classes */ = { | 738 | 2D500B1D0D5A766B00DBA0E3 /* Classes */ = { |
705 | isa = PBXGroup; | 739 | isa = PBXGroup; |
706 | children = ( | 740 | children = ( |
741 | 6CB532561403492E00780A5E /* Selection Screen */, | ||
707 | 6C0C141513F211C7003A31B2 /* Game Modes */, | 742 | 6C0C141513F211C7003A31B2 /* Game Modes */, |
708 | 6C5887E313EE3ED900B5A80A /* Items */, | 743 | 6C5887E313EE3ED900B5A80A /* Items */, |
709 | E0F81035120A173C005866B8 /* GameConfig.h */, | 744 | E0F81035120A173C005866B8 /* GameConfig.h */, |
@@ -728,6 +763,7 @@ | |||
728 | 3F6C7F4C13D647AF00C038FE /* Backgrounds */ = { | 763 | 3F6C7F4C13D647AF00C038FE /* Backgrounds */ = { |
729 | isa = PBXGroup; | 764 | isa = PBXGroup; |
730 | children = ( | 765 | children = ( |
766 | 6C39CFF413FD5526002B21AF /* paintdaubs.png */, | ||
731 | 6C5179C513DF3839006F1F38 /* Morning1.png */, | 767 | 6C5179C513DF3839006F1F38 /* Morning1.png */, |
732 | 3F6C7F4A13D647A600C038FE /* GameOver.png */, | 768 | 3F6C7F4A13D647A600C038FE /* GameOver.png */, |
733 | 3F6C7F2313D63E6500C038FE /* SeaBeach.png */, | 769 | 3F6C7F2313D63E6500C038FE /* SeaBeach.png */, |
@@ -775,6 +811,8 @@ | |||
775 | 3F7D0EC713D8E6B000B6CE14 /* Buttons */ = { | 811 | 3F7D0EC713D8E6B000B6CE14 /* Buttons */ = { |
776 | isa = PBXGroup; | 812 | isa = PBXGroup; |
777 | children = ( | 813 | children = ( |
814 | 6C19F1641401917900F9CCD3 /* feedback2.png */, | ||
815 | 6C19F1621401917500F9CCD3 /* feedback.png */, | ||
778 | 6C39CFEA13FC8ACA002B21AF /* jump.png */, | 816 | 6C39CFEA13FC8ACA002B21AF /* jump.png */, |
779 | 6C39CFE813FC8AC4002B21AF /* jump2.png */, | 817 | 6C39CFE813FC8AC4002B21AF /* jump2.png */, |
780 | 6C39CFE113FC2713002B21AF /* tutorial2.png */, | 818 | 6C39CFE113FC2713002B21AF /* tutorial2.png */, |
@@ -805,16 +843,17 @@ | |||
805 | path = libs/cocoslive; | 843 | path = libs/cocoslive; |
806 | sourceTree = "<group>"; | 844 | sourceTree = "<group>"; |
807 | }; | 845 | }; |
808 | 506EDAA3102F461B00A389B3 /* cocos2d Sources */ = { | 846 | 506EDAA3102F461B00A389B3 /* Libraries */ = { |
809 | isa = PBXGroup; | 847 | isa = PBXGroup; |
810 | children = ( | 848 | children = ( |
849 | 6C19F15D14018FDF00F9CCD3 /* TestFlight.h */, | ||
811 | E02BBB19126CC2F5006E46A2 /* cocos2d */, | 850 | E02BBB19126CC2F5006E46A2 /* cocos2d */, |
812 | 507ED67411C63903002ED3FC /* CocosDenshion */, | 851 | 507ED67411C63903002ED3FC /* CocosDenshion */, |
813 | 504DFC4110AF1557006D82FE /* cocoslive */, | 852 | 504DFC4110AF1557006D82FE /* cocoslive */, |
814 | 50F41306106926B2002A0D5E /* FontLabel */, | 853 | 50F41306106926B2002A0D5E /* FontLabel */, |
815 | E0ECA41F134E5F2B00E7A048 /* TouchJSON */, | 854 | E0ECA41F134E5F2B00E7A048 /* TouchJSON */, |
816 | ); | 855 | ); |
817 | name = "cocos2d Sources"; | 856 | name = Libraries; |
818 | sourceTree = "<group>"; | 857 | sourceTree = "<group>"; |
819 | }; | 858 | }; |
820 | 507ED67411C63903002ED3FC /* CocosDenshion */ = { | 859 | 507ED67411C63903002ED3FC /* CocosDenshion */ = { |
@@ -856,6 +895,7 @@ | |||
856 | 50F4144210692EE7002A0D5E /* Resources */ = { | 895 | 50F4144210692EE7002A0D5E /* Resources */ = { |
857 | isa = PBXGroup; | 896 | isa = PBXGroup; |
858 | children = ( | 897 | children = ( |
898 | 6C39D00513FD901A002B21AF /* Icons */, | ||
859 | 3F7D0EC713D8E6B000B6CE14 /* Buttons */, | 899 | 3F7D0EC713D8E6B000B6CE14 /* Buttons */, |
860 | 3F8395B713D744420059AEE8 /* cartdata.sqlite3 */, | 900 | 3F8395B713D744420059AEE8 /* cartdata.sqlite3 */, |
861 | 3F6C7F5D13D648D300C038FE /* Fonts */, | 901 | 3F6C7F5D13D648D300C038FE /* Fonts */, |
@@ -889,6 +929,15 @@ | |||
889 | name = "Game Modes"; | 929 | name = "Game Modes"; |
890 | sourceTree = "<group>"; | 930 | sourceTree = "<group>"; |
891 | }; | 931 | }; |
932 | 6C39D00513FD901A002B21AF /* Icons */ = { | ||
933 | isa = PBXGroup; | ||
934 | children = ( | ||
935 | 6C39D01113FD9945002B21AF /* paris.png */, | ||
936 | 6C39D00713FD9037002B21AF /* florence.png */, | ||
937 | ); | ||
938 | name = Icons; | ||
939 | sourceTree = "<group>"; | ||
940 | }; | ||
892 | 6C5887E313EE3ED900B5A80A /* Items */ = { | 941 | 6C5887E313EE3ED900B5A80A /* Items */ = { |
893 | isa = PBXGroup; | 942 | isa = PBXGroup; |
894 | children = ( | 943 | children = ( |
@@ -911,6 +960,26 @@ | |||
911 | name = Items; | 960 | name = Items; |
912 | sourceTree = "<group>"; | 961 | sourceTree = "<group>"; |
913 | }; | 962 | }; |
963 | 6CB532561403492E00780A5E /* Selection Screen */ = { | ||
964 | isa = PBXGroup; | ||
965 | children = ( | ||
966 | 6C39CFF113FD4F87002B21AF /* GameModeSelection.h */, | ||
967 | 6C39CFF213FD4F89002B21AF /* GameModeSelection.m */, | ||
968 | 6C39CFF613FD7636002B21AF /* GameModeSelectionLayer.h */, | ||
969 | 6C39CFF713FD7637002B21AF /* GameModeSelectionLayer.m */, | ||
970 | 6C18C3C81402AD9C0005AA4C /* UIImage+ColorMasking.h */, | ||
971 | 6C18C3C91402AD9C0005AA4C /* UIImage+ColorMasking.m */, | ||
972 | 6C18C3CC14033DBF0005AA4C /* CocosOverlayScrollView.h */, | ||
973 | 6C18C3CD14033DC10005AA4C /* CocosOverlayScrollView.m */, | ||
974 | 6C18C3CE14033DC20005AA4C /* NMPanelMenu.h */, | ||
975 | 6C18C3CF14033DC30005AA4C /* NMPanelMenu.m */, | ||
976 | 6C18C3D014033DC40005AA4C /* TouchDelegatingView.h */, | ||
977 | 6C18C3D114033DC40005AA4C /* TouchDelegatingView.m */, | ||
978 | 6CB532581403BA4F00780A5E /* GameModeSelectionDelegate.h */, | ||
979 | ); | ||
980 | name = "Selection Screen"; | ||
981 | sourceTree = "<group>"; | ||
982 | }; | ||
914 | E02BBB19126CC2F5006E46A2 /* cocos2d */ = { | 983 | E02BBB19126CC2F5006E46A2 /* cocos2d */ = { |
915 | isa = PBXGroup; | 984 | isa = PBXGroup; |
916 | children = ( | 985 | children = ( |
@@ -1271,9 +1340,9 @@ | |||
1271 | /* End PBXHeadersBuildPhase section */ | 1340 | /* End PBXHeadersBuildPhase section */ |
1272 | 1341 | ||
1273 | /* Begin PBXNativeTarget section */ | 1342 | /* Begin PBXNativeTarget section */ |
1274 | 1D6058900D05DD3D006BFB54 /* Cart Collect */ = { | 1343 | 1D6058900D05DD3D006BFB54 /* Cartographic */ = { |
1275 | isa = PBXNativeTarget; | 1344 | isa = PBXNativeTarget; |
1276 | buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "Cart Collect" */; | 1345 | buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "Cartographic" */; |
1277 | buildPhases = ( | 1346 | buildPhases = ( |
1278 | 1D60588D0D05DD3D006BFB54 /* Resources */, | 1347 | 1D60588D0D05DD3D006BFB54 /* Resources */, |
1279 | 1D60588E0D05DD3D006BFB54 /* Sources */, | 1348 | 1D60588E0D05DD3D006BFB54 /* Sources */, |
@@ -1285,9 +1354,9 @@ | |||
1285 | 6C263DE113F6F6E800116746 /* PBXTargetDependency */, | 1354 | 6C263DE113F6F6E800116746 /* PBXTargetDependency */, |
1286 | 506EE1A81030507B00A389B3 /* PBXTargetDependency */, | 1355 | 506EE1A81030507B00A389B3 /* PBXTargetDependency */, |
1287 | ); | 1356 | ); |
1288 | name = "Cart Collect"; | 1357 | name = Cartographic; |
1289 | productName = "Cart Collect"; | 1358 | productName = "Cart Collect"; |
1290 | productReference = 1D6058910D05DD3D006BFB54 /* Cart Collect.app */; | 1359 | productReference = 1D6058910D05DD3D006BFB54 /* Cartographic.app */; |
1291 | productType = "com.apple.product-type.application"; | 1360 | productType = "com.apple.product-type.application"; |
1292 | }; | 1361 | }; |
1293 | 506EE05D10304ED200A389B3 /* cocos2d libraries */ = { | 1362 | 506EE05D10304ED200A389B3 /* cocos2d libraries */ = { |
@@ -1315,7 +1384,7 @@ | |||
1315 | attributes = { | 1384 | attributes = { |
1316 | LastUpgradeCheck = 0410; | 1385 | LastUpgradeCheck = 0410; |
1317 | }; | 1386 | }; |
1318 | buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Cart Collect" */; | 1387 | buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Cartographic" */; |
1319 | compatibilityVersion = "Xcode 3.2"; | 1388 | compatibilityVersion = "Xcode 3.2"; |
1320 | developmentRegion = English; | 1389 | developmentRegion = English; |
1321 | hasScannedForEncodings = 1; | 1390 | hasScannedForEncodings = 1; |
@@ -1329,7 +1398,7 @@ | |||
1329 | projectDirPath = ""; | 1398 | projectDirPath = ""; |
1330 | projectRoot = ""; | 1399 | projectRoot = ""; |
1331 | targets = ( | 1400 | targets = ( |
1332 | 1D6058900D05DD3D006BFB54 /* Cart Collect */, | 1401 | 1D6058900D05DD3D006BFB54 /* Cartographic */, |
1333 | 506EE05D10304ED200A389B3 /* cocos2d libraries */, | 1402 | 506EE05D10304ED200A389B3 /* cocos2d libraries */, |
1334 | 6C263DDB13F6F4A000116746 /* Versioning */, | 1403 | 6C263DDB13F6F4A000116746 /* Versioning */, |
1335 | ); | 1404 | ); |
@@ -1377,6 +1446,11 @@ | |||
1377 | 6CC89DD913F2F4E6003704F7 /* Entitlements.plist in Resources */, | 1446 | 6CC89DD913F2F4E6003704F7 /* Entitlements.plist in Resources */, |
1378 | 6C39CFE013FC2708002B21AF /* tutorial.png in Resources */, | 1447 | 6C39CFE013FC2708002B21AF /* tutorial.png in Resources */, |
1379 | 6C39CFE213FC2713002B21AF /* tutorial2.png in Resources */, | 1448 | 6C39CFE213FC2713002B21AF /* tutorial2.png in Resources */, |
1449 | 6C39CFF513FD5526002B21AF /* paintdaubs.png in Resources */, | ||
1450 | 6C39D00813FD9037002B21AF /* florence.png in Resources */, | ||
1451 | 6C39D01213FD9945002B21AF /* paris.png in Resources */, | ||
1452 | 6C19F1631401917500F9CCD3 /* feedback.png in Resources */, | ||
1453 | 6C19F1651401917900F9CCD3 /* feedback2.png in Resources */, | ||
1380 | 6C39CFE713FC46CD002B21AF /* water.png in Resources */, | 1454 | 6C39CFE713FC46CD002B21AF /* water.png in Resources */, |
1381 | 6C39CFE913FC8AC4002B21AF /* jump2.png in Resources */, | 1455 | 6C39CFE913FC8AC4002B21AF /* jump2.png in Resources */, |
1382 | 6C39CFEB13FC8ACA002B21AF /* jump.png in Resources */, | 1456 | 6C39CFEB13FC8ACA002B21AF /* jump.png in Resources */, |
@@ -1424,6 +1498,12 @@ | |||
1424 | 6C0C141113F2099B003A31B2 /* Cart.m in Sources */, | 1498 | 6C0C141113F2099B003A31B2 /* Cart.m in Sources */, |
1425 | 6C0C141413F20E98003A31B2 /* GameMode.m in Sources */, | 1499 | 6C0C141413F20E98003A31B2 /* GameMode.m in Sources */, |
1426 | 6CC89DDF13F31413003704F7 /* TutorialMode.m in Sources */, | 1500 | 6CC89DDF13F31413003704F7 /* TutorialMode.m in Sources */, |
1501 | 6C39CFF313FD4F8B002B21AF /* GameModeSelection.m in Sources */, | ||
1502 | 6C39CFF813FD7638002B21AF /* GameModeSelectionLayer.m in Sources */, | ||
1503 | 6C18C3CA1402AD9C0005AA4C /* UIImage+ColorMasking.m in Sources */, | ||
1504 | 6C18C3D214033DC50005AA4C /* CocosOverlayScrollView.m in Sources */, | ||
1505 | 6C18C3D314033DC60005AA4C /* NMPanelMenu.m in Sources */, | ||
1506 | 6C18C3D414033DC60005AA4C /* TouchDelegatingView.m in Sources */, | ||
1427 | 6C39CFE513FC4635002B21AF /* JumpGameMode.m in Sources */, | 1507 | 6C39CFE513FC4635002B21AF /* JumpGameMode.m in Sources */, |
1428 | ); | 1508 | ); |
1429 | runOnlyForDeploymentPostprocessing = 0; | 1509 | runOnlyForDeploymentPostprocessing = 0; |
@@ -1553,6 +1633,7 @@ | |||
1553 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; | 1633 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; |
1554 | COPY_PHASE_STRIP = NO; | 1634 | COPY_PHASE_STRIP = NO; |
1555 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | 1635 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; |
1636 | GCC_C_LANGUAGE_STANDARD = c99; | ||
1556 | GCC_DYNAMIC_NO_PIC = NO; | 1637 | GCC_DYNAMIC_NO_PIC = NO; |
1557 | GCC_OPTIMIZATION_LEVEL = 0; | 1638 | GCC_OPTIMIZATION_LEVEL = 0; |
1558 | GCC_PRECOMPILE_PREFIX_HEADER = YES; | 1639 | GCC_PRECOMPILE_PREFIX_HEADER = YES; |
@@ -1562,11 +1643,15 @@ | |||
1562 | INFOPLIST_FILE = Resources/Info.plist; | 1643 | INFOPLIST_FILE = Resources/Info.plist; |
1563 | INFOPLIST_PREFIX_HEADER = Versioning.h; | 1644 | INFOPLIST_PREFIX_HEADER = Versioning.h; |
1564 | INFOPLIST_PREPROCESS = YES; | 1645 | INFOPLIST_PREPROCESS = YES; |
1646 | LIBRARY_SEARCH_PATHS = ( | ||
1647 | "$(inherited)", | ||
1648 | "\"$(SRCROOT)\"", | ||
1649 | ); | ||
1565 | OTHER_LDFLAGS = ( | 1650 | OTHER_LDFLAGS = ( |
1566 | "-all_load", | 1651 | "-all_load", |
1567 | "-ObjC", | 1652 | "-ObjC", |
1568 | ); | 1653 | ); |
1569 | PRODUCT_NAME = "Cart Collect"; | 1654 | PRODUCT_NAME = Cartographic; |
1570 | TARGETED_DEVICE_FAMILY = 1; | 1655 | TARGETED_DEVICE_FAMILY = 1; |
1571 | WARNING_CFLAGS = "-Wall"; | 1656 | WARNING_CFLAGS = "-Wall"; |
1572 | }; | 1657 | }; |
@@ -1581,6 +1666,7 @@ | |||
1581 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; | 1666 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; |
1582 | COPY_PHASE_STRIP = YES; | 1667 | COPY_PHASE_STRIP = YES; |
1583 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | 1668 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; |
1669 | GCC_C_LANGUAGE_STANDARD = c99; | ||
1584 | GCC_PRECOMPILE_PREFIX_HEADER = YES; | 1670 | GCC_PRECOMPILE_PREFIX_HEADER = YES; |
1585 | GCC_PREFIX_HEADER = Cart_Collect_Prefix.pch; | 1671 | GCC_PREFIX_HEADER = Cart_Collect_Prefix.pch; |
1586 | GCC_TREAT_WARNINGS_AS_ERRORS = NO; | 1672 | GCC_TREAT_WARNINGS_AS_ERRORS = NO; |
@@ -1588,11 +1674,15 @@ | |||
1588 | INFOPLIST_FILE = Resources/Info.plist; | 1674 | INFOPLIST_FILE = Resources/Info.plist; |
1589 | INFOPLIST_PREFIX_HEADER = Versioning.h; | 1675 | INFOPLIST_PREFIX_HEADER = Versioning.h; |
1590 | INFOPLIST_PREPROCESS = YES; | 1676 | INFOPLIST_PREPROCESS = YES; |
1677 | LIBRARY_SEARCH_PATHS = ( | ||
1678 | "$(inherited)", | ||
1679 | "\"$(SRCROOT)\"", | ||
1680 | ); | ||
1591 | OTHER_LDFLAGS = ( | 1681 | OTHER_LDFLAGS = ( |
1592 | "-all_load", | 1682 | "-all_load", |
1593 | "-ObjC", | 1683 | "-ObjC", |
1594 | ); | 1684 | ); |
1595 | PRODUCT_NAME = "Cart Collect"; | 1685 | PRODUCT_NAME = Cartographic; |
1596 | TARGETED_DEVICE_FAMILY = 1; | 1686 | TARGETED_DEVICE_FAMILY = 1; |
1597 | WARNING_CFLAGS = "-Wall"; | 1687 | WARNING_CFLAGS = "-Wall"; |
1598 | }; | 1688 | }; |
@@ -1635,6 +1725,92 @@ | |||
1635 | }; | 1725 | }; |
1636 | name = Release; | 1726 | name = Release; |
1637 | }; | 1727 | }; |
1728 | 6C19F16C1401944500F9CCD3 /* Ad-Hoc */ = { | ||
1729 | isa = XCBuildConfiguration; | ||
1730 | buildSettings = { | ||
1731 | ALWAYS_SEARCH_USER_PATHS = NO; | ||
1732 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; | ||
1733 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; | ||
1734 | COPY_PHASE_STRIP = NO; | ||
1735 | GCC_C_LANGUAGE_STANDARD = c99; | ||
1736 | GCC_PREPROCESSOR_DEFINITIONS = ( | ||
1737 | NS_BLOCK_ASSERTIONS, | ||
1738 | NDEBUG, | ||
1739 | ); | ||
1740 | "GCC_THUMB_SUPPORT[arch=armv6]" = NO; | ||
1741 | "GCC_THUMB_SUPPORT[arch=armv7]" = YES; | ||
1742 | GCC_UNROLL_LOOPS = YES; | ||
1743 | GCC_VERSION = com.apple.compilers.llvmgcc42; | ||
1744 | GCC_WARN_ABOUT_RETURN_TYPE = YES; | ||
1745 | GCC_WARN_UNUSED_VARIABLE = YES; | ||
1746 | IPHONEOS_DEPLOYMENT_TARGET = 3.0; | ||
1747 | SDKROOT = iphoneos; | ||
1748 | STRIP_INSTALLED_PRODUCT = NO; | ||
1749 | TARGETED_DEVICE_FAMILY = "1,2"; | ||
1750 | }; | ||
1751 | name = "Ad-Hoc"; | ||
1752 | }; | ||
1753 | 6C19F16D1401944500F9CCD3 /* Ad-Hoc */ = { | ||
1754 | isa = XCBuildConfiguration; | ||
1755 | buildSettings = { | ||
1756 | ALTERNATE_MODE = Entitlements.plist; | ||
1757 | ALWAYS_SEARCH_USER_PATHS = YES; | ||
1758 | CODE_SIGN_IDENTITY = ""; | ||
1759 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; | ||
1760 | COPY_PHASE_STRIP = NO; | ||
1761 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | ||
1762 | GCC_PRECOMPILE_PREFIX_HEADER = YES; | ||
1763 | GCC_PREFIX_HEADER = Cart_Collect_Prefix.pch; | ||
1764 | GCC_PREPROCESSOR_DEFINITIONS = ( | ||
1765 | ADHOC, | ||
1766 | NS_BLOCK_ASSERTIONS, | ||
1767 | NDEBUG, | ||
1768 | ); | ||
1769 | GCC_TREAT_WARNINGS_AS_ERRORS = NO; | ||
1770 | HEADER_SEARCH_PATHS = libs; | ||
1771 | INFOPLIST_FILE = Resources/Info.plist; | ||
1772 | INFOPLIST_PREFIX_HEADER = Versioning.h; | ||
1773 | INFOPLIST_PREPROCESS = YES; | ||
1774 | LIBRARY_SEARCH_PATHS = ( | ||
1775 | "$(inherited)", | ||
1776 | "\"$(SRCROOT)\"", | ||
1777 | ); | ||
1778 | OTHER_LDFLAGS = ( | ||
1779 | "-all_load", | ||
1780 | "-ObjC", | ||
1781 | ); | ||
1782 | PRODUCT_NAME = Cartographic; | ||
1783 | TARGETED_DEVICE_FAMILY = 1; | ||
1784 | WARNING_CFLAGS = "-Wall"; | ||
1785 | }; | ||
1786 | name = "Ad-Hoc"; | ||
1787 | }; | ||
1788 | 6C19F16E1401944500F9CCD3 /* Ad-Hoc */ = { | ||
1789 | isa = XCBuildConfiguration; | ||
1790 | buildSettings = { | ||
1791 | ALWAYS_SEARCH_USER_PATHS = YES; | ||
1792 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; | ||
1793 | COPY_PHASE_STRIP = YES; | ||
1794 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | ||
1795 | GCC_PREPROCESSOR_DEFINITIONS = ""; | ||
1796 | GCC_TREAT_WARNINGS_AS_ERRORS = NO; | ||
1797 | HEADER_SEARCH_PATHS = ( | ||
1798 | libs/Chipmunk/include/chipmunk, | ||
1799 | libs, | ||
1800 | ); | ||
1801 | PRODUCT_NAME = "cocos2d libraries"; | ||
1802 | SKIP_INSTALL = YES; | ||
1803 | ZERO_LINK = NO; | ||
1804 | }; | ||
1805 | name = "Ad-Hoc"; | ||
1806 | }; | ||
1807 | 6C19F16F1401944500F9CCD3 /* Ad-Hoc */ = { | ||
1808 | isa = XCBuildConfiguration; | ||
1809 | buildSettings = { | ||
1810 | PRODUCT_NAME = "$(TARGET_NAME)"; | ||
1811 | }; | ||
1812 | name = "Ad-Hoc"; | ||
1813 | }; | ||
1638 | 6C263DDD13F6F4A000116746 /* Debug */ = { | 1814 | 6C263DDD13F6F4A000116746 /* Debug */ = { |
1639 | isa = XCBuildConfiguration; | 1815 | isa = XCBuildConfiguration; |
1640 | buildSettings = { | 1816 | buildSettings = { |
@@ -1701,11 +1877,12 @@ | |||
1701 | /* End XCBuildConfiguration section */ | 1877 | /* End XCBuildConfiguration section */ |
1702 | 1878 | ||
1703 | /* Begin XCConfigurationList section */ | 1879 | /* Begin XCConfigurationList section */ |
1704 | 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "Cart Collect" */ = { | 1880 | 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "Cartographic" */ = { |
1705 | isa = XCConfigurationList; | 1881 | isa = XCConfigurationList; |
1706 | buildConfigurations = ( | 1882 | buildConfigurations = ( |
1707 | 1D6058940D05DD3E006BFB54 /* Debug */, | 1883 | 1D6058940D05DD3E006BFB54 /* Debug */, |
1708 | 1D6058950D05DD3E006BFB54 /* Release */, | 1884 | 1D6058950D05DD3E006BFB54 /* Release */, |
1885 | 6C19F16D1401944500F9CCD3 /* Ad-Hoc */, | ||
1709 | ); | 1886 | ); |
1710 | defaultConfigurationIsVisible = 0; | 1887 | defaultConfigurationIsVisible = 0; |
1711 | defaultConfigurationName = Release; | 1888 | defaultConfigurationName = Release; |
@@ -1715,6 +1892,7 @@ | |||
1715 | buildConfigurations = ( | 1892 | buildConfigurations = ( |
1716 | 506EE05F10304ED500A389B3 /* Debug */, | 1893 | 506EE05F10304ED500A389B3 /* Debug */, |
1717 | 506EE06010304ED500A389B3 /* Release */, | 1894 | 506EE06010304ED500A389B3 /* Release */, |
1895 | 6C19F16E1401944500F9CCD3 /* Ad-Hoc */, | ||
1718 | ); | 1896 | ); |
1719 | defaultConfigurationIsVisible = 0; | 1897 | defaultConfigurationIsVisible = 0; |
1720 | defaultConfigurationName = Release; | 1898 | defaultConfigurationName = Release; |
@@ -1724,15 +1902,17 @@ | |||
1724 | buildConfigurations = ( | 1902 | buildConfigurations = ( |
1725 | 6C263DDD13F6F4A000116746 /* Debug */, | 1903 | 6C263DDD13F6F4A000116746 /* Debug */, |
1726 | 6C263DDE13F6F4A000116746 /* Release */, | 1904 | 6C263DDE13F6F4A000116746 /* Release */, |
1905 | 6C19F16F1401944500F9CCD3 /* Ad-Hoc */, | ||
1727 | ); | 1906 | ); |
1728 | defaultConfigurationIsVisible = 0; | 1907 | defaultConfigurationIsVisible = 0; |
1729 | defaultConfigurationName = Release; | 1908 | defaultConfigurationName = Release; |
1730 | }; | 1909 | }; |
1731 | C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Cart Collect" */ = { | 1910 | C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Cartographic" */ = { |
1732 | isa = XCConfigurationList; | 1911 | isa = XCConfigurationList; |
1733 | buildConfigurations = ( | 1912 | buildConfigurations = ( |
1734 | C01FCF4F08A954540054247B /* Debug */, | 1913 | C01FCF4F08A954540054247B /* Debug */, |
1735 | C01FCF5008A954540054247B /* Release */, | 1914 | C01FCF5008A954540054247B /* Release */, |
1915 | 6C19F16C1401944500F9CCD3 /* Ad-Hoc */, | ||
1736 | ); | 1916 | ); |
1737 | defaultConfigurationIsVisible = 0; | 1917 | defaultConfigurationIsVisible = 0; |
1738 | defaultConfigurationName = Release; | 1918 | defaultConfigurationName = Release; |
diff --git a/Cart Collect.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Cartographic.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 2f0e1ec..096867f 100755 --- a/Cart Collect.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/Cartographic.xcodeproj/project.xcworkspace/contents.xcworkspacedata | |||
@@ -2,6 +2,6 @@ | |||
2 | <Workspace | 2 | <Workspace |
3 | version = "1.0"> | 3 | version = "1.0"> |
4 | <FileRef | 4 | <FileRef |
5 | location = "self:Cart Collect.xcodeproj"> | 5 | location = "self:Cartographic.xcodeproj"> |
6 | </FileRef> | 6 | </FileRef> |
7 | </Workspace> | 7 | </Workspace> |
diff --git a/Classes/Cart_CollectAppDelegate.m b/Classes/Cart_CollectAppDelegate.m index 158f660..ba9d60b 100755 --- a/Classes/Cart_CollectAppDelegate.m +++ b/Classes/Cart_CollectAppDelegate.m | |||
@@ -13,6 +13,7 @@ | |||
13 | #import "GameMode.h" | 13 | #import "GameMode.h" |
14 | #import "RootViewController.h" | 14 | #import "RootViewController.h" |
15 | #import "MainMenuLayer.h" | 15 | #import "MainMenuLayer.h" |
16 | #import "TestFlight.h" | ||
16 | 17 | ||
17 | @implementation Cart_CollectAppDelegate | 18 | @implementation Cart_CollectAppDelegate |
18 | 19 | ||
@@ -42,6 +43,9 @@ | |||
42 | 43 | ||
43 | - (void) applicationDidFinishLaunching:(UIApplication*)application | 44 | - (void) applicationDidFinishLaunching:(UIApplication*)application |
44 | { | 45 | { |
46 | // REMOVE THIS LINE FOR RELEASE BUILDS | ||
47 | [TestFlight takeOff:@"66a3925c85c93e7628c14d167ff6c1b7_MjM4MTEyMDExLTA4LTE3IDEzOjEyOjQ4Ljg2NDE2OQ"]; | ||
48 | |||
45 | [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; | 49 | [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; |
46 | 50 | ||
47 | NSMutableDictionary* registerDefaults = [NSMutableDictionary dictionaryWithObjectsAndKeys: | 51 | NSMutableDictionary* registerDefaults = [NSMutableDictionary dictionaryWithObjectsAndKeys: |
@@ -138,6 +142,8 @@ | |||
138 | 142 | ||
139 | -(void) applicationDidEnterBackground:(UIApplication*)application { | 143 | -(void) applicationDidEnterBackground:(UIApplication*)application { |
140 | [[CCDirector sharedDirector] stopAnimation]; | 144 | [[CCDirector sharedDirector] stopAnimation]; |
145 | |||
146 | [[NSUserDefaults standardUserDefaults] synchronize]; | ||
141 | 147 | ||
142 | if ([[CCDirector sharedDirector] runningScene].tag == GAME_SCENE) | 148 | if ([[CCDirector sharedDirector] runningScene].tag == GAME_SCENE) |
143 | { | 149 | { |
@@ -190,20 +196,48 @@ | |||
190 | { | 196 | { |
191 | NSString* databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName]; | 197 | NSString* databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName]; |
192 | [fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil]; | 198 | [fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil]; |
193 | //[fileManager release]; | ||
194 | 199 | ||
195 | [userDefaults setInteger:1 forKey:@"databaseVersion"]; | 200 | [userDefaults setInteger:2 forKey:@"databaseVersion"]; |
201 | } | ||
202 | |||
203 | if (sqlite3_open([databasePath UTF8String], &database) != SQLITE_OK) | ||
204 | { | ||
205 | NSLog(@"Failed to open database"); | ||
196 | } | 206 | } |
197 | 207 | ||
208 | // Database migrations! | ||
198 | if ([userDefaults integerForKey:@"databaseVersion"] < 1) | 209 | if ([userDefaults integerForKey:@"databaseVersion"] < 1) |
199 | { | 210 | { |
200 | // Upgrade the database to version 1, which is completely unnecessary as no prior version exists | 211 | // Upgrade the database to version 1, which is completely unnecessary as no prior version exists |
201 | } | 212 | } |
202 | 213 | ||
203 | if (sqlite3_open([databasePath UTF8String], &database) != SQLITE_OK) | 214 | if ([userDefaults integerForKey:@"databaseVersion"] < 2) |
204 | { | 215 | { |
205 | NSLog(@"Failed to open database"); | 216 | // Database version 2 adds a "gameMode" column to highscores to allow for multiple highscore lists |
217 | const char* sqlQuery = "ALTER TABLE highscores ADD gameMode varchar(255)"; | ||
218 | sqlite3_stmt* compiled_statement; | ||
219 | |||
220 | if (sqlite3_prepare_v2(database, sqlQuery, -1, &compiled_statement, NULL) == SQLITE_OK) | ||
221 | { | ||
222 | sqlite3_step(compiled_statement); | ||
223 | |||
224 | sqlQuery = "UPDATE highscores SET gameMode = \"Collect\""; | ||
225 | if (sqlite3_prepare_v2(database, sqlQuery, -1, &compiled_statement, NULL) == SQLITE_OK) | ||
226 | { | ||
227 | sqlite3_step(compiled_statement); | ||
228 | |||
229 | NSLog(@"Updated database to version 2."); | ||
230 | [userDefaults setInteger:2 forKey:@"databaseVersion"]; | ||
231 | } else { | ||
232 | NSLog(@"Error while updating database to version 2. '%s'", sqlite3_errmsg(database)); | ||
233 | } | ||
234 | } else { | ||
235 | NSLog(@"Error while updating database to version 2. '%s'", sqlite3_errmsg(database)); | ||
236 | } | ||
206 | } | 237 | } |
238 | |||
239 | // It's rather important that the database version gets saved | ||
240 | [userDefaults synchronize]; | ||
207 | } | 241 | } |
208 | 242 | ||
209 | return database; | 243 | return database; |
diff --git a/Classes/CocosOverlayScrollView.h b/Classes/CocosOverlayScrollView.h new file mode 100755 index 0000000..ad8e83f --- /dev/null +++ b/Classes/CocosOverlayScrollView.h | |||
@@ -0,0 +1,19 @@ | |||
1 | // | ||
2 | // CocosOverlayScrollView.h | ||
3 | // shapes | ||
4 | // | ||
5 | // Created by Nate Murray on 8/23/10. | ||
6 | // Copyright 2010 LittleHiccup. All rights reserved. | ||
7 | // | ||
8 | |||
9 | #import <Foundation/Foundation.h> | ||
10 | #import "cocos2d.h" | ||
11 | |||
12 | @interface CocosOverlayScrollView : UIScrollView <UIScrollViewDelegate> | ||
13 | { | ||
14 | CCNode* targetLayer; | ||
15 | UIPageControl* pageControl; | ||
16 | } | ||
17 | @property(nonatomic, retain) CCNode* targetLayer; | ||
18 | -(id) initWithFrame: (CGRect) frameRect numPages: (int) numPages width: (float) width layer: (CCNode*) layer pageControl:(UIPageControl*)pageControl; | ||
19 | @end | ||
diff --git a/Classes/CocosOverlayScrollView.m b/Classes/CocosOverlayScrollView.m new file mode 100755 index 0000000..9db0575 --- /dev/null +++ b/Classes/CocosOverlayScrollView.m | |||
@@ -0,0 +1,110 @@ | |||
1 | // | ||
2 | // CocosOverlayScrollView.m | ||
3 | // shapes | ||
4 | // | ||
5 | // Created by Nate Murray on 8/23/10. | ||
6 | // Copyright 2010 LittleHiccup. All rights reserved. | ||
7 | // | ||
8 | |||
9 | #import "CocosOverlayScrollView.h" | ||
10 | |||
11 | @implementation CocosOverlayScrollView | ||
12 | @synthesize targetLayer; | ||
13 | |||
14 | // Configure your favorite UIScrollView options here | ||
15 | -(id) initWithFrame: (CGRect) frameRect numPages: (int) numPages width: (float) width layer: (CCNode*) layer pageControl:(UIPageControl *)m_pageControl{ | ||
16 | if ((self = [super initWithFrame: frameRect])){ | ||
17 | self.contentSize = CGSizeMake(width*numPages, 320); | ||
18 | self.bounces = YES; | ||
19 | self.delaysContentTouches = NO; | ||
20 | self.delegate = self; | ||
21 | self.pagingEnabled = YES; | ||
22 | self.scrollsToTop = NO; | ||
23 | self.showsVerticalScrollIndicator = NO; | ||
24 | self.showsHorizontalScrollIndicator = NO; | ||
25 | [self setUserInteractionEnabled:TRUE]; | ||
26 | [self setScrollEnabled:TRUE]; | ||
27 | self.targetLayer = layer; | ||
28 | // self.canCancelContentTouches = YES; | ||
29 | pageControl = m_pageControl; | ||
30 | } | ||
31 | return self; | ||
32 | } | ||
33 | |||
34 | -(void) touchesBegan: (NSSet *) touches withEvent: (UIEvent *) event | ||
35 | { | ||
36 | if (!self.dragging) | ||
37 | { | ||
38 | // UITouch* touch = [[touches allObjects] objectAtIndex:0]; | ||
39 | // CGPoint location = [touch locationInView: [[touch view] superview]]; | ||
40 | // CCLOG(@"touch at l.x:%f l.y:%f", location.x, location.y); | ||
41 | |||
42 | [self.nextResponder touchesBegan: touches withEvent:event]; | ||
43 | [[[CCDirector sharedDirector] openGLView] touchesBegan:touches withEvent:event]; | ||
44 | } | ||
45 | |||
46 | [super touchesBegan: touches withEvent: event]; | ||
47 | } | ||
48 | |||
49 | -(void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event | ||
50 | { | ||
51 | if (!self.dragging) | ||
52 | { | ||
53 | [self.nextResponder touchesEnded: touches withEvent:event]; | ||
54 | [[[CCDirector sharedDirector] openGLView] touchesEnded:touches withEvent:event]; | ||
55 | } | ||
56 | |||
57 | [super touchesEnded: touches withEvent: event]; | ||
58 | } | ||
59 | |||
60 | -(void) touchesCancelled: (NSSet *) touches withEvent: (UIEvent *) event | ||
61 | { | ||
62 | // if (!self.dragging) | ||
63 | // { | ||
64 | // CCLOG(@"CocosOverlayScrollView touchesEnded not dragging"); | ||
65 | [self.nextResponder touchesCancelled: touches withEvent:event]; | ||
66 | [[[CCDirector sharedDirector] openGLView] touchesCancelled:touches withEvent:event]; | ||
67 | // } | ||
68 | [super touchesCancelled: touches withEvent: event]; | ||
69 | } | ||
70 | |||
71 | |||
72 | - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView | ||
73 | { | ||
74 | // TODO - Custom code for handling deceleration of the scroll view | ||
75 | } | ||
76 | |||
77 | - (void)scrollViewDidScroll:(UIScrollView *)scrollView | ||
78 | { | ||
79 | CGPoint dragPt = [scrollView contentOffset]; | ||
80 | dragPt = [[CCDirector sharedDirector] convertToGL:dragPt]; | ||
81 | |||
82 | dragPt.y = dragPt.y * -1; | ||
83 | dragPt.x = dragPt.x * -1; | ||
84 | |||
85 | CGPoint newLayerPosition = CGPointMake(dragPt.x, dragPt.y); | ||
86 | |||
87 | [targetLayer setPosition:newLayerPosition]; | ||
88 | } | ||
89 | |||
90 | - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView | ||
91 | { | ||
92 | // CGPoint dragPt = [scrollView contentOffset]; | ||
93 | // etc. | ||
94 | } | ||
95 | |||
96 | -(void) dealloc { | ||
97 | self.targetLayer = nil; | ||
98 | [super dealloc]; | ||
99 | } | ||
100 | |||
101 | - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView | ||
102 | { | ||
103 | int currentPage = (NSUInteger)(scrollView.contentOffset.x / scrollView.frame.size.width); | ||
104 | NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | ||
105 | [defaults setInteger:currentPage forKey:@"lastSelectedMode"]; | ||
106 | |||
107 | [pageControl setCurrentPage:currentPage]; | ||
108 | } | ||
109 | |||
110 | @end \ No newline at end of file | ||
diff --git a/Classes/GameMode.h b/Classes/GameMode.h index 370550c..53ed9fc 100644 --- a/Classes/GameMode.h +++ b/Classes/GameMode.h | |||
@@ -12,7 +12,7 @@ | |||
12 | #define GAME_SCENE 436 | 12 | #define GAME_SCENE 436 |
13 | #define GAME_LAYER 437 | 13 | #define GAME_LAYER 437 |
14 | 14 | ||
15 | @interface GameMode : CCLayer { | 15 | @interface GameMode : CCLayer <UIAlertViewDelegate> { |
16 | NSMutableSet* objects; | 16 | NSMutableSet* objects; |
17 | int score; | 17 | int score; |
18 | int lives; | 18 | int lives; |
@@ -25,11 +25,14 @@ | |||
25 | CCLabelBMFont* livesLabel; | 25 | CCLabelBMFont* livesLabel; |
26 | 26 | ||
27 | void (^delayedAction)(void); | 27 | void (^delayedAction)(void); |
28 | |||
29 | BOOL isPaused; | ||
28 | } | 30 | } |
29 | 31 | ||
30 | @property (readonly) Cart* cart; | 32 | @property (readonly) Cart* cart; |
31 | @property (nonatomic,assign) int score; | 33 | @property (nonatomic,assign) int score; |
32 | @property (nonatomic,assign) int lives; | 34 | @property (nonatomic,assign) int lives; |
35 | @property (readonly) BOOL isPaused; | ||
33 | + (CCScene*)scene; | 36 | + (CCScene*)scene; |
34 | - (void)tick:(ccTime)dt; | 37 | - (void)tick:(ccTime)dt; |
35 | - (BOOL)canPause; | 38 | - (BOOL)canPause; |
diff --git a/Classes/GameMode.m b/Classes/GameMode.m index 7afbf20..8f695d1 100644 --- a/Classes/GameMode.m +++ b/Classes/GameMode.m | |||
@@ -12,7 +12,7 @@ | |||
12 | 12 | ||
13 | @implementation GameMode | 13 | @implementation GameMode |
14 | 14 | ||
15 | @synthesize cart, score, lives; | 15 | @synthesize cart, score, lives, isPaused; |
16 | 16 | ||
17 | + (CCScene*)scene | 17 | + (CCScene*)scene |
18 | { | 18 | { |
@@ -60,6 +60,8 @@ | |||
60 | [pauseMenu setPosition:ccp(480-8-16, 320-8-16)]; | 60 | [pauseMenu setPosition:ccp(480-8-16, 320-8-16)]; |
61 | [self addChild:pauseMenu]; | 61 | [self addChild:pauseMenu]; |
62 | } | 62 | } |
63 | |||
64 | isPaused = NO; | ||
63 | } | 65 | } |
64 | 66 | ||
65 | return self; | 67 | return self; |
@@ -98,8 +100,10 @@ | |||
98 | 100 | ||
99 | - (void)pause | 101 | - (void)pause |
100 | { | 102 | { |
101 | if ([self canPause]) | 103 | if (([self canPause]) && (!isPaused)) |
102 | { | 104 | { |
105 | isPaused = YES; | ||
106 | |||
103 | [self pauseSchedulerAndActions]; | 107 | [self pauseSchedulerAndActions]; |
104 | 108 | ||
105 | shadedLayer = [CCLayerColor layerWithColor:ccc4(0, 0, 0, 127)]; | 109 | shadedLayer = [CCLayerColor layerWithColor:ccc4(0, 0, 0, 127)]; |
@@ -126,18 +130,25 @@ | |||
126 | 130 | ||
127 | - (void)unpause | 131 | - (void)unpause |
128 | { | 132 | { |
129 | [[[CCDirector sharedDirector] runningScene] removeChild:shadedLayer cleanup:YES]; | 133 | if (isPaused) |
130 | [[[CCDirector sharedDirector] runningScene] removeChild:pauseLayer cleanup:YES]; | 134 | { |
131 | 135 | [[[CCDirector sharedDirector] runningScene] removeChild:shadedLayer cleanup:YES]; | |
132 | shadedLayer = nil; | 136 | [[[CCDirector sharedDirector] runningScene] removeChild:pauseLayer cleanup:YES]; |
133 | pauseLayer = nil; | 137 | |
134 | 138 | shadedLayer = nil; | |
135 | [self resumeSchedulerAndActions]; | 139 | pauseLayer = nil; |
140 | |||
141 | [self resumeSchedulerAndActions]; | ||
142 | |||
143 | isPaused = NO; | ||
144 | } | ||
136 | } | 145 | } |
137 | 146 | ||
138 | - (void)mainmenu | 147 | - (void)mainmenu |
139 | { | 148 | { |
140 | [[CCDirector sharedDirector] replaceScene:[MainMenuLayer scene]]; | 149 | UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Cartographic" message:@"Are you sure you want to quit the currently playing game?" delegate:self cancelButtonTitle:@"Yes" otherButtonTitles:@"No", nil]; |
150 | [alert show]; | ||
151 | [alert release]; | ||
141 | } | 152 | } |
142 | 153 | ||
143 | - (void)setScore:(int)m_score | 154 | - (void)setScore:(int)m_score |
@@ -170,6 +181,14 @@ | |||
170 | delayedAction = nil; | 181 | delayedAction = nil; |
171 | } | 182 | } |
172 | 183 | ||
184 | - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex | ||
185 | { | ||
186 | if (buttonIndex == 0) | ||
187 | { | ||
188 | [[CCDirector sharedDirector] replaceScene:[MainMenuLayer scene]]; | ||
189 | } | ||
190 | } | ||
191 | |||
173 | - (void)dealloc | 192 | - (void)dealloc |
174 | { | 193 | { |
175 | [objects release]; | 194 | [objects release]; |
diff --git a/Classes/GameModeSelection.h b/Classes/GameModeSelection.h new file mode 100644 index 0000000..bdb38fb --- /dev/null +++ b/Classes/GameModeSelection.h | |||
@@ -0,0 +1,30 @@ | |||
1 | // | ||
2 | // GameModeSelection.h | ||
3 | // Cartographic | ||
4 | // | ||
5 | // Created by Starla Insigna on 8/18/11. | ||
6 | // Copyright 2011 Four Island. All rights reserved. | ||
7 | // | ||
8 | |||
9 | #import "cocos2d.h" | ||
10 | #import "GameModeSelectionDelegate.h" | ||
11 | |||
12 | @interface GameModeSelection : CCMenuItem { | ||
13 | NSString* name; | ||
14 | NSString* location; | ||
15 | BOOL unlocked; | ||
16 | NSString* unlockCondition; | ||
17 | id<GameModeSelectionDelegate> delegate; | ||
18 | } | ||
19 | |||
20 | @property (readonly) NSString* name; | ||
21 | @property (readonly) NSString* location; | ||
22 | @property (readonly) BOOL unlocked; | ||
23 | @property (nonatomic,retain) id<GameModeSelectionDelegate> delegate; | ||
24 | + (id)selectionWithName:(NSString*)name location:(NSString*)location filename:(NSString*)filename unlocked:(BOOL)unlocked; | ||
25 | + (id)selectionWithName:(NSString *)name location:(NSString *)location filename:(NSString *)filename unlockCondition:(NSString*)unlockCondition; | ||
26 | - (id)initWithName:(NSString*)name location:(NSString*)location filename:(NSString*)filename unlocked:(BOOL)unlocked; | ||
27 | - (id)initWithName:(NSString *)name location:(NSString *)location filename:(NSString *)filename unlockCondition:(NSString*)unlockCondition; | ||
28 | - (void)buttonTapped; | ||
29 | |||
30 | @end | ||
diff --git a/Classes/GameModeSelection.m b/Classes/GameModeSelection.m new file mode 100644 index 0000000..69f1ddb --- /dev/null +++ b/Classes/GameModeSelection.m | |||
@@ -0,0 +1,219 @@ | |||
1 | // | ||
2 | // GameModeSelection.m | ||
3 | // Cartographic | ||
4 | // | ||
5 | // Created by Starla Insigna on 8/18/11. | ||
6 | // Copyright 2011 Four Island. All rights reserved. | ||
7 | // | ||
8 | |||
9 | #import "GameModeSelection.h" | ||
10 | #import "UIImage+ColorMasking.h" | ||
11 | #import "NMPanelMenu.h" | ||
12 | #import "Highscore.h" | ||
13 | |||
14 | @implementation GameModeSelection | ||
15 | |||
16 | @synthesize name, location, unlocked, delegate; | ||
17 | |||
18 | + (id)selectionWithName:(NSString*)name location:(NSString*)location filename:(NSString*)filename unlocked:(BOOL)unlocked | ||
19 | { | ||
20 | return [[[GameModeSelection alloc] initWithName:name location:location filename:filename unlocked:unlocked] autorelease]; | ||
21 | } | ||
22 | |||
23 | + (id)selectionWithName:(NSString *)name location:(NSString *)location filename:(NSString *)filename unlockCondition:(NSString*)unlockCondition | ||
24 | { | ||
25 | return [[[GameModeSelection alloc] initWithName:name location:location filename:filename unlockCondition:unlockCondition] autorelease]; | ||
26 | } | ||
27 | |||
28 | - (id)initWithName:(NSString*)m_name location:(NSString*)m_location filename:(NSString*)filename unlocked:(BOOL)m_unlocked; | ||
29 | { | ||
30 | self = [super initWithTarget:nil selector:nil]; | ||
31 | |||
32 | if (nil != self) | ||
33 | { | ||
34 | self.anchorPoint = CGPointMake(0.5f, 0.5f); | ||
35 | |||
36 | name = m_name; | ||
37 | location = m_location; | ||
38 | unlocked = m_unlocked; | ||
39 | |||
40 | contentSize_ = CGSizeMake(128, 320); | ||
41 | |||
42 | NSString* filenameMod; | ||
43 | |||
44 | if (unlocked) | ||
45 | { | ||
46 | filenameMod = [NSString stringWithFormat:@"%@-unlocked", filename]; | ||
47 | } else { | ||
48 | filenameMod = [NSString stringWithFormat:@"%@-locked", filename]; | ||
49 | name = [@"" stringByPaddingToLength:name.length withString:@"?" startingAtIndex:0]; | ||
50 | location = [@"" stringByPaddingToLength:location.length withString:@"?" startingAtIndex:0]; | ||
51 | } | ||
52 | |||
53 | // First, create the frame that we will put the level picture inside | ||
54 | CGImageRef framestuff = [[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"framestuff" ofType:@"png"]] CGImage]; | ||
55 | CGImageRef topLeftRef = CGImageCreateWithImageInRect(framestuff, CGRectMake(0, 0, 8, 8)); | ||
56 | CGImageRef topRightRef = CGImageCreateWithImageInRect(framestuff, CGRectMake(8, 0, 8, 8)); | ||
57 | CGImageRef bottomLeftRef = CGImageCreateWithImageInRect(framestuff, CGRectMake(0, 8, 8, 8)); | ||
58 | CGImageRef bottomRightRef = CGImageCreateWithImageInRect(framestuff, CGRectMake(8, 8, 8, 8)); | ||
59 | CGImageRef topBorderRef = CGImageCreateWithImageInRect(framestuff, CGRectMake(0, 16, 8, 8)); | ||
60 | CGImageRef leftBorderRef = CGImageCreateWithImageInRect(framestuff, CGRectMake(8, 16, 8, 8)); | ||
61 | CGImageRef rightBorderRef = CGImageCreateWithImageInRect(framestuff, CGRectMake(0, 24, 8, 8)); | ||
62 | CGImageRef bottomBorderRef = CGImageCreateWithImageInRect(framestuff, CGRectMake(8, 24, 8, 8)); | ||
63 | UIImage* topLeft = [UIImage imageWithCGImage:topLeftRef]; | ||
64 | UIImage* topRight = [UIImage imageWithCGImage:topRightRef]; | ||
65 | UIImage* bottomLeft = [UIImage imageWithCGImage:bottomLeftRef]; | ||
66 | UIImage* bottomRight = [UIImage imageWithCGImage:bottomRightRef]; | ||
67 | UIImage* topBorder = [UIImage imageWithCGImage:topBorderRef]; | ||
68 | UIImage* leftBorder = [UIImage imageWithCGImage:leftBorderRef]; | ||
69 | UIImage* rightBorder = [UIImage imageWithCGImage:rightBorderRef]; | ||
70 | UIImage* bottomBorder = [UIImage imageWithCGImage:bottomBorderRef]; | ||
71 | CGImageRelease(topLeftRef); | ||
72 | CGImageRelease(topRightRef); | ||
73 | CGImageRelease(bottomLeftRef); | ||
74 | CGImageRelease(bottomRightRef); | ||
75 | CGImageRelease(topBorderRef); | ||
76 | CGImageRelease(leftBorderRef); | ||
77 | CGImageRelease(rightBorderRef); | ||
78 | CGImageRelease(bottomBorderRef); | ||
79 | |||
80 | CGSize boxSize = CGSizeMake(128+12, 128+12); | ||
81 | UIGraphicsBeginImageContext(boxSize); | ||
82 | CGContextRef context = UIGraphicsGetCurrentContext(); | ||
83 | [topLeft drawInRect:CGRectMake(0, 0, 8, 8)]; | ||
84 | [topBorder drawInRect:CGRectMake(8, 0, boxSize.width-16, 8)]; | ||
85 | [topRight drawInRect:CGRectMake(8+boxSize.width-16, 0, 8, 8)]; | ||
86 | [rightBorder drawInRect:CGRectMake(8+boxSize.width-16, 8, 8, boxSize.height-16)]; | ||
87 | [bottomRight drawInRect:CGRectMake(8+boxSize.width-16, 8+boxSize.height-16, 8, 8)]; | ||
88 | [bottomBorder drawInRect:CGRectMake(8, 8+boxSize.height-16, boxSize.width-16, 8)]; | ||
89 | [bottomLeft drawInRect:CGRectMake(0, 8+boxSize.height-16, 8, 8)]; | ||
90 | [leftBorder drawInRect:CGRectMake(0, 8, 8, boxSize.height-16)]; | ||
91 | CGContextSetFillColorWithColor(context, [[UIColor whiteColor] CGColor]); | ||
92 | CGContextFillRect(context, CGRectMake(8, 8, boxSize.width-16, boxSize.height-16)); | ||
93 | UIImage* selectionBackground = UIGraphicsGetImageFromCurrentImageContext(); | ||
94 | |||
95 | // Now we want to put the level image inside the frame without messing up the frame itself | ||
96 | UIImage* innerPicture = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:filename ofType:@"png"]]; | ||
97 | CGContextClipToMask(context, CGRectMake(0, 0, boxSize.width, boxSize.height), [[selectionBackground opaqueMaskFromWhiteImage] CGImage]); | ||
98 | [innerPicture drawInRect:CGRectMake(6, 6, 128, 128)]; | ||
99 | selectionBackground = UIGraphicsGetImageFromCurrentImageContext(); | ||
100 | UIGraphicsEndImageContext(); | ||
101 | |||
102 | // The frame needs a shadow, so let's redraw it in a new context | ||
103 | UIGraphicsBeginImageContext(CGSizeMake(boxSize.width+10, boxSize.height+10)); | ||
104 | context = UIGraphicsGetCurrentContext(); | ||
105 | CGContextSaveGState(context); | ||
106 | |||
107 | if (unlocked) | ||
108 | { | ||
109 | CGContextSetShadow(context, CGSizeMake(-6, 6), 4.0f); | ||
110 | [selectionBackground drawInRect:CGRectMake(10, 0, boxSize.width, boxSize.height)]; | ||
111 | } else { | ||
112 | // Draw the picture in grayscale if the level has not yet been unlocked | ||
113 | CGContextClipToMask(context, CGRectMake(10, 0, boxSize.width, boxSize.height), [selectionBackground CGImage]); | ||
114 | CGContextSetFillColorWithColor(context, [[UIColor whiteColor] CGColor]); | ||
115 | CGContextFillRect(context, CGRectMake(10, 0, boxSize.width, boxSize.height)); | ||
116 | CGContextRestoreGState(context); | ||
117 | |||
118 | CGContextSaveGState(context); | ||
119 | CGContextSetShadow(context, CGSizeMake(-6, 6), 4.0f); | ||
120 | [selectionBackground drawInRect:CGRectMake(10, 0, boxSize.width, boxSize.height) blendMode:kCGBlendModeLuminosity alpha:1.0]; | ||
121 | } | ||
122 | |||
123 | CGContextRestoreGState(context); | ||
124 | CGImageRef pictureRef = [UIGraphicsGetImageFromCurrentImageContext() CGImage]; | ||
125 | |||
126 | CCSprite* picture = [CCSprite spriteWithCGImage:pictureRef key:[NSString stringWithFormat:@"gms-%@", filenameMod]]; | ||
127 | |||
128 | // We're also going to need a "selected" image state for the button | ||
129 | CGContextSaveGState(context); | ||
130 | CGContextClipToMask(context, CGRectMake(10, 0, boxSize.width, boxSize.height), [selectionBackground CGImage]); | ||
131 | CGContextSetFillColorWithColor(context, [[UIColor colorWithRed:0 green:0 blue:0 alpha:0.5] CGColor]); | ||
132 | CGContextFillRect(context, CGRectMake(10, 0, boxSize.width, boxSize.height)); | ||
133 | CGContextRestoreGState(context); | ||
134 | CGImageRef selectedButtonRef = [UIGraphicsGetImageFromCurrentImageContext() CGImage]; | ||
135 | UIGraphicsEndImageContext(); | ||
136 | CCSprite* selectedButton = [CCSprite spriteWithCGImage:selectedButtonRef key:[NSString stringWithFormat:@"gms-%@-selected", filenameMod]]; | ||
137 | |||
138 | CCMenuItemSprite* pictureMenuItem = [CCMenuItemSprite itemFromNormalSprite:picture selectedSprite:selectedButton target:self selector:@selector(buttonTapped)]; | ||
139 | NMPanelMenu* theMenu = [NMPanelMenu menuWithItems:pictureMenuItem, nil]; | ||
140 | theMenu.position = ccp(-5, 0); | ||
141 | [self addChild:theMenu]; | ||
142 | |||
143 | // Render the titles | ||
144 | UIFont* titleFont = [UIFont fontWithName:@"AmericanTypewriter-Bold" size:18.0f]; | ||
145 | CGSize titleSize = [location sizeWithFont:titleFont constrainedToSize:CGSizeMake(128, 0)]; | ||
146 | UIFont* subtitleFont = [UIFont fontWithName:@"AmericanTypewriter" size:18.0f]; | ||
147 | CGSize subtitleSize = [name sizeWithFont:subtitleFont constrainedToSize:CGSizeMake(128, 0)]; | ||
148 | CGSize combinedTitleSize = CGSizeMake(128, titleSize.height + 10 + subtitleSize.height + 10); | ||
149 | |||
150 | UIGraphicsBeginImageContext(combinedTitleSize); | ||
151 | context = UIGraphicsGetCurrentContext(); | ||
152 | CGContextSetShadow(context, CGSizeMake(-6, 6), 4.0f); | ||
153 | [location drawInRect:CGRectMake(10, 0, 128, titleSize.height) withFont:titleFont lineBreakMode:UILineBreakModeWordWrap alignment:UITextAlignmentCenter]; | ||
154 | [name drawInRect:CGRectMake(10, titleSize.height, 128, subtitleSize.height) withFont:subtitleFont lineBreakMode:UILineBreakModeWordWrap alignment:UITextAlignmentCenter]; | ||
155 | |||
156 | CGImageRef titleImage = [UIGraphicsGetImageFromCurrentImageContext() CGImage]; | ||
157 | UIGraphicsEndImageContext(); | ||
158 | CCSprite* titleSprite = [CCSprite spriteWithCGImage:titleImage key:[NSString stringWithFormat:@"gms-%@-title", filenameMod]]; | ||
159 | titleSprite.position = ccp(-10, (boxSize.height)/2+(combinedTitleSize.height)/2); | ||
160 | [self addChild:titleSprite]; | ||
161 | |||
162 | if (unlocked) | ||
163 | { | ||
164 | Highscore* localHighscore = [Highscore localHighscoreForGameMode:name]; | ||
165 | |||
166 | if (localHighscore != nil) | ||
167 | { | ||
168 | // Render the highscore label | ||
169 | NSString* highscoreString = [NSString stringWithFormat:@"Highscore: %d", localHighscore.score]; | ||
170 | UIFont* highscoreFont = [UIFont fontWithName:@"AmericanTypewriter" size:16.0f]; | ||
171 | CGSize highscoreSize = [highscoreString sizeWithFont:highscoreFont]; | ||
172 | |||
173 | UIGraphicsBeginImageContext(CGSizeMake(highscoreSize.width+10, highscoreSize.height+10)); | ||
174 | CGContextRef context = UIGraphicsGetCurrentContext(); | ||
175 | CGContextSetShadow(context, CGSizeMake(-6, 6), 4.0f); | ||
176 | [highscoreString drawInRect:CGRectMake(10, 0, highscoreSize.width, highscoreSize.height) withFont:highscoreFont]; | ||
177 | |||
178 | CGImageRef highscoreImage = [UIGraphicsGetImageFromCurrentImageContext() CGImage]; | ||
179 | UIGraphicsEndImageContext(); | ||
180 | CCSprite* highscoreSprite = [CCSprite spriteWithCGImage:highscoreImage key:[NSString stringWithFormat:@"gms-%@-highscore", filename]]; | ||
181 | highscoreSprite.position = ccp(-5, 0-64-(highscoreSize.height)/2-10); | ||
182 | [self addChild:highscoreSprite]; | ||
183 | } | ||
184 | } | ||
185 | } | ||
186 | |||
187 | return self; | ||
188 | } | ||
189 | |||
190 | - (id)initWithName:(NSString *)m_name location:(NSString *)m_location filename:(NSString *)m_filename unlockCondition:(NSString*)m_unlockCondition | ||
191 | { | ||
192 | self = [self initWithName:m_name location:m_location filename:m_filename unlocked:NO]; | ||
193 | |||
194 | if (nil != self) | ||
195 | { | ||
196 | unlockCondition = m_unlockCondition; | ||
197 | } | ||
198 | |||
199 | return self; | ||
200 | } | ||
201 | |||
202 | - (void)buttonTapped | ||
203 | { | ||
204 | if (unlocked) | ||
205 | { | ||
206 | if (delegate != nil) | ||
207 | { | ||
208 | [delegate didSelectGameMode:self]; | ||
209 | } else { | ||
210 | NSLog(@"I don't have a GameModeSelectionDelegate to call for some reason..."); | ||
211 | } | ||
212 | } else { | ||
213 | UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"To unlock this game mode:" message:unlockCondition delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:nil]; | ||
214 | [alertView show]; | ||
215 | [alertView release]; | ||
216 | } | ||
217 | } | ||
218 | |||
219 | @end | ||
diff --git a/Classes/GameModeSelectionDelegate.h b/Classes/GameModeSelectionDelegate.h new file mode 100644 index 0000000..854a980 --- /dev/null +++ b/Classes/GameModeSelectionDelegate.h | |||
@@ -0,0 +1,17 @@ | |||
1 | // | ||
2 | // GameModeSelectionDelegate.h | ||
3 | // Cartographic | ||
4 | // | ||
5 | // Created by Starla Insigna on 8/23/11. | ||
6 | // Copyright 2011 Four Island. All rights reserved. | ||
7 | // | ||
8 | |||
9 | #import <Foundation/Foundation.h> | ||
10 | |||
11 | @class GameModeSelection; | ||
12 | |||
13 | @protocol GameModeSelectionDelegate <NSObject> | ||
14 | |||
15 | - (void)didSelectGameMode:(GameModeSelection*)gameMode; | ||
16 | |||
17 | @end | ||
diff --git a/Classes/GameModeSelectionLayer.h b/Classes/GameModeSelectionLayer.h new file mode 100644 index 0000000..478a173 --- /dev/null +++ b/Classes/GameModeSelectionLayer.h | |||
@@ -0,0 +1,25 @@ | |||
1 | // | ||
2 | // GameModeSelectionLayer.h | ||
3 | // Cartographic | ||
4 | // | ||
5 | // Created by Starla Insigna on 8/18/11. | ||
6 | // Copyright 2011 Four Island. All rights reserved. | ||
7 | // | ||
8 | |||
9 | #import "cocos2d.h" | ||
10 | #import "TouchDelegatingView.h" | ||
11 | #import "CocosOverlayScrollView.h" | ||
12 | #import "GameModeSelectionDelegate.h" | ||
13 | |||
14 | @interface GameModeSelectionLayer : CCLayer <GameModeSelectionDelegate> { | ||
15 | NSMutableArray* gameModes; | ||
16 | TouchDelegatingView* touchDelegatingView; | ||
17 | CocosOverlayScrollView* scrollView; | ||
18 | UIPageControl* pageControl; | ||
19 | } | ||
20 | |||
21 | + (CCScene*)scene; | ||
22 | - (id)init; | ||
23 | - (void)mainmenu; | ||
24 | |||
25 | @end | ||
diff --git a/Classes/GameModeSelectionLayer.m b/Classes/GameModeSelectionLayer.m new file mode 100644 index 0000000..db08146 --- /dev/null +++ b/Classes/GameModeSelectionLayer.m | |||
@@ -0,0 +1,132 @@ | |||
1 | // | ||
2 | // GameModeSelectionLayer.m | ||
3 | // Cartographic | ||
4 | // | ||
5 | // Created by Starla Insigna on 8/18/11. | ||
6 | // Copyright 2011 Four Island. All rights reserved. | ||
7 | // | ||
8 | |||
9 | #import "GameModeSelectionLayer.h" | ||
10 | #import "GameModeSelection.h" | ||
11 | #import <sqlite3.h> | ||
12 | #import "Cart_CollectAppDelegate.h" | ||
13 | #import "MainMenuLayer.h" | ||
14 | #import "TutorialMode.h" | ||
15 | #import "ClassicGameMode.h" | ||
16 | #import "NMPanelMenu.h" | ||
17 | |||
18 | @implementation GameModeSelectionLayer | ||
19 | |||
20 | + (CCScene*)scene | ||
21 | { | ||
22 | CCScene* scene = [CCScene node]; | ||
23 | |||
24 | CCLayer* backgroundLayer = [[[CCLayer alloc] init] autorelease]; | ||
25 | CCSprite* backgroundImage = [CCSprite spriteWithFile:@"paintdaubs.png"]; | ||
26 | backgroundImage.position = ccp(240,160); | ||
27 | [backgroundLayer addChild:backgroundImage]; | ||
28 | [scene addChild:backgroundLayer]; | ||
29 | |||
30 | GameModeSelectionLayer* layer = [GameModeSelectionLayer node]; | ||
31 | [scene addChild:layer]; | ||
32 | |||
33 | return scene; | ||
34 | } | ||
35 | |||
36 | - (id)init | ||
37 | { | ||
38 | self = [super init]; | ||
39 | |||
40 | if (nil != self) | ||
41 | { | ||
42 | NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | ||
43 | gameModes = [[NSMutableArray alloc] init]; | ||
44 | |||
45 | GameModeSelection* tutorialSelection = [GameModeSelection selectionWithName:@"Tutorial" location:@"Florence" filename:@"florence" unlocked:YES]; | ||
46 | [gameModes addObject:tutorialSelection]; | ||
47 | |||
48 | GameModeSelection* collectSelection; | ||
49 | |||
50 | if ([defaults boolForKey:@"hasDoneTutorial"]) | ||
51 | { | ||
52 | collectSelection = [GameModeSelection selectionWithName:@"Collect" location:@"Paris" filename:@"paris" unlocked:YES]; | ||
53 | } else { | ||
54 | collectSelection = [GameModeSelection selectionWithName:@"Collect" location:@"Paris" filename:@"paris" unlockCondition:@"Beat the tutorial!"]; | ||
55 | } | ||
56 | |||
57 | [gameModes addObject:collectSelection]; | ||
58 | |||
59 | CCMenu* menu = [CCMenu menuWithItems:nil]; | ||
60 | float onePanelWide = 128; | ||
61 | float padding = 15; | ||
62 | float totalPanelWidth = onePanelWide + padding*2; | ||
63 | float numberOfPanels = [gameModes count]; | ||
64 | float totalWidth = numberOfPanels * totalPanelWidth; | ||
65 | int currentWorldOffset = [defaults integerForKey:@"lastSelectedMode"]; | ||
66 | CCLayer* panels = [CCLayer node]; | ||
67 | |||
68 | for (GameModeSelection* gameMode in gameModes) | ||
69 | { | ||
70 | [gameMode setDelegate:self]; | ||
71 | [menu addChild:gameMode]; | ||
72 | } | ||
73 | |||
74 | [menu alignItemsHorizontallyWithPadding:padding*2]; | ||
75 | [panels addChild:menu]; | ||
76 | [self addChild:panels]; | ||
77 | |||
78 | pageControl = [[UIPageControl alloc] init]; | ||
79 | pageControl.numberOfPages = numberOfPanels; | ||
80 | pageControl.currentPage = currentWorldOffset; | ||
81 | pageControl.frame = CGRectMake(0, 250, 480, 20); | ||
82 | |||
83 | menu.position = ccpAdd(menu.position, ccp(totalWidth/2 - totalPanelWidth/2, 320)); | ||
84 | touchDelegatingView = [[TouchDelegatingView alloc] initWithFrame:CGRectMake(0, 0, 480, 320)]; | ||
85 | scrollView = [[CocosOverlayScrollView alloc] initWithFrame:CGRectMake(0, 0, totalPanelWidth, 320) numPages:numberOfPanels width:totalPanelWidth layer:panels pageControl:pageControl]; | ||
86 | touchDelegatingView.scrollView = scrollView; | ||
87 | [scrollView setContentOffset:CGPointMake(currentWorldOffset*totalPanelWidth+1,0) animated:NO]; | ||
88 | |||
89 | CCMenuItemImage* newgameMenuItem = [CCMenuItemImage itemFromNormalImage:@"back.png" selectedImage:@"back2.png" target:self selector:@selector(mainmenu)]; | ||
90 | NMPanelMenu* myMenu = [NMPanelMenu menuWithItems:newgameMenuItem, nil]; | ||
91 | myMenu.position = ccp(240, 30); | ||
92 | [self addChild:myMenu]; | ||
93 | } | ||
94 | |||
95 | return self; | ||
96 | } | ||
97 | |||
98 | - (void)onEnterTransitionDidFinish | ||
99 | { | ||
100 | [super onEnterTransitionDidFinish]; | ||
101 | |||
102 | [[[CCDirector sharedDirector] openGLView] addSubview:pageControl]; | ||
103 | [[[CCDirector sharedDirector] openGLView] addSubview:touchDelegatingView]; | ||
104 | [[[CCDirector sharedDirector] openGLView] addSubview:scrollView]; | ||
105 | } | ||
106 | |||
107 | - (void)onExit | ||
108 | { | ||
109 | [super onExit]; | ||
110 | |||
111 | [touchDelegatingView removeFromSuperview]; | ||
112 | [scrollView removeFromSuperview]; | ||
113 | [pageControl removeFromSuperview]; | ||
114 | } | ||
115 | |||
116 | - (void)mainmenu | ||
117 | { | ||
118 | [[CCDirector sharedDirector] replaceScene:[MainMenuLayer scene]]; | ||
119 | } | ||
120 | |||
121 | - (void)didSelectGameMode:(GameModeSelection *)gameMode | ||
122 | { | ||
123 | if ([gameMode.name isEqual:@"Tutorial"]) | ||
124 | { | ||
125 | [[CCDirector sharedDirector] replaceScene:[TutorialMode scene]]; | ||
126 | } else if ([gameMode.name isEqual:@"Collect"]) | ||
127 | { | ||
128 | [[CCDirector sharedDirector] replaceScene:[ClassicGameMode scene]]; | ||
129 | } | ||
130 | } | ||
131 | |||
132 | @end | ||
diff --git a/Classes/GameOverScene.m b/Classes/GameOverScene.m index bc081ff..94236ff 100755 --- a/Classes/GameOverScene.m +++ b/Classes/GameOverScene.m | |||
@@ -88,15 +88,15 @@ | |||
88 | textField.enabled = NO; | 88 | textField.enabled = NO; |
89 | submitSwitch.enabled = NO; | 89 | submitSwitch.enabled = NO; |
90 | 90 | ||
91 | const char* sqlQuery = [[NSString stringWithFormat:@"INSERT INTO highscores (name, score) VALUES (\"%@\",%d)", [textField text], score] UTF8String]; | 91 | const char* sqlQuery = [[NSString stringWithFormat:@"INSERT INTO highscores (name, score, gameMode) VALUES (\"%@\",%d,\"Collect\")", [textField text], score] UTF8String]; |
92 | sqlite3_stmt* compiled_statement; | 92 | sqlite3_stmt* compiled_statement; |
93 | 93 | ||
94 | if (sqlite3_prepare_v2([Cart_CollectAppDelegate database], sqlQuery, -1, &compiled_statement, NULL) == SQLITE_OK) | 94 | if (sqlite3_prepare_v2([Cart_CollectAppDelegate database], sqlQuery, -1, &compiled_statement, NULL) == SQLITE_OK) |
95 | { | 95 | { |
96 | sqlite3_step(compiled_statement); | 96 | sqlite3_step(compiled_statement); |
97 | NSLog(@"awesome, %@", [textField text]); | 97 | NSLog(@"awesome, %@, %d", [textField text], score); |
98 | } else { | 98 | } else { |
99 | NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg([Cart_CollectAppDelegate database])); | 99 | NSLog(@"Error while adding highscore to local highscore list. '%s'", sqlite3_errmsg([Cart_CollectAppDelegate database])); |
100 | } | 100 | } |
101 | 101 | ||
102 | if (submitSwitch.on) | 102 | if (submitSwitch.on) |
diff --git a/Classes/Highscore.h b/Classes/Highscore.h index bc6a8fb..fa2ea71 100755 --- a/Classes/Highscore.h +++ b/Classes/Highscore.h | |||
@@ -17,6 +17,8 @@ | |||
17 | @property (readonly) NSString* name; | 17 | @property (readonly) NSString* name; |
18 | @property (readonly) int score; | 18 | @property (readonly) int score; |
19 | @property (readonly) NSDate* date; | 19 | @property (readonly) NSDate* date; |
20 | + (NSArray*)localHighscoreListForGameMode:(NSString*)gameMode; | ||
21 | + (Highscore*)localHighscoreForGameMode:(NSString*)gameMode; | ||
20 | - (id)initWithName:(NSString*)name score:(int)score date:(NSDate*)date; | 22 | - (id)initWithName:(NSString*)name score:(int)score date:(NSDate*)date; |
21 | 23 | ||
22 | @end | 24 | @end |
diff --git a/Classes/Highscore.m b/Classes/Highscore.m index 20ce56f..546cbfe 100755 --- a/Classes/Highscore.m +++ b/Classes/Highscore.m | |||
@@ -7,11 +7,64 @@ | |||
7 | // | 7 | // |
8 | 8 | ||
9 | #import "Highscore.h" | 9 | #import "Highscore.h" |
10 | #import <sqlite3.h> | ||
11 | #import "Cart_CollectAppDelegate.h" | ||
10 | 12 | ||
11 | @implementation Highscore | 13 | @implementation Highscore |
12 | 14 | ||
13 | @synthesize name, score, date; | 15 | @synthesize name, score, date; |
14 | 16 | ||
17 | + (NSArray*)localHighscoreListForGameMode:(NSString*)gameMode | ||
18 | { | ||
19 | NSMutableArray* highscores = [NSMutableArray arrayWithCapacity:15]; | ||
20 | const char* sqlQuery = [[NSString stringWithFormat:@"SELECT * FROM highscores WHERE gameMode = \"%@\" ORDER BY score DESC LIMIT 15", gameMode] UTF8String]; | ||
21 | sqlite3_stmt* compiled_statement; | ||
22 | |||
23 | if (sqlite3_prepare_v2([Cart_CollectAppDelegate database], sqlQuery, -1, &compiled_statement, NULL) == SQLITE_OK) | ||
24 | { | ||
25 | while (sqlite3_step(compiled_statement) == SQLITE_ROW) | ||
26 | { | ||
27 | NSString* name = [NSString stringWithUTF8String:(char*)sqlite3_column_text(compiled_statement, 1)]; | ||
28 | int score = sqlite3_column_int(compiled_statement, 2); | ||
29 | |||
30 | NSDate* date = nil; | ||
31 | char* dateStr = (char*)sqlite3_column_text(compiled_statement, 3); | ||
32 | if (dateStr != NULL) | ||
33 | { | ||
34 | NSString* theDate = [NSString stringWithUTF8String:dateStr]; | ||
35 | NSDateComponents* comps = [[NSDateComponents alloc] init]; | ||
36 | [comps setYear:[[theDate substringToIndex:4] intValue]]; | ||
37 | [comps setMonth:[[theDate substringWithRange:NSMakeRange(5, 2)] intValue]]; | ||
38 | [comps setDay:[[theDate substringWithRange:NSMakeRange(8, 2)] intValue]]; | ||
39 | [comps setHour:[[theDate substringWithRange:NSMakeRange(11, 2)] intValue]]; | ||
40 | [comps setMinute:[[theDate substringWithRange:NSMakeRange(14, 2)] intValue]]; | ||
41 | [comps setSecond:[[theDate substringWithRange:NSMakeRange(17, 2)] intValue]]; | ||
42 | date = [[NSCalendar currentCalendar] dateFromComponents:comps]; | ||
43 | date = [date dateByAddingTimeInterval:[[NSTimeZone localTimeZone] secondsFromGMT]]; | ||
44 | [comps release]; | ||
45 | } | ||
46 | |||
47 | Highscore* highscore = [[Highscore alloc] initWithName:name score:score date:date]; | ||
48 | [highscores addObject:highscore]; | ||
49 | [highscore release]; | ||
50 | } | ||
51 | } | ||
52 | |||
53 | return [highscores copy]; | ||
54 | } | ||
55 | |||
56 | + (Highscore*)localHighscoreForGameMode:(NSString*)gameMode | ||
57 | { | ||
58 | NSArray* localHighscores = [Highscore localHighscoreListForGameMode:gameMode]; | ||
59 | |||
60 | if ([localHighscores count] > 0) | ||
61 | { | ||
62 | return [localHighscores objectAtIndex:0]; | ||
63 | } else { | ||
64 | return nil; | ||
65 | } | ||
66 | } | ||
67 | |||
15 | - (id)initWithName:(NSString*)m_name score:(int)m_score date:(NSDate*)m_date | 68 | - (id)initWithName:(NSString*)m_name score:(int)m_score date:(NSDate*)m_date |
16 | { | 69 | { |
17 | self = [super init]; | 70 | self = [super init]; |
diff --git a/Classes/HighscoreListController.m b/Classes/HighscoreListController.m index 932b147..d7bffcb 100755 --- a/Classes/HighscoreListController.m +++ b/Classes/HighscoreListController.m | |||
@@ -10,7 +10,6 @@ | |||
10 | #import "Highscore.h" | 10 | #import "Highscore.h" |
11 | #import "RootViewController.h" | 11 | #import "RootViewController.h" |
12 | #import "cocoslive.h" | 12 | #import "cocoslive.h" |
13 | #import <sqlite3.h> | ||
14 | #import "Cart_CollectAppDelegate.h" | 13 | #import "Cart_CollectAppDelegate.h" |
15 | 14 | ||
16 | @implementation HighscoreListController | 15 | @implementation HighscoreListController |
@@ -23,41 +22,7 @@ | |||
23 | // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. | 22 | // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. |
24 | self = [super initWithStyle:style]; | 23 | self = [super initWithStyle:style]; |
25 | if (self) { | 24 | if (self) { |
26 | NSMutableArray* highscores = [NSMutableArray arrayWithCapacity:15]; | 25 | localHighscores = [Highscore localHighscoreListForGameMode:@"Collect"]; |
27 | const char* sqlQuery = "SELECT * FROM highscores ORDER BY score DESC LIMIT 15"; | ||
28 | sqlite3_stmt* compiled_statement; | ||
29 | |||
30 | if (sqlite3_prepare_v2([Cart_CollectAppDelegate database], sqlQuery, -1, &compiled_statement, NULL) == SQLITE_OK) | ||
31 | { | ||
32 | while (sqlite3_step(compiled_statement) == SQLITE_ROW) | ||
33 | { | ||
34 | NSString* name = [NSString stringWithUTF8String:(char*)sqlite3_column_text(compiled_statement, 1)]; | ||
35 | int score = sqlite3_column_int(compiled_statement, 2); | ||
36 | |||
37 | NSDate* date = nil; | ||
38 | char* dateStr = (char*)sqlite3_column_text(compiled_statement, 3); | ||
39 | if (dateStr != NULL) | ||
40 | { | ||
41 | NSString* theDate = [NSString stringWithUTF8String:dateStr]; | ||
42 | NSDateComponents* comps = [[NSDateComponents alloc] init]; | ||
43 | [comps setYear:[[theDate substringToIndex:4] intValue]]; | ||
44 | [comps setMonth:[[theDate substringWithRange:NSMakeRange(5, 2)] intValue]]; | ||
45 | [comps setDay:[[theDate substringWithRange:NSMakeRange(8, 2)] intValue]]; | ||
46 | [comps setHour:[[theDate substringWithRange:NSMakeRange(11, 2)] intValue]]; | ||
47 | [comps setMinute:[[theDate substringWithRange:NSMakeRange(14, 2)] intValue]]; | ||
48 | [comps setSecond:[[theDate substringWithRange:NSMakeRange(17, 2)] intValue]]; | ||
49 | date = [[NSCalendar currentCalendar] dateFromComponents:comps]; | ||
50 | date = [date dateByAddingTimeInterval:[[NSTimeZone localTimeZone] secondsFromGMT]]; | ||
51 | [comps release]; | ||
52 | } | ||
53 | |||
54 | Highscore* highscore = [[Highscore alloc] initWithName:name score:score date:date]; | ||
55 | [highscores addObject:highscore]; | ||
56 | [highscore release]; | ||
57 | } | ||
58 | } | ||
59 | |||
60 | localHighscores = [highscores copy]; | ||
61 | 26 | ||
62 | navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; | 27 | navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; |
63 | myNavigationItem = [[UINavigationItem alloc] initWithTitle:@"Highscores"]; | 28 | myNavigationItem = [[UINavigationItem alloc] initWithTitle:@"Highscores"]; |
diff --git a/Classes/MainMenuLayer.h b/Classes/MainMenuLayer.h index c7e3348..439056c 100755 --- a/Classes/MainMenuLayer.h +++ b/Classes/MainMenuLayer.h | |||
@@ -16,8 +16,7 @@ | |||
16 | + (CCScene*)scene; | 16 | + (CCScene*)scene; |
17 | - (id)init; | 17 | - (id)init; |
18 | - (void)newgame; | 18 | - (void)newgame; |
19 | - (void)tutorial; | ||
20 | - (void)jump; | ||
21 | - (void)highscores; | 19 | - (void)highscores; |
20 | - (void)feedback; | ||
22 | 21 | ||
23 | @end | 22 | @end |
diff --git a/Classes/MainMenuLayer.m b/Classes/MainMenuLayer.m index cf4b8cf..d4a6331 100755 --- a/Classes/MainMenuLayer.m +++ b/Classes/MainMenuLayer.m | |||
@@ -8,10 +8,9 @@ | |||
8 | 8 | ||
9 | #import "MainMenuLayer.h" | 9 | #import "MainMenuLayer.h" |
10 | #import "HighscoreListController.h" | 10 | #import "HighscoreListController.h" |
11 | #import "ClassicGameMode.h" | 11 | #import "GameModeSelectionLayer.h" |
12 | #import "TutorialMode.h" | ||
13 | #import "Cart_CollectAppDelegate.h" | 12 | #import "Cart_CollectAppDelegate.h" |
14 | #import "JumpGameMode.h" | 13 | #import "TestFlight.h" |
15 | 14 | ||
16 | @implementation MainMenuLayer | 15 | @implementation MainMenuLayer |
17 | 16 | ||
@@ -35,7 +34,7 @@ | |||
35 | backgroundImage.position = ccp(240,160); | 34 | backgroundImage.position = ccp(240,160); |
36 | [self addChild:backgroundImage]; | 35 | [self addChild:backgroundImage]; |
37 | 36 | ||
38 | CCLabelBMFont* titleText = [CCLabelBMFont labelWithString:@"Cart Collect - The Game!" fntFile:@"getoffthatboatrightnowyounglady.fnt"]; | 37 | CCLabelBMFont* titleText = [CCLabelBMFont labelWithString:@"Cartographic - The Game!" fntFile:@"getoffthatboatrightnowyounglady.fnt"]; |
39 | titleText.position = ccp(240, 320-64); | 38 | titleText.position = ccp(240, 320-64); |
40 | [self addChild:titleText]; | 39 | [self addChild:titleText]; |
41 | 40 | ||
@@ -46,11 +45,10 @@ | |||
46 | //CCMenuItemLabel* menuItem2 = [CCMenuItemLabel itemWithLabel:menuItemLabel2 target:self selector:@selector(highscores)]; | 45 | //CCMenuItemLabel* menuItem2 = [CCMenuItemLabel itemWithLabel:menuItemLabel2 target:self selector:@selector(highscores)]; |
47 | 46 | ||
48 | CCMenuItemImage* newgameMenuItem = [CCMenuItemImage itemFromNormalImage:@"newgame.png" selectedImage:@"newgame2.png" target:self selector:@selector(newgame)]; | 47 | CCMenuItemImage* newgameMenuItem = [CCMenuItemImage itemFromNormalImage:@"newgame.png" selectedImage:@"newgame2.png" target:self selector:@selector(newgame)]; |
49 | CCMenuItemImage* tutorialMenuItem = [CCMenuItemImage itemFromNormalImage:@"tutorial.png" selectedImage:@"tutorial2.png" target:self selector:@selector(tutorial)]; | ||
50 | CCMenuItemImage* jumpMenuItem = [CCMenuItemImage itemFromNormalImage:@"jump.png" selectedImage:@"jump2.png" target:self selector:@selector(jump)]; | ||
51 | CCMenuItemImage* highscoresMenuItem = [CCMenuItemImage itemFromNormalImage:@"highscores.png" selectedImage:@"highscores2.png" target:self selector:@selector(highscores)]; | 48 | CCMenuItemImage* highscoresMenuItem = [CCMenuItemImage itemFromNormalImage:@"highscores.png" selectedImage:@"highscores2.png" target:self selector:@selector(highscores)]; |
52 | 49 | CCMenuItemImage* feedbackMenuItem = [CCMenuItemImage itemFromNormalImage:@"feedback.png" selectedImage:@"feedback2.png" target:self selector:@selector(feedback)]; | |
53 | CCMenu* menu = [CCMenu menuWithItems:newgameMenuItem, tutorialMenuItem, jumpMenuItem, highscoresMenuItem, nil]; | 50 | |
51 | CCMenu* menu = [CCMenu menuWithItems:newgameMenuItem, highscoresMenuItem, feedbackMenuItem, nil]; | ||
54 | [menu alignItemsVertically]; | 52 | [menu alignItemsVertically]; |
55 | menu.position = ccp(240, 100); | 53 | menu.position = ccp(240, 100); |
56 | [self addChild:menu]; | 54 | [self addChild:menu]; |
@@ -61,17 +59,7 @@ | |||
61 | 59 | ||
62 | - (void)newgame | 60 | - (void)newgame |
63 | { | 61 | { |
64 | [[CCDirector sharedDirector] replaceScene:[ClassicGameMode scene]]; | 62 | [[CCDirector sharedDirector] replaceScene:[GameModeSelectionLayer scene]]; |
65 | } | ||
66 | |||
67 | - (void)tutorial | ||
68 | { | ||
69 | [[CCDirector sharedDirector] replaceScene:[TutorialMode scene]]; | ||
70 | } | ||
71 | |||
72 | - (void)jump | ||
73 | { | ||
74 | [[CCDirector sharedDirector] replaceScene:[JumpGameMode scene]]; | ||
75 | } | 63 | } |
76 | 64 | ||
77 | - (void)highscores | 65 | - (void)highscores |
@@ -82,4 +70,9 @@ | |||
82 | [listController release]; | 70 | [listController release]; |
83 | } | 71 | } |
84 | 72 | ||
73 | - (void)feedback | ||
74 | { | ||
75 | [TestFlight openFeedbackView]; | ||
76 | } | ||
77 | |||
85 | @end | 78 | @end |
diff --git a/Classes/NMPanelMenu.h b/Classes/NMPanelMenu.h new file mode 100755 index 0000000..3487849 --- /dev/null +++ b/Classes/NMPanelMenu.h | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * NMPanelMenu.h | ||
3 | * shapes | ||
4 | * | ||
5 | * Created by Nate Murray on 7/29/10. | ||
6 | * Copyright 2010 YetiApps. All rights reserved. | ||
7 | * | ||
8 | */ | ||
9 | |||
10 | #import "cocos2d.h" | ||
11 | @interface NMPanelMenu : CCMenu { | ||
12 | } | ||
13 | -(CCMenuItem *) itemForTouch: (UITouch *) touch; | ||
14 | @end | ||
diff --git a/Classes/NMPanelMenu.m b/Classes/NMPanelMenu.m new file mode 100755 index 0000000..ee24279 --- /dev/null +++ b/Classes/NMPanelMenu.m | |||
@@ -0,0 +1,37 @@ | |||
1 | /* | ||
2 | * NMPanelMenu.m | ||
3 | * shapes | ||
4 | * | ||
5 | * Created by Nate Murray on 7/29/10. | ||
6 | * Copyright 2010 YetiApps. All rights reserved. | ||
7 | * | ||
8 | */ | ||
9 | |||
10 | #import "NMPanelMenu.h" | ||
11 | |||
12 | @implementation NMPanelMenu | ||
13 | |||
14 | -(CCMenuItem *) itemForTouch: (UITouch *) touch | ||
15 | { | ||
16 | CGPoint touchLocation = [touch locationInView: [[touch view] superview]]; | ||
17 | touchLocation = [[CCDirector sharedDirector] convertToGL: touchLocation]; | ||
18 | |||
19 | CCMenuItem* item; | ||
20 | CCARRAY_FOREACH(children_, item){ | ||
21 | // ignore invisible and disabled items: issue #779, #866 | ||
22 | if ( [item visible] && [item isEnabled] ) { | ||
23 | |||
24 | CGPoint local = [item convertToNodeSpace:touchLocation]; | ||
25 | |||
26 | CGRect r = [item rect]; | ||
27 | r.origin = CGPointZero; | ||
28 | |||
29 | if( CGRectContainsPoint( r, local ) ) { | ||
30 | return item; | ||
31 | } | ||
32 | } | ||
33 | } | ||
34 | return nil; | ||
35 | } | ||
36 | |||
37 | @end | ||
diff --git a/Classes/TouchDelegatingView.h b/Classes/TouchDelegatingView.h new file mode 100755 index 0000000..5ed6884 --- /dev/null +++ b/Classes/TouchDelegatingView.h | |||
@@ -0,0 +1,18 @@ | |||
1 | // | ||
2 | // TouchDelegatingView.h | ||
3 | // shapes | ||
4 | // | ||
5 | // Created by Nate Murray on 8/23/10. | ||
6 | // Copyright 2010 LittleHiccup. All rights reserved. | ||
7 | // | ||
8 | |||
9 | #import <Foundation/Foundation.h> | ||
10 | #import "CocosOverLayScrollView.h" | ||
11 | |||
12 | @interface TouchDelegatingView : UIView { | ||
13 | // UIPageControl* pageControl; | ||
14 | CocosOverlayScrollView* scrollView; | ||
15 | } | ||
16 | @property(nonatomic, retain) CocosOverlayScrollView* scrollView; | ||
17 | |||
18 | @end | ||
diff --git a/Classes/TouchDelegatingView.m b/Classes/TouchDelegatingView.m new file mode 100755 index 0000000..83bda73 --- /dev/null +++ b/Classes/TouchDelegatingView.m | |||
@@ -0,0 +1,26 @@ | |||
1 | // | ||
2 | // TouchDelegatingView.m | ||
3 | // Jacob's Shapes | ||
4 | // | ||
5 | // Created by Nate Murray on 8/23/10. | ||
6 | // Copyright 2010 LittleHiccup. All rights reserved. | ||
7 | // | ||
8 | |||
9 | #import "TouchDelegatingView.h" | ||
10 | |||
11 | @implementation TouchDelegatingView | ||
12 | @synthesize scrollView; | ||
13 | |||
14 | - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { | ||
15 | if ([self pointInside:point withEvent:event]) { | ||
16 | return self.scrollView; | ||
17 | } | ||
18 | return nil; | ||
19 | } | ||
20 | |||
21 | -(void) dealloc { | ||
22 | self.scrollView = nil; | ||
23 | [super dealloc]; | ||
24 | } | ||
25 | |||
26 | @end | ||
diff --git a/Classes/TutorialMode.m b/Classes/TutorialMode.m index ed51648..3c70a46 100644 --- a/Classes/TutorialMode.m +++ b/Classes/TutorialMode.m | |||
@@ -12,7 +12,7 @@ | |||
12 | #import "Bottle.h" | 12 | #import "Bottle.h" |
13 | #import "OneUp.h" | 13 | #import "OneUp.h" |
14 | #import "Rock.h" | 14 | #import "Rock.h" |
15 | #import "MainMenuLayer.h" | 15 | #import "GameModeSelectionLayer.h" |
16 | 16 | ||
17 | // Item tags: | 17 | // Item tags: |
18 | // 2000 - first dropped item | 18 | // 2000 - first dropped item |
@@ -20,6 +20,7 @@ | |||
20 | // 2002 - items that are dropped after you miss first dropped item to demonstrate what happens when you catch | 20 | // 2002 - items that are dropped after you miss first dropped item to demonstrate what happens when you catch |
21 | // 2003 - 1-Up | 21 | // 2003 - 1-Up |
22 | // 2009 - rock | 22 | // 2009 - rock |
23 | // 2010 - random item dropped after death from first rock | ||
23 | 24 | ||
24 | @implementation TutorialMode | 25 | @implementation TutorialMode |
25 | 26 | ||
@@ -47,7 +48,7 @@ | |||
47 | [super onEnterTransitionDidFinish]; | 48 | [super onEnterTransitionDidFinish]; |
48 | 49 | ||
49 | [self scheduleDelayedAction:^{ | 50 | [self scheduleDelayedAction:^{ |
50 | TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"Welcome to Cart Collect. This is a tutorial designed to help you get started playing the game. Below this bubble is a cart. Tilt your device to move it." name:@"cart" spriteReference:cart.sprite]; | 51 | TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"Welcome to Cartographic. This is a tutorial designed to help you get started playing the game. Below this bubble is a cart. Tilt your device to move it." name:@"cart" spriteReference:cart.sprite]; |
51 | self.currentTutorial = bubble; | 52 | self.currentTutorial = bubble; |
52 | [bubble release]; | 53 | [bubble release]; |
53 | } delay:2.0f]; | 54 | } delay:2.0f]; |
@@ -122,7 +123,30 @@ | |||
122 | [self schedule:@selector(randomlyAddObject:) interval:2.5f]; | 123 | [self schedule:@selector(randomlyAddObject:) interval:2.5f]; |
123 | } else if (item.sprite.tag == 2009) | 124 | } else if (item.sprite.tag == 2009) |
124 | { | 125 | { |
125 | TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"As you play, Cart Collect gets progressively more intense. Watch what happens when rocks are added to the mix and the speed is turned up." name:@"intense"]; | 126 | if ((lives < 1) && (!showedDeathBubble)) |
127 | { | ||
128 | showedDeathBubble = YES; | ||
129 | |||
130 | TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"You lost all your lives! Normally, you'd be taken to a game over screen where you could submit your score to the highscore list, but we're a bit more forgiving in tutorial mode." name:@"gameover-rock"]; | ||
131 | self.currentTutorial = bubble; | ||
132 | [bubble release]; | ||
133 | } else { | ||
134 | TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"As you play, Cartographic gets progressively more intense. Watch what happens when rocks are added to the mix and the speed is turned up." name:@"intense"]; | ||
135 | self.currentTutorial = bubble; | ||
136 | [bubble release]; | ||
137 | } | ||
138 | } else if (item.sprite.tag == 2010) | ||
139 | { | ||
140 | TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"As you play, Cartographic gets progressively more intense. Watch what happens when rocks are added to the mix and the speed is turned up." name:@"intense"]; | ||
141 | self.currentTutorial = bubble; | ||
142 | [bubble release]; | ||
143 | } | ||
144 | |||
145 | if ((lives < 1) && (!showedDeathBubble)) | ||
146 | { | ||
147 | showedDeathBubble = YES; | ||
148 | |||
149 | TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"You lost all your lives! Normally, you'd be taken to a game over screen where you could submit your score to the highscore list, but we're a bit more forgiving in tutorial mode." name:@"gameover"]; | ||
126 | self.currentTutorial = bubble; | 150 | self.currentTutorial = bubble; |
127 | [bubble release]; | 151 | [bubble release]; |
128 | } | 152 | } |
@@ -191,12 +215,19 @@ | |||
191 | object.sprite.tag = 2003; | 215 | object.sprite.tag = 2003; |
192 | [object release]; | 216 | [object release]; |
193 | } delay:2.0f]; | 217 | } delay:2.0f]; |
218 | } else if ([currentTutorial.name isEqual:@"gameover-rock"]) | ||
219 | { | ||
220 | [self scheduleDelayedAction:^{ | ||
221 | FallingObject* object = [self dropRandomItem]; | ||
222 | object.sprite.tag = 2010; | ||
223 | [object release]; | ||
224 | } delay:1.0f]; | ||
194 | } else if ([currentTutorial.name isEqual:@"intense"]) | 225 | } else if ([currentTutorial.name isEqual:@"intense"]) |
195 | { | 226 | { |
196 | [self schedule:@selector(randomlyAddObject:) interval:1.0f]; | 227 | [self schedule:@selector(randomlyAddObject:) interval:1.0f]; |
197 | } else if ([currentTutorial.name isEqual:@"end"]) | 228 | } else if ([currentTutorial.name isEqual:@"end"]) |
198 | { | 229 | { |
199 | [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:3.0f scene:[MainMenuLayer scene] withColor:ccc3(0,0,0)]]; | 230 | [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:3.0f scene:[GameModeSelectionLayer scene] withColor:ccc3(0,0,0)]]; |
200 | } | 231 | } |
201 | 232 | ||
202 | self.currentTutorial = nil; | 233 | self.currentTutorial = nil; |
@@ -252,20 +283,6 @@ | |||
252 | return [self dropSpecificItem:object]; | 283 | return [self dropSpecificItem:object]; |
253 | } | 284 | } |
254 | 285 | ||
255 | - (void)setLives:(int)m_lives | ||
256 | { | ||
257 | [super setLives:m_lives]; | ||
258 | |||
259 | if ((lives < 1) && (!showedDeathBubble)) | ||
260 | { | ||
261 | showedDeathBubble = YES; | ||
262 | |||
263 | TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"You lost all your lives! Normally, you'd be taken to a game over screen where you could submit your score to the highscore list, but we're a bit more forgiving in tutorial mode." name:@"gameover"]; | ||
264 | self.currentTutorial = bubble; | ||
265 | [bubble release]; | ||
266 | } | ||
267 | } | ||
268 | |||
269 | - (void)randomlyAddObject:(ccTime)dt | 286 | - (void)randomlyAddObject:(ccTime)dt |
270 | { | 287 | { |
271 | FallingObject* object; | 288 | FallingObject* object; |
@@ -307,13 +324,16 @@ | |||
307 | } else if (randomItemsDropped == 15) | 324 | } else if (randomItemsDropped == 15) |
308 | { | 325 | { |
309 | [self scheduleDelayedAction:^{ | 326 | [self scheduleDelayedAction:^{ |
310 | TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"That's pretty much it! You've completed the tutorial, so now it's time to play an actual game of Cart Collect!" name:@"end"]; | 327 | TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"That's pretty much it! You've completed the tutorial, so now it's time to play an actual game of Cartographic!" name:@"end"]; |
311 | self.currentTutorial = bubble; | 328 | self.currentTutorial = bubble; |
312 | [bubble release]; | 329 | [bubble release]; |
313 | } delay:2.0f]; | 330 | } delay:2.0f]; |
314 | 331 | ||
315 | [self unschedule:@selector(randomlyAddObject:)]; | 332 | [self unschedule:@selector(randomlyAddObject:)]; |
316 | 333 | ||
334 | NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | ||
335 | [defaults setBool:YES forKey:@"hasDoneTutorial"]; | ||
336 | |||
317 | return; | 337 | return; |
318 | } else { | 338 | } else { |
319 | NSLog(@"randomItemsDropped in TutorialMode is greater than 15--this should never happen."); | 339 | NSLog(@"randomItemsDropped in TutorialMode is greater than 15--this should never happen."); |
diff --git a/Classes/UIImage+ColorMasking.h b/Classes/UIImage+ColorMasking.h new file mode 100644 index 0000000..d25fafb --- /dev/null +++ b/Classes/UIImage+ColorMasking.h | |||
@@ -0,0 +1,15 @@ | |||
1 | // | ||
2 | // UIImage+ColorMasking.h | ||
3 | // Cartographic | ||
4 | // | ||
5 | // Created by Starla Insigna on 8/22/11. | ||
6 | // Copyright 2011 Four Island. All rights reserved. | ||
7 | // | ||
8 | |||
9 | #import <UIKit/UIKit.h> | ||
10 | |||
11 | @interface UIImage (ColorMasking) | ||
12 | |||
13 | - (UIImage *)opaqueMaskFromWhiteImage; | ||
14 | |||
15 | @end | ||
diff --git a/Classes/UIImage+ColorMasking.m b/Classes/UIImage+ColorMasking.m new file mode 100644 index 0000000..e4da8c8 --- /dev/null +++ b/Classes/UIImage+ColorMasking.m | |||
@@ -0,0 +1,77 @@ | |||
1 | // | ||
2 | // UIImage+ColorMasking.m | ||
3 | // Cartographic | ||
4 | // | ||
5 | // Created by Starla Insigna on 8/22/11. | ||
6 | // Copyright 2011 Four Island. All rights reserved. | ||
7 | // | ||
8 | |||
9 | #import "UIImage+ColorMasking.h" | ||
10 | |||
11 | @implementation UIImage (ColorMasking) | ||
12 | |||
13 | typedef enum { | ||
14 | ALPHA = 0, | ||
15 | BLUE = 1, | ||
16 | GREEN = 2, | ||
17 | RED = 3 | ||
18 | } PIXELS; | ||
19 | |||
20 | - (UIImage *)opaqueMaskFromWhiteImage | ||
21 | { | ||
22 | CGSize size = [self size]; | ||
23 | int width = size.width; | ||
24 | int height = size.height; | ||
25 | |||
26 | // the pixels will be painted to this array | ||
27 | uint32_t *pixels = (uint32_t *) malloc(width * height * sizeof(uint32_t)); | ||
28 | |||
29 | // clear the pixels so any transparency is preserved | ||
30 | memset(pixels, 0, width * height * sizeof(uint32_t)); | ||
31 | |||
32 | CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); | ||
33 | |||
34 | // create a context with RGBA pixels | ||
35 | CGContextRef context = CGBitmapContextCreate(pixels, width, height, 8, width * sizeof(uint32_t), colorSpace, | ||
36 | kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedLast); | ||
37 | |||
38 | // paint the bitmap to our context which will fill in the pixels array | ||
39 | CGContextDrawImage(context, CGRectMake(0, 0, width, height), [self CGImage]); | ||
40 | |||
41 | for(int y = 0; y < height; y++) { | ||
42 | for(int x = 0; x < width; x++) { | ||
43 | uint8_t *rgbaPixel = (uint8_t *) &pixels[y * width + x]; | ||
44 | |||
45 | if ((rgbaPixel[RED] == 255) && (rgbaPixel[GREEN] == 255) && (rgbaPixel[BLUE] == 255) && (rgbaPixel[ALPHA] == 255)) | ||
46 | { | ||
47 | rgbaPixel[RED] = 255; | ||
48 | rgbaPixel[GREEN] = 255; | ||
49 | rgbaPixel[BLUE] = 255; | ||
50 | rgbaPixel[ALPHA] = 255; | ||
51 | } else { | ||
52 | rgbaPixel[RED] = 0; | ||
53 | rgbaPixel[GREEN] = 0; | ||
54 | rgbaPixel[BLUE] = 0; | ||
55 | rgbaPixel[ALPHA] = 0; | ||
56 | } | ||
57 | } | ||
58 | } | ||
59 | |||
60 | // create a new CGImageRef from our context with the modified pixels | ||
61 | CGImageRef image = CGBitmapContextCreateImage(context); | ||
62 | |||
63 | // we're done with the context, color space, and pixels | ||
64 | CGContextRelease(context); | ||
65 | CGColorSpaceRelease(colorSpace); | ||
66 | free(pixels); | ||
67 | |||
68 | // make a new UIImage to return | ||
69 | UIImage *resultUIImage = [UIImage imageWithCGImage:image]; | ||
70 | |||
71 | // we're done with image now too | ||
72 | CGImageRelease(image); | ||
73 | |||
74 | return resultUIImage; | ||
75 | } | ||
76 | |||
77 | @end | ||
diff --git a/Resources/Info.plist b/Resources/Info.plist index 9f3118a..4a70f3c 100755 --- a/Resources/Info.plist +++ b/Resources/Info.plist | |||
@@ -26,8 +26,6 @@ | |||
26 | <string>${PRODUCT_NAME}</string> | 26 | <string>${PRODUCT_NAME}</string> |
27 | <key>CFBundlePackageType</key> | 27 | <key>CFBundlePackageType</key> |
28 | <string>APPL</string> | 28 | <string>APPL</string> |
29 | <key>CFBundleShortVersionString</key> | ||
30 | <string>0.2.1</string> | ||
31 | <key>CFBundleSignature</key> | 29 | <key>CFBundleSignature</key> |
32 | <string>????</string> | 30 | <string>????</string> |
33 | <key>CFBundleURLTypes</key> | 31 | <key>CFBundleURLTypes</key> |
diff --git a/Resources/cartdata.sqlite3 b/Resources/cartdata.sqlite3 index 6b7b656..5afd6aa 100755 --- a/Resources/cartdata.sqlite3 +++ b/Resources/cartdata.sqlite3 | |||
Binary files differ | |||
diff --git a/Resources/feedback.png b/Resources/feedback.png new file mode 100644 index 0000000..83af574 --- /dev/null +++ b/Resources/feedback.png | |||
Binary files differ | |||
diff --git a/Resources/feedback2.png b/Resources/feedback2.png new file mode 100644 index 0000000..5954cab --- /dev/null +++ b/Resources/feedback2.png | |||
Binary files differ | |||
diff --git a/Resources/florence.png b/Resources/florence.png new file mode 100644 index 0000000..6ad85dc --- /dev/null +++ b/Resources/florence.png | |||
Binary files differ | |||
diff --git a/Resources/paintdaubs.png b/Resources/paintdaubs.png new file mode 100644 index 0000000..9eb5995 --- /dev/null +++ b/Resources/paintdaubs.png | |||
Binary files differ | |||
diff --git a/Resources/paris.png b/Resources/paris.png new file mode 100644 index 0000000..59d95af --- /dev/null +++ b/Resources/paris.png | |||
Binary files differ | |||
diff --git a/TestFlight.h b/TestFlight.h new file mode 100644 index 0000000..cd98c52 --- /dev/null +++ b/TestFlight.h | |||
@@ -0,0 +1,35 @@ | |||
1 | // | ||
2 | // TestFlight.h | ||
3 | // libTestFlight | ||
4 | // | ||
5 | // Created by Colin Humber on 8/25/10. | ||
6 | // Copyright 2010 23 Divide Apps. All rights reserved. | ||
7 | |||
8 | #import <Foundation/Foundation.h> | ||
9 | |||
10 | @interface TestFlight : NSObject { | ||
11 | |||
12 | } | ||
13 | |||
14 | /** | ||
15 | Add custom environment information | ||
16 | If you want to track a user name from your application you can add it here | ||
17 | */ | ||
18 | + (void)addCustomEnvironmentInformation:(NSString *)information forKey:(NSString*)key; | ||
19 | |||
20 | /** | ||
21 | Starts a TestFlight session | ||
22 | */ | ||
23 | + (void)takeOff:(NSString *)teamToken; | ||
24 | |||
25 | /** | ||
26 | Track when a user has passed a checkpoint after the flight has taken off. Eg. passed level 1, posted high score | ||
27 | */ | ||
28 | + (void)passCheckpoint:(NSString *)checkpointName; | ||
29 | |||
30 | /** | ||
31 | Opens a feeback window that is not attached to a checkpoint | ||
32 | */ | ||
33 | + (void)openFeedbackView; | ||
34 | |||
35 | @end | ||
diff --git a/libTestFlight.a b/libTestFlight.a new file mode 100644 index 0000000..aacc245 --- /dev/null +++ b/libTestFlight.a | |||
Binary files differ | |||