Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

initial commit

  • Loading branch information...
commit 5b65761b6d6ebeb8f0343939c5936fb5584a0f8d 1 parent b0231c9
@refaelos refaelos authored
Showing with 33,208 additions and 0 deletions.
  1. +64 −0 .gitignore
  2. +6 −0 .gitmodules
  3. +1 −0  .idea/.name
  4. +9 −0 .idea/cocos2dx-store.iml
  5. +5 −0 .idea/encodings.xml
  6. +8 −0 .idea/misc.xml
  7. +9 −0 .idea/modules.xml
  8. +5 −0 .idea/scopes/scope_settings.xml
  9. +7 −0 .idea/vcs.xml
  10. +765 −0 cocos2dx-store.xcodeproj/project.pbxproj
  11. +7 −0 cocos2dx-store.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  12. +22 −0 cocos2dx-store/Classes/AnalyticXStringUtil.h
  13. +54 −0 cocos2dx-store/Classes/AnalyticXStringUtil.mm
  14. +86 −0 cocos2dx-store/Classes/AppDelegate.cpp
  15. +38 −0 cocos2dx-store/Classes/AppDelegate.h
  16. +47 −0 cocos2dx-store/Classes/GameMenuItem.cpp
  17. +34 −0 cocos2dx-store/Classes/GameMenuItem.h
  18. +20 −0 cocos2dx-store/Classes/Includes.h
  19. +136 −0 cocos2dx-store/Classes/MainScene.cpp
  20. +50 −0 cocos2dx-store/Classes/MainScene.h
  21. +277 −0 cocos2dx-store/Classes/StoreAScene.cpp
  22. +43 −0 cocos2dx-store/Classes/StoreAScene.h
  23. +212 −0 cocos2dx-store/Classes/StoreBScene.cpp
  24. +38 −0 cocos2dx-store/Classes/StoreBScene.h
  25. +26 −0 cocos2dx-store/Classes/cocos2dx_InsufficientFundsException.h
  26. +25 −0 cocos2dx-store/Classes/cocos2dx_NotEnoughGoodsException.h
  27. +230 −0 cocos2dx-store/Classes/cocos2dx_StoreController.cpp
  28. +36 −0 cocos2dx-store/Classes/cocos2dx_StoreController.h
  29. +235 −0 cocos2dx-store/Classes/cocos2dx_StoreInventory.cpp
  30. +31 −0 cocos2dx-store/Classes/cocos2dx_StoreInventory.h
  31. +26 −0 cocos2dx-store/Classes/cocos2dx_VirtualItemNotFoundException.h
  32. +95 −0 cocos2dx-store/Classes/com_soomla_store_EventHandlerBridge.cpp
  33. +109 −0 cocos2dx-store/Classes/com_soomla_store_EventHandlerBridge.h
  34. +6 −0 cocos2dx-store/Prefix.pch
  35. BIN  cocos2dx-store/Resources/iphone/CloseNormal.png
  36. BIN  cocos2dx-store/Resources/iphone/CloseSelected.png
  37. BIN  cocos2dx-store/Resources/iphone/GoodDog.otf
  38. BIN  cocos2dx-store/Resources/iphone/HelloWorld.png
  39. BIN  cocos2dx-store/Resources/iphone/back.png
  40. BIN  cocos2dx-store/Resources/iphone/button.png
  41. BIN  cocos2dx-store/Resources/iphone/chocolate_cake.png
  42. BIN  cocos2dx-store/Resources/iphone/cream_cup.png
  43. BIN  cocos2dx-store/Resources/iphone/fruit_cake.png
  44. BIN  cocos2dx-store/Resources/iphone/get_more.png
  45. BIN  cocos2dx-store/Resources/iphone/img_direct.jpg
  46. BIN  cocos2dx-store/Resources/iphone/muffin.png
  47. BIN  cocos2dx-store/Resources/iphone/muffins01.png
  48. BIN  cocos2dx-store/Resources/iphone/muffins02.png
  49. BIN  cocos2dx-store/Resources/iphone/muffins03.png
  50. BIN  cocos2dx-store/Resources/iphone/muffins04.png
  51. BIN  cocos2dx-store/Resources/iphone/no_ads.png
  52. BIN  cocos2dx-store/Resources/iphone/pavlova.png
  53. BIN  cocos2dx-store/Resources/iphone/right_bg.png
  54. BIN  cocos2dx-store/Resources/iphone/right_bg_hover.png
  55. BIN  cocos2dx-store/Resources/iphone/soomla_icon.png
  56. BIN  cocos2dx-store/Resources/iphone/soomla_logo_new.png
  57. BIN  cocos2dx-store/Resources/iphonehd/CloseNormal.png
  58. BIN  cocos2dx-store/Resources/iphonehd/CloseSelected.png
  59. BIN  cocos2dx-store/Resources/iphonehd/GoodDog.otf
  60. BIN  cocos2dx-store/Resources/iphonehd/HelloWorld.png
  61. BIN  cocos2dx-store/Resources/iphonehd/back.png
  62. BIN  cocos2dx-store/Resources/iphonehd/button.png
  63. BIN  cocos2dx-store/Resources/iphonehd/chocolate_cake.png
  64. BIN  cocos2dx-store/Resources/iphonehd/cream_cup.png
  65. BIN  cocos2dx-store/Resources/iphonehd/fruit_cake.png
  66. BIN  cocos2dx-store/Resources/iphonehd/get_more.png
  67. BIN  cocos2dx-store/Resources/iphonehd/img_direct.jpg
  68. BIN  cocos2dx-store/Resources/iphonehd/muffin.png
  69. BIN  cocos2dx-store/Resources/iphonehd/muffins01.png
  70. BIN  cocos2dx-store/Resources/iphonehd/muffins02.png
  71. BIN  cocos2dx-store/Resources/iphonehd/muffins03.png
  72. BIN  cocos2dx-store/Resources/iphonehd/muffins04.png
  73. BIN  cocos2dx-store/Resources/iphonehd/no_ads.png
  74. BIN  cocos2dx-store/Resources/iphonehd/pavlova.png
  75. BIN  cocos2dx-store/Resources/iphonehd/right_bg.png
  76. BIN  cocos2dx-store/Resources/iphonehd/right_bg_hover.png
  77. BIN  cocos2dx-store/Resources/iphonehd/soomla_icon.png
  78. BIN  cocos2dx-store/Resources/iphonehd/soomla_logo_new.png
  79. +11 −0 cocos2dx-store/ios/AppController.h
  80. +103 −0 cocos2dx-store/ios/AppController.mm
  81. +29 −0 cocos2dx-store/ios/MuffinRushAssets.h
  82. +149 −0 cocos2dx-store/ios/MuffinRushAssets.m
  83. BIN  cocos2dx-store/ios/Resources/CloseNormal.png
  84. BIN  cocos2dx-store/ios/Resources/CloseSelected.png
  85. BIN  cocos2dx-store/ios/Resources/Default.png
  86. BIN  cocos2dx-store/ios/Resources/HelloWorld.png
  87. BIN  cocos2dx-store/ios/Resources/Icon-72.png
  88. BIN  cocos2dx-store/ios/Resources/Icon-Small-50.png
  89. BIN  cocos2dx-store/ios/Resources/Icon-Small.png
  90. BIN  cocos2dx-store/ios/Resources/Icon-Small@2x.png
  91. BIN  cocos2dx-store/ios/Resources/Icon.png
  92. BIN  cocos2dx-store/ios/Resources/Icon@2x.png
  93. +48 −0 cocos2dx-store/ios/Resources/Info.plist
  94. BIN  cocos2dx-store/ios/Resources/iTunesArtwork
  95. +33 −0 cocos2dx-store/ios/RootViewController.h
  96. +57 −0 cocos2dx-store/ios/RootViewController.mm
  97. +77 −0 cocos2dx-store/ios/cocos2dx_StoreController.mm
  98. +72 −0 cocos2dx-store/ios/cocos2dx_StoreInventory.mm
  99. +20 −0 cocos2dx-store/ios/iOSHelper.h
  100. +15 −0 cocos2dx-store/ios/iOSHelper.mm
  101. +10 −0 cocos2dx-store/ios/main.m
  102. +166 −0 cocos2dx-store/libs/cocos2dx/Android.mk
  103. +144 −0 cocos2dx-store/libs/cocos2dx/CCCamera.cpp
  104. +124 −0 cocos2dx-store/libs/cocos2dx/CCCamera.h
  105. +132 −0 cocos2dx-store/libs/cocos2dx/CCConfiguration.cpp
  106. +139 −0 cocos2dx-store/libs/cocos2dx/CCConfiguration.h
  107. +991 −0 cocos2dx-store/libs/cocos2dx/CCDirector.cpp
  108. +443 −0 cocos2dx-store/libs/cocos2dx/CCDirector.h
  109. +423 −0 cocos2dx-store/libs/cocos2dx/CCDrawingPrimitives.cpp
  110. +137 −0 cocos2dx-store/libs/cocos2dx/CCDrawingPrimitives.h
  111. +881 −0 cocos2dx-store/libs/cocos2dx/CCScheduler.cpp
  112. +271 −0 cocos2dx-store/libs/cocos2dx/CCScheduler.h
  113. +345 −0 cocos2dx-store/libs/cocos2dx/actions/CCAction.cpp
  114. +270 −0 cocos2dx-store/libs/cocos2dx/actions/CCAction.h
  115. +167 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionCamera.cpp
  116. +133 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionCamera.h
  117. +477 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionCatmullRom.cpp
  118. +226 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionCatmullRom.h
  119. +1,464 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionEase.cpp
  120. +544 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionEase.h
  121. +445 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionGrid.cpp
  122. +245 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionGrid.h
  123. +920 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionGrid3D.cpp
  124. +303 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionGrid3D.h
  125. +637 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionInstant.cpp
  126. +399 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionInstant.h
  127. +2,491 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionInterval.cpp
  128. +866 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionInterval.h
  129. +398 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionManager.cpp
  130. +135 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionManager.h
  131. +116 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionPageTurn3D.cpp
  132. +65 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionPageTurn3D.h
  133. +170 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionProgressTimer.cpp
  134. +95 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionProgressTimer.h
  135. +1,125 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionTiledGrid.cpp
  136. +350 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionTiledGrid.h
  137. +80 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionTween.cpp
  138. +90 −0 cocos2dx-store/libs/cocos2dx/actions/CCActionTween.h
  139. +258 −0 cocos2dx-store/libs/cocos2dx/base_nodes/CCAtlasNode.cpp
  140. +129 −0 cocos2dx-store/libs/cocos2dx/base_nodes/CCAtlasNode.h
  141. +1,107 −0 cocos2dx-store/libs/cocos2dx/base_nodes/CCNode.cpp
  142. +623 −0 cocos2dx-store/libs/cocos2dx/base_nodes/CCNode.h
  143. +132 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCAffineTransform.cpp
  144. +61 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCAffineTransform.h
  145. +456 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCArray.cpp
  146. +260 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCArray.h
  147. +200 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCAutoreleasePool.cpp
  148. +77 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCAutoreleasePool.h
  149. +346 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCDictionary.cpp
  150. +204 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCDictionary.h
  151. +242 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCGeometry.cpp
  152. +130 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCGeometry.h
  153. +41 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCInteger.h
  154. +185 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCNS.cpp
  155. +80 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCNS.h
  156. +114 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCObject.cpp
  157. +101 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCObject.h
  158. +134 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCSet.cpp
  159. +94 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCSet.h
  160. +236 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCString.cpp
  161. +172 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCString.h
  162. +34 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCZone.cpp
  163. +55 −0 cocos2dx-store/libs/cocos2dx/cocoa/CCZone.h
  164. +37 −0 cocos2dx-store/libs/cocos2dx/cocos2d.cpp
  165. +101 −0 cocos2dx-store/libs/cocos2dx/effects/CCGrabber.cpp
  166. +63 −0 cocos2dx-store/libs/cocos2dx/effects/CCGrabber.h
  167. +682 −0 cocos2dx-store/libs/cocos2dx/effects/CCGrid.cpp
  168. +193 −0 cocos2dx-store/libs/cocos2dx/effects/CCGrid.h
  169. +19 −0 cocos2dx-store/libs/cocos2dx/include/CCEventType.h
  170. +130 −0 cocos2dx-store/libs/cocos2dx/include/CCProtocols.h
  171. +253 −0 cocos2dx-store/libs/cocos2dx/include/ccConfig.h
  172. +248 −0 cocos2dx-store/libs/cocos2dx/include/ccMacros.h
  173. +351 −0 cocos2dx-store/libs/cocos2dx/include/ccTypes.h
  174. +240 −0 cocos2dx-store/libs/cocos2dx/include/cocos2d.h
  175. +51 −0 cocos2dx-store/libs/cocos2dx/kazmath/include/kazmath/GL/mat4stack.h
  176. +60 −0 cocos2dx-store/libs/cocos2dx/kazmath/include/kazmath/GL/matrix.h
  177. +54 −0 cocos2dx-store/libs/cocos2dx/kazmath/include/kazmath/aabb.h
  178. +39 −0 cocos2dx-store/libs/cocos2dx/kazmath/include/kazmath/kazmath.h
  179. +76 −0 cocos2dx-store/libs/cocos2dx/kazmath/include/kazmath/mat3.h
  180. +94 −0 cocos2dx-store/libs/cocos2dx/kazmath/include/kazmath/mat4.h
  181. +45 −0 cocos2dx-store/libs/cocos2dx/kazmath/include/kazmath/neon_matrix_impl.h
  182. +71 −0 cocos2dx-store/libs/cocos2dx/kazmath/include/kazmath/plane.h
  183. +114 −0 cocos2dx-store/libs/cocos2dx/kazmath/include/kazmath/quaternion.h
  184. +51 −0 cocos2dx-store/libs/cocos2dx/kazmath/include/kazmath/ray2.h
  185. +75 −0 cocos2dx-store/libs/cocos2dx/kazmath/include/kazmath/utility.h
  186. +66 −0 cocos2dx-store/libs/cocos2dx/kazmath/include/kazmath/vec2.h
  187. +69 −0 cocos2dx-store/libs/cocos2dx/kazmath/include/kazmath/vec3.h
  188. +69 −0 cocos2dx-store/libs/cocos2dx/kazmath/include/kazmath/vec4.h
  189. +14 −0 cocos2dx-store/libs/cocos2dx/kazmath/src/CMakeLists.txt
  190. +738 −0 cocos2dx-store/libs/cocos2dx/kazmath/src/ChangeLog
  191. +74 −0 cocos2dx-store/libs/cocos2dx/kazmath/src/GL/mat4stack.c
  192. +191 −0 cocos2dx-store/libs/cocos2dx/kazmath/src/GL/matrix.c
  193. +63 −0 cocos2dx-store/libs/cocos2dx/kazmath/src/aabb.c
  194. +372 −0 cocos2dx-store/libs/cocos2dx/kazmath/src/mat3.c
  195. +790 −0 cocos2dx-store/libs/cocos2dx/kazmath/src/mat4.c
  196. +97 −0 cocos2dx-store/libs/cocos2dx/kazmath/src/neon_matrix_impl.c
  197. +175 −0 cocos2dx-store/libs/cocos2dx/kazmath/src/plane.c
  198. +586 −0 cocos2dx-store/libs/cocos2dx/kazmath/src/quaternion.c
  199. +186 −0 cocos2dx-store/libs/cocos2dx/kazmath/src/ray2.c
  200. +59 −0 cocos2dx-store/libs/cocos2dx/kazmath/src/utility.c
  201. +118 −0 cocos2dx-store/libs/cocos2dx/kazmath/src/vec2.c
  202. +310 −0 cocos2dx-store/libs/cocos2dx/kazmath/src/vec3.c
  203. +154 −0 cocos2dx-store/libs/cocos2dx/kazmath/src/vec4.c
  204. +91 −0 cocos2dx-store/libs/cocos2dx/keypad_dispatcher/CCKeypadDelegate.cpp
  205. +78 −0 cocos2dx-store/libs/cocos2dx/keypad_dispatcher/CCKeypadDelegate.h
  206. +176 −0 cocos2dx-store/libs/cocos2dx/keypad_dispatcher/CCKeypadDispatcher.cpp
  207. +96 −0 cocos2dx-store/libs/cocos2dx/keypad_dispatcher/CCKeypadDispatcher.h
  208. +216 −0 cocos2dx-store/libs/cocos2dx/label_nodes/CCLabelAtlas.cpp
  209. +109 −0 cocos2dx-store/libs/cocos2dx/label_nodes/CCLabelAtlas.h
Sorry, we could not display the entire diff because too many files (1,382) changed.
View
64 .gitignore
@@ -0,0 +1,64 @@
+# Compiled source #
+###################
+*.com
+*.class
+*.dll
+*.exe
+*.o
+*.so
+
+# Packages #
+############
+# it's better to unpack these files and commit the raw source
+# git has its own built in compression methods
+*.7z
+*.dmg
+*.gz
+*.iso
+*.jar
+*.rar
+*.tar
+*.zip
+
+# Logs and databases #
+######################
+*.log
+*.sql
+*.sqlite
+
+# OS generated files #
+######################
+.DS_Store?
+ehthumbs.db
+Icon?
+Thumbs.db
+
+
+.DS_Store
+*.swp
+*~.nib
+
+build/
+
+*.mode1v3
+*.mode2v3
+
+xcuserdata
+
+*.mode*
+*.pbxuser
+*.perspective*
+
+!project.pbxproj
+
+#.LSOverride#
+
+cocos2dx-store/proj.android/libs/armeabi
+cocos2dx-store/proj.android/obj
+
+cocos2dx-store/proj.android/.classpath
+cocos2dx-store/proj.android/.project
+cocos2dx-store/proj.android/.settings
+cocos2dx-store/proj.android/gen
+cocos2dx-store/proj.android/bin
+cocos2dx-store/proj.android/out
View
6 .gitmodules
@@ -0,0 +1,6 @@
+[submodule "submodules/android-store"]
+ path = submodules/android-store
+ url = git@github.com:soomla/android-store.git
+[submodule "submodules/ios-store"]
+ path = submodules/ios-store
+ url = git@github.com:soomla/ios-store.git
View
1  .idea/.name
@@ -0,0 +1 @@
+cocos2dx-store
View
9 .idea/cocos2dx-store.iml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="RUBY_MODULE" version="4">
+ <component name="NewModuleRootManager">
+ <content url="file://$MODULE_DIR$" />
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ </component>
+</module>
+
View
5 .idea/encodings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
+</project>
+
View
8 .idea/misc.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ProjectResources">
+ <default-html-doctype>$APPLICATION_HOME_DIR$/lib/rubymine.jar!/resources/html5-schema/html5.rnc</default-html-doctype>
+ </component>
+ <component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-1.9.3-p194" project-jdk-type="RUBY_SDK" />
+</project>
+
View
9 .idea/modules.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ProjectModuleManager">
+ <modules>
+ <module fileurl="file://$PROJECT_DIR$/.idea/cocos2dx-store.iml" filepath="$PROJECT_DIR$/.idea/cocos2dx-store.iml" />
+ </modules>
+ </component>
+</project>
+
View
5 .idea/scopes/scope_settings.xml
@@ -0,0 +1,5 @@
+<component name="DependencyValidationManager">
+ <state>
+ <option name="SKIP_IMPORT_STATEMENTS" value="false" />
+ </state>
+</component>
View
7 .idea/vcs.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
+ </component>
+</project>
+
View
765 cocos2dx-store.xcodeproj/project.pbxproj
@@ -0,0 +1,765 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ C031BA781635BDBA005F73E3 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C031BA771635BDBA005F73E3 /* QuartzCore.framework */; };
+ C031BA7A1635BDBA005F73E3 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C031BA791635BDBA005F73E3 /* OpenGLES.framework */; };
+ C031BA7C1635BDBA005F73E3 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C031BA7B1635BDBA005F73E3 /* OpenAL.framework */; };
+ C031BA7E1635BDBA005F73E3 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C031BA7D1635BDBA005F73E3 /* AudioToolbox.framework */; };
+ C031BA801635BDBA005F73E3 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C031BA7F1635BDBA005F73E3 /* AVFoundation.framework */; };
+ C031BA821635BDBA005F73E3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C031BA811635BDBA005F73E3 /* UIKit.framework */; };
+ C031BA841635BDBA005F73E3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C031BA831635BDBA005F73E3 /* Foundation.framework */; };
+ C031BA861635BDBA005F73E3 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C031BA851635BDBA005F73E3 /* CoreGraphics.framework */; };
+ C031BAA31635BDBA005F73E3 /* AppController.mm in Sources */ = {isa = PBXBuildFile; fileRef = C031BAA21635BDBA005F73E3 /* AppController.mm */; };
+ C031BAA61635BDBA005F73E3 /* RootViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = C031BAA51635BDBA005F73E3 /* RootViewController.mm */; };
+ C031BAA81635BDBA005F73E3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BAA71635BDBA005F73E3 /* main.m */; };
+ C031BD271635BDBD005F73E3 /* AppDelegate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C031BD261635BDBD005F73E3 /* AppDelegate.cpp */; };
+ C031BD481635C4C7005F73E3 /* cocos2dx_StoreController.mm in Sources */ = {isa = PBXBuildFile; fileRef = C031BD471635C4C7005F73E3 /* cocos2dx_StoreController.mm */; };
+ C031BE0D1635C645005F73E3 /* JSONConsts.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDCC1635C645005F73E3 /* JSONConsts.m */; };
+ C031BE0E1635C645005F73E3 /* StorageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDCE1635C645005F73E3 /* StorageManager.m */; };
+ C031BE0F1635C645005F73E3 /* StoreDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDD01635C645005F73E3 /* StoreDatabase.m */; };
+ C031BE101635C645005F73E3 /* StoreEncryptor.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDD21635C645005F73E3 /* StoreEncryptor.m */; };
+ C031BE111635C645005F73E3 /* StorefrontInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDD41635C645005F73E3 /* StorefrontInfo.m */; };
+ C031BE121635C645005F73E3 /* StoreInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDD61635C645005F73E3 /* StoreInfo.m */; };
+ C031BE131635C645005F73E3 /* VirtualCurrencyStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDD81635C645005F73E3 /* VirtualCurrencyStorage.m */; };
+ C031BE141635C645005F73E3 /* VirtualGoodStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDDA1635C645005F73E3 /* VirtualGoodStorage.m */; };
+ C031BE151635C645005F73E3 /* AppStoreItem.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDDE1635C645005F73E3 /* AppStoreItem.m */; };
+ C031BE161635C645005F73E3 /* BalanceDrivenPriceModel.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDE01635C645005F73E3 /* BalanceDrivenPriceModel.m */; };
+ C031BE171635C645005F73E3 /* PriceModel.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDE21635C645005F73E3 /* PriceModel.m */; };
+ C031BE181635C645005F73E3 /* StaticPriceModel.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDE41635C645005F73E3 /* StaticPriceModel.m */; };
+ C031BE191635C645005F73E3 /* VirtualCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDE61635C645005F73E3 /* VirtualCategory.m */; };
+ C031BE1A1635C645005F73E3 /* VirtualCurrency.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDE81635C645005F73E3 /* VirtualCurrency.m */; };
+ C031BE1B1635C645005F73E3 /* VirtualCurrencyPack.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDEA1635C645005F73E3 /* VirtualCurrencyPack.m */; };
+ C031BE1C1635C645005F73E3 /* VirtualGood.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDEC1635C645005F73E3 /* VirtualGood.m */; };
+ C031BE1D1635C645005F73E3 /* VirtualItem.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDEE1635C645005F73E3 /* VirtualItem.m */; };
+ C031BE1E1635C645005F73E3 /* EventHandling.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDF01635C645005F73E3 /* EventHandling.m */; };
+ C031BE1F1635C645005F73E3 /* InsufficientFundsException.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDF31635C645005F73E3 /* InsufficientFundsException.m */; };
+ C031BE201635C645005F73E3 /* NotEnoughGoodsException.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDF51635C645005F73E3 /* NotEnoughGoodsException.m */; };
+ C031BE211635C645005F73E3 /* VirtualItemNotFoundException.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDF71635C645005F73E3 /* VirtualItemNotFoundException.m */; };
+ C031BE221635C645005F73E3 /* FBEncryptorAES.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDFA1635C645005F73E3 /* FBEncryptorAES.m */; };
+ C031BE231635C645005F73E3 /* NSData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BDFC1635C645005F73E3 /* NSData+Base64.m */; };
+ C031BE241635C645005F73E3 /* JSONKit.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BE001635C645005F73E3 /* JSONKit.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ C031BE251635C645005F73E3 /* store.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = C031BE021635C645005F73E3 /* store.xcdatamodeld */; };
+ C031BE261635C645005F73E3 /* StoreConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BE051635C645005F73E3 /* StoreConfig.m */; };
+ C031BE271635C645005F73E3 /* StoreController.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BE071635C645005F73E3 /* StoreController.m */; };
+ C031BE281635C645005F73E3 /* NSString+MD5Addition.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BE0A1635C645005F73E3 /* NSString+MD5Addition.m */; };
+ C031BE291635C645005F73E3 /* UIDevice+IdentifierAddition.m in Sources */ = {isa = PBXBuildFile; fileRef = C031BE0C1635C645005F73E3 /* UIDevice+IdentifierAddition.m */; };
+ C031BE2B1635C714005F73E3 /* libsqlite3.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C031BE2A1635C714005F73E3 /* libsqlite3.0.dylib */; };
+ C031BE2D1635C71A005F73E3 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C031BE2C1635C71A005F73E3 /* StoreKit.framework */; };
+ C031BE2F1635C720005F73E3 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C031BE2E1635C720005F73E3 /* Security.framework */; };
+ C069308F163C86D60037E975 /* libcocos2dx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C0B04372163C84860015400E /* libcocos2dx.a */; };
+ C0693091163C876C0037E975 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C0693090163C876C0037E975 /* libz.dylib */; };
+ C0693093163C87760037E975 /* libxml2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C0693092163C87760037E975 /* libxml2.dylib */; };
+ C0B042D5163BFD150015400E /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = C0B042D4163BFD150015400E /* Info.plist */; };
+ C0B042DC163BFD2B0015400E /* Icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = C0B042D6163BFD2B0015400E /* Icon-72.png */; };
+ C0B042DD163BFD2B0015400E /* Icon-Small-50.png in Resources */ = {isa = PBXBuildFile; fileRef = C0B042D7163BFD2B0015400E /* Icon-Small-50.png */; };
+ C0B042DE163BFD2B0015400E /* Icon-Small.png in Resources */ = {isa = PBXBuildFile; fileRef = C0B042D8163BFD2B0015400E /* Icon-Small.png */; };
+ C0B042DF163BFD2B0015400E /* Icon-Small@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C0B042D9163BFD2B0015400E /* Icon-Small@2x.png */; };
+ C0B042E0163BFD2B0015400E /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = C0B042DA163BFD2B0015400E /* Icon.png */; };
+ C0B042E1163BFD2B0015400E /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C0B042DB163BFD2B0015400E /* Icon@2x.png */; };
+ C0B042F1163BFE960015400E /* GameMenuItem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C0B042E6163BFE960015400E /* GameMenuItem.cpp */; };
+ C0B042F2163BFE960015400E /* MainScene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C0B042E9163BFE960015400E /* MainScene.cpp */; };
+ C0B042F3163BFE960015400E /* StoreAScene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C0B042EC163BFE960015400E /* StoreAScene.cpp */; };
+ C0B042F4163BFE960015400E /* StoreBScene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C0B042EE163BFE960015400E /* StoreBScene.cpp */; };
+ C0B04305163C067F0015400E /* AnalyticXStringUtil.mm in Sources */ = {isa = PBXBuildFile; fileRef = C0B04304163C067F0015400E /* AnalyticXStringUtil.mm */; };
+ C0B04308163C59700015400E /* iOSHelper.mm in Sources */ = {isa = PBXBuildFile; fileRef = C0B04306163C59700015400E /* iOSHelper.mm */; };
+ C0B04310163C5DDE0015400E /* MuffinRushAssets.m in Sources */ = {isa = PBXBuildFile; fileRef = C0B0430F163C5DDE0015400E /* MuffinRushAssets.m */; };
+ C0B0431B163C7B250015400E /* cocos2dx_StoreInventory.mm in Sources */ = {isa = PBXBuildFile; fileRef = C0B0431A163C7B250015400E /* cocos2dx_StoreInventory.mm */; };
+ C0B0431E163C7C980015400E /* StoreInventory.m in Sources */ = {isa = PBXBuildFile; fileRef = C0B0431D163C7C980015400E /* StoreInventory.m */; };
+ C0B0435E163C83B30015400E /* iphone in Resources */ = {isa = PBXBuildFile; fileRef = C0B0435C163C83B30015400E /* iphone */; };
+ C0B0435F163C83B30015400E /* iphonehd in Resources */ = {isa = PBXBuildFile; fileRef = C0B0435D163C83B30015400E /* iphonehd */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ C0B04371163C84860015400E /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = C0B0436A163C84860015400E /* cocos2dx.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 1551A33F158F2AB200E66CFE;
+ remoteInfo = cocos2dx;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ C031BA731635BDBA005F73E3 /* cocos2dx-store.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "cocos2dx-store.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ C031BA771635BDBA005F73E3 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+ C031BA791635BDBA005F73E3 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
+ C031BA7B1635BDBA005F73E3 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; };
+ C031BA7D1635BDBA005F73E3 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
+ C031BA7F1635BDBA005F73E3 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
+ C031BA811635BDBA005F73E3 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ C031BA831635BDBA005F73E3 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ C031BA851635BDBA005F73E3 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+ C031BAA11635BDBA005F73E3 /* AppController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppController.h; path = ios/AppController.h; sourceTree = "<group>"; };
+ C031BAA21635BDBA005F73E3 /* AppController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = AppController.mm; path = ios/AppController.mm; sourceTree = "<group>"; };
+ C031BAA41635BDBA005F73E3 /* RootViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RootViewController.h; path = ios/RootViewController.h; sourceTree = "<group>"; };
+ C031BAA51635BDBA005F73E3 /* RootViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = RootViewController.mm; path = ios/RootViewController.mm; sourceTree = "<group>"; };
+ C031BAA71635BDBA005F73E3 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ios/main.m; sourceTree = "<group>"; };
+ C031BD251635BDBD005F73E3 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Classes/AppDelegate.h; sourceTree = "<group>"; };
+ C031BD261635BDBD005F73E3 /* AppDelegate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AppDelegate.cpp; path = Classes/AppDelegate.cpp; sourceTree = "<group>"; };
+ C031BD471635C4C7005F73E3 /* cocos2dx_StoreController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = cocos2dx_StoreController.mm; path = ios/cocos2dx_StoreController.mm; sourceTree = "<group>"; };
+ C031BD4A1635C551005F73E3 /* cocos2dx_StoreController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cocos2dx_StoreController.h; path = Classes/cocos2dx_StoreController.h; sourceTree = "<group>"; };
+ C031BDCB1635C645005F73E3 /* JSONConsts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSONConsts.h; sourceTree = "<group>"; };
+ C031BDCC1635C645005F73E3 /* JSONConsts.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSONConsts.m; sourceTree = "<group>"; };
+ C031BDCD1635C645005F73E3 /* StorageManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageManager.h; sourceTree = "<group>"; };
+ C031BDCE1635C645005F73E3 /* StorageManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StorageManager.m; sourceTree = "<group>"; };
+ C031BDCF1635C645005F73E3 /* StoreDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StoreDatabase.h; sourceTree = "<group>"; };
+ C031BDD01635C645005F73E3 /* StoreDatabase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StoreDatabase.m; sourceTree = "<group>"; };
+ C031BDD11635C645005F73E3 /* StoreEncryptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StoreEncryptor.h; sourceTree = "<group>"; };
+ C031BDD21635C645005F73E3 /* StoreEncryptor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StoreEncryptor.m; sourceTree = "<group>"; };
+ C031BDD31635C645005F73E3 /* StorefrontInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorefrontInfo.h; sourceTree = "<group>"; };
+ C031BDD41635C645005F73E3 /* StorefrontInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StorefrontInfo.m; sourceTree = "<group>"; };
+ C031BDD51635C645005F73E3 /* StoreInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StoreInfo.h; sourceTree = "<group>"; };
+ C031BDD61635C645005F73E3 /* StoreInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StoreInfo.m; sourceTree = "<group>"; };
+ C031BDD71635C645005F73E3 /* VirtualCurrencyStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VirtualCurrencyStorage.h; sourceTree = "<group>"; };
+ C031BDD81635C645005F73E3 /* VirtualCurrencyStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VirtualCurrencyStorage.m; sourceTree = "<group>"; };
+ C031BDD91635C645005F73E3 /* VirtualGoodStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VirtualGoodStorage.h; sourceTree = "<group>"; };
+ C031BDDA1635C645005F73E3 /* VirtualGoodStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VirtualGoodStorage.m; sourceTree = "<group>"; };
+ C031BDDD1635C645005F73E3 /* AppStoreItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppStoreItem.h; sourceTree = "<group>"; };
+ C031BDDE1635C645005F73E3 /* AppStoreItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppStoreItem.m; sourceTree = "<group>"; };
+ C031BDDF1635C645005F73E3 /* BalanceDrivenPriceModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BalanceDrivenPriceModel.h; sourceTree = "<group>"; };
+ C031BDE01635C645005F73E3 /* BalanceDrivenPriceModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BalanceDrivenPriceModel.m; sourceTree = "<group>"; };
+ C031BDE11635C645005F73E3 /* PriceModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PriceModel.h; sourceTree = "<group>"; };
+ C031BDE21635C645005F73E3 /* PriceModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PriceModel.m; sourceTree = "<group>"; };
+ C031BDE31635C645005F73E3 /* StaticPriceModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StaticPriceModel.h; sourceTree = "<group>"; };
+ C031BDE41635C645005F73E3 /* StaticPriceModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StaticPriceModel.m; sourceTree = "<group>"; };
+ C031BDE51635C645005F73E3 /* VirtualCategory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VirtualCategory.h; sourceTree = "<group>"; };
+ C031BDE61635C645005F73E3 /* VirtualCategory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VirtualCategory.m; sourceTree = "<group>"; };
+ C031BDE71635C645005F73E3 /* VirtualCurrency.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VirtualCurrency.h; sourceTree = "<group>"; };
+ C031BDE81635C645005F73E3 /* VirtualCurrency.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VirtualCurrency.m; sourceTree = "<group>"; };
+ C031BDE91635C645005F73E3 /* VirtualCurrencyPack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VirtualCurrencyPack.h; sourceTree = "<group>"; };
+ C031BDEA1635C645005F73E3 /* VirtualCurrencyPack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VirtualCurrencyPack.m; sourceTree = "<group>"; };
+ C031BDEB1635C645005F73E3 /* VirtualGood.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VirtualGood.h; sourceTree = "<group>"; };
+ C031BDEC1635C645005F73E3 /* VirtualGood.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VirtualGood.m; sourceTree = "<group>"; };
+ C031BDED1635C645005F73E3 /* VirtualItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VirtualItem.h; sourceTree = "<group>"; };
+ C031BDEE1635C645005F73E3 /* VirtualItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VirtualItem.m; sourceTree = "<group>"; };
+ C031BDEF1635C645005F73E3 /* EventHandling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventHandling.h; sourceTree = "<group>"; };
+ C031BDF01635C645005F73E3 /* EventHandling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EventHandling.m; sourceTree = "<group>"; };
+ C031BDF21635C645005F73E3 /* InsufficientFundsException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InsufficientFundsException.h; sourceTree = "<group>"; };
+ C031BDF31635C645005F73E3 /* InsufficientFundsException.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InsufficientFundsException.m; sourceTree = "<group>"; };
+ C031BDF41635C645005F73E3 /* NotEnoughGoodsException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NotEnoughGoodsException.h; sourceTree = "<group>"; };
+ C031BDF51635C645005F73E3 /* NotEnoughGoodsException.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NotEnoughGoodsException.m; sourceTree = "<group>"; };
+ C031BDF61635C645005F73E3 /* VirtualItemNotFoundException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VirtualItemNotFoundException.h; sourceTree = "<group>"; };
+ C031BDF71635C645005F73E3 /* VirtualItemNotFoundException.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VirtualItemNotFoundException.m; sourceTree = "<group>"; };
+ C031BDF91635C645005F73E3 /* FBEncryptorAES.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBEncryptorAES.h; sourceTree = "<group>"; };
+ C031BDFA1635C645005F73E3 /* FBEncryptorAES.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBEncryptorAES.m; sourceTree = "<group>"; };
+ C031BDFB1635C645005F73E3 /* NSData+Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+Base64.h"; sourceTree = "<group>"; };
+ C031BDFC1635C645005F73E3 /* NSData+Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+Base64.m"; sourceTree = "<group>"; };
+ C031BDFD1635C645005F73E3 /* IStoreAsssets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IStoreAsssets.h; sourceTree = "<group>"; };
+ C031BDFF1635C645005F73E3 /* JSONKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSONKit.h; sourceTree = "<group>"; };
+ C031BE001635C645005F73E3 /* JSONKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSONKit.m; sourceTree = "<group>"; };
+ C031BE011635C645005F73E3 /* SoomlaiOSStore-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "SoomlaiOSStore-Prefix.pch"; sourceTree = "<group>"; };
+ C031BE031635C645005F73E3 /* store.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = store.xcdatamodel; sourceTree = "<group>"; };
+ C031BE041635C645005F73E3 /* StoreConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StoreConfig.h; sourceTree = "<group>"; };
+ C031BE051635C645005F73E3 /* StoreConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StoreConfig.m; sourceTree = "<group>"; };
+ C031BE061635C645005F73E3 /* StoreController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StoreController.h; sourceTree = "<group>"; };
+ C031BE071635C645005F73E3 /* StoreController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StoreController.m; sourceTree = "<group>"; };
+ C031BE091635C645005F73E3 /* NSString+MD5Addition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+MD5Addition.h"; sourceTree = "<group>"; };
+ C031BE0A1635C645005F73E3 /* NSString+MD5Addition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+MD5Addition.m"; sourceTree = "<group>"; };
+ C031BE0B1635C645005F73E3 /* UIDevice+IdentifierAddition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIDevice+IdentifierAddition.h"; sourceTree = "<group>"; };
+ C031BE0C1635C645005F73E3 /* UIDevice+IdentifierAddition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIDevice+IdentifierAddition.m"; sourceTree = "<group>"; };
+ C031BE2A1635C714005F73E3 /* libsqlite3.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.0.dylib; path = usr/lib/libsqlite3.0.dylib; sourceTree = SDKROOT; };
+ C031BE2C1635C71A005F73E3 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; };
+ C031BE2E1635C720005F73E3 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
+ C031BE3116370E9B005F73E3 /* cocos2dx_VirtualItemNotFoundException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cocos2dx_VirtualItemNotFoundException.h; path = Classes/cocos2dx_VirtualItemNotFoundException.h; sourceTree = "<group>"; };
+ C031BE341637FE84005F73E3 /* cocos2dx_StoreInventory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cocos2dx_StoreInventory.h; path = Classes/cocos2dx_StoreInventory.h; sourceTree = "<group>"; };
+ C0693090163C876C0037E975 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
+ C0693092163C87760037E975 /* libxml2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.dylib; path = usr/lib/libxml2.dylib; sourceTree = SDKROOT; };
+ C0B042D3163BFCB50015400E /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Prefix.pch; sourceTree = "<group>"; };
+ C0B042D4163BFD150015400E /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ios/Resources/Info.plist; sourceTree = "<group>"; };
+ C0B042D6163BFD2B0015400E /* Icon-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-72.png"; path = "ios/Resources/Icon-72.png"; sourceTree = "<group>"; };
+ C0B042D7163BFD2B0015400E /* Icon-Small-50.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-Small-50.png"; path = "ios/Resources/Icon-Small-50.png"; sourceTree = "<group>"; };
+ C0B042D8163BFD2B0015400E /* Icon-Small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-Small.png"; path = "ios/Resources/Icon-Small.png"; sourceTree = "<group>"; };
+ C0B042D9163BFD2B0015400E /* Icon-Small@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-Small@2x.png"; path = "ios/Resources/Icon-Small@2x.png"; sourceTree = "<group>"; };
+ C0B042DA163BFD2B0015400E /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Icon.png; path = ios/Resources/Icon.png; sourceTree = "<group>"; };
+ C0B042DB163BFD2B0015400E /* Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon@2x.png"; path = "ios/Resources/Icon@2x.png"; sourceTree = "<group>"; };
+ C0B042E6163BFE960015400E /* GameMenuItem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GameMenuItem.cpp; path = Classes/GameMenuItem.cpp; sourceTree = "<group>"; };
+ C0B042E7163BFE960015400E /* GameMenuItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GameMenuItem.h; path = Classes/GameMenuItem.h; sourceTree = "<group>"; };
+ C0B042E8163BFE960015400E /* cocos2dx_InsufficientFundsException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cocos2dx_InsufficientFundsException.h; path = Classes/cocos2dx_InsufficientFundsException.h; sourceTree = "<group>"; };
+ C0B042E9163BFE960015400E /* MainScene.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MainScene.cpp; path = Classes/MainScene.cpp; sourceTree = "<group>"; };
+ C0B042EA163BFE960015400E /* MainScene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MainScene.h; path = Classes/MainScene.h; sourceTree = "<group>"; };
+ C0B042EB163BFE960015400E /* cocos2dx_NotEnoughGoodsException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cocos2dx_NotEnoughGoodsException.h; path = Classes/cocos2dx_NotEnoughGoodsException.h; sourceTree = "<group>"; };
+ C0B042EC163BFE960015400E /* StoreAScene.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StoreAScene.cpp; path = Classes/StoreAScene.cpp; sourceTree = "<group>"; };
+ C0B042ED163BFE960015400E /* StoreAScene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StoreAScene.h; path = Classes/StoreAScene.h; sourceTree = "<group>"; };
+ C0B042EE163BFE960015400E /* StoreBScene.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StoreBScene.cpp; path = Classes/StoreBScene.cpp; sourceTree = "<group>"; };
+ C0B042EF163BFE960015400E /* StoreBScene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StoreBScene.h; path = Classes/StoreBScene.h; sourceTree = "<group>"; };
+ C0B042F5163C023A0015400E /* Includes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Includes.h; path = Classes/Includes.h; sourceTree = "<group>"; };
+ C0B04303163C067F0015400E /* AnalyticXStringUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnalyticXStringUtil.h; path = Classes/AnalyticXStringUtil.h; sourceTree = "<group>"; };
+ C0B04304163C067F0015400E /* AnalyticXStringUtil.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AnalyticXStringUtil.mm; path = Classes/AnalyticXStringUtil.mm; sourceTree = "<group>"; };
+ C0B04306163C59700015400E /* iOSHelper.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = iOSHelper.mm; path = ios/iOSHelper.mm; sourceTree = "<group>"; };
+ C0B04307163C59700015400E /* iOSHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = iOSHelper.h; path = ios/iOSHelper.h; sourceTree = "<group>"; };
+ C0B0430E163C5DDE0015400E /* MuffinRushAssets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MuffinRushAssets.h; path = ios/MuffinRushAssets.h; sourceTree = "<group>"; };
+ C0B0430F163C5DDE0015400E /* MuffinRushAssets.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MuffinRushAssets.m; path = ios/MuffinRushAssets.m; sourceTree = "<group>"; };
+ C0B0431A163C7B250015400E /* cocos2dx_StoreInventory.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = cocos2dx_StoreInventory.mm; path = ios/cocos2dx_StoreInventory.mm; sourceTree = "<group>"; };
+ C0B0431C163C7C980015400E /* StoreInventory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StoreInventory.h; sourceTree = "<group>"; };
+ C0B0431D163C7C980015400E /* StoreInventory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StoreInventory.m; sourceTree = "<group>"; };
+ C0B0435C163C83B30015400E /* iphone */ = {isa = PBXFileReference; lastKnownFileType = folder; name = iphone; path = Resources/iphone; sourceTree = "<group>"; };
+ C0B0435D163C83B30015400E /* iphonehd */ = {isa = PBXFileReference; lastKnownFileType = folder; name = iphonehd; path = Resources/iphonehd; sourceTree = "<group>"; };
+ C0B0436A163C84860015400E /* cocos2dx.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = cocos2dx.xcodeproj; path = "cocos2dx-store/libs/cocos2dx/proj.ios/cocos2dx.xcodeproj"; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ C031BA701635BDBA005F73E3 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ C0693093163C87760037E975 /* libxml2.dylib in Frameworks */,
+ C0693091163C876C0037E975 /* libz.dylib in Frameworks */,
+ C069308F163C86D60037E975 /* libcocos2dx.a in Frameworks */,
+ C031BE2F1635C720005F73E3 /* Security.framework in Frameworks */,
+ C031BE2D1635C71A005F73E3 /* StoreKit.framework in Frameworks */,
+ C031BE2B1635C714005F73E3 /* libsqlite3.0.dylib in Frameworks */,
+ C031BA781635BDBA005F73E3 /* QuartzCore.framework in Frameworks */,
+ C031BA7A1635BDBA005F73E3 /* OpenGLES.framework in Frameworks */,
+ C031BA7C1635BDBA005F73E3 /* OpenAL.framework in Frameworks */,
+ C031BA7E1635BDBA005F73E3 /* AudioToolbox.framework in Frameworks */,
+ C031BA801635BDBA005F73E3 /* AVFoundation.framework in Frameworks */,
+ C031BA821635BDBA005F73E3 /* UIKit.framework in Frameworks */,
+ C031BA841635BDBA005F73E3 /* Foundation.framework in Frameworks */,
+ C031BA861635BDBA005F73E3 /* CoreGraphics.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ C031BA681635BDBA005F73E3 = {
+ isa = PBXGroup;
+ children = (
+ C0B0436A163C84860015400E /* cocos2dx.xcodeproj */,
+ C031BDC91635C645005F73E3 /* SoomlaiOSStore */,
+ C031BA871635BDBA005F73E3 /* cocos2dx-store */,
+ C031BA761635BDBA005F73E3 /* Frameworks */,
+ C031BA741635BDBA005F73E3 /* Products */,
+ );
+ sourceTree = "<group>";
+ };
+ C031BA741635BDBA005F73E3 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ C031BA731635BDBA005F73E3 /* cocos2dx-store.app */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ C031BA761635BDBA005F73E3 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ C0693092163C87760037E975 /* libxml2.dylib */,
+ C0693090163C876C0037E975 /* libz.dylib */,
+ C031BE2E1635C720005F73E3 /* Security.framework */,
+ C031BE2C1635C71A005F73E3 /* StoreKit.framework */,
+ C031BE2A1635C714005F73E3 /* libsqlite3.0.dylib */,
+ C031BA771635BDBA005F73E3 /* QuartzCore.framework */,
+ C031BA791635BDBA005F73E3 /* OpenGLES.framework */,
+ C031BA7B1635BDBA005F73E3 /* OpenAL.framework */,
+ C031BA7D1635BDBA005F73E3 /* AudioToolbox.framework */,
+ C031BA7F1635BDBA005F73E3 /* AVFoundation.framework */,
+ C031BA811635BDBA005F73E3 /* UIKit.framework */,
+ C031BA831635BDBA005F73E3 /* Foundation.framework */,
+ C031BA851635BDBA005F73E3 /* CoreGraphics.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "<group>";
+ };
+ C031BA871635BDBA005F73E3 /* cocos2dx-store */ = {
+ isa = PBXGroup;
+ children = (
+ C031BA881635BDBA005F73E3 /* Resources */,
+ C031BAA01635BDBA005F73E3 /* ios */,
+ C031BD241635BDBD005F73E3 /* Classes */,
+ C031BD221635BDBD005F73E3 /* Supporting Files */,
+ );
+ path = "cocos2dx-store";
+ sourceTree = "<group>";
+ };
+ C031BA881635BDBA005F73E3 /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ C0B0435C163C83B30015400E /* iphone */,
+ C0B0435D163C83B30015400E /* iphonehd */,
+ C0B042D6163BFD2B0015400E /* Icon-72.png */,
+ C0B042D7163BFD2B0015400E /* Icon-Small-50.png */,
+ C0B042D8163BFD2B0015400E /* Icon-Small.png */,
+ C0B042D9163BFD2B0015400E /* Icon-Small@2x.png */,
+ C0B042DA163BFD2B0015400E /* Icon.png */,
+ C0B042DB163BFD2B0015400E /* Icon@2x.png */,
+ );
+ name = Resources;
+ sourceTree = "<group>";
+ };
+ C031BAA01635BDBA005F73E3 /* ios */ = {
+ isa = PBXGroup;
+ children = (
+ C0B0430E163C5DDE0015400E /* MuffinRushAssets.h */,
+ C0B0430F163C5DDE0015400E /* MuffinRushAssets.m */,
+ C031BAA11635BDBA005F73E3 /* AppController.h */,
+ C031BAA21635BDBA005F73E3 /* AppController.mm */,
+ C031BAA41635BDBA005F73E3 /* RootViewController.h */,
+ C031BAA51635BDBA005F73E3 /* RootViewController.mm */,
+ C031BAA71635BDBA005F73E3 /* main.m */,
+ C0B04303163C067F0015400E /* AnalyticXStringUtil.h */,
+ C0B04304163C067F0015400E /* AnalyticXStringUtil.mm */,
+ C0B04306163C59700015400E /* iOSHelper.mm */,
+ C0B04307163C59700015400E /* iOSHelper.h */,
+ C031BD471635C4C7005F73E3 /* cocos2dx_StoreController.mm */,
+ C0B0431A163C7B250015400E /* cocos2dx_StoreInventory.mm */,
+ );
+ name = ios;
+ sourceTree = "<group>";
+ };
+ C031BD221635BDBD005F73E3 /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ C0B042D4163BFD150015400E /* Info.plist */,
+ C0B042D3163BFCB50015400E /* Prefix.pch */,
+ );
+ name = "Supporting Files";
+ sourceTree = "<group>";
+ };
+ C031BD241635BDBD005F73E3 /* Classes */ = {
+ isa = PBXGroup;
+ children = (
+ C0B042E6163BFE960015400E /* GameMenuItem.cpp */,
+ C0B042E7163BFE960015400E /* GameMenuItem.h */,
+ C0B042E9163BFE960015400E /* MainScene.cpp */,
+ C0B042EA163BFE960015400E /* MainScene.h */,
+ C0B042EC163BFE960015400E /* StoreAScene.cpp */,
+ C0B042ED163BFE960015400E /* StoreAScene.h */,
+ C0B042EE163BFE960015400E /* StoreBScene.cpp */,
+ C0B042EF163BFE960015400E /* StoreBScene.h */,
+ C031BD251635BDBD005F73E3 /* AppDelegate.h */,
+ C031BD261635BDBD005F73E3 /* AppDelegate.cpp */,
+ C031BD4A1635C551005F73E3 /* cocos2dx_StoreController.h */,
+ C031BE341637FE84005F73E3 /* cocos2dx_StoreInventory.h */,
+ C0B042F5163C023A0015400E /* Includes.h */,
+ C0B042E8163BFE960015400E /* cocos2dx_InsufficientFundsException.h */,
+ C0B042EB163BFE960015400E /* cocos2dx_NotEnoughGoodsException.h */,
+ C031BE3116370E9B005F73E3 /* cocos2dx_VirtualItemNotFoundException.h */,
+ );
+ name = Classes;
+ sourceTree = "<group>";
+ };
+ C031BDC91635C645005F73E3 /* SoomlaiOSStore */ = {
+ isa = PBXGroup;
+ children = (
+ C031BDCA1635C645005F73E3 /* data */,
+ C031BDDB1635C645005F73E3 /* domain */,
+ C031BDEF1635C645005F73E3 /* EventHandling.h */,
+ C031BDF01635C645005F73E3 /* EventHandling.m */,
+ C031BDF11635C645005F73E3 /* exceptions */,
+ C031BDF81635C645005F73E3 /* FBEncryptor */,
+ C031BDFD1635C645005F73E3 /* IStoreAsssets.h */,
+ C031BDFE1635C645005F73E3 /* JSON */,
+ C031BE011635C645005F73E3 /* SoomlaiOSStore-Prefix.pch */,
+ C031BE021635C645005F73E3 /* store.xcdatamodeld */,
+ C031BE041635C645005F73E3 /* StoreConfig.h */,
+ C031BE051635C645005F73E3 /* StoreConfig.m */,
+ C0B0431C163C7C980015400E /* StoreInventory.h */,
+ C0B0431D163C7C980015400E /* StoreInventory.m */,
+ C031BE061635C645005F73E3 /* StoreController.h */,
+ C031BE071635C645005F73E3 /* StoreController.m */,
+ C031BE081635C645005F73E3 /* UIDevice-UUID */,
+ );
+ name = SoomlaiOSStore;
+ path = "submodules/ios-store/SoomlaiOSStore";
+ sourceTree = "<group>";
+ };
+ C031BDCA1635C645005F73E3 /* data */ = {
+ isa = PBXGroup;
+ children = (
+ C031BDCB1635C645005F73E3 /* JSONConsts.h */,
+ C031BDCC1635C645005F73E3 /* JSONConsts.m */,
+ C031BDCD1635C645005F73E3 /* StorageManager.h */,
+ C031BDCE1635C645005F73E3 /* StorageManager.m */,
+ C031BDCF1635C645005F73E3 /* StoreDatabase.h */,
+ C031BDD01635C645005F73E3 /* StoreDatabase.m */,
+ C031BDD11635C645005F73E3 /* StoreEncryptor.h */,
+ C031BDD21635C645005F73E3 /* StoreEncryptor.m */,
+ C031BDD31635C645005F73E3 /* StorefrontInfo.h */,
+ C031BDD41635C645005F73E3 /* StorefrontInfo.m */,
+ C031BDD51635C645005F73E3 /* StoreInfo.h */,
+ C031BDD61635C645005F73E3 /* StoreInfo.m */,
+ C031BDD71635C645005F73E3 /* VirtualCurrencyStorage.h */,
+ C031BDD81635C645005F73E3 /* VirtualCurrencyStorage.m */,
+ C031BDD91635C645005F73E3 /* VirtualGoodStorage.h */,
+ C031BDDA1635C645005F73E3 /* VirtualGoodStorage.m */,
+ );
+ path = data;
+ sourceTree = "<group>";
+ };
+ C031BDDB1635C645005F73E3 /* domain */ = {
+ isa = PBXGroup;
+ children = (
+ C031BDDC1635C645005F73E3 /* data */,
+ );
+ path = domain;
+ sourceTree = "<group>";
+ };
+ C031BDDC1635C645005F73E3 /* data */ = {
+ isa = PBXGroup;
+ children = (
+ C031BDDD1635C645005F73E3 /* AppStoreItem.h */,
+ C031BDDE1635C645005F73E3 /* AppStoreItem.m */,
+ C031BDDF1635C645005F73E3 /* BalanceDrivenPriceModel.h */,
+ C031BDE01635C645005F73E3 /* BalanceDrivenPriceModel.m */,
+ C031BDE11635C645005F73E3 /* PriceModel.h */,
+ C031BDE21635C645005F73E3 /* PriceModel.m */,
+ C031BDE31635C645005F73E3 /* StaticPriceModel.h */,
+ C031BDE41635C645005F73E3 /* StaticPriceModel.m */,
+ C031BDE51635C645005F73E3 /* VirtualCategory.h */,
+ C031BDE61635C645005F73E3 /* VirtualCategory.m */,
+ C031BDE71635C645005F73E3 /* VirtualCurrency.h */,
+ C031BDE81635C645005F73E3 /* VirtualCurrency.m */,
+ C031BDE91635C645005F73E3 /* VirtualCurrencyPack.h */,
+ C031BDEA1635C645005F73E3 /* VirtualCurrencyPack.m */,
+ C031BDEB1635C645005F73E3 /* VirtualGood.h */,
+ C031BDEC1635C645005F73E3 /* VirtualGood.m */,
+ C031BDED1635C645005F73E3 /* VirtualItem.h */,
+ C031BDEE1635C645005F73E3 /* VirtualItem.m */,
+ );
+ path = data;
+ sourceTree = "<group>";
+ };
+ C031BDF11635C645005F73E3 /* exceptions */ = {
+ isa = PBXGroup;
+ children = (
+ C031BDF21635C645005F73E3 /* InsufficientFundsException.h */,
+ C031BDF31635C645005F73E3 /* InsufficientFundsException.m */,
+ C031BDF41635C645005F73E3 /* NotEnoughGoodsException.h */,
+ C031BDF51635C645005F73E3 /* NotEnoughGoodsException.m */,
+ C031BDF61635C645005F73E3 /* VirtualItemNotFoundException.h */,
+ C031BDF71635C645005F73E3 /* VirtualItemNotFoundException.m */,
+ );
+ path = exceptions;
+ sourceTree = "<group>";
+ };
+ C031BDF81635C645005F73E3 /* FBEncryptor */ = {
+ isa = PBXGroup;
+ children = (
+ C031BDF91635C645005F73E3 /* FBEncryptorAES.h */,
+ C031BDFA1635C645005F73E3 /* FBEncryptorAES.m */,
+ C031BDFB1635C645005F73E3 /* NSData+Base64.h */,
+ C031BDFC1635C645005F73E3 /* NSData+Base64.m */,
+ );
+ path = FBEncryptor;
+ sourceTree = "<group>";
+ };
+ C031BDFE1635C645005F73E3 /* JSON */ = {
+ isa = PBXGroup;
+ children = (
+ C031BDFF1635C645005F73E3 /* JSONKit.h */,
+ C031BE001635C645005F73E3 /* JSONKit.m */,
+ );
+ path = JSON;
+ sourceTree = "<group>";
+ };
+ C031BE081635C645005F73E3 /* UIDevice-UUID */ = {
+ isa = PBXGroup;
+ children = (
+ C031BE091635C645005F73E3 /* NSString+MD5Addition.h */,
+ C031BE0A1635C645005F73E3 /* NSString+MD5Addition.m */,
+ C031BE0B1635C645005F73E3 /* UIDevice+IdentifierAddition.h */,
+ C031BE0C1635C645005F73E3 /* UIDevice+IdentifierAddition.m */,
+ );
+ path = "UIDevice-UUID";
+ sourceTree = "<group>";
+ };
+ C0B0436B163C84860015400E /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ C0B04372163C84860015400E /* libcocos2dx.a */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ C031BA721635BDBA005F73E3 /* cocos2dx-store */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = C031BD2D1635BDBD005F73E3 /* Build configuration list for PBXNativeTarget "cocos2dx-store" */;
+ buildPhases = (
+ C031BA6F1635BDBA005F73E3 /* Sources */,
+ C031BA701635BDBA005F73E3 /* Frameworks */,
+ C031BA711635BDBA005F73E3 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "cocos2dx-store";
+ productName = "cocos2dx-store";
+ productReference = C031BA731635BDBA005F73E3 /* cocos2dx-store.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ C031BA6A1635BDBA005F73E3 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 0450;
+ };
+ buildConfigurationList = C031BA6D1635BDBA005F73E3 /* Build configuration list for PBXProject "cocos2dx-store" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = C031BA681635BDBA005F73E3;
+ productRefGroup = C031BA741635BDBA005F73E3 /* Products */;
+ projectDirPath = "";
+ projectReferences = (
+ {
+ ProductGroup = C0B0436B163C84860015400E /* Products */;
+ ProjectRef = C0B0436A163C84860015400E /* cocos2dx.xcodeproj */;
+ },
+ );
+ projectRoot = "";
+ targets = (
+ C031BA721635BDBA005F73E3 /* cocos2dx-store */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXReferenceProxy section */
+ C0B04372163C84860015400E /* libcocos2dx.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = libcocos2dx.a;
+ remoteRef = C0B04371163C84860015400E /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+/* End PBXReferenceProxy section */
+
+/* Begin PBXResourcesBuildPhase section */
+ C031BA711635BDBA005F73E3 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ C0B042D5163BFD150015400E /* Info.plist in Resources */,
+ C0B042DC163BFD2B0015400E /* Icon-72.png in Resources */,
+ C0B042DD163BFD2B0015400E /* Icon-Small-50.png in Resources */,
+ C0B042DE163BFD2B0015400E /* Icon-Small.png in Resources */,
+ C0B042DF163BFD2B0015400E /* Icon-Small@2x.png in Resources */,
+ C0B042E0163BFD2B0015400E /* Icon.png in Resources */,
+ C0B042E1163BFD2B0015400E /* Icon@2x.png in Resources */,
+ C0B0435E163C83B30015400E /* iphone in Resources */,
+ C0B0435F163C83B30015400E /* iphonehd in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ C031BA6F1635BDBA005F73E3 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ C031BAA31635BDBA005F73E3 /* AppController.mm in Sources */,
+ C031BAA61635BDBA005F73E3 /* RootViewController.mm in Sources */,
+ C031BAA81635BDBA005F73E3 /* main.m in Sources */,
+ C031BD271635BDBD005F73E3 /* AppDelegate.cpp in Sources */,
+ C031BD481635C4C7005F73E3 /* cocos2dx_StoreController.mm in Sources */,
+ C031BE0D1635C645005F73E3 /* JSONConsts.m in Sources */,
+ C031BE0E1635C645005F73E3 /* StorageManager.m in Sources */,
+ C031BE0F1635C645005F73E3 /* StoreDatabase.m in Sources */,
+ C031BE101635C645005F73E3 /* StoreEncryptor.m in Sources */,
+ C031BE111635C645005F73E3 /* StorefrontInfo.m in Sources */,
+ C031BE121635C645005F73E3 /* StoreInfo.m in Sources */,
+ C031BE131635C645005F73E3 /* VirtualCurrencyStorage.m in Sources */,
+ C031BE141635C645005F73E3 /* VirtualGoodStorage.m in Sources */,
+ C031BE151635C645005F73E3 /* AppStoreItem.m in Sources */,
+ C031BE161635C645005F73E3 /* BalanceDrivenPriceModel.m in Sources */,
+ C031BE171635C645005F73E3 /* PriceModel.m in Sources */,
+ C031BE181635C645005F73E3 /* StaticPriceModel.m in Sources */,
+ C031BE191635C645005F73E3 /* VirtualCategory.m in Sources */,
+ C031BE1A1635C645005F73E3 /* VirtualCurrency.m in Sources */,
+ C031BE1B1635C645005F73E3 /* VirtualCurrencyPack.m in Sources */,
+ C031BE1C1635C645005F73E3 /* VirtualGood.m in Sources */,
+ C031BE1D1635C645005F73E3 /* VirtualItem.m in Sources */,
+ C031BE1E1635C645005F73E3 /* EventHandling.m in Sources */,
+ C031BE1F1635C645005F73E3 /* InsufficientFundsException.m in Sources */,
+ C031BE201635C645005F73E3 /* NotEnoughGoodsException.m in Sources */,
+ C031BE211635C645005F73E3 /* VirtualItemNotFoundException.m in Sources */,
+ C031BE221635C645005F73E3 /* FBEncryptorAES.m in Sources */,
+ C031BE231635C645005F73E3 /* NSData+Base64.m in Sources */,
+ C031BE241635C645005F73E3 /* JSONKit.m in Sources */,
+ C031BE251635C645005F73E3 /* store.xcdatamodeld in Sources */,
+ C031BE261635C645005F73E3 /* StoreConfig.m in Sources */,
+ C031BE271635C645005F73E3 /* StoreController.m in Sources */,
+ C031BE281635C645005F73E3 /* NSString+MD5Addition.m in Sources */,
+ C031BE291635C645005F73E3 /* UIDevice+IdentifierAddition.m in Sources */,
+ C0B042F1163BFE960015400E /* GameMenuItem.cpp in Sources */,
+ C0B042F2163BFE960015400E /* MainScene.cpp in Sources */,
+ C0B042F3163BFE960015400E /* StoreAScene.cpp in Sources */,
+ C0B042F4163BFE960015400E /* StoreBScene.cpp in Sources */,
+ C0B04305163C067F0015400E /* AnalyticXStringUtil.mm in Sources */,
+ C0B04308163C59700015400E /* iOSHelper.mm in Sources */,
+ C0B04310163C5DDE0015400E /* MuffinRushAssets.m in Sources */,
+ C0B0431B163C7B250015400E /* cocos2dx_StoreInventory.mm in Sources */,
+ C0B0431E163C7C980015400E /* StoreInventory.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ C031BD2B1635BDBD005F73E3 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ DEBUG,
+ "COCOS2D_DEBUG=1",
+ USE_FILE32API,
+ TARGET_OS_IPHONE,
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ HEADER_SEARCH_PATHS = (
+ "\"$(PROJECT_NAME)/libs/cocos2dx/kazmath/include\"",
+ "\"$(PROJECT_NAME)/libs/cocos2dx\"",
+ "\"$(PROJECT_NAME)/libs/CocosDenshion/include\"",
+ "\"$(SDKROOT)/usr/include/libxml2\"",
+ "\"$(PROJECT_NAME)/libs/cocos2dx/include\"",
+ "\"$(PROJECT_NAME)/libs/cocos2dx/platform/third_party/ios\"",
+ "\"$(PROJECT_NAME)/libs/cocos2dx/platform/ios\"",
+ );
+ IPHONEOS_DEPLOYMENT_TARGET = 6.0;
+ SDKROOT = iphoneos;
+ };
+ name = Debug;
+ };
+ C031BD2C1635BDBD005F73E3 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ NDEBUG,
+ USE_FILE32API,
+ TARGET_OS_IPHONE,
+ );
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ HEADER_SEARCH_PATHS = (
+ "\"$(PROJECT_NAME)/libs/cocos2dx/kazmath/include\"",
+ "\"$(PROJECT_NAME)/libs/cocos2dx\"",
+ "\"$(PROJECT_NAME)/libs/CocosDenshion/include\"",
+ "\"$(SDKROOT)/usr/include/libxml2\"",
+ "\"$(PROJECT_NAME)/libs/cocos2dx/include\"",
+ "\"$(PROJECT_NAME)/libs/cocos2dx/platform/third_party/ios\"",
+ "\"$(PROJECT_NAME)/libs/cocos2dx/platform/ios\"",
+ );
+ IPHONEOS_DEPLOYMENT_TARGET = 6.0;
+ OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
+ SDKROOT = iphoneos;
+ };
+ name = Release;
+ };
+ C031BD2E1635BDBD005F73E3 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ COPY_PHASE_STRIP = NO;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "cocos2dx-store/Prefix.pch";
+ HEADER_SEARCH_PATHS = (
+ "\"$(PROJECT_NAME)/libs/cocos2dx/kazmath/include\"",
+ "\"$(PROJECT_NAME)/libs/cocos2dx\"",
+ "\"$(SDKROOT)/usr/include/libxml2\"",
+ "\"$(PROJECT_NAME)/libs/cocos2dx/include\"",
+ "\"$(PROJECT_NAME)/libs/cocos2dx/platform/ios\"",
+ );
+ INFOPLIST_FILE = "cocos2dx-store/ios/Resources/Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 4.3;
+ LIBRARY_SEARCH_PATHS = "$(inherited)";
+ ONLY_ACTIVE_ARCH = NO;
+ OTHER_LDFLAGS = "";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ VALID_ARCHS = "armv6 armv7 i386";
+ WRAPPER_EXTENSION = app;
+ };
+ name = Debug;
+ };
+ C031BD2F1635BDBD005F73E3 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ COPY_PHASE_STRIP = YES;
+ GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "cocos2dx-store/Prefix.pch";
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ HEADER_SEARCH_PATHS = (
+ "\"$(PROJECT_NAME)/libs/cocos2dx/kazmath/include\"",
+ "\"$(PROJECT_NAME)/libs/cocos2dx\"",
+ "\"$(SDKROOT)/usr/include/libxml2\"",
+ "\"$(PROJECT_NAME)/libs/cocos2dx/include\"",
+ "\"$(PROJECT_NAME)/libs/cocos2dx/platform/ios\"",
+ );
+ INFOPLIST_FILE = "cocos2dx-store/ios/Resources/Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 4.3;
+ LIBRARY_SEARCH_PATHS = "$(inherited)";
+ ONLY_ACTIVE_ARCH = NO;
+ OTHER_LDFLAGS = "";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ VALIDATE_PRODUCT = YES;
+ VALID_ARCHS = "armv6 armv7 i386";
+ WRAPPER_EXTENSION = app;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ C031BA6D1635BDBA005F73E3 /* Build configuration list for PBXProject "cocos2dx-store" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ C031BD2B1635BDBD005F73E3 /* Debug */,
+ C031BD2C1635BDBD005F73E3 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ C031BD2D1635BDBD005F73E3 /* Build configuration list for PBXNativeTarget "cocos2dx-store" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ C031BD2E1635BDBD005F73E3 /* Debug */,
+ C031BD2F1635BDBD005F73E3 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+
+/* Begin XCVersionGroup section */
+ C031BE021635C645005F73E3 /* store.xcdatamodeld */ = {
+ isa = XCVersionGroup;
+ children = (
+ C031BE031635C645005F73E3 /* store.xcdatamodel */,
+ );
+ currentVersion = C031BE031635C645005F73E3 /* store.xcdatamodel */;
+ path = store.xcdatamodeld;
+ sourceTree = "<group>";
+ versionGroupType = wrapper.xcdatamodel;
+ };
+/* End XCVersionGroup section */
+ };
+ rootObject = C031BA6A1635BDBA005F73E3 /* Project object */;
+}
View
7 cocos2dx-store.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+ version = "1.0">
+ <FileRef
+ location = "self:cocos2dx-store.xcodeproj">
+ </FileRef>
+</Workspace>
View
22 cocos2dx-store/Classes/AnalyticXStringUtil.h
@@ -0,0 +1,22 @@
+//
+// AnalyticXStringUtil.h
+// AnalyticX
+//
+// Created by diwwu on 5/10/12.
+// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
+//
+
+#ifndef AnalyticX_AnalyticXStringUtil_h
+#define AnalyticX_AnalyticXStringUtil_h
+
+#include "cocos2d.h"
+
+@interface AnalyticXStringUtil:NSObject
+
++ (NSString *)nsstringFromCString:(const char *)cstring;
++ (const char *)cstringFromNSString:(NSString *)nsstring;
++ (NSDictionary *)nsDictionaryFromCCDictionary:(cocos2d::CCDictionary *)ccDictionary;
+
+@end
+
+#endif
View
54 cocos2dx-store/Classes/AnalyticXStringUtil.mm
@@ -0,0 +1,54 @@
+//
+// AnalyticXStringUtil.cpp
+// AnalyticX
+//
+// Created by diwwu on 5/10/12.
+// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
+//
+
+#import "AnalyticXStringUtil.h"
+
+@implementation AnalyticXStringUtil
+
++ (NSString *)nsstringFromCString:(const char *)cstring {
+ if (cstring == NULL) {
+ return NULL;
+ }
+
+ NSString * nsstring = [[NSString alloc] initWithBytes:cstring length:strlen(cstring) encoding:NSUTF8StringEncoding];
+ return [nsstring autorelease];
+}
++ (const char *)cstringFromNSString:(NSString *)nsstring {
+
+ if (nsstring == NULL) {
+ return NULL;
+ }
+
+ return [nsstring UTF8String];
+}
++ (NSDictionary *)nsDictionaryFromCCDictionary:(cocos2d::CCDictionary *)ccDictionary {
+ if (ccDictionary == NULL) {
+ return NULL;
+ } else if (ccDictionary->allKeys() == NULL) {
+ return NULL;
+ } else if (ccDictionary->allKeys()->count() <= 0) {
+ return NULL;
+ }
+
+ cocos2d::CCLog("1");
+
+ NSMutableDictionary *nsDict = [NSMutableDictionary dictionaryWithCapacity:ccDictionary->allKeys()->count()];
+
+ cocos2d::CCLog("2");
+
+ for (int i = 0; i < ccDictionary->allKeys()->count(); i++) {
+ cocos2d::CCLog("3");
+
+ [nsDict setValue:[AnalyticXStringUtil nsstringFromCString:((cocos2d::CCString *)ccDictionary->objectForKey(((cocos2d::CCString *)ccDictionary->allKeys()->objectAtIndex(i))->getCString()))->getCString()] forKey:[AnalyticXStringUtil nsstringFromCString:((cocos2d::CCString *)ccDictionary->allKeys()->objectAtIndex(i))->getCString()]];
+ }
+
+ return nsDict;
+}
+
+
+@end
View
86 cocos2dx-store/Classes/AppDelegate.cpp
@@ -0,0 +1,86 @@
+#include "AppDelegate.h"
+#include "MainScene.h"
+#include "cocos2dx_StoreController.h"
+
+USING_NS_CC;
+
+AppDelegate::AppDelegate() {
+
+}
+
+AppDelegate::~AppDelegate()
+{
+}
+
+bool AppDelegate::applicationDidFinishLaunching() {
+ cocos2dx_StoreController::initialize(true);
+
+ // initialize director
+ CCDirector *pDirector = CCDirector::sharedDirector();
+
+ pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());
+
+
+ TargetPlatform target = getTargetPlatform();
+
+ if (target == kTargetIpad)
+ {
+ // ipad
+
+ CCFileUtils::sharedFileUtils()->setResourceDirectory("iphonehd");
+
+ // don't enable retina because we don't have ipad hd resource
+ CCEGLView::sharedOpenGLView()->setDesignResolutionSize(960, 640, kResolutionNoBorder);
+ }
+ else if (target == kTargetIphone)
+ {
+ // iphone
+
+ if (pDirector->enableRetinaDisplay(true))
+ {
+ // iphone hd
+ CCFileUtils::sharedFileUtils()->setResourceDirectory("iphonehd");
+ }
+ else
+ {
+ CCFileUtils::sharedFileUtils()->setResourceDirectory("iphone");
+ }
+ }
+ else
+ {
+ // android, windows, blackberry, linux or mac
+ // use 960*640 resources as design resolution size
+ CCFileUtils::sharedFileUtils()->setResourceDirectory("iphonehd");
+ CCEGLView::sharedOpenGLView()->setDesignResolutionSize(720, 1280, kResolutionNoBorder);
+ }
+
+ // turn on display FPS
+ pDirector->setDisplayStats(false);
+
+ // set FPS. the default value is 1.0/60 if you don't call this
+ pDirector->setAnimationInterval(1.0 / 60);
+
+ // create a scene. it's an autorelease object
+ CCScene *pScene = MainScene::scene();
+
+ // run
+ pDirector->runWithScene(pScene);
+
+ return true;
+}
+
+// This function will be called when the app is inactive. When comes a phone call,it's be invoked too
+void AppDelegate::applicationDidEnterBackground() {
+ CCDirector::sharedDirector()->stopAnimation();
+
+ // if you use SimpleAudioEngine, it must be pause
+ // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
+}
+
+// this function will be called when the app is active again
+void AppDelegate::applicationWillEnterForeground() {
+ CCDirector::sharedDirector()->startAnimation();
+
+ // if you use SimpleAudioEngine, it must resume here
+ // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
+}
View
38 cocos2dx-store/Classes/AppDelegate.h
@@ -0,0 +1,38 @@
+#ifndef _APP_DELEGATE_H_
+#define _APP_DELEGATE_H_
+
+#include "cocos2d.h"
+
+/**
+@brief The cocos2d Application.
+
+The reason for implement as private inheritance is to hide some interface call by CCDirector.
+*/
+class AppDelegate : private cocos2d::CCApplication
+{
+public:
+ AppDelegate();
+ virtual ~AppDelegate();
+
+ /**
+ @brief Implement CCDirector and CCScene init code here.
+ @return true Initialize success, app continue.
+ @return false Initialize failed, app terminate.
+ */
+ virtual bool applicationDidFinishLaunching();
+
+ /**
+ @brief The function be called when the application enter background
+ @param the pointer of the application
+ */
+ virtual void applicationDidEnterBackground();
+
+ /**
+ @brief The function be called when the application enter foreground
+ @param the pointer of the application
+ */
+ virtual void applicationWillEnterForeground();
+};
+
+#endif // _APP_DELEGATE_H_
+
View
47 cocos2dx-store/Classes/GameMenuItem.cpp
@@ -0,0 +1,47 @@
+#include "GameMenuItem.h"
+
+const unsigned int kZoomActionTag = 0xc0c05002;
+
+GameMenuItem* GameMenuItem::itemWithLabel(CCNode*label, CCObject* target, SEL_MenuHandler selector)
+{
+ GameMenuItem *pRet = new GameMenuItem();
+ pRet->initWithLabel(label, target, selector);
+ pRet->autorelease();
+ return pRet;
+}
+
+void GameMenuItem::selected()
+{
+ // subclass to change the default action
+ if(m_bIsEnabled)
+ {
+ CCMenuItem::selected();
+
+ CCAction *action = getActionByTag(kZoomActionTag);
+ if (action)
+ {
+ this->stopAction(action);
+ }
+ else
+ {
+ m_fOriginalScale = this->getScale();
+ }
+
+ CCAction *zoomAction = CCEaseElasticOut::create(CCScaleTo::create(0.5f, m_fOriginalScale * mScaleFactor));
+ zoomAction->setTag(kZoomActionTag);
+ this->runAction(zoomAction);
+ }
+}
+
+void GameMenuItem::unselected()
+{
+ // subclass to change the default action
+ if (m_bIsEnabled)
+ {
+ CCMenuItem::unselected();
+ this->stopActionByTag(kZoomActionTag);
+ CCAction *zoomAction = CCEaseElasticOut::create(CCScaleTo::create(0.5f, m_fOriginalScale));
+ zoomAction->setTag(kZoomActionTag);
+ this->runAction(zoomAction);
+ }
+}
View
34 cocos2dx-store/Classes/GameMenuItem.h
@@ -0,0 +1,34 @@
+#ifndef __GameMenuItem_H__
+#define __GameMenuItem_H__
+
+#include "cocos2d.h"
+
+using namespace cocos2d;
+
+class GameMenuItem : public CCMenuItemLabel
+{
+private:
+
+public:
+ GameMenuItem():
+ mScaleFactor(1.1f)
+ {
+
+ }
+
+ static GameMenuItem * itemWithLabel(CCNode*label, CCObject* target, SEL_MenuHandler selector);
+
+ virtual void selected();
+ virtual void unselected();
+
+ void setScaleFactor(float scale)
+ {
+ mScaleFactor = scale;
+ }
+
+protected:
+ float mScaleFactor;
+
+};
+
+#endif
View
20 cocos2dx-store/Classes/Includes.h
@@ -0,0 +1,20 @@
+//
+// Includes.h
+// cocos2dx-store
+//
+// Created by Refael Dakar on 10/27/12.
+//
+//
+
+#ifndef cocos2dx_store_Includes_h
+#define cocos2dx_store_Includes_h
+
+#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
+ #include <jni.h>
+ #include "platform/android/jni/JniHelper.h"
+ #include <android/log.h>
+#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
+ #include "iOSHelper.h"
+#endif
+
+#endif
View
136 cocos2dx-store/Classes/MainScene.cpp
@@ -0,0 +1,136 @@
+#include "MainScene.h"
+#include "StoreAScene.h"
+#include "cocos2dx_StoreController.h"
+
+USING_NS_CC;
+
+Soomla* Soomla::create(const char *pszFileName, CCSprite* pSpriteBox)
+{
+ Soomla *pobSprite = new Soomla();
+ pobSprite->mSpriteBox = pSpriteBox;
+
+ if (pobSprite && pobSprite->initWithFile(pszFileName))
+ {
+ pobSprite->autorelease();
+ return pobSprite;
+ }
+ CC_SAFE_DELETE(pobSprite);
+ return NULL;
+}
+
+void Soomla::onEnter()
+{
+ CCDirector* pDirector = CCDirector::sharedDirector();
+ pDirector->getTouchDispatcher()->addTargetedDelegate(this, 0, true);
+ CCSprite::onEnter();
+}
+
+void Soomla::onExit()
+{
+ CCDirector* pDirector = CCDirector::sharedDirector();
+ pDirector->getTouchDispatcher()->removeDelegate(this);
+ CCSprite::onExit();
+}
+CCRect Soomla::rect()
+{
+ CCSize s = this->getContentSize();
+ return CCRectMake(-s.width / 2, -s.height / 2, s.width, s.height);
+}
+
+bool Soomla::containsTouchLocation(CCTouch* touch)
+{
+ return rect().containsPoint(convertTouchToNodeSpaceAR(touch));
+}
+
+bool Soomla::ccTouchBegan(CCTouch* touch, CCEvent* event)
+{
+ mOriginalPos = this->getPosition();
+ return true;
+}
+
+void Soomla::ccTouchMoved(CCTouch* touch, CCEvent* event)
+{
+ CCPoint touchPoint = touch->getLocation();
+ setPosition(touchPoint);
+}
+
+void Soomla::ccTouchEnded(CCTouch* touch, CCEvent* event)
+{
+ CCRect rect1 = this->boundingBox();
+ CCRect rect2 = this->mSpriteBox->boundingBox();
+
+ if (rect1.intersectsRect(rect2))
+ {
+ CCScene *s = StoreAScene::scene();
+ CCDirector::sharedDirector()->setDepthTest(true);
+ CCTransitionScene *transition = CCTransitionMoveInR::create(0.8f, s);
+
+ CCDirector::sharedDirector()->replaceScene(transition);
+ }
+ else
+ {
+ // Snap
+ this->runAction(CCMoveTo::create(0.2f, mOriginalPos));
+ }
+}
+
+CCScene* MainScene::scene()
+{
+ // 'scene' is an autorelease object
+ CCScene *scene = CCScene::create();
+
+ // 'layer' is an autorelease object
+ MainScene *layer = MainScene::create();
+
+ // add layer as a child to scene
+ scene->addChild(layer);
+
+ // return the scene
+ return scene;
+}
+
+// on "init" you need to initialize your instance
+bool MainScene::init()
+{
+ //////////////////////////////
+ // 1. super init first
+ if ( !CCLayer::init() )
+ {
+ return false;
+ }
+
+ CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
+ CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
+
+
+ CCSprite* bgSprite = CCSprite::create("img_direct.jpg");
+ bgSprite->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
+ this->addChild(bgSprite);
+
+ CCLabelTTF* pLabelTitle = CCLabelTTF::create("SOOMLA Store\nExample", "GoodDog.otf", 54);
+ pLabelTitle->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height - 100 + origin.y));
+ this->addChild(pLabelTitle, 1);
+
+ CCLabelTTF* pLabelGame = CCLabelTTF::create("[YOUR GAME HERE]", "GoodDog.otf", 54);
+ pLabelGame->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 - 0 + origin.y));
+ this->addChild(pLabelGame, 1);
+
+ pRightBox = CCSprite::create("right_bg.png");
+ pRightBox->setScale(2.0f);
+ pRightBox->setPosition(ccp(origin.x + visibleSize.width - (pRightBox->boundingBox().size.width / 2) - 50, 250 + origin.y));
+ this->addChild(pRightBox, 0);
+
+ Soomla* pSoomla = Soomla::create("soomla_logo_new.png", pRightBox);
+ pSoomla->setScale(2.0f);
+ pSoomla->setPosition(ccp(origin.x + (pSoomla->boundingBox().size.width / 2) + 50, 250 + origin.y));
+ this->addChild(pSoomla, 0);
+
+
+ CCLabelTTF* pLabelInstructions = CCLabelTTF::create("Drag the SooMLA-bot to the box top open store", "GoodDog.otf", 24);
+ pLabelInstructions->setPosition(ccp(visibleSize.width/2 + origin.x, 100 + origin.y));
+ this->addChild(pLabelInstructions, 1);
+
+ this->setKeypadEnabled(true);
+
+ return true;
+}
View
50 cocos2dx-store/Classes/MainScene.h
@@ -0,0 +1,50 @@
+#ifndef __MAIN_SCENE_H__
+#define __MAIN_SCENE_H__
+
+#include "cocos2d.h"
+
+USING_NS_CC;
+
+class Soomla : public CCSprite, public CCTargetedTouchDelegate
+{
+public:
+
+ static Soomla* create(const char *pszFileName, CCSprite* pSpriteBox);
+
+ virtual void onEnter();
+ virtual void onExit();
+ CCRect rect();
+ bool containsTouchLocation(CCTouch* touch);
+ virtual bool ccTouchBegan(CCTouch* touch, CCEvent* event);
+ virtual void ccTouchMoved(CCTouch* touch, CCEvent* event);
+ virtual void ccTouchEnded(CCTouch* touch, CCEvent* event);
+
+private:
+
+ CCSprite* mSpriteBox;
+ CCPoint mOriginalPos;
+};
+
+class MainScene : public cocos2d::CCLayer
+{
+private:
+ CCSprite* pRightBox;
+
+public:
+ // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
+ virtual bool init();
+
+ // there's no 'id' in cpp, so we recommand to return the exactly class pointer
+ static cocos2d::CCScene* scene();
+
+ // implement the "static node()" method manually
+ CREATE_FUNC(MainScene);
+
+ // The back key clicked
+ virtual void keyBackClicked()
+ {
+ CCDirector::sharedDirector()->end();
+ }
+};
+
+#endif // __MainScene_SCENE_H__
View
277 cocos2dx-store/Classes/StoreAScene.cpp
@@ -0,0 +1,277 @@
+#include "StoreAScene.h"
+#include "GameMenuItem.h"
+#include "MainScene.h"
+#include "StoreBScene.h"
+#include "cocos2dx_StoreController.h"
+#include "cocos2dx_StoreInventory.h"
+#include "Includes.h"
+
+#include <string>
+#include <sstream>
+#include <pthread.h>
+
+USING_NS_CC;
+using namespace std;
+
+CCLabelTTF* StoreAScene::goodsPriceBalanceLabels[];
+CCLabelTTF* StoreAScene::pLabelBalance;
+
+CCScene* StoreAScene::scene()
+{
+ // 'scene' is an autorelease object
+ CCScene *scene = CCScene::create();
+
+ // 'layer' is an autorelease object
+ StoreAScene *layer = StoreAScene::create();
+
+ // add layer as a child to scene
+ scene->addChild(layer);
+
+ // return the scene
+ return scene;
+}
+
+// on "init" you need to initialize your instance
+bool StoreAScene::init()
+{
+ cocos2dx_StoreController::storeOpening();
+
+ //////////////////////////////
+ // 1. super init first
+ if ( !CCLayerColor::initWithColor(ccc4(255,255,255,255)))
+ {
+ return false;
+ }
+
+ CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
+ CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
+
+ CCLabelTTF* pLabelTitleTest = CCLabelTTF::create("Soomla Test Store", "GoodDog.otf", 34);
+ pLabelTitleTest->setColor(ccc3(255,0,0));
+ pLabelTitleTest->setPosition(ccp(pLabelTitleTest->boundingBox().size.width/2 + origin.x + 20, visibleSize.height - 30 + origin.y));
+ this->addChild(pLabelTitleTest, 1);
+
+ CCLabelTTF* pLabelTitle = CCLabelTTF::create("Virtual Goods", "GoodDog.otf", 54);
+ pLabelTitle->setColor(ccc3(0,0,0));
+ pLabelTitle->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height - 100 + origin.y));
+ this->addChild(pLabelTitle, 1);
+
+
+ CCSprite* pSpriteMuffin = CCSprite::create("muffin.png");
+ pSpriteMuffin->setScale(0.5f);
+ pSpriteMuffin->setPosition(ccp(origin.x + visibleSize.width - 90, visibleSize.height + origin.y - 50));
+ this->addChild(pSpriteMuffin, 0);
+
+ pLabelBalance = CCLabelTTF::create("0", "GoodDog.otf", 34);
+ pLabelBalance->setColor(ccc3(0,255,255));
+ pLabelBalance->setPosition(ccp(origin.x + visibleSize.width - 40, visibleSize.height + origin.y - 50));
+ this->addChild(pLabelBalance, 1);
+ setCurrencyBalanceLabel();
+
+ GameMenuItem* getMoreItem = GameMenuItem::itemWithLabel(
+ CCSprite::create("get_more.png"),
+ this,
+ menu_selector(StoreAScene::menuGetMoreCallback));
+
+ getMoreItem->setPosition(ccp(origin.x + visibleSize.width/2 + (getMoreItem->boundingBox().size.width /2) + 10, 110));
+
+
+ GameMenuItem* backItem = GameMenuItem::itemWithLabel(
+ CCSprite::create("back.png"),
+ this,
+ menu_selector(StoreAScene::menuBackCallback));
+
+ backItem->setPosition(ccp(origin.x + visibleSize.width/2 - (backItem->boundingBox().size.width /2) - 10 , 110));
+
+ // In Game Menu
+ CCMenu* menu = CCMenu::create(getMoreItem, backItem, NULL);
+
+ createListViewItem(origin, menu, visibleSize, 0, "fruit_cake.png", "Fruit Cake", "Customers buy a double portion on each purchase of this cake", 225, 0);
+ createListViewItem(origin, menu, visibleSize, 1, "pavlova.png", "Pavlova", "Gives customers a sugar rush and they call their friends", 175, 0);
+ createListViewItem(origin, menu, visibleSize, 2, "cream_cup.png", "Cream Cup", "Increase bakery reputation with this original pastry", 50, 0);
+ createListViewItem(origin, menu, visibleSize, 3, "chocolate_cake.png", "Chocolate Cake", "A classic cake to maximize customer satisfaction", 250, 0);
+
+ menu->setPosition(CCPointZero);
+ this->addChild(menu);
+
+ this->setKeypadEnabled(true);
+
+ return true;
+}
+
+void StoreAScene::menuBackCallback(CCObject* pSender)
+{
+ cocos2dx_StoreController::storeClosing();
+
+ CCScene *s = MainScene::scene();
+ CCDirector::sharedDirector()->setDepthTest(true);
+ CCTransitionScene *transition = CCTransitionMoveInL::create(0.8f, s);
+
+ CCDirector::sharedDirector()->replaceScene(transition);
+}
+
+void StoreAScene::menuGetMoreCallback(CCObject* pSender)
+{
+ CCScene *s = StoreBScene::scene();
+ CCDirector::sharedDirector()->setDepthTest(true);
+ CCTransitionScene *transition = CCTransitionMoveInR::create(0.8f, s);
+
+ CCDirector::sharedDirector()->replaceScene(transition);
+}
+
+
+void StoreAScene::menuChooseCallback(CCObject* pSender)
+{
+ if (pSender)
+ {
+ GameMenuItem* item = (GameMenuItem*)pSender;
+
+ int tag = item->getTag();
+ char itemId[512];
+ snprintf(itemId, sizeof(itemId), itemIdFromTag(tag));
+ try{
+ cocos2dx_StoreController::buyVirtualGood(itemId);
+ }
+ catch (cocos2dx_VirtualItemNotFoundException& e) {
+#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
+ __android_log_write(ANDROID_LOG_ERROR, "SOOMLA JNI", "Cought cocos2dx_VirtualItemNotFoundException from NATIVE!");
+#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
+ iOSHelper::LogMessage("Cought cocos2dx_VirtualItemNotFoundException!");
+#endif
+
+ } catch (cocos2dx_InsufficientFundsException& e) {
+#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
+ __android_log_write(ANDROID_LOG_ERROR, "SOOMLA JNI", "Cought cocos2dx_InsufficientFundsException from NATIVE!");
+#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
+ iOSHelper::LogMessage("Cought cocos2dx_InsufficientFundsException!");
+#endif
+ }
+ }
+}
+
+void StoreAScene::createListViewItem(CCPoint& origin, CCMenu* menu, CCSize& visibleSize, int tag, const char* img, const char* name, const char* info, int price, int balance) {
+ GameMenuItem *pChooseItem = GameMenuItem::itemWithLabel(
+ CCSprite::create("button.png"),
+ this,
+ menu_selector(StoreAScene::menuChooseCallback));
+
+ float yOffset = - 200;
+
+ pChooseItem->setPosition(ccp(origin.x + visibleSize.width/2, yOffset + origin.y + visibleSize.height - 100 - (tag * pChooseItem->boundingBox().size.height)));
+ pChooseItem->setTag(tag);
+
+
+ CCSprite* pSpritePic = CCSprite::create(img);
+ pSpritePic->setPosition(ccp(pSpritePic->boundingBox().size.width/2 + 20, pChooseItem->boundingBox().size.height/2));
+ pChooseItem->addChild(pSpritePic, 0);
+
+
+ CCLabelTTF* pLabelName = CCLabelTTF::create(name, "GoodDog.otf", 44);
+ pLabelName->setColor(ccc3(0,0,0));
+ pLabelName->setPosition(ccp(pSpritePic->getPositionX() + (pSpritePic->boundingBox().size.width / 2) + (pLabelName->boundingBox().size.width / 2) + 20 , pChooseItem->boundingBox().size.height/2));
+ pChooseItem->addChild(pLabelName);
+
+
+ CCLabelTTF* pLabelInfo = CCLabelTTF::create(info, "GoodDog.otf", 20);
+ pLabelInfo->setColor(ccc3(50,50,50));
+ pLabelInfo->setPosition(ccp(pSpritePic->getPositionX() + (pSpritePic->boundingBox().size.width / 2) + (pLabelInfo->boundingBox().size.width / 2) + 20 , -50 + (pChooseItem->boundingBox().size.height/2)));
+ pChooseItem->addChild(pLabelInfo);
+
+
+ CCLabelTTF* pLabelClickToBuy = CCLabelTTF::create("Click to Buy", "GoodDog.otf", 24);
+ pLabelClickToBuy->setColor(ccc3(0,255,255));
+ pLabelClickToBuy->setPosition(ccp(pChooseItem->boundingBox().size.width - (pLabelClickToBuy->boundingBox().size.width / 2) - 20 , 60 + pChooseItem->boundingBox().size.height/2));
+ pChooseItem->addChild(pLabelClickToBuy);
+
+ char buffer[512];
+
+ snprintf(buffer, sizeof(buffer), "price: %d blanace: %d", price, balance);
+
+ goodsPriceBalanceLabels[tag] = CCLabelTTF::create(buffer, "GoodDog.otf", 24);
+ goodsPriceBalanceLabels[tag]->setColor(ccc3(0,255,255));
+ goodsPriceBalanceLabels[tag]->setPosition(ccp(pChooseItem->boundingBox().size.width - (goodsPriceBalanceLabels[tag]->boundingBox().size.width / 2) - 20 , 60));
+ pChooseItem->addChild(goodsPriceBalanceLabels[tag]);
+
+ menu->addChild(pChooseItem, 1);
+
+ char itemId[512];
+ snprintf(itemId, sizeof(itemId), itemIdFromTag(tag));
+
+ setPriceBalanceLabel(itemId);
+}
+
+void StoreAScene::setCurrencyBalanceLabel() {
+ int balance = 0;
+ try{
+ balance = cocos2dx_StoreInventory::getCurrencyBalance("currency_muffin");
+ } catch (cocos2dx_VirtualItemNotFoundException& e) {
+#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
+ __android_log_write(ANDROID_LOG_ERROR, "SOOMLA JNI", "getCurrencyBalance Cought cocos2dx_VirtualItemNotFoundException from NATIVE!");
+#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
+ iOSHelper::LogMessage("getCurrencyBalance Cought cocos2dx_VirtualItemNotFoundException!");
+#endif
+
+ }
+
+ ostringstream convert;
+ convert << balance;
+
+ pLabelBalance->setString(convert.str().c_str());
+}
+
+void StoreAScene::setPriceBalanceLabel(const char* itemId) {
+ try{
+ int tag = tagFromItemId(itemId);
+ int balance = cocos2dx_StoreInventory::getGoodBalance(itemId);
+
+ ostringstream convert;
+ convert << balance;
+
+ const char* priceBalanceCA = goodsPriceBalanceLabels[tag]->getString();
+ string priceBalance(priceBalanceCA);
+ size_t found = priceBalance.find_last_of(":");
+ priceBalance = priceBalance.substr(0, found+2);
+ priceBalance += convert.str();
+
+ goodsPriceBalanceLabels[tag]->setString(priceBalance.c_str());
+ }
+ catch (cocos2dx_VirtualItemNotFoundException& e) {
+#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
+ __android_log_write(ANDROID_LOG_ERROR, "SOOMLA JNI", "setPriceBalance/getGoodBalance Cought cocos2dx_VirtualItemNotFoundException from NATIVE!");
+#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
+ iOSHelper::LogMessage("setPriceBalance/getGoodBalance Cought cocos2dx_VirtualItemNotFoundException!");
+#endif
+
+ }
+}
+
+int StoreAScene::tagFromItemId(const char* itemId) {
+ string itemIdStr(itemId);
+ if (itemIdStr == "fruit_cake") return 0;
+ if (itemIdStr == "pavlova") return 1;
+ if (itemIdStr == "cream_cup") return 2;
+ if (itemIdStr == "chocolate_cake") return 3;
+
+ return 0;
+}
+
+const char* StoreAScene::itemIdFromTag(int tag) {
+ switch (tag)
+ {
+ case 0: return "fruit_cake";
+ break;
+ case 1: return "pavlova";
+ break;
+ case 2: return "cream_cup";
+ break;
+ case 3: return "chocolate_cake";
+ break;
+ default: return "ERROR";
+ break;
+ }
+
+ return "ERROR";
+}
+
+
+
View
43 cocos2dx-store/Classes/StoreAScene.h
@@ -0,0 +1,43 @@
+#ifndef __STOREA_SCENE_H__
+#define __STOREA_SCENE_H__
+
+#include "cocos2d.h"
+
+USING_NS_CC;
+
+class StoreAScene : public cocos2d::CCLayerColor
+{
+private:
+ void createListViewItem(CCPoint& origin, CCMenu* menu, CCSize& visibleSize, int tag, const char* img, const char* name, const char* info, int price, int balance);
+ const char* itemIdFromTag(int tag);
+ static int tagFromItemId(const char* itemId);
+
+ static CCLabelTTF* goodsPriceBalanceLabels[4];
+ static CCLabelTTF* pLabelBalance;
+
+public:
+ // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
+ virtual bool init();
+
+ // there's no 'id' in cpp, so we recommand to return the exactly class pointer
+ static cocos2d::CCScene* scene();
+
+ // a selector callback
+ void menuBackCallback(CCObject* pSender);
+ void menuGetMoreCallback(CCObject* pSender);
+ void menuChooseCallback(CCObject* pSender);
+
+ // implement the "static node()" method manually
+ CREATE_FUNC(StoreAScene);
+
+ // The back key clicked
+ virtual void keyBackClicked()
+ {
+ menuBackCallback(NULL);
+ }
+
+ static void setCurrencyBalanceLabel();
+ static void setPriceBalanceLabel(const char* itemId);
+};
+
+#endif // __MainScene_SCENE_H__
View
212 cocos2dx-store/Classes/StoreBScene.cpp
@@ -0,0 +1,212 @@
+#include "StoreBScene.h"
+#include "GameMenuItem.h"
+#include "StoreAScene.h"
+#include "cocos2dx_StoreInventory.h"
+#include "cocos2dx_StoreController.h"
+#include "Includes.h"
+
+#include <string>
+#include <sstream>
+
+
+USING_NS_CC;
+using namespace std;
+
+CCLabelTTF* StoreBScene::pLabelBalance;
+
+CCScene* StoreBScene::scene()
+{
+ // 'scene' is an autorelease object
+ CCScene *scene = CCScene::create();
+
+ // 'layer' is an autorelease object
+ StoreBScene *layer = StoreBScene::create();
+
+ // add layer as a child to scene
+ scene->addChild(layer);
+
+ // return the scene
+ return scene;
+}
+
+// on "init" you need to initialize your instance
+bool StoreBScene::init()
+{
+ //////////////////////////////
+ // 1. super init first
+ if ( !CCLayerColor::initWithColor(ccc4(255,255,255,255)))
+ {
+ return false;
+ }
+
+ CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
+ CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
+
+ CCLabelTTF* pLabelTitleTest = CCLabelTTF::create("Soomla Test Store", "GoodDog.otf", 34);
+ pLabelTitleTest->setColor(ccc3(255,0,0));
+ pLabelTitleTest->setPosition(ccp(pLabelTitleTest->boundingBox().size.width/2 + origin.x + 20, visibleSize.height - 30 + origin.y));
+ this->addChild(pLabelTitleTest, 1);
+
+ CCLabelTTF* pLabelTitle = CCLabelTTF::create("Virtual Currency Packs", "GoodDog.otf", 54);
+ pLabelTitle->setColor(ccc3(0,0,0));
+ pLabelTitle->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height - 100 + origin.y));
+ this->addChild(pLabelTitle, 1);
+
+
+ CCSprite* pSpriteMuffin = CCSprite::create("muffin.png");
+ pSpriteMuffin->setScale(0.5f);
+ pSpriteMuffin->setPosition(ccp(origin.x + visibleSize.width - 90, visibleSize.height + origin.y - 50));
+ this->addChild(pSpriteMuffin, 0);
+
+ pLabelBalance = CCLabelTTF::create("24", "GoodDog.otf", 34);
+ pLabelBalance->setColor(ccc3(0,255,255));
+ pLabelBalance->setPosition(ccp(origin.x + visibleSize.width - 40, visibleSize.height + origin.y - 50));
+ this->addChild(pLabelBalance, 1);
+ setCurrencyBalanceLabel();
+
+
+ GameMenuItem* backItem = GameMenuItem::itemWithLabel(
+ CCSprite::create("back.png"),
+ this,
+ menu_selector(StoreBScene::menuBackCallback));
+
+ backItem->setPosition(ccp(origin.x + visibleSize.width/2 , 110));
+
+ // In Game Menu
+ CCMenu* menu = CCMenu::create(backItem, NULL);
+
+ createListViewItem(origin, menu, visibleSize, 0, "no_ads.png", "Remove Ads!", "Test purchase of MANAGED item.", 5.99);
+ createListViewItem(origin, menu, visibleSize, 1, "muffins01.png", "10 Muffins", "Test refund of an item", 0.99);
+ createListViewItem(origin, menu, visibleSize, 2, "muffins02.png", "50 Muffins", "Test cancellation of an item", 1.99);
+ createListViewItem(origin, menu, visibleSize, 3, "muffins03.png", "400 Muffins", "Test purchase of an item", 4.99);
+ createListViewItem(origin, menu, visibleSize, 4, "muffins04.png", "1000 Muffins", "Test item unavailable", 8.99);
+
+ menu->setPosition(CCPointZero);
+ this->addChild(menu);
+
+ this->setKeypadEnabled(true);
+
+ return true;
+}
+
+void StoreBScene::menuBackCallback(CCObject* pSender)
+{
+ CCScene *s = StoreAScene::scene();
+ CCDirector::sharedDirector()->setDepthTest(true);
+ CCTransitionScene *transition = CCTransitionMoveInL::create(0.8f, s);
+
+ CCDirector::sharedDirector()->replaceScene(transition);
+}
+
+
+void StoreBScene::menuChooseCallback(CCObject* pSender)
+{
+ if (pSender)
+ {
+ GameMenuItem* item = (GameMenuItem*)pSender;
+
+ int tag = item->getTag();
+ char productId[512];
+ snprintf(productId, sizeof(productId), productIdFromTag(tag));
+ try{
+ if (tag == 0) {
+
+ } else {
+ cocos2dx_StoreController::buyCurrencyPack(productId);
+ }
+ }
+ catch (cocos2dx_VirtualItemNotFoundException& e) {
+#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
+ __android_log_write(ANDROID_LOG_ERROR, "SOOMLA JNI", "Cought cocos2dx_VirtualItemNotFoundException from NATIVE!");
+#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
+ iOSHelper::LogMessage("Cought cocos2dx_VirtualItemNotFoundException!");
+#endif
+ }
+ }
+}
+
+void StoreBScene::setCurrencyBalanceLabel() {
+ int balance = 0;
+ try{
+ balance = cocos2dx_StoreInventory::getCurrencyBalance("currency_muffin");
+ } catch (cocos2dx_VirtualItemNotFoundException& e) {
+#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
+ __android_log_write(ANDROID_LOG_ERROR, "SOOMLA JNI", "getCurrencyBalance Cought cocos2dx_VirtualItemNotFoundException from NATIVE!");
+#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
+ iOSHelper::LogMessage("getCurrencyBalance Cought cocos2dx_VirtualItemNotFoundException!");
+#endif
+ }
+
+ ostringstream convert;
+ convert << balance;
+
+ pLabelBalance->setString(convert.str().c_str());
+}
+
+void StoreBScene::createListViewItem(CCPoint& origin, CCMenu* menu, CCSize& visibleSize, int tag, const char* img, const char* name, const char* info, float price) {
+ GameMenuItem *pChooseItem = GameMenuItem::itemWithLabel(
+ CCSprite::create("button.png"),
+ this,
+ menu_selector(StoreBScene::menuChooseCallback));
+
+ float yOffset = - 200;
+
+ pChooseItem->setPosition(ccp(origin.x + visibleSize.width/2, yOffset + origin.y + visibleSize.height - 100 - (tag * pChooseItem->boundingBox().size.height)));
+ pChooseItem->setTag(tag);
+
+
+ CCSprite* pSpritePic = CCSprite::create(img);
+ pSpritePic->setPosition(ccp(pSpritePic->boundingBox().size.width/2 + 20, pChooseItem->boundingBox().size.height/2));
+ pChooseItem->addChild(pSpritePic, 0);
+
+
+ CCLabelTTF* pLabelName = CCLabelTTF::create(name, "GoodDog.otf", 44);
+ pLabelName->setColor(ccc3(0,0,0));
+ pLabelName->setPosition(ccp(pSpritePic->getPositionX() + (pSpritePic->boundingBox().size.width / 2) + (pLabelName->boundingBox().size.width / 2) + 20 , pChooseItem->boundingBox().size.height/2));
+ pChooseItem->addChild(pLabelName);
+
+
+ CCLabelTTF* pLabelInfo = CCLabelTTF::create(info, "GoodDog.otf", 20);
+ pLabelInfo->setColor(ccc3(50,50,50));
+ pLabelInfo->setPosition(ccp(pSpritePic->getPositionX() + (pSpritePic->boundingBox().size.width / 2) + (pLabelInfo->boundingBox().size.width / 2) + 20 , -50 + (pChooseItem->boundingBox().size.height/2)));
+ pChooseItem->addChild(pLabelInfo);
+
+
+ CCLabelTTF* pLabelClickToBuy = CCLabelTTF::create("Click to Buy", "GoodDog.otf", 24);
+ pLabelClickToBuy->setColor(ccc3(0,255,255));
+ pLabelClickToBuy->setPosition(ccp(pChooseItem->boundingBox().size.width - (pLabelClickToBuy->boundingBox().size.width / 2) - 20 , 60 + pChooseItem->boundingBox().size.height/2));
+ pChooseItem->addChild(pLabelClickToBuy);
+
+ char buffer[512];
+
+ snprintf(buffer, sizeof(buffer), "price: $%.2f", price);
+
+ CCLabelTTF* pLabelPriceBalance = CCLabelTTF::create(buffer, "GoodDog.otf", 24);
+ pLabelPriceBalance->setColor(ccc3(0,255,255));
+ pLabelPriceBalance->setPosition(ccp(pChooseItem->boundingBox().size.width - (pLabelPriceBalance->boundingBox().size.width / 2) - 20 , 60));
+ pChooseItem->addChild(pLabelPriceBalance);
+
+ menu->addChild(pChooseItem, 1);
+}
+
+const char* StoreBScene::productIdFromTag(int tag) {
+ switch (tag)
+ {
+ case 0: return "no_ads";
+ break;
+ case 1: return "android.test.refunded";
+ break;
+ case 2: return "android.test.canceled";
+ break;
+ case 3: return "android.test.purchased";
+ break;
+ case 4: return "android.test.item_unavailable";
+ break;
+ default: return "ERROR";
+ break;
+ }
+
+ return "ERROR";
+}
+
+
View
38 cocos2dx-store/Classes/StoreBScene.h
@@ -0,0 +1,38 @@
+#ifndef __STOREB_SCENE_H__
+#define __STOREB_SCENE_H__
+
+#include "cocos2d.h"
+
+USING_NS_CC;
+
+class StoreBScene : public cocos2d::CCLayerColor
+{
+private:
+ const char* productIdFromTag(int tag);
+ void createListViewItem(CCPoint& origin, CCMenu* menu, CCSize& visibleSize, int tag, const char* img, const char* name, const char* info, float price);
+
+ static CCLabelTTF* pLabelBalance;
+public:
+ // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
+ virtual bool init();
+
+ // there's no 'id' in cpp, so we recommand to return the exactly class pointer
+ static cocos2d::CCScene* scene();
+
+ // a selector callback
+ void menuBackCallback(CCObject* pSender);
+ void menuChooseCallback(CCObject* pSender);
+
+ // implement the "static node()" method manually
+ CREATE_FUNC(StoreBScene);
+
+ // The back key clicked
+ virtual void keyBackClicked()
+ {
+ menuBackCallback(NULL);
+ }
+
+ static void setCurrencyBalanceLabel();
+};
+
+#endif // __MainScene_SCENE_H__
View
26 cocos2dx-store/Classes/cocos2dx_InsufficientFundsException.h
@@ -0,0 +1,26 @@
+//
+// cocos2dx_InsufficientFundsException.h
+// cocos2dx-store
+//
+// Created by Refael Dakar on 10/23/12.
+//
+//
+
+#ifndef __cocos2dx_store__InsufficientFundsException__
+#define __cocos2dx_store__InsufficientFundsException__
+
+#include <iostream>
+#include <exception>
+
+using namespace std;
+
+class cocos2dx_InsufficientFundsException : public exception {
+
+public:
+
+ virtual const char* what() const throw() {
+ return "The user doesn't have enough funds to purchase the requested VirtualGood !";
+ }
+};
+
+#endif
View
25 cocos2dx-store/Classes/cocos2dx_NotEnoughGoodsException.h
@@ -0,0 +1,25 @@
+//
+// cocos2dx_NotEnoughGoodsException.h
+// cocos2dx-store
+//
+// Created by Refael Dakar on 10/23/12.
+//
+//
+
+#ifndef __cocos2dx_store__NotEnoughGoodsException__
+#define __cocos2dx_store__NotEnoughGoodsException__
+
+#include <iostream>
+#include <exception>
+
+using namespace std;
+
+class cocos2dx_NotEnoughGoodsException : public exception {
+
+public:
+ virtual const char* what() const throw() {
+ return "The user doesn't have enough VirtualGoods to equip one !";
+ }
+};
+
+#endif
View
230 cocos2dx-store/Classes/cocos2dx_StoreController.cpp
@@ -0,0 +1,230 @@
+//
+// cocos2dx_StoreController.cpp
+// cocos2dx-store
+//
+// Created by Refael Dakar on 10/22/12.
+//
+//
+
+#include "cocos2dx_StoreController.h"
+
+#include <jni.h>
+#include "platform/android/jni/JniHelper.h"
+#include <android/log.h>
+
+void cocos2dx_StoreController::storeOpening() {
+ cocos2d::JniMethodInfo minfo;
+
+ bool isHave = cocos2d::JniHelper::getStaticMethodInfo(minfo,"com/soomla/store/StoreControllerBridge","storeOpening", "()V"