Commit cb21390193e0f1cef6d09e1b5f02fe1ec3bc609b

Authored by xiaoyu
1 parent 9415917c

添加一个游戏的源码和编译选项

Showing 335 changed files with 18389 additions and 108 deletions

Too many changes.

To preserve performance only 26 of 335 files are displayed.

ios/Runner.xcodeproj/project.pbxproj
... ... @@ -17,6 +17,269 @@
17 17 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
18 18 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
19 19 B852C1352BCABB5E00A53FC4 /* GameMessageChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B852C1342BCABB5E00A53FC4 /* GameMessageChannel.swift */; };
  20 + B891A2E12BCD1392006CB06E /* TouchInterceptingLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2622BCD1392006CB06E /* TouchInterceptingLayer.cpp */; };
  21 + B891A2E22BCD1392006CB06E /* LevelPickerLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2652BCD1392006CB06E /* LevelPickerLayer.cpp */; };
  22 + B891A2E32BCD1392006CB06E /* LevelPickerView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2672BCD1392006CB06E /* LevelPickerView.cpp */; };
  23 + B891A2E42BCD1392006CB06E /* SimpleLevelPickerView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2692BCD1392006CB06E /* SimpleLevelPickerView.cpp */; };
  24 + B891A2E52BCD1392006CB06E /* AlertView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A26C2BCD1392006CB06E /* AlertView.cpp */; };
  25 + B891A2E62BCD1392006CB06E /* AppLinksView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A26E2BCD1392006CB06E /* AppLinksView.cpp */; };
  26 + B891A2E72BCD1392006CB06E /* GameLifeIndicatorView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2702BCD1392006CB06E /* GameLifeIndicatorView.cpp */; };
  27 + B891A2E82BCD1392006CB06E /* LevelView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2722BCD1392006CB06E /* LevelView.cpp */; };
  28 + B891A2E92BCD1392006CB06E /* ParentalGateShowInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2742BCD1392006CB06E /* ParentalGateShowInterface.cpp */; };
  29 + B891A2EA2BCD1392006CB06E /* ParentalGateView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2762BCD1392006CB06E /* ParentalGateView.cpp */; };
  30 + B891A2EB2BCD1392006CB06E /* SettingsLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2782BCD1392006CB06E /* SettingsLayer.cpp */; };
  31 + B891A2EC2BCD1392006CB06E /* TOSAcceptPopupView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A27A2BCD1392006CB06E /* TOSAcceptPopupView.cpp */; };
  32 + B891A2ED2BCD1392006CB06E /* ChangingSprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A27D2BCD1392006CB06E /* ChangingSprite.cpp */; };
  33 + B891A2EE2BCD1392006CB06E /* ContainerSprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A27F2BCD1392006CB06E /* ContainerSprite.cpp */; };
  34 + B891A2EF2BCD1392006CB06E /* PlainLabel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2812BCD1392006CB06E /* PlainLabel.cpp */; };
  35 + B891A2F02BCD1392006CB06E /* PlainNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2832BCD1392006CB06E /* PlainNode.cpp */; };
  36 + B891A2F12BCD1392006CB06E /* PlainSprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2852BCD1392006CB06E /* PlainSprite.cpp */; };
  37 + B891A2F22BCD1392006CB06E /* ProgressSliderNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2872BCD1392006CB06E /* ProgressSliderNode.cpp */; };
  38 + B891A2F32BCD1392006CB06E /* SimpleButton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2892BCD1392006CB06E /* SimpleButton.cpp */; };
  39 + B891A2F42BCD1392006CB06E /* TouchableSprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A28B2BCD1392006CB06E /* TouchableSprite.cpp */; };
  40 + B891A2F52BCD1392006CB06E /* TwoStateButton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A28D2BCD1392006CB06E /* TwoStateButton.cpp */; };
  41 + B891A2F62BCD1392006CB06E /* ResourcesConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2912BCD1392006CB06E /* ResourcesConfig.cpp */; };
  42 + B891A2F72BCD1392006CB06E /* Strings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2932BCD1392006CB06E /* Strings.cpp */; };
  43 + B891A2F92BCD1392006CB06E /* GameConfigParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2992BCD1392006CB06E /* GameConfigParser.cpp */; };
  44 + B891A2FA2BCD1392006CB06E /* LayoutObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A29C2BCD1392006CB06E /* LayoutObject.cpp */; };
  45 + B891A2FB2BCD1392006CB06E /* LayoutParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A29E2BCD1392006CB06E /* LayoutParser.cpp */; };
  46 + B891A2FC2BCD1392006CB06E /* ActionData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2A12BCD1392006CB06E /* ActionData.cpp */; };
  47 + B891A3042BCD1392006CB06E /* JSONParseUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2B52BCD1392006CB06E /* JSONParseUtils.cpp */; };
  48 + B891A3052BCD1392006CB06E /* StaticActionParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2B82BCD1392006CB06E /* StaticActionParser.cpp */; };
  49 + B891A3062BCD1392006CB06E /* ValueStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2BA2BCD1392006CB06E /* ValueStorage.cpp */; };
  50 + B891A3072BCD1392006CB06E /* SubGameScene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2BD2BCD1392006CB06E /* SubGameScene.cpp */; };
  51 + B891A3082BCD1392006CB06E /* SubGameSceneShoot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2BF2BCD1392006CB06E /* SubGameSceneShoot.cpp */; };
  52 + B891A30A2BCD1392006CB06E /* ParentScene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2C42BCD1392006CB06E /* ParentScene.cpp */; };
  53 + B891A30B2BCD1392006CB06E /* SceneWithUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2C62BCD1392006CB06E /* SceneWithUtils.cpp */; };
  54 + B891A30C2BCD1392006CB06E /* DrawingUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2C92BCD1392006CB06E /* DrawingUtils.cpp */; };
  55 + B891A30D2BCD1392006CB06E /* GeometryUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2CB2BCD1392006CB06E /* GeometryUtils.cpp */; };
  56 + B891A30E2BCD1392006CB06E /* MathUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2CD2BCD1392006CB06E /* MathUtils.cpp */; };
  57 + B891A30F2BCD1392006CB06E /* MiscUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2CF2BCD1392006CB06E /* MiscUtils.cpp */; };
  58 + B891A3102BCD1392006CB06E /* ResourceUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2D12BCD1392006CB06E /* ResourceUtilities.cpp */; };
  59 + B891A3112BCD1392006CB06E /* ScalingUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2D32BCD1392006CB06E /* ScalingUtils.cpp */; };
  60 + B891A3122BCD1392006CB06E /* SoundsRepo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2D52BCD1392006CB06E /* SoundsRepo.cpp */; };
  61 + B891A3132BCD1392006CB06E /* SoundUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2D72BCD1392006CB06E /* SoundUtils.cpp */; };
  62 + B891A3142BCD1392006CB06E /* StringUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B891A2D92BCD1392006CB06E /* StringUtils.cpp */; };
  63 + B891A4F92BCD2429006CB06E /* ComicSansMSBold.ttf in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3162BCD13AB006CB06E /* ComicSansMSBold.ttf */; };
  64 + B891A4FA2BCD2429006CB06E /* ComicSansMSRegular.ttf in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3172BCD13AB006CB06E /* ComicSansMSRegular.ttf */; };
  65 + B891A4FB2BCD2449006CB06E /* .gitkeep in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A40F2BCD13AB006CB06E /* .gitkeep */; };
  66 + B891A4FC2BCD2488006CB06E /* gconfig.gcf in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3192BCD13AB006CB06E /* gconfig.gcf */; };
  67 + B891A4FD2BCD24CA006CB06E /* g_no.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3392BCD13AB006CB06E /* g_no.mp3 */; };
  68 + B891A4FE2BCD24CA006CB06E /* g_oops.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A33A2BCD13AB006CB06E /* g_oops.mp3 */; };
  69 + B891A4FF2BCD24CA006CB06E /* g_uh_oh.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A33B2BCD13AB006CB06E /* g_uh_oh.mp3 */; };
  70 + B891A5002BCD24CA006CB06E /* g_well_done.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A33C2BCD13AB006CB06E /* g_well_done.mp3 */; };
  71 + B891A5012BCD24CA006CB06E /* g_whoo_hoo.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A33D2BCD13AB006CB06E /* g_whoo_hoo.mp3 */; };
  72 + B891A5022BCD24CA006CB06E /* g_yeah.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A33E2BCD13AB006CB06E /* g_yeah.mp3 */; };
  73 + B891A5032BCD24CA006CB06E /* maggie_super.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A33F2BCD13AB006CB06E /* maggie_super.mp3 */; };
  74 + B891A5042BCD24CA006CB06E /* maggie_thats_right.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3402BCD13AB006CB06E /* maggie_thats_right.mp3 */; };
  75 + B891A5052BCD24CA006CB06E /* maggie_yeah.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3412BCD13AB006CB06E /* maggie_yeah.mp3 */; };
  76 + B891A50F2BCD2524006CB06E /* all_in_trolley.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A31C2BCD13AB006CB06E /* all_in_trolley.mp3 */; };
  77 + B891A5102BCD2524006CB06E /* apple.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A31D2BCD13AB006CB06E /* apple.mp3 */; };
  78 + B891A5112BCD2524006CB06E /* banana.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A31E2BCD13AB006CB06E /* banana.mp3 */; };
  79 + B891A5122BCD2524006CB06E /* cake.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A31F2BCD13AB006CB06E /* cake.mp3 */; };
  80 + B891A5132BCD2524006CB06E /* chocolate.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3202BCD13AB006CB06E /* chocolate.mp3 */; };
  81 + B891A5142BCD2524006CB06E /* cucumber.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3212BCD13AB006CB06E /* cucumber.mp3 */; };
  82 + B891A5152BCD2524006CB06E /* donut.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3222BCD13AB006CB06E /* donut.mp3 */; };
  83 + B891A5162BCD2524006CB06E /* effect_catapult.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3232BCD13AB006CB06E /* effect_catapult.mp3 */; };
  84 + B891A5172BCD2524006CB06E /* effect_hit.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3242BCD13AB006CB06E /* effect_hit.mp3 */; };
  85 + B891A5182BCD2524006CB06E /* effect_in_trolley.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3252BCD13AB006CB06E /* effect_in_trolley.mp3 */; };
  86 + B891A5192BCD2524006CB06E /* hit_maggie.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3262BCD13AB006CB06E /* hit_maggie.mp3 */; };
  87 + B891A51A2BCD2524006CB06E /* hit_steve.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3272BCD13AB006CB06E /* hit_steve.mp3 */; };
  88 + B891A51B2BCD2524006CB06E /* icecream.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3282BCD13AB006CB06E /* icecream.mp3 */; };
  89 + B891A51C2BCD2524006CB06E /* in_trolley.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3292BCD13AB006CB06E /* in_trolley.mp3 */; };
  90 + B891A51D2BCD2524006CB06E /* not_apple.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A32A2BCD13AB006CB06E /* not_apple.mp3 */; };
  91 + B891A51E2BCD2524006CB06E /* not_banana.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A32B2BCD13AB006CB06E /* not_banana.mp3 */; };
  92 + B891A51F2BCD2524006CB06E /* not_cake.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A32C2BCD13AB006CB06E /* not_cake.mp3 */; };
  93 + B891A5202BCD2524006CB06E /* not_chocolate.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A32D2BCD13AB006CB06E /* not_chocolate.mp3 */; };
  94 + B891A5212BCD2524006CB06E /* not_cucumber.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A32E2BCD13AB006CB06E /* not_cucumber.mp3 */; };
  95 + B891A5222BCD2524006CB06E /* not_donut.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A32F2BCD13AB006CB06E /* not_donut.mp3 */; };
  96 + B891A5232BCD2524006CB06E /* not_icecream.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3302BCD13AB006CB06E /* not_icecream.mp3 */; };
  97 + B891A5242BCD2524006CB06E /* not_in_trolley.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3312BCD13AB006CB06E /* not_in_trolley.mp3 */; };
  98 + B891A5252BCD2524006CB06E /* not_tomato.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3322BCD13AB006CB06E /* not_tomato.mp3 */; };
  99 + B891A5262BCD2524006CB06E /* put_it_trolley.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3332BCD13AB006CB06E /* put_it_trolley.mp3 */; };
  100 + B891A5272BCD2524006CB06E /* shop_closed.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3342BCD13AB006CB06E /* shop_closed.mp3 */; };
  101 + B891A5282BCD2524006CB06E /* start.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3352BCD13AB006CB06E /* start.mp3 */; };
  102 + B891A5292BCD2524006CB06E /* tomato.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3362BCD13AB006CB06E /* tomato.mp3 */; };
  103 + B891A52A2BCD2524006CB06E /* wrong_3_times.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3372BCD13AB006CB06E /* wrong_3_times.mp3 */; };
  104 + B891A52B2BCD2547006CB06E /* g_pick_level.mp3 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3432BCD13AB006CB06E /* g_pick_level.mp3 */; };
  105 + B891A52C2BCD2576006CB06E /* app_link_halloween.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3472BCD13AB006CB06E /* app_link_halloween.png */; };
  106 + B891A52D2BCD2576006CB06E /* app_link_toy.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3482BCD13AB006CB06E /* app_link_toy.png */; };
  107 + B891A52E2BCD2576006CB06E /* doll_toy_app.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3492BCD13AB006CB06E /* doll_toy_app.png */; };
  108 + B891A52F2BCD2576006CB06E /* halo_icon.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A34A2BCD13AB006CB06E /* halo_icon.png */; };
  109 + B891A5302BCD2576006CB06E /* steve_maggie.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A34B2BCD13AB006CB06E /* steve_maggie.png */; };
  110 + B891A5312BCD2576006CB06E /* witch_halloween_app.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A34C2BCD13AB006CB06E /* witch_halloween_app.png */; };
  111 + B891A5322BCD259B006CB06E /* horizontalButtonPanelBackFFPause.obl in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A35F2BCD13AB006CB06E /* horizontalButtonPanelBackFFPause.obl */; };
  112 + B891A5332BCD25B4006CB06E /* button_back.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A34E2BCD13AB006CB06E /* button_back.png */; };
  113 + B891A5342BCD25B4006CB06E /* button_go.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A34F2BCD13AB006CB06E /* button_go.png */; };
  114 + B891A5352BCD25B4006CB06E /* button_green.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3502BCD13AB006CB06E /* button_green.png */; };
  115 + B891A5362BCD25B4006CB06E /* button_grey.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3512BCD13AB006CB06E /* button_grey.png */; };
  116 + B891A5372BCD25B4006CB06E /* button_orange.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3522BCD13AB006CB06E /* button_orange.png */; };
  117 + B891A5382BCD25B4006CB06E /* button_pause.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3532BCD13AB006CB06E /* button_pause.png */; };
  118 + B891A5392BCD25B4006CB06E /* button_purple.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3542BCD13AB006CB06E /* button_purple.png */; };
  119 + B891A53A2BCD25B4006CB06E /* button_red.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3552BCD13AB006CB06E /* button_red.png */; };
  120 + B891A53B2BCD25B4006CB06E /* button_repeat.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3562BCD13AB006CB06E /* button_repeat.png */; };
  121 + B891A53C2BCD25B4006CB06E /* button_setting.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3572BCD13AB006CB06E /* button_setting.png */; };
  122 + B891A53D2BCD25B4006CB06E /* button_sound_off.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3582BCD13AB006CB06E /* button_sound_off.png */; };
  123 + B891A53E2BCD25B4006CB06E /* button_sound_on.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3592BCD13AB006CB06E /* button_sound_on.png */; };
  124 + B891A53F2BCD25B4006CB06E /* button_turquoise.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A35A2BCD13AB006CB06E /* button_turquoise.png */; };
  125 + B891A5402BCD25B4006CB06E /* button_yellow.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A35B2BCD13AB006CB06E /* button_yellow.png */; };
  126 + B891A5412BCD25B4006CB06E /* buttonff.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A35C2BCD13AB006CB06E /* buttonff.png */; };
  127 + B891A5422BCD25B4006CB06E /* dark_green.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A35D2BCD13AB006CB06E /* dark_green.png */; };
  128 + B891A5432BCD25D4006CB06E /* g_finger.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3A42BCD13AB006CB06E /* g_finger.png */; };
  129 + B891A5442BCD25D4006CB06E /* g_life_indicator_dead.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3A52BCD13AB006CB06E /* g_life_indicator_dead.png */; };
  130 + B891A5452BCD25D4006CB06E /* g_life_indicator_ok.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3A62BCD13AB006CB06E /* g_life_indicator_ok.png */; };
  131 + B891A5462BCD25D4006CB06E /* level_halo.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3A72BCD13AB006CB06E /* level_halo.png */; };
  132 + B891A5472BCD25F0006CB06E /* level_1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3612BCD13AB006CB06E /* level_1.png */; };
  133 + B891A5482BCD25F0006CB06E /* level_2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3622BCD13AB006CB06E /* level_2.png */; };
  134 + B891A5492BCD25F0006CB06E /* level_3.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3632BCD13AB006CB06E /* level_3.png */; };
  135 + B891A54A2BCD2615006CB06E /* scene_layout.scl in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A39F2BCD13AB006CB06E /* scene_layout.scl */; };
  136 + B891A5572BCD266A006CB06E /* cart_back1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A38F2BCD13AB006CB06E /* cart_back1.png */; };
  137 + B891A5582BCD266A006CB06E /* cart_back2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3902BCD13AB006CB06E /* cart_back2.png */; };
  138 + B891A5592BCD266A006CB06E /* cart_front.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3912BCD13AB006CB06E /* cart_front.png */; };
  139 + B891A55A2BCD266A006CB06E /* clock.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3922BCD13AB006CB06E /* clock.png */; };
  140 + B891A55B2BCD266A006CB06E /* food_in_cart.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3932BCD13AB006CB06E /* food_in_cart.png */; };
  141 + B891A55C2BCD266A006CB06E /* gum.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3942BCD13AB006CB06E /* gum.png */; };
  142 + B891A55D2BCD266A006CB06E /* hand_leather.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3952BCD13AB006CB06E /* hand_leather.png */; };
  143 + B891A55E2BCD266A006CB06E /* hand_sling.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3962BCD13AB006CB06E /* hand_sling.png */; };
  144 + B891A55F2BCD266A006CB06E /* sling.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3972BCD13AB006CB06E /* sling.png */; };
  145 + B891A5602BCD266A006CB06E /* steve_head1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3982BCD13AB006CB06E /* steve_head1.png */; };
  146 + B891A5612BCD266A006CB06E /* steve_head2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3992BCD13AB006CB06E /* steve_head2.png */; };
  147 + B891A5622BCD266A006CB06E /* steve_head3.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A39A2BCD13AB006CB06E /* steve_head3.png */; };
  148 + B891A5632BCD266A006CB06E /* steve_head4.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A39B2BCD13AB006CB06E /* steve_head4.png */; };
  149 + B891A5642BCD266A006CB06E /* steve_head5.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A39C2BCD13AB006CB06E /* steve_head5.png */; };
  150 + B891A5652BCD266A006CB06E /* wooden_shelf.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A39D2BCD13AB006CB06E /* wooden_shelf.png */; };
  151 + B891A5662BCD2694006CB06E /* apples.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3652BCD13AB006CB06E /* apples.png */; };
  152 + B891A5672BCD2694006CB06E /* baguettes.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3662BCD13AB006CB06E /* baguettes.png */; };
  153 + B891A5682BCD2694006CB06E /* bananas.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3672BCD13AB006CB06E /* bananas.png */; };
  154 + B891A5692BCD2694006CB06E /* cakes.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3682BCD13AB006CB06E /* cakes.png */; };
  155 + B891A56A2BCD2694006CB06E /* chocolate.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3692BCD13AB006CB06E /* chocolate.png */; };
  156 + B891A56B2BCD2694006CB06E /* cucumbers.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A36A2BCD13AB006CB06E /* cucumbers.png */; };
  157 + B891A56C2BCD2694006CB06E /* donuts.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A36B2BCD13AB006CB06E /* donuts.png */; };
  158 + B891A56D2BCD2694006CB06E /* icecream.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A36C2BCD13AB006CB06E /* icecream.png */; };
  159 + B891A56E2BCD2695006CB06E /* lettuce.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A36D2BCD13AB006CB06E /* lettuce.png */; };
  160 + B891A56F2BCD2695006CB06E /* milk.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A36E2BCD13AB006CB06E /* milk.png */; };
  161 + B891A5702BCD2695006CB06E /* orange.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A36F2BCD13AB006CB06E /* orange.png */; };
  162 + B891A5712BCD2695006CB06E /* tomatoes.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3702BCD13AB006CB06E /* tomatoes.png */; };
  163 + B891A5722BCD26DA006CB06E /* apple_splodge.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3722BCD13AB006CB06E /* apple_splodge.png */; };
  164 + B891A5732BCD26DA006CB06E /* apple1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3732BCD13AB006CB06E /* apple1.png */; };
  165 + B891A5742BCD26DA006CB06E /* apple2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3742BCD13AB006CB06E /* apple2.png */; };
  166 + B891A5752BCD26DA006CB06E /* baguette.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3752BCD13AB006CB06E /* baguette.png */; };
  167 + B891A5762BCD26DA006CB06E /* banana_splodge.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3762BCD13AB006CB06E /* banana_splodge.png */; };
  168 + B891A5772BCD26DA006CB06E /* banana1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3772BCD13AB006CB06E /* banana1.png */; };
  169 + B891A5782BCD26DA006CB06E /* banana2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3782BCD13AB006CB06E /* banana2.png */; };
  170 + B891A5792BCD26DA006CB06E /* cake_splodge.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3792BCD13AB006CB06E /* cake_splodge.png */; };
  171 + B891A57A2BCD26DA006CB06E /* cake1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A37A2BCD13AB006CB06E /* cake1.png */; };
  172 + B891A57B2BCD26DA006CB06E /* cake2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A37B2BCD13AB006CB06E /* cake2.png */; };
  173 + B891A57C2BCD26DA006CB06E /* chocolate_splodge.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A37C2BCD13AB006CB06E /* chocolate_splodge.png */; };
  174 + B891A57D2BCD26DA006CB06E /* chocolate1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A37D2BCD13AB006CB06E /* chocolate1.png */; };
  175 + B891A57E2BCD26DA006CB06E /* chocolate2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A37E2BCD13AB006CB06E /* chocolate2.png */; };
  176 + B891A57F2BCD26DA006CB06E /* cucumber_splodge.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A37F2BCD13AB006CB06E /* cucumber_splodge.png */; };
  177 + B891A5802BCD26DA006CB06E /* cucumber1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3802BCD13AB006CB06E /* cucumber1.png */; };
  178 + B891A5812BCD26DA006CB06E /* cucumber2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3812BCD13AB006CB06E /* cucumber2.png */; };
  179 + B891A5822BCD26DA006CB06E /* donut_splodge.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3822BCD13AB006CB06E /* donut_splodge.png */; };
  180 + B891A5832BCD26DA006CB06E /* donut1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3832BCD13AB006CB06E /* donut1.png */; };
  181 + B891A5842BCD26DA006CB06E /* donut2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3842BCD13AB006CB06E /* donut2.png */; };
  182 + B891A5852BCD26DA006CB06E /* icecream_splodge.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3852BCD13AB006CB06E /* icecream_splodge.png */; };
  183 + B891A5862BCD26DA006CB06E /* icecream1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3862BCD13AB006CB06E /* icecream1.png */; };
  184 + B891A5872BCD26DA006CB06E /* icecream2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3872BCD13AB006CB06E /* icecream2.png */; };
  185 + B891A5882BCD26DA006CB06E /* lettuce.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3882BCD13AB006CB06E /* lettuce.png */; };
  186 + B891A5892BCD26DA006CB06E /* milk.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3892BCD13AB006CB06E /* milk.png */; };
  187 + B891A58A2BCD26DA006CB06E /* orange.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A38A2BCD13AB006CB06E /* orange.png */; };
  188 + B891A58B2BCD26DA006CB06E /* tomato_splodge.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A38B2BCD13AB006CB06E /* tomato_splodge.png */; };
  189 + B891A58C2BCD26DA006CB06E /* tomato1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A38C2BCD13AB006CB06E /* tomato1.png */; };
  190 + B891A58D2BCD26DA006CB06E /* tomato2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A38D2BCD13AB006CB06E /* tomato2.png */; };
  191 + B891A58E2BCD26F9006CB06E /* accept_button.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3A12BCD13AB006CB06E /* accept_button.png */; };
  192 + B891A58F2BCD26F9006CB06E /* accept_popup.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3A22BCD13AB006CB06E /* accept_popup.png */; };
  193 + B891A5902BCD271D006CB06E /* app_link_halloween.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3AA2BCD13AB006CB06E /* app_link_halloween.png */; };
  194 + B891A5912BCD271D006CB06E /* app_link_toy.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3AB2BCD13AB006CB06E /* app_link_toy.png */; };
  195 + B891A5922BCD271D006CB06E /* doll_toy_app.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3AC2BCD13AB006CB06E /* doll_toy_app.png */; };
  196 + B891A5932BCD271D006CB06E /* halo_icon.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3AD2BCD13AB006CB06E /* halo_icon.png */; };
  197 + B891A5942BCD271D006CB06E /* steve_maggie.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3AE2BCD13AB006CB06E /* steve_maggie.png */; };
  198 + B891A5952BCD271D006CB06E /* witch_halloween_app.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3AF2BCD13AB006CB06E /* witch_halloween_app.png */; };
  199 + B891A5962BCD2734006CB06E /* horizontalButtonPanelBackFFPause.obl in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3C22BCD13AB006CB06E /* horizontalButtonPanelBackFFPause.obl */; };
  200 + B891A5972BCD274C006CB06E /* button_back.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3B12BCD13AB006CB06E /* button_back.png */; };
  201 + B891A5982BCD274C006CB06E /* button_go.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3B22BCD13AB006CB06E /* button_go.png */; };
  202 + B891A5992BCD274C006CB06E /* button_green.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3B32BCD13AB006CB06E /* button_green.png */; };
  203 + B891A59A2BCD274C006CB06E /* button_grey.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3B42BCD13AB006CB06E /* button_grey.png */; };
  204 + B891A59B2BCD274C006CB06E /* button_orange.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3B52BCD13AB006CB06E /* button_orange.png */; };
  205 + B891A59C2BCD274C006CB06E /* button_pause.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3B62BCD13AB006CB06E /* button_pause.png */; };
  206 + B891A59D2BCD274C006CB06E /* button_purple.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3B72BCD13AB006CB06E /* button_purple.png */; };
  207 + B891A59E2BCD274C006CB06E /* button_red.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3B82BCD13AB006CB06E /* button_red.png */; };
  208 + B891A59F2BCD274C006CB06E /* button_repeat.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3B92BCD13AB006CB06E /* button_repeat.png */; };
  209 + B891A5A02BCD274C006CB06E /* button_setting.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3BA2BCD13AB006CB06E /* button_setting.png */; };
  210 + B891A5A12BCD274C006CB06E /* button_sound_off.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3BB2BCD13AB006CB06E /* button_sound_off.png */; };
  211 + B891A5A22BCD274C006CB06E /* button_sound_on.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3BC2BCD13AB006CB06E /* button_sound_on.png */; };
  212 + B891A5A32BCD274C006CB06E /* button_turquoise.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3BD2BCD13AB006CB06E /* button_turquoise.png */; };
  213 + B891A5A42BCD274C006CB06E /* button_yellow.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3BE2BCD13AB006CB06E /* button_yellow.png */; };
  214 + B891A5A52BCD274C006CB06E /* buttonff.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3BF2BCD13AB006CB06E /* buttonff.png */; };
  215 + B891A5A62BCD274C006CB06E /* dark_green.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3C02BCD13AB006CB06E /* dark_green.png */; };
  216 + B891A5A72BCD2768006CB06E /* g_finger.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A4092BCD13AB006CB06E /* g_finger.png */; };
  217 + B891A5A82BCD2768006CB06E /* g_life_indicator_dead.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A40A2BCD13AB006CB06E /* g_life_indicator_dead.png */; };
  218 + B891A5A92BCD2768006CB06E /* g_life_indicator_ok.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A40B2BCD13AB006CB06E /* g_life_indicator_ok.png */; };
  219 + B891A5AA2BCD2768006CB06E /* level_halo.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A40C2BCD13AB006CB06E /* level_halo.png */; };
  220 + B891A5AB2BCD278E006CB06E /* level_1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3C42BCD13AB006CB06E /* level_1.png */; };
  221 + B891A5AC2BCD278E006CB06E /* level_2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3C52BCD13AB006CB06E /* level_2.png */; };
  222 + B891A5AD2BCD278E006CB06E /* level_3.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3C62BCD13AB006CB06E /* level_3.png */; };
  223 + B891A5AE2BCD27A7006CB06E /* scene_layout.scl in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A4042BCD13AB006CB06E /* scene_layout.scl */; };
  224 + B891A5AF2BCD27C5006CB06E /* background.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3F22BCD13AB006CB06E /* background.png */; };
  225 + B891A5B02BCD27C5006CB06E /* cart_back1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3F32BCD13AB006CB06E /* cart_back1.png */; };
  226 + B891A5B12BCD27C5006CB06E /* cart_back2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3F42BCD13AB006CB06E /* cart_back2.png */; };
  227 + B891A5B22BCD27C5006CB06E /* cart_front.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3F52BCD13AB006CB06E /* cart_front.png */; };
  228 + B891A5B32BCD27C5006CB06E /* clock.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3F62BCD13AB006CB06E /* clock.png */; };
  229 + B891A5B42BCD27C5006CB06E /* food_in_cart.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3F72BCD13AB006CB06E /* food_in_cart.png */; };
  230 + B891A5B52BCD27C5006CB06E /* gum.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3F82BCD13AB006CB06E /* gum.png */; };
  231 + B891A5B62BCD27C5006CB06E /* hand_leather.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3F92BCD13AB006CB06E /* hand_leather.png */; };
  232 + B891A5B72BCD27C5006CB06E /* hand_sling.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3FA2BCD13AB006CB06E /* hand_sling.png */; };
  233 + B891A5B82BCD27C5006CB06E /* sling.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3FB2BCD13AB006CB06E /* sling.png */; };
  234 + B891A5B92BCD27C5006CB06E /* steve_head1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3FC2BCD13AB006CB06E /* steve_head1.png */; };
  235 + B891A5BA2BCD27C5006CB06E /* steve_head2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3FD2BCD13AB006CB06E /* steve_head2.png */; };
  236 + B891A5BB2BCD27C5006CB06E /* steve_head3.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3FE2BCD13AB006CB06E /* steve_head3.png */; };
  237 + B891A5BC2BCD27C5006CB06E /* steve_head4.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3FF2BCD13AB006CB06E /* steve_head4.png */; };
  238 + B891A5BD2BCD27C5006CB06E /* steve_head5.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A4002BCD13AB006CB06E /* steve_head5.png */; };
  239 + B891A5BE2BCD27C5006CB06E /* well_done_pic.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A4012BCD13AB006CB06E /* well_done_pic.png */; };
  240 + B891A5BF2BCD27C5006CB06E /* wooden_shelf.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A4022BCD13AB006CB06E /* wooden_shelf.png */; };
  241 + B891A5C42BCD27FC006CB06E /* apples.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3C82BCD13AB006CB06E /* apples.png */; };
  242 + B891A5C52BCD27FC006CB06E /* baguettes.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3C92BCD13AB006CB06E /* baguettes.png */; };
  243 + B891A5C62BCD27FC006CB06E /* bananas.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3CA2BCD13AB006CB06E /* bananas.png */; };
  244 + B891A5C72BCD27FC006CB06E /* cakes.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3CB2BCD13AB006CB06E /* cakes.png */; };
  245 + B891A5C82BCD27FC006CB06E /* chocolate.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3CC2BCD13AB006CB06E /* chocolate.png */; };
  246 + B891A5C92BCD27FC006CB06E /* cucumbers.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3CD2BCD13AB006CB06E /* cucumbers.png */; };
  247 + B891A5CA2BCD27FC006CB06E /* donuts.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3CE2BCD13AB006CB06E /* donuts.png */; };
  248 + B891A5CB2BCD27FC006CB06E /* icecream.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3CF2BCD13AB006CB06E /* icecream.png */; };
  249 + B891A5CC2BCD27FC006CB06E /* lettuce.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3D02BCD13AB006CB06E /* lettuce.png */; };
  250 + B891A5CD2BCD27FC006CB06E /* milk.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3D12BCD13AB006CB06E /* milk.png */; };
  251 + B891A5CE2BCD27FC006CB06E /* orange.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3D22BCD13AB006CB06E /* orange.png */; };
  252 + B891A5CF2BCD27FC006CB06E /* tomatoes.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3D32BCD13AB006CB06E /* tomatoes.png */; };
  253 + B891A5D02BCD286F006CB06E /* apple_splodge.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3D52BCD13AB006CB06E /* apple_splodge.png */; };
  254 + B891A5D12BCD286F006CB06E /* apple1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3D62BCD13AB006CB06E /* apple1.png */; };
  255 + B891A5D22BCD286F006CB06E /* apple2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3D72BCD13AB006CB06E /* apple2.png */; };
  256 + B891A5D32BCD286F006CB06E /* baguette.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3D82BCD13AB006CB06E /* baguette.png */; };
  257 + B891A5D42BCD286F006CB06E /* banana_splodge.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3D92BCD13AB006CB06E /* banana_splodge.png */; };
  258 + B891A5D52BCD286F006CB06E /* banana1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3DA2BCD13AB006CB06E /* banana1.png */; };
  259 + B891A5D62BCD286F006CB06E /* banana2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3DB2BCD13AB006CB06E /* banana2.png */; };
  260 + B891A5D72BCD286F006CB06E /* cake_splodge.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3DC2BCD13AB006CB06E /* cake_splodge.png */; };
  261 + B891A5D82BCD286F006CB06E /* cake1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3DD2BCD13AB006CB06E /* cake1.png */; };
  262 + B891A5D92BCD286F006CB06E /* cake2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3DE2BCD13AB006CB06E /* cake2.png */; };
  263 + B891A5DA2BCD2870006CB06E /* chocolate_splodge.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3DF2BCD13AB006CB06E /* chocolate_splodge.png */; };
  264 + B891A5DB2BCD2870006CB06E /* chocolate1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3E02BCD13AB006CB06E /* chocolate1.png */; };
  265 + B891A5DC2BCD2870006CB06E /* chocolate2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3E12BCD13AB006CB06E /* chocolate2.png */; };
  266 + B891A5DD2BCD2870006CB06E /* cucumber_splodge.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3E22BCD13AB006CB06E /* cucumber_splodge.png */; };
  267 + B891A5DE2BCD2870006CB06E /* cucumber1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3E32BCD13AB006CB06E /* cucumber1.png */; };
  268 + B891A5DF2BCD2870006CB06E /* cucumber2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3E42BCD13AB006CB06E /* cucumber2.png */; };
  269 + B891A5E02BCD2870006CB06E /* donut_splodge.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3E52BCD13AB006CB06E /* donut_splodge.png */; };
  270 + B891A5E12BCD2870006CB06E /* donut1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3E62BCD13AB006CB06E /* donut1.png */; };
  271 + B891A5E22BCD2870006CB06E /* donut2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3E72BCD13AB006CB06E /* donut2.png */; };
  272 + B891A5E32BCD2870006CB06E /* icecream_splodge.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3E82BCD13AB006CB06E /* icecream_splodge.png */; };
  273 + B891A5E42BCD2870006CB06E /* icecream1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3E92BCD13AB006CB06E /* icecream1.png */; };
  274 + B891A5E52BCD2870006CB06E /* icecream2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3EA2BCD13AB006CB06E /* icecream2.png */; };
  275 + B891A5E62BCD2870006CB06E /* lettuce.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3EB2BCD13AB006CB06E /* lettuce.png */; };
  276 + B891A5E72BCD2870006CB06E /* milk.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3EC2BCD13AB006CB06E /* milk.png */; };
  277 + B891A5E82BCD2870006CB06E /* orange.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3ED2BCD13AB006CB06E /* orange.png */; };
  278 + B891A5E92BCD2870006CB06E /* tomato_splodge.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3EE2BCD13AB006CB06E /* tomato_splodge.png */; };
  279 + B891A5EA2BCD2870006CB06E /* tomato1.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3EF2BCD13AB006CB06E /* tomato1.png */; };
  280 + B891A5EB2BCD2870006CB06E /* tomato2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A3F02BCD13AB006CB06E /* tomato2.png */; };
  281 + B891A5EC2BCD2881006CB06E /* accept_button.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A4062BCD13AB006CB06E /* accept_button.png */; };
  282 + B891A5ED2BCD2881006CB06E /* accept_popup.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = B891A4072BCD13AB006CB06E /* accept_popup.png */; };
20 283 F5FCE34FB9E028C20A7850DE /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A3DBEAB6142776646A34D9C /* Pods_RunnerTests.framework */; };
21 284 FB8AFCB0A8C34B5508A68F45 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6DEBBC1D861BE053F3ECE0B9 /* Pods_Runner.framework */; };
22 285 /* End PBXBuildFile section */
... ... @@ -113,6 +376,90 @@
113 376 remoteGlobalIDString = B7090455528040A188F88B63;
114 377 remoteInfo = external;
115 378 };
  379 + B891A2372BCD0799006CB06E /* PBXContainerItemProxy */ = {
  380 + isa = PBXContainerItemProxy;
  381 + containerPortal = B852D3ED2BCADF3600A53FC4 /* cocos2d_libs.xcodeproj */;
  382 + proxyType = 1;
  383 + remoteGlobalIDString = 3807F551AD064687B13953E9;
  384 + remoteInfo = cocos2d;
  385 + };
  386 + B891A2472BCD07A0006CB06E /* PBXContainerItemProxy */ = {
  387 + isa = PBXContainerItemProxy;
  388 + containerPortal = B852D3ED2BCADF3600A53FC4 /* cocos2d_libs.xcodeproj */;
  389 + proxyType = 1;
  390 + remoteGlobalIDString = 93D47B87033C4D7FAE278F63;
  391 + remoteInfo = ext_clipper;
  392 + };
  393 + B891A2492BCD07A4006CB06E /* PBXContainerItemProxy */ = {
  394 + isa = PBXContainerItemProxy;
  395 + containerPortal = B852D3ED2BCADF3600A53FC4 /* cocos2d_libs.xcodeproj */;
  396 + proxyType = 1;
  397 + remoteGlobalIDString = 9B5B61961265480B9501BB85;
  398 + remoteInfo = ext_convertUTF;
  399 + };
  400 + B891A24B2BCD07AE006CB06E /* PBXContainerItemProxy */ = {
  401 + isa = PBXContainerItemProxy;
  402 + containerPortal = B852D3ED2BCADF3600A53FC4 /* cocos2d_libs.xcodeproj */;
  403 + proxyType = 1;
  404 + remoteGlobalIDString = 640C23AC632B46BCB77CCD82;
  405 + remoteInfo = ext_edtaa3func;
  406 + };
  407 + B891A24D2BCD07AE006CB06E /* PBXContainerItemProxy */ = {
  408 + isa = PBXContainerItemProxy;
  409 + containerPortal = B852D3ED2BCADF3600A53FC4 /* cocos2d_libs.xcodeproj */;
  410 + proxyType = 1;
  411 + remoteGlobalIDString = 618D32556072465F93DE7875;
  412 + remoteInfo = ext_md5;
  413 + };
  414 + B891A24F2BCD07AE006CB06E /* PBXContainerItemProxy */ = {
  415 + isa = PBXContainerItemProxy;
  416 + containerPortal = B852D3ED2BCADF3600A53FC4 /* cocos2d_libs.xcodeproj */;
  417 + proxyType = 1;
  418 + remoteGlobalIDString = 8C44DCE97EE54C668F009408;
  419 + remoteInfo = ext_poly2tri;
  420 + };
  421 + B891A2512BCD07AE006CB06E /* PBXContainerItemProxy */ = {
  422 + isa = PBXContainerItemProxy;
  423 + containerPortal = B852D3ED2BCADF3600A53FC4 /* cocos2d_libs.xcodeproj */;
  424 + proxyType = 1;
  425 + remoteGlobalIDString = 0CD8E5254AFF4CC6A098CCCD;
  426 + remoteInfo = ext_recast;
  427 + };
  428 + B891A2532BCD07AE006CB06E /* PBXContainerItemProxy */ = {
  429 + isa = PBXContainerItemProxy;
  430 + containerPortal = B852D3ED2BCADF3600A53FC4 /* cocos2d_libs.xcodeproj */;
  431 + proxyType = 1;
  432 + remoteGlobalIDString = 7D4C0E93B1B6458FB6F41437;
  433 + remoteInfo = ext_tinyxml2;
  434 + };
  435 + B891A2552BCD07AE006CB06E /* PBXContainerItemProxy */ = {
  436 + isa = PBXContainerItemProxy;
  437 + containerPortal = B852D3ED2BCADF3600A53FC4 /* cocos2d_libs.xcodeproj */;
  438 + proxyType = 1;
  439 + remoteGlobalIDString = 14848C4B886C463A8DDC1934;
  440 + remoteInfo = ext_unzip;
  441 + };
  442 + B891A2572BCD07AE006CB06E /* PBXContainerItemProxy */ = {
  443 + isa = PBXContainerItemProxy;
  444 + containerPortal = B852D3ED2BCADF3600A53FC4 /* cocos2d_libs.xcodeproj */;
  445 + proxyType = 1;
  446 + remoteGlobalIDString = 660C78B688AA476E92DA3337;
  447 + remoteInfo = ext_xxhash;
  448 + };
  449 + B891A2592BCD07AE006CB06E /* PBXContainerItemProxy */ = {
  450 + isa = PBXContainerItemProxy;
  451 + containerPortal = B852D3ED2BCADF3600A53FC4 /* cocos2d_libs.xcodeproj */;
  452 + proxyType = 1;
  453 + remoteGlobalIDString = F4506C5795E24DF09078A7A5;
  454 + remoteInfo = ext_xxtea;
  455 + };
  456 + B891A25B2BCD07AE006CB06E /* PBXContainerItemProxy */ = {
  457 + isa = PBXContainerItemProxy;
  458 + containerPortal = B852D3ED2BCADF3600A53FC4 /* cocos2d_libs.xcodeproj */;
  459 + proxyType = 1;
  460 + remoteGlobalIDString = 3035DDACD99D43368F5F0015;
  461 + remoteInfo = external;
  462 + };
116 463 /* End PBXContainerItemProxy section */
117 464  
118 465 /* Begin PBXCopyFilesBuildPhase section */
... ... @@ -123,152 +470,1652 @@
123 470 dstSubfolderSpec = 10;
124 471 files = (
125 472 );
126   - name = "Embed Frameworks";
127   - runOnlyForDeploymentPostprocessing = 0;
  473 + name = "Embed Frameworks";
  474 + runOnlyForDeploymentPostprocessing = 0;
  475 + };
  476 + B891A4F12BCD17E2006CB06E /* CopyFiles */ = {
  477 + isa = PBXCopyFilesBuildPhase;
  478 + buildActionMask = 2147483647;
  479 + dstPath = "";
  480 + dstSubfolderSpec = 7;
  481 + files = (
  482 + );
  483 + runOnlyForDeploymentPostprocessing = 0;
  484 + };
  485 + B891A4F22BCD240A006CB06E /* CopyFiles */ = {
  486 + isa = PBXCopyFilesBuildPhase;
  487 + buildActionMask = 2147483647;
  488 + dstPath = fonts;
  489 + dstSubfolderSpec = 7;
  490 + files = (
  491 + B891A4F92BCD2429006CB06E /* ComicSansMSBold.ttf in CopyFiles */,
  492 + B891A4FA2BCD2429006CB06E /* ComicSansMSRegular.ttf in CopyFiles */,
  493 + );
  494 + runOnlyForDeploymentPostprocessing = 0;
  495 + };
  496 + B891A4F32BCD240C006CB06E /* CopyFiles */ = {
  497 + isa = PBXCopyFilesBuildPhase;
  498 + buildActionMask = 2147483647;
  499 + dstPath = res;
  500 + dstSubfolderSpec = 7;
  501 + files = (
  502 + B891A4FB2BCD2449006CB06E /* .gitkeep in CopyFiles */,
  503 + );
  504 + runOnlyForDeploymentPostprocessing = 0;
  505 + };
  506 + B891A4F42BCD240D006CB06E /* CopyFiles */ = {
  507 + isa = PBXCopyFilesBuildPhase;
  508 + buildActionMask = 2147483647;
  509 + dstPath = res/common;
  510 + dstSubfolderSpec = 7;
  511 + files = (
  512 + );
  513 + runOnlyForDeploymentPostprocessing = 0;
  514 + };
  515 + B891A4F52BCD240E006CB06E /* CopyFiles */ = {
  516 + isa = PBXCopyFilesBuildPhase;
  517 + buildActionMask = 2147483647;
  518 + dstPath = res/common/games;
  519 + dstSubfolderSpec = 7;
  520 + files = (
  521 + );
  522 + runOnlyForDeploymentPostprocessing = 0;
  523 + };
  524 + B891A4F62BCD240F006CB06E /* CopyFiles */ = {
  525 + isa = PBXCopyFilesBuildPhase;
  526 + buildActionMask = 2147483647;
  527 + dstPath = res/common/games/shoot_game;
  528 + dstSubfolderSpec = 7;
  529 + files = (
  530 + B891A4FC2BCD2488006CB06E /* gconfig.gcf in CopyFiles */,
  531 + );
  532 + runOnlyForDeploymentPostprocessing = 0;
  533 + };
  534 + B891A4F72BCD2410006CB06E /* CopyFiles */ = {
  535 + isa = PBXCopyFilesBuildPhase;
  536 + buildActionMask = 2147483647;
  537 + dstPath = res/common/sounds;
  538 + dstSubfolderSpec = 7;
  539 + files = (
  540 + );
  541 + runOnlyForDeploymentPostprocessing = 0;
  542 + };
  543 + B891A4F82BCD2411006CB06E /* CopyFiles */ = {
  544 + isa = PBXCopyFilesBuildPhase;
  545 + buildActionMask = 2147483647;
  546 + dstPath = res/common/sounds/games;
  547 + dstSubfolderSpec = 7;
  548 + files = (
  549 + B891A4FD2BCD24CA006CB06E /* g_no.mp3 in CopyFiles */,
  550 + B891A4FE2BCD24CA006CB06E /* g_oops.mp3 in CopyFiles */,
  551 + B891A4FF2BCD24CA006CB06E /* g_uh_oh.mp3 in CopyFiles */,
  552 + B891A5002BCD24CA006CB06E /* g_well_done.mp3 in CopyFiles */,
  553 + B891A5012BCD24CA006CB06E /* g_whoo_hoo.mp3 in CopyFiles */,
  554 + B891A5022BCD24CA006CB06E /* g_yeah.mp3 in CopyFiles */,
  555 + B891A5032BCD24CA006CB06E /* maggie_super.mp3 in CopyFiles */,
  556 + B891A5042BCD24CA006CB06E /* maggie_thats_right.mp3 in CopyFiles */,
  557 + B891A5052BCD24CA006CB06E /* maggie_yeah.mp3 in CopyFiles */,
  558 + );
  559 + runOnlyForDeploymentPostprocessing = 0;
  560 + };
  561 + B891A5062BCD24CE006CB06E /* CopyFiles */ = {
  562 + isa = PBXCopyFilesBuildPhase;
  563 + buildActionMask = 2147483647;
  564 + dstPath = res/common/sounds/games/game_shoot;
  565 + dstSubfolderSpec = 7;
  566 + files = (
  567 + B891A50F2BCD2524006CB06E /* all_in_trolley.mp3 in CopyFiles */,
  568 + B891A5102BCD2524006CB06E /* apple.mp3 in CopyFiles */,
  569 + B891A5112BCD2524006CB06E /* banana.mp3 in CopyFiles */,
  570 + B891A5122BCD2524006CB06E /* cake.mp3 in CopyFiles */,
  571 + B891A5132BCD2524006CB06E /* chocolate.mp3 in CopyFiles */,
  572 + B891A5142BCD2524006CB06E /* cucumber.mp3 in CopyFiles */,
  573 + B891A5152BCD2524006CB06E /* donut.mp3 in CopyFiles */,
  574 + B891A5162BCD2524006CB06E /* effect_catapult.mp3 in CopyFiles */,
  575 + B891A5172BCD2524006CB06E /* effect_hit.mp3 in CopyFiles */,
  576 + B891A5182BCD2524006CB06E /* effect_in_trolley.mp3 in CopyFiles */,
  577 + B891A5192BCD2524006CB06E /* hit_maggie.mp3 in CopyFiles */,
  578 + B891A51A2BCD2524006CB06E /* hit_steve.mp3 in CopyFiles */,
  579 + B891A51B2BCD2524006CB06E /* icecream.mp3 in CopyFiles */,
  580 + B891A51C2BCD2524006CB06E /* in_trolley.mp3 in CopyFiles */,
  581 + B891A51D2BCD2524006CB06E /* not_apple.mp3 in CopyFiles */,
  582 + B891A51E2BCD2524006CB06E /* not_banana.mp3 in CopyFiles */,
  583 + B891A51F2BCD2524006CB06E /* not_cake.mp3 in CopyFiles */,
  584 + B891A5202BCD2524006CB06E /* not_chocolate.mp3 in CopyFiles */,
  585 + B891A5212BCD2524006CB06E /* not_cucumber.mp3 in CopyFiles */,
  586 + B891A5222BCD2524006CB06E /* not_donut.mp3 in CopyFiles */,
  587 + B891A5232BCD2524006CB06E /* not_icecream.mp3 in CopyFiles */,
  588 + B891A5242BCD2524006CB06E /* not_in_trolley.mp3 in CopyFiles */,
  589 + B891A5252BCD2524006CB06E /* not_tomato.mp3 in CopyFiles */,
  590 + B891A5262BCD2524006CB06E /* put_it_trolley.mp3 in CopyFiles */,
  591 + B891A5272BCD2524006CB06E /* shop_closed.mp3 in CopyFiles */,
  592 + B891A5282BCD2524006CB06E /* start.mp3 in CopyFiles */,
  593 + B891A5292BCD2524006CB06E /* tomato.mp3 in CopyFiles */,
  594 + B891A52A2BCD2524006CB06E /* wrong_3_times.mp3 in CopyFiles */,
  595 + );
  596 + runOnlyForDeploymentPostprocessing = 0;
  597 + };
  598 + B891A5072BCD24DF006CB06E /* CopyFiles */ = {
  599 + isa = PBXCopyFilesBuildPhase;
  600 + buildActionMask = 2147483647;
  601 + dstPath = res/common/sounds/level_picking;
  602 + dstSubfolderSpec = 7;
  603 + files = (
  604 + B891A52B2BCD2547006CB06E /* g_pick_level.mp3 in CopyFiles */,
  605 + );
  606 + runOnlyForDeploymentPostprocessing = 0;
  607 + };
  608 + B891A5082BCD24E0006CB06E /* CopyFiles */ = {
  609 + isa = PBXCopyFilesBuildPhase;
  610 + buildActionMask = 2147483647;
  611 + dstPath = res/small;
  612 + dstSubfolderSpec = 7;
  613 + files = (
  614 + );
  615 + runOnlyForDeploymentPostprocessing = 0;
  616 + };
  617 + B891A5092BCD24E1006CB06E /* CopyFiles */ = {
  618 + isa = PBXCopyFilesBuildPhase;
  619 + buildActionMask = 2147483647;
  620 + dstPath = res/small/app_links;
  621 + dstSubfolderSpec = 7;
  622 + files = (
  623 + B891A52C2BCD2576006CB06E /* app_link_halloween.png in CopyFiles */,
  624 + B891A52D2BCD2576006CB06E /* app_link_toy.png in CopyFiles */,
  625 + B891A52E2BCD2576006CB06E /* doll_toy_app.png in CopyFiles */,
  626 + B891A52F2BCD2576006CB06E /* halo_icon.png in CopyFiles */,
  627 + B891A5302BCD2576006CB06E /* steve_maggie.png in CopyFiles */,
  628 + B891A5312BCD2576006CB06E /* witch_halloween_app.png in CopyFiles */,
  629 + );
  630 + runOnlyForDeploymentPostprocessing = 0;
  631 + };
  632 + B891A50A2BCD24E2006CB06E /* CopyFiles */ = {
  633 + isa = PBXCopyFilesBuildPhase;
  634 + buildActionMask = 2147483647;
  635 + dstPath = res/small/buttons;
  636 + dstSubfolderSpec = 7;
  637 + files = (
  638 + B891A5322BCD259B006CB06E /* horizontalButtonPanelBackFFPause.obl in CopyFiles */,
  639 + );
  640 + runOnlyForDeploymentPostprocessing = 0;
  641 + };
  642 + B891A50B2BCD24E3006CB06E /* CopyFiles */ = {
  643 + isa = PBXCopyFilesBuildPhase;
  644 + buildActionMask = 2147483647;
  645 + dstPath = res/small/buttons/graphics;
  646 + dstSubfolderSpec = 7;
  647 + files = (
  648 + B891A5332BCD25B4006CB06E /* button_back.png in CopyFiles */,
  649 + B891A5342BCD25B4006CB06E /* button_go.png in CopyFiles */,
  650 + B891A5352BCD25B4006CB06E /* button_green.png in CopyFiles */,
  651 + B891A5362BCD25B4006CB06E /* button_grey.png in CopyFiles */,
  652 + B891A5372BCD25B4006CB06E /* button_orange.png in CopyFiles */,
  653 + B891A5382BCD25B4006CB06E /* button_pause.png in CopyFiles */,
  654 + B891A5392BCD25B4006CB06E /* button_purple.png in CopyFiles */,
  655 + B891A53A2BCD25B4006CB06E /* button_red.png in CopyFiles */,
  656 + B891A53B2BCD25B4006CB06E /* button_repeat.png in CopyFiles */,
  657 + B891A53C2BCD25B4006CB06E /* button_setting.png in CopyFiles */,
  658 + B891A53D2BCD25B4006CB06E /* button_sound_off.png in CopyFiles */,
  659 + B891A53E2BCD25B4006CB06E /* button_sound_on.png in CopyFiles */,
  660 + B891A53F2BCD25B4006CB06E /* button_turquoise.png in CopyFiles */,
  661 + B891A5402BCD25B4006CB06E /* button_yellow.png in CopyFiles */,
  662 + B891A5412BCD25B4006CB06E /* buttonff.png in CopyFiles */,
  663 + B891A5422BCD25B4006CB06E /* dark_green.png in CopyFiles */,
  664 + );
  665 + runOnlyForDeploymentPostprocessing = 0;
  666 + };
  667 + B891A50C2BCD24E4006CB06E /* CopyFiles */ = {
  668 + isa = PBXCopyFilesBuildPhase;
  669 + buildActionMask = 2147483647;
  670 + dstPath = res/small/graphics;
  671 + dstSubfolderSpec = 7;
  672 + files = (
  673 + B891A5432BCD25D4006CB06E /* g_finger.png in CopyFiles */,
  674 + B891A5442BCD25D4006CB06E /* g_life_indicator_dead.png in CopyFiles */,
  675 + B891A5452BCD25D4006CB06E /* g_life_indicator_ok.png in CopyFiles */,
  676 + B891A5462BCD25D4006CB06E /* level_halo.png in CopyFiles */,
  677 + );
  678 + runOnlyForDeploymentPostprocessing = 0;
  679 + };
  680 + B891A50D2BCD24E5006CB06E /* CopyFiles */ = {
  681 + isa = PBXCopyFilesBuildPhase;
  682 + buildActionMask = 2147483647;
  683 + dstPath = res/small/graphics/levels;
  684 + dstSubfolderSpec = 7;
  685 + files = (
  686 + B891A5472BCD25F0006CB06E /* level_1.png in CopyFiles */,
  687 + B891A5482BCD25F0006CB06E /* level_2.png in CopyFiles */,
  688 + B891A5492BCD25F0006CB06E /* level_3.png in CopyFiles */,
  689 + );
  690 + runOnlyForDeploymentPostprocessing = 0;
  691 + };
  692 + B891A50E2BCD24E6006CB06E /* CopyFiles */ = {
  693 + isa = PBXCopyFilesBuildPhase;
  694 + buildActionMask = 2147483647;
  695 + dstPath = res/small/graphics/shoot_game;
  696 + dstSubfolderSpec = 7;
  697 + files = (
  698 + B891A54A2BCD2615006CB06E /* scene_layout.scl in CopyFiles */,
  699 + );
  700 + runOnlyForDeploymentPostprocessing = 0;
  701 + };
  702 + B891A54B2BCD261A006CB06E /* CopyFiles */ = {
  703 + isa = PBXCopyFilesBuildPhase;
  704 + buildActionMask = 2147483647;
  705 + dstPath = res/small/graphics/shoot_game/graphics;
  706 + dstSubfolderSpec = 7;
  707 + files = (
  708 + B891A5572BCD266A006CB06E /* cart_back1.png in CopyFiles */,
  709 + B891A5582BCD266A006CB06E /* cart_back2.png in CopyFiles */,
  710 + B891A5592BCD266A006CB06E /* cart_front.png in CopyFiles */,
  711 + B891A55A2BCD266A006CB06E /* clock.png in CopyFiles */,
  712 + B891A55B2BCD266A006CB06E /* food_in_cart.png in CopyFiles */,
  713 + B891A55C2BCD266A006CB06E /* gum.png in CopyFiles */,
  714 + B891A55D2BCD266A006CB06E /* hand_leather.png in CopyFiles */,
  715 + B891A55E2BCD266A006CB06E /* hand_sling.png in CopyFiles */,
  716 + B891A55F2BCD266A006CB06E /* sling.png in CopyFiles */,
  717 + B891A5602BCD266A006CB06E /* steve_head1.png in CopyFiles */,
  718 + B891A5612BCD266A006CB06E /* steve_head2.png in CopyFiles */,
  719 + B891A5622BCD266A006CB06E /* steve_head3.png in CopyFiles */,
  720 + B891A5632BCD266A006CB06E /* steve_head4.png in CopyFiles */,
  721 + B891A5642BCD266A006CB06E /* steve_head5.png in CopyFiles */,
  722 + B891A5652BCD266A006CB06E /* wooden_shelf.png in CopyFiles */,
  723 + );
  724 + runOnlyForDeploymentPostprocessing = 0;
  725 + };
  726 + B891A54C2BCD261B006CB06E /* CopyFiles */ = {
  727 + isa = PBXCopyFilesBuildPhase;
  728 + buildActionMask = 2147483647;
  729 + dstPath = res/small/graphics/shoot_game/graphics/shelf_food;
  730 + dstSubfolderSpec = 7;
  731 + files = (
  732 + B891A5662BCD2694006CB06E /* apples.png in CopyFiles */,
  733 + B891A5672BCD2694006CB06E /* baguettes.png in CopyFiles */,
  734 + B891A5682BCD2694006CB06E /* bananas.png in CopyFiles */,
  735 + B891A5692BCD2694006CB06E /* cakes.png in CopyFiles */,
  736 + B891A56A2BCD2694006CB06E /* chocolate.png in CopyFiles */,
  737 + B891A56B2BCD2694006CB06E /* cucumbers.png in CopyFiles */,
  738 + B891A56C2BCD2694006CB06E /* donuts.png in CopyFiles */,
  739 + B891A56D2BCD2694006CB06E /* icecream.png in CopyFiles */,
  740 + B891A56E2BCD2695006CB06E /* lettuce.png in CopyFiles */,
  741 + B891A56F2BCD2695006CB06E /* milk.png in CopyFiles */,
  742 + B891A5702BCD2695006CB06E /* orange.png in CopyFiles */,
  743 + B891A5712BCD2695006CB06E /* tomatoes.png in CopyFiles */,
  744 + );
  745 + runOnlyForDeploymentPostprocessing = 0;
  746 + };
  747 + B891A54D2BCD261C006CB06E /* CopyFiles */ = {
  748 + isa = PBXCopyFilesBuildPhase;
  749 + buildActionMask = 2147483647;
  750 + dstPath = res/small/graphics/shoot_game/graphics/single_food;
  751 + dstSubfolderSpec = 7;
  752 + files = (
  753 + B891A5722BCD26DA006CB06E /* apple_splodge.png in CopyFiles */,
  754 + B891A5732BCD26DA006CB06E /* apple1.png in CopyFiles */,
  755 + B891A5742BCD26DA006CB06E /* apple2.png in CopyFiles */,
  756 + B891A5752BCD26DA006CB06E /* baguette.png in CopyFiles */,
  757 + B891A5762BCD26DA006CB06E /* banana_splodge.png in CopyFiles */,
  758 + B891A5772BCD26DA006CB06E /* banana1.png in CopyFiles */,
  759 + B891A5782BCD26DA006CB06E /* banana2.png in CopyFiles */,
  760 + B891A5792BCD26DA006CB06E /* cake_splodge.png in CopyFiles */,
  761 + B891A57A2BCD26DA006CB06E /* cake1.png in CopyFiles */,
  762 + B891A57B2BCD26DA006CB06E /* cake2.png in CopyFiles */,
  763 + B891A57C2BCD26DA006CB06E /* chocolate_splodge.png in CopyFiles */,
  764 + B891A57D2BCD26DA006CB06E /* chocolate1.png in CopyFiles */,
  765 + B891A57E2BCD26DA006CB06E /* chocolate2.png in CopyFiles */,
  766 + B891A57F2BCD26DA006CB06E /* cucumber_splodge.png in CopyFiles */,
  767 + B891A5802BCD26DA006CB06E /* cucumber1.png in CopyFiles */,
  768 + B891A5812BCD26DA006CB06E /* cucumber2.png in CopyFiles */,
  769 + B891A5822BCD26DA006CB06E /* donut_splodge.png in CopyFiles */,
  770 + B891A5832BCD26DA006CB06E /* donut1.png in CopyFiles */,
  771 + B891A5842BCD26DA006CB06E /* donut2.png in CopyFiles */,
  772 + B891A5852BCD26DA006CB06E /* icecream_splodge.png in CopyFiles */,
  773 + B891A5862BCD26DA006CB06E /* icecream1.png in CopyFiles */,
  774 + B891A5872BCD26DA006CB06E /* icecream2.png in CopyFiles */,
  775 + B891A5882BCD26DA006CB06E /* lettuce.png in CopyFiles */,
  776 + B891A5892BCD26DA006CB06E /* milk.png in CopyFiles */,
  777 + B891A58A2BCD26DA006CB06E /* orange.png in CopyFiles */,
  778 + B891A58B2BCD26DA006CB06E /* tomato_splodge.png in CopyFiles */,
  779 + B891A58C2BCD26DA006CB06E /* tomato1.png in CopyFiles */,
  780 + B891A58D2BCD26DA006CB06E /* tomato2.png in CopyFiles */,
  781 + );
  782 + runOnlyForDeploymentPostprocessing = 0;
  783 + };
  784 + B891A54E2BCD261D006CB06E /* CopyFiles */ = {
  785 + isa = PBXCopyFilesBuildPhase;
  786 + buildActionMask = 2147483647;
  787 + dstPath = res/small/graphics/tos_popup;
  788 + dstSubfolderSpec = 7;
  789 + files = (
  790 + B891A58E2BCD26F9006CB06E /* accept_button.png in CopyFiles */,
  791 + B891A58F2BCD26F9006CB06E /* accept_popup.png in CopyFiles */,
  792 + );
  793 + runOnlyForDeploymentPostprocessing = 0;
  794 + };
  795 + B891A54F2BCD261E006CB06E /* CopyFiles */ = {
  796 + isa = PBXCopyFilesBuildPhase;
  797 + buildActionMask = 2147483647;
  798 + dstPath = res/xlarge;
  799 + dstSubfolderSpec = 7;
  800 + files = (
  801 + );
  802 + runOnlyForDeploymentPostprocessing = 0;
  803 + };
  804 + B891A5502BCD261F006CB06E /* CopyFiles */ = {
  805 + isa = PBXCopyFilesBuildPhase;
  806 + buildActionMask = 2147483647;
  807 + dstPath = res/xlarge/app_links;
  808 + dstSubfolderSpec = 7;
  809 + files = (
  810 + B891A5902BCD271D006CB06E /* app_link_halloween.png in CopyFiles */,
  811 + B891A5912BCD271D006CB06E /* app_link_toy.png in CopyFiles */,
  812 + B891A5922BCD271D006CB06E /* doll_toy_app.png in CopyFiles */,
  813 + B891A5932BCD271D006CB06E /* halo_icon.png in CopyFiles */,
  814 + B891A5942BCD271D006CB06E /* steve_maggie.png in CopyFiles */,
  815 + B891A5952BCD271D006CB06E /* witch_halloween_app.png in CopyFiles */,
  816 + );
  817 + runOnlyForDeploymentPostprocessing = 0;
  818 + };
  819 + B891A5512BCD2620006CB06E /* CopyFiles */ = {
  820 + isa = PBXCopyFilesBuildPhase;
  821 + buildActionMask = 2147483647;
  822 + dstPath = res/xlarge/buttons;
  823 + dstSubfolderSpec = 7;
  824 + files = (
  825 + B891A5962BCD2734006CB06E /* horizontalButtonPanelBackFFPause.obl in CopyFiles */,
  826 + );
  827 + runOnlyForDeploymentPostprocessing = 0;
  828 + };
  829 + B891A5522BCD2621006CB06E /* CopyFiles */ = {
  830 + isa = PBXCopyFilesBuildPhase;
  831 + buildActionMask = 2147483647;
  832 + dstPath = res/xlarge/buttons/graphics;
  833 + dstSubfolderSpec = 7;
  834 + files = (
  835 + B891A5972BCD274C006CB06E /* button_back.png in CopyFiles */,
  836 + B891A5982BCD274C006CB06E /* button_go.png in CopyFiles */,
  837 + B891A5992BCD274C006CB06E /* button_green.png in CopyFiles */,
  838 + B891A59A2BCD274C006CB06E /* button_grey.png in CopyFiles */,
  839 + B891A59B2BCD274C006CB06E /* button_orange.png in CopyFiles */,
  840 + B891A59C2BCD274C006CB06E /* button_pause.png in CopyFiles */,
  841 + B891A59D2BCD274C006CB06E /* button_purple.png in CopyFiles */,
  842 + B891A59E2BCD274C006CB06E /* button_red.png in CopyFiles */,
  843 + B891A59F2BCD274C006CB06E /* button_repeat.png in CopyFiles */,
  844 + B891A5A02BCD274C006CB06E /* button_setting.png in CopyFiles */,
  845 + B891A5A12BCD274C006CB06E /* button_sound_off.png in CopyFiles */,
  846 + B891A5A22BCD274C006CB06E /* button_sound_on.png in CopyFiles */,
  847 + B891A5A32BCD274C006CB06E /* button_turquoise.png in CopyFiles */,
  848 + B891A5A42BCD274C006CB06E /* button_yellow.png in CopyFiles */,
  849 + B891A5A52BCD274C006CB06E /* buttonff.png in CopyFiles */,
  850 + B891A5A62BCD274C006CB06E /* dark_green.png in CopyFiles */,
  851 + );
  852 + runOnlyForDeploymentPostprocessing = 0;
  853 + };
  854 + B891A5532BCD2622006CB06E /* CopyFiles */ = {
  855 + isa = PBXCopyFilesBuildPhase;
  856 + buildActionMask = 2147483647;
  857 + dstPath = res/xlarge/graphics;
  858 + dstSubfolderSpec = 7;
  859 + files = (
  860 + B891A5A72BCD2768006CB06E /* g_finger.png in CopyFiles */,
  861 + B891A5A82BCD2768006CB06E /* g_life_indicator_dead.png in CopyFiles */,
  862 + B891A5A92BCD2768006CB06E /* g_life_indicator_ok.png in CopyFiles */,
  863 + B891A5AA2BCD2768006CB06E /* level_halo.png in CopyFiles */,
  864 + );
  865 + runOnlyForDeploymentPostprocessing = 0;
  866 + };
  867 + B891A5542BCD2623006CB06E /* CopyFiles */ = {
  868 + isa = PBXCopyFilesBuildPhase;
  869 + buildActionMask = 2147483647;
  870 + dstPath = res/xlarge/graphics/levels;
  871 + dstSubfolderSpec = 7;
  872 + files = (
  873 + B891A5AB2BCD278E006CB06E /* level_1.png in CopyFiles */,
  874 + B891A5AC2BCD278E006CB06E /* level_2.png in CopyFiles */,
  875 + B891A5AD2BCD278E006CB06E /* level_3.png in CopyFiles */,
  876 + );
  877 + runOnlyForDeploymentPostprocessing = 0;
  878 + };
  879 + B891A5552BCD2624006CB06E /* CopyFiles */ = {
  880 + isa = PBXCopyFilesBuildPhase;
  881 + buildActionMask = 2147483647;
  882 + dstPath = res/xlarge/graphics/shoot_game;
  883 + dstSubfolderSpec = 7;
  884 + files = (
  885 + B891A5AE2BCD27A7006CB06E /* scene_layout.scl in CopyFiles */,
  886 + );
  887 + runOnlyForDeploymentPostprocessing = 0;
  888 + };
  889 + B891A5562BCD2625006CB06E /* CopyFiles */ = {
  890 + isa = PBXCopyFilesBuildPhase;
  891 + buildActionMask = 2147483647;
  892 + dstPath = res/xlarge/graphics/shoot_game/graphics;
  893 + dstSubfolderSpec = 7;
  894 + files = (
  895 + B891A5AF2BCD27C5006CB06E /* background.png in CopyFiles */,
  896 + B891A5B02BCD27C5006CB06E /* cart_back1.png in CopyFiles */,
  897 + B891A5B12BCD27C5006CB06E /* cart_back2.png in CopyFiles */,
  898 + B891A5B22BCD27C5006CB06E /* cart_front.png in CopyFiles */,
  899 + B891A5B32BCD27C5006CB06E /* clock.png in CopyFiles */,
  900 + B891A5B42BCD27C5006CB06E /* food_in_cart.png in CopyFiles */,
  901 + B891A5B52BCD27C5006CB06E /* gum.png in CopyFiles */,
  902 + B891A5B62BCD27C5006CB06E /* hand_leather.png in CopyFiles */,
  903 + B891A5B72BCD27C5006CB06E /* hand_sling.png in CopyFiles */,
  904 + B891A5B82BCD27C5006CB06E /* sling.png in CopyFiles */,
  905 + B891A5B92BCD27C5006CB06E /* steve_head1.png in CopyFiles */,
  906 + B891A5BA2BCD27C5006CB06E /* steve_head2.png in CopyFiles */,
  907 + B891A5BB2BCD27C5006CB06E /* steve_head3.png in CopyFiles */,
  908 + B891A5BC2BCD27C5006CB06E /* steve_head4.png in CopyFiles */,
  909 + B891A5BD2BCD27C5006CB06E /* steve_head5.png in CopyFiles */,
  910 + B891A5BE2BCD27C5006CB06E /* well_done_pic.png in CopyFiles */,
  911 + B891A5BF2BCD27C5006CB06E /* wooden_shelf.png in CopyFiles */,
  912 + );
  913 + runOnlyForDeploymentPostprocessing = 0;
  914 + };
  915 + B891A5C02BCD27CC006CB06E /* CopyFiles */ = {
  916 + isa = PBXCopyFilesBuildPhase;
  917 + buildActionMask = 2147483647;
  918 + dstPath = res/xlarge/graphics/shoot_game/graphics/shelf_food;
  919 + dstSubfolderSpec = 7;
  920 + files = (
  921 + B891A5C42BCD27FC006CB06E /* apples.png in CopyFiles */,
  922 + B891A5C52BCD27FC006CB06E /* baguettes.png in CopyFiles */,
  923 + B891A5C62BCD27FC006CB06E /* bananas.png in CopyFiles */,
  924 + B891A5C72BCD27FC006CB06E /* cakes.png in CopyFiles */,
  925 + B891A5C82BCD27FC006CB06E /* chocolate.png in CopyFiles */,
  926 + B891A5C92BCD27FC006CB06E /* cucumbers.png in CopyFiles */,
  927 + B891A5CA2BCD27FC006CB06E /* donuts.png in CopyFiles */,
  928 + B891A5CB2BCD27FC006CB06E /* icecream.png in CopyFiles */,
  929 + B891A5CC2BCD27FC006CB06E /* lettuce.png in CopyFiles */,
  930 + B891A5CD2BCD27FC006CB06E /* milk.png in CopyFiles */,
  931 + B891A5CE2BCD27FC006CB06E /* orange.png in CopyFiles */,
  932 + B891A5CF2BCD27FC006CB06E /* tomatoes.png in CopyFiles */,
  933 + );
  934 + runOnlyForDeploymentPostprocessing = 0;
  935 + };
  936 + B891A5C12BCD27CD006CB06E /* CopyFiles */ = {
  937 + isa = PBXCopyFilesBuildPhase;
  938 + buildActionMask = 2147483647;
  939 + dstPath = res/xlarge/graphics/shoot_game/graphics/single_food;
  940 + dstSubfolderSpec = 7;
  941 + files = (
  942 + B891A5D02BCD286F006CB06E /* apple_splodge.png in CopyFiles */,
  943 + B891A5D12BCD286F006CB06E /* apple1.png in CopyFiles */,
  944 + B891A5D22BCD286F006CB06E /* apple2.png in CopyFiles */,
  945 + B891A5D32BCD286F006CB06E /* baguette.png in CopyFiles */,
  946 + B891A5D42BCD286F006CB06E /* banana_splodge.png in CopyFiles */,
  947 + B891A5D52BCD286F006CB06E /* banana1.png in CopyFiles */,
  948 + B891A5D62BCD286F006CB06E /* banana2.png in CopyFiles */,
  949 + B891A5D72BCD286F006CB06E /* cake_splodge.png in CopyFiles */,
  950 + B891A5D82BCD286F006CB06E /* cake1.png in CopyFiles */,
  951 + B891A5D92BCD286F006CB06E /* cake2.png in CopyFiles */,
  952 + B891A5DA2BCD2870006CB06E /* chocolate_splodge.png in CopyFiles */,
  953 + B891A5DB2BCD2870006CB06E /* chocolate1.png in CopyFiles */,
  954 + B891A5DC2BCD2870006CB06E /* chocolate2.png in CopyFiles */,
  955 + B891A5DD2BCD2870006CB06E /* cucumber_splodge.png in CopyFiles */,
  956 + B891A5DE2BCD2870006CB06E /* cucumber1.png in CopyFiles */,
  957 + B891A5DF2BCD2870006CB06E /* cucumber2.png in CopyFiles */,
  958 + B891A5E02BCD2870006CB06E /* donut_splodge.png in CopyFiles */,
  959 + B891A5E12BCD2870006CB06E /* donut1.png in CopyFiles */,
  960 + B891A5E22BCD2870006CB06E /* donut2.png in CopyFiles */,
  961 + B891A5E32BCD2870006CB06E /* icecream_splodge.png in CopyFiles */,
  962 + B891A5E42BCD2870006CB06E /* icecream1.png in CopyFiles */,
  963 + B891A5E52BCD2870006CB06E /* icecream2.png in CopyFiles */,
  964 + B891A5E62BCD2870006CB06E /* lettuce.png in CopyFiles */,
  965 + B891A5E72BCD2870006CB06E /* milk.png in CopyFiles */,
  966 + B891A5E82BCD2870006CB06E /* orange.png in CopyFiles */,
  967 + B891A5E92BCD2870006CB06E /* tomato_splodge.png in CopyFiles */,
  968 + B891A5EA2BCD2870006CB06E /* tomato1.png in CopyFiles */,
  969 + B891A5EB2BCD2870006CB06E /* tomato2.png in CopyFiles */,
  970 + );
  971 + runOnlyForDeploymentPostprocessing = 0;
  972 + };
  973 + B891A5C22BCD27CE006CB06E /* CopyFiles */ = {
  974 + isa = PBXCopyFilesBuildPhase;
  975 + buildActionMask = 2147483647;
  976 + dstPath = res/xlarge/graphics/tos_popup;
  977 + dstSubfolderSpec = 7;
  978 + files = (
  979 + B891A5EC2BCD2881006CB06E /* accept_button.png in CopyFiles */,
  980 + B891A5ED2BCD2881006CB06E /* accept_popup.png in CopyFiles */,
  981 + );
  982 + runOnlyForDeploymentPostprocessing = 0;
  983 + };
  984 +/* End PBXCopyFilesBuildPhase section */
  985 +
  986 +/* Begin PBXFileReference section */
  987 + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
  988 + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
  989 + 2A3DBEAB6142776646A34D9C /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
  990 + 2DE9FE013448D0821175591C /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
  991 + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
  992 + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
  993 + 3563EC8D55A646823FD26A83 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
  994 + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
  995 + 48BCA0827DCB98991774F5AC /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
  996 + 52450AF02A4C415B007B3E4B /* XSMessageMehtodChannel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XSMessageMehtodChannel.swift; sourceTree = "<group>"; };
  997 + 52450AF22A4ED0EC007B3E4B /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
  998 + 525E17192A4BD03900104CDF /* VoiceXSMessageChannel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoiceXSMessageChannel.swift; sourceTree = "<group>"; };
  999 + 6DEBBC1D861BE053F3ECE0B9 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
  1000 + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
  1001 + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
  1002 + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
  1003 + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
  1004 + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
  1005 + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
  1006 + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
  1007 + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
  1008 + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
  1009 + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
  1010 + B852C1342BCABB5E00A53FC4 /* GameMessageChannel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameMessageChannel.swift; sourceTree = "<group>"; };
  1011 + B852D3ED2BCADF3600A53FC4 /* cocos2d_libs.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = cocos2d_libs.xcodeproj; path = cocosgame/engine/cocos/core/cocos2d_libs.xcodeproj; sourceTree = "<group>"; };
  1012 + B891A2622BCD1392006CB06E /* TouchInterceptingLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TouchInterceptingLayer.cpp; sourceTree = "<group>"; };
  1013 + B891A2632BCD1392006CB06E /* TouchInterceptingLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TouchInterceptingLayer.h; sourceTree = "<group>"; };
  1014 + B891A2652BCD1392006CB06E /* LevelPickerLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LevelPickerLayer.cpp; sourceTree = "<group>"; };
  1015 + B891A2662BCD1392006CB06E /* LevelPickerLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LevelPickerLayer.h; sourceTree = "<group>"; };
  1016 + B891A2672BCD1392006CB06E /* LevelPickerView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LevelPickerView.cpp; sourceTree = "<group>"; };
  1017 + B891A2682BCD1392006CB06E /* LevelPickerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LevelPickerView.h; sourceTree = "<group>"; };
  1018 + B891A2692BCD1392006CB06E /* SimpleLevelPickerView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SimpleLevelPickerView.cpp; sourceTree = "<group>"; };
  1019 + B891A26A2BCD1392006CB06E /* SimpleLevelPickerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleLevelPickerView.h; sourceTree = "<group>"; };
  1020 + B891A26C2BCD1392006CB06E /* AlertView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AlertView.cpp; sourceTree = "<group>"; };
  1021 + B891A26D2BCD1392006CB06E /* AlertView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AlertView.h; sourceTree = "<group>"; };
  1022 + B891A26E2BCD1392006CB06E /* AppLinksView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppLinksView.cpp; sourceTree = "<group>"; };
  1023 + B891A26F2BCD1392006CB06E /* AppLinksView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppLinksView.h; sourceTree = "<group>"; };
  1024 + B891A2702BCD1392006CB06E /* GameLifeIndicatorView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GameLifeIndicatorView.cpp; sourceTree = "<group>"; };
  1025 + B891A2712BCD1392006CB06E /* GameLifeIndicatorView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GameLifeIndicatorView.h; sourceTree = "<group>"; };
  1026 + B891A2722BCD1392006CB06E /* LevelView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LevelView.cpp; sourceTree = "<group>"; };
  1027 + B891A2732BCD1392006CB06E /* LevelView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LevelView.h; sourceTree = "<group>"; };
  1028 + B891A2742BCD1392006CB06E /* ParentalGateShowInterface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParentalGateShowInterface.cpp; sourceTree = "<group>"; };
  1029 + B891A2752BCD1392006CB06E /* ParentalGateShowInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParentalGateShowInterface.h; sourceTree = "<group>"; };
  1030 + B891A2762BCD1392006CB06E /* ParentalGateView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParentalGateView.cpp; sourceTree = "<group>"; };
  1031 + B891A2772BCD1392006CB06E /* ParentalGateView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParentalGateView.h; sourceTree = "<group>"; };
  1032 + B891A2782BCD1392006CB06E /* SettingsLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SettingsLayer.cpp; sourceTree = "<group>"; };
  1033 + B891A2792BCD1392006CB06E /* SettingsLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsLayer.h; sourceTree = "<group>"; };
  1034 + B891A27A2BCD1392006CB06E /* TOSAcceptPopupView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TOSAcceptPopupView.cpp; sourceTree = "<group>"; };
  1035 + B891A27B2BCD1392006CB06E /* TOSAcceptPopupView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TOSAcceptPopupView.h; sourceTree = "<group>"; };
  1036 + B891A27D2BCD1392006CB06E /* ChangingSprite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ChangingSprite.cpp; sourceTree = "<group>"; };
  1037 + B891A27E2BCD1392006CB06E /* ChangingSprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChangingSprite.h; sourceTree = "<group>"; };
  1038 + B891A27F2BCD1392006CB06E /* ContainerSprite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContainerSprite.cpp; sourceTree = "<group>"; };
  1039 + B891A2802BCD1392006CB06E /* ContainerSprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContainerSprite.h; sourceTree = "<group>"; };
  1040 + B891A2812BCD1392006CB06E /* PlainLabel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlainLabel.cpp; sourceTree = "<group>"; };
  1041 + B891A2822BCD1392006CB06E /* PlainLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlainLabel.h; sourceTree = "<group>"; };
  1042 + B891A2832BCD1392006CB06E /* PlainNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlainNode.cpp; sourceTree = "<group>"; };
  1043 + B891A2842BCD1392006CB06E /* PlainNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlainNode.h; sourceTree = "<group>"; };
  1044 + B891A2852BCD1392006CB06E /* PlainSprite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlainSprite.cpp; sourceTree = "<group>"; };
  1045 + B891A2862BCD1392006CB06E /* PlainSprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlainSprite.h; sourceTree = "<group>"; };
  1046 + B891A2872BCD1392006CB06E /* ProgressSliderNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProgressSliderNode.cpp; sourceTree = "<group>"; };
  1047 + B891A2882BCD1392006CB06E /* ProgressSliderNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProgressSliderNode.h; sourceTree = "<group>"; };
  1048 + B891A2892BCD1392006CB06E /* SimpleButton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SimpleButton.cpp; sourceTree = "<group>"; };
  1049 + B891A28A2BCD1392006CB06E /* SimpleButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleButton.h; sourceTree = "<group>"; };
  1050 + B891A28B2BCD1392006CB06E /* TouchableSprite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TouchableSprite.cpp; sourceTree = "<group>"; };
  1051 + B891A28C2BCD1392006CB06E /* TouchableSprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TouchableSprite.h; sourceTree = "<group>"; };
  1052 + B891A28D2BCD1392006CB06E /* TwoStateButton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TwoStateButton.cpp; sourceTree = "<group>"; };
  1053 + B891A28E2BCD1392006CB06E /* TwoStateButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TwoStateButton.h; sourceTree = "<group>"; };
  1054 + B891A2902BCD1392006CB06E /* MiscConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MiscConfig.h; sourceTree = "<group>"; };
  1055 + B891A2912BCD1392006CB06E /* ResourcesConfig.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourcesConfig.cpp; sourceTree = "<group>"; };
  1056 + B891A2922BCD1392006CB06E /* ResourcesConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourcesConfig.h; sourceTree = "<group>"; };
  1057 + B891A2932BCD1392006CB06E /* Strings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Strings.cpp; sourceTree = "<group>"; };
  1058 + B891A2942BCD1392006CB06E /* Strings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Strings.h; sourceTree = "<group>"; };
  1059 + B891A2952BCD1392006CB06E /* TouchHandlerTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TouchHandlerTypes.h; sourceTree = "<group>"; };
  1060 + B891A2992BCD1392006CB06E /* GameConfigParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GameConfigParser.cpp; sourceTree = "<group>"; };
  1061 + B891A29A2BCD1392006CB06E /* GameConfigParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GameConfigParser.h; sourceTree = "<group>"; };
  1062 + B891A29C2BCD1392006CB06E /* LayoutObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LayoutObject.cpp; sourceTree = "<group>"; };
  1063 + B891A29D2BCD1392006CB06E /* LayoutObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayoutObject.h; sourceTree = "<group>"; };
  1064 + B891A29E2BCD1392006CB06E /* LayoutParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LayoutParser.cpp; sourceTree = "<group>"; };
  1065 + B891A29F2BCD1392006CB06E /* LayoutParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayoutParser.h; sourceTree = "<group>"; };
  1066 + B891A2A12BCD1392006CB06E /* ActionData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ActionData.cpp; sourceTree = "<group>"; };
  1067 + B891A2A22BCD1392006CB06E /* ActionData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ActionData.h; sourceTree = "<group>"; };
  1068 + B891A2AD2BCD1392006CB06E /* ScenarioObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScenarioObject.h; sourceTree = "<group>"; };
  1069 + B891A2B02BCD1392006CB06E /* SimpleValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleValue.h; sourceTree = "<group>"; };
  1070 + B891A2B12BCD1392006CB06E /* TimeIndicatorInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TimeIndicatorInterface.h; sourceTree = "<group>"; };
  1071 + B891A2B52BCD1392006CB06E /* JSONParseUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSONParseUtils.cpp; sourceTree = "<group>"; };
  1072 + B891A2B62BCD1392006CB06E /* JSONParseUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSONParseUtils.h; sourceTree = "<group>"; };
  1073 + B891A2B72BCD1392006CB06E /* SimpleValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleValue.h; sourceTree = "<group>"; };
  1074 + B891A2B82BCD1392006CB06E /* StaticActionParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StaticActionParser.cpp; sourceTree = "<group>"; };
  1075 + B891A2B92BCD1392006CB06E /* StaticActionParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StaticActionParser.h; sourceTree = "<group>"; };
  1076 + B891A2BA2BCD1392006CB06E /* ValueStorage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ValueStorage.cpp; sourceTree = "<group>"; };
  1077 + B891A2BB2BCD1392006CB06E /* ValueStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ValueStorage.h; sourceTree = "<group>"; };
  1078 + B891A2BD2BCD1392006CB06E /* SubGameScene.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SubGameScene.cpp; sourceTree = "<group>"; };
  1079 + B891A2BE2BCD1392006CB06E /* SubGameScene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubGameScene.h; sourceTree = "<group>"; };
  1080 + B891A2BF2BCD1392006CB06E /* SubGameSceneShoot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SubGameSceneShoot.cpp; sourceTree = "<group>"; };
  1081 + B891A2C02BCD1392006CB06E /* SubGameSceneShoot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubGameSceneShoot.h; sourceTree = "<group>"; };
  1082 + B891A2C42BCD1392006CB06E /* ParentScene.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParentScene.cpp; sourceTree = "<group>"; };
  1083 + B891A2C52BCD1392006CB06E /* ParentScene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParentScene.h; sourceTree = "<group>"; };
  1084 + B891A2C62BCD1392006CB06E /* SceneWithUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SceneWithUtils.cpp; sourceTree = "<group>"; };
  1085 + B891A2C72BCD1392006CB06E /* SceneWithUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneWithUtils.h; sourceTree = "<group>"; };
  1086 + B891A2C92BCD1392006CB06E /* DrawingUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DrawingUtils.cpp; sourceTree = "<group>"; };
  1087 + B891A2CA2BCD1392006CB06E /* DrawingUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DrawingUtils.h; sourceTree = "<group>"; };
  1088 + B891A2CB2BCD1392006CB06E /* GeometryUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GeometryUtils.cpp; sourceTree = "<group>"; };
  1089 + B891A2CC2BCD1392006CB06E /* GeometryUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeometryUtils.h; sourceTree = "<group>"; };
  1090 + B891A2CD2BCD1392006CB06E /* MathUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MathUtils.cpp; sourceTree = "<group>"; };
  1091 + B891A2CE2BCD1392006CB06E /* MathUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MathUtils.h; sourceTree = "<group>"; };
  1092 + B891A2CF2BCD1392006CB06E /* MiscUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MiscUtils.cpp; sourceTree = "<group>"; };
  1093 + B891A2D02BCD1392006CB06E /* MiscUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MiscUtils.h; sourceTree = "<group>"; };
  1094 + B891A2D12BCD1392006CB06E /* ResourceUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceUtilities.cpp; sourceTree = "<group>"; };
  1095 + B891A2D22BCD1392006CB06E /* ResourceUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceUtilities.h; sourceTree = "<group>"; };
  1096 + B891A2D32BCD1392006CB06E /* ScalingUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScalingUtils.cpp; sourceTree = "<group>"; };
  1097 + B891A2D42BCD1392006CB06E /* ScalingUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScalingUtils.h; sourceTree = "<group>"; };
  1098 + B891A2D52BCD1392006CB06E /* SoundsRepo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SoundsRepo.cpp; sourceTree = "<group>"; };
  1099 + B891A2D62BCD1392006CB06E /* SoundsRepo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SoundsRepo.h; sourceTree = "<group>"; };
  1100 + B891A2D72BCD1392006CB06E /* SoundUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SoundUtils.cpp; sourceTree = "<group>"; };
  1101 + B891A2D82BCD1392006CB06E /* SoundUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SoundUtils.h; sourceTree = "<group>"; };
  1102 + B891A2D92BCD1392006CB06E /* StringUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringUtils.cpp; sourceTree = "<group>"; };
  1103 + B891A2DA2BCD1392006CB06E /* StringUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringUtils.h; sourceTree = "<group>"; };
  1104 + B891A3162BCD13AB006CB06E /* ComicSansMSBold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = ComicSansMSBold.ttf; sourceTree = "<group>"; };
  1105 + B891A3172BCD13AB006CB06E /* ComicSansMSRegular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = ComicSansMSRegular.ttf; sourceTree = "<group>"; };
  1106 + B891A3192BCD13AB006CB06E /* gconfig.gcf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = gconfig.gcf; sourceTree = "<group>"; };
  1107 + B891A31C2BCD13AB006CB06E /* all_in_trolley.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = all_in_trolley.mp3; sourceTree = "<group>"; };
  1108 + B891A31D2BCD13AB006CB06E /* apple.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = apple.mp3; sourceTree = "<group>"; };
  1109 + B891A31E2BCD13AB006CB06E /* banana.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = banana.mp3; sourceTree = "<group>"; };
  1110 + B891A31F2BCD13AB006CB06E /* cake.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = cake.mp3; sourceTree = "<group>"; };
  1111 + B891A3202BCD13AB006CB06E /* chocolate.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = chocolate.mp3; sourceTree = "<group>"; };
  1112 + B891A3212BCD13AB006CB06E /* cucumber.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = cucumber.mp3; sourceTree = "<group>"; };
  1113 + B891A3222BCD13AB006CB06E /* donut.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = donut.mp3; sourceTree = "<group>"; };
  1114 + B891A3232BCD13AB006CB06E /* effect_catapult.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = effect_catapult.mp3; sourceTree = "<group>"; };
  1115 + B891A3242BCD13AB006CB06E /* effect_hit.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = effect_hit.mp3; sourceTree = "<group>"; };
  1116 + B891A3252BCD13AB006CB06E /* effect_in_trolley.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = effect_in_trolley.mp3; sourceTree = "<group>"; };
  1117 + B891A3262BCD13AB006CB06E /* hit_maggie.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = hit_maggie.mp3; sourceTree = "<group>"; };
  1118 + B891A3272BCD13AB006CB06E /* hit_steve.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = hit_steve.mp3; sourceTree = "<group>"; };
  1119 + B891A3282BCD13AB006CB06E /* icecream.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = icecream.mp3; sourceTree = "<group>"; };
  1120 + B891A3292BCD13AB006CB06E /* in_trolley.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = in_trolley.mp3; sourceTree = "<group>"; };
  1121 + B891A32A2BCD13AB006CB06E /* not_apple.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = not_apple.mp3; sourceTree = "<group>"; };
  1122 + B891A32B2BCD13AB006CB06E /* not_banana.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = not_banana.mp3; sourceTree = "<group>"; };
  1123 + B891A32C2BCD13AB006CB06E /* not_cake.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = not_cake.mp3; sourceTree = "<group>"; };
  1124 + B891A32D2BCD13AB006CB06E /* not_chocolate.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = not_chocolate.mp3; sourceTree = "<group>"; };
  1125 + B891A32E2BCD13AB006CB06E /* not_cucumber.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = not_cucumber.mp3; sourceTree = "<group>"; };
  1126 + B891A32F2BCD13AB006CB06E /* not_donut.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = not_donut.mp3; sourceTree = "<group>"; };
  1127 + B891A3302BCD13AB006CB06E /* not_icecream.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = not_icecream.mp3; sourceTree = "<group>"; };
  1128 + B891A3312BCD13AB006CB06E /* not_in_trolley.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = not_in_trolley.mp3; sourceTree = "<group>"; };
  1129 + B891A3322BCD13AB006CB06E /* not_tomato.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = not_tomato.mp3; sourceTree = "<group>"; };
  1130 + B891A3332BCD13AB006CB06E /* put_it_trolley.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = put_it_trolley.mp3; sourceTree = "<group>"; };
  1131 + B891A3342BCD13AB006CB06E /* shop_closed.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = shop_closed.mp3; sourceTree = "<group>"; };
  1132 + B891A3352BCD13AB006CB06E /* start.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = start.mp3; sourceTree = "<group>"; };
  1133 + B891A3362BCD13AB006CB06E /* tomato.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = tomato.mp3; sourceTree = "<group>"; };
  1134 + B891A3372BCD13AB006CB06E /* wrong_3_times.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = wrong_3_times.mp3; sourceTree = "<group>"; };
  1135 + B891A3392BCD13AB006CB06E /* g_no.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = g_no.mp3; sourceTree = "<group>"; };
  1136 + B891A33A2BCD13AB006CB06E /* g_oops.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = g_oops.mp3; sourceTree = "<group>"; };
  1137 + B891A33B2BCD13AB006CB06E /* g_uh_oh.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = g_uh_oh.mp3; sourceTree = "<group>"; };
  1138 + B891A33C2BCD13AB006CB06E /* g_well_done.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = g_well_done.mp3; sourceTree = "<group>"; };
  1139 + B891A33D2BCD13AB006CB06E /* g_whoo_hoo.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = g_whoo_hoo.mp3; sourceTree = "<group>"; };
  1140 + B891A33E2BCD13AB006CB06E /* g_yeah.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = g_yeah.mp3; sourceTree = "<group>"; };
  1141 + B891A33F2BCD13AB006CB06E /* maggie_super.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = maggie_super.mp3; sourceTree = "<group>"; };
  1142 + B891A3402BCD13AB006CB06E /* maggie_thats_right.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = maggie_thats_right.mp3; sourceTree = "<group>"; };
  1143 + B891A3412BCD13AB006CB06E /* maggie_yeah.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = maggie_yeah.mp3; sourceTree = "<group>"; };
  1144 + B891A3432BCD13AB006CB06E /* g_pick_level.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = g_pick_level.mp3; sourceTree = "<group>"; };
  1145 + B891A3472BCD13AB006CB06E /* app_link_halloween.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = app_link_halloween.png; sourceTree = "<group>"; };
  1146 + B891A3482BCD13AB006CB06E /* app_link_toy.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = app_link_toy.png; sourceTree = "<group>"; };
  1147 + B891A3492BCD13AB006CB06E /* doll_toy_app.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = doll_toy_app.png; sourceTree = "<group>"; };
  1148 + B891A34A2BCD13AB006CB06E /* halo_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = halo_icon.png; sourceTree = "<group>"; };
  1149 + B891A34B2BCD13AB006CB06E /* steve_maggie.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = steve_maggie.png; sourceTree = "<group>"; };
  1150 + B891A34C2BCD13AB006CB06E /* witch_halloween_app.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = witch_halloween_app.png; sourceTree = "<group>"; };
  1151 + B891A34E2BCD13AB006CB06E /* button_back.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_back.png; sourceTree = "<group>"; };
  1152 + B891A34F2BCD13AB006CB06E /* button_go.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_go.png; sourceTree = "<group>"; };
  1153 + B891A3502BCD13AB006CB06E /* button_green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_green.png; sourceTree = "<group>"; };
  1154 + B891A3512BCD13AB006CB06E /* button_grey.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_grey.png; sourceTree = "<group>"; };
  1155 + B891A3522BCD13AB006CB06E /* button_orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_orange.png; sourceTree = "<group>"; };
  1156 + B891A3532BCD13AB006CB06E /* button_pause.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_pause.png; sourceTree = "<group>"; };
  1157 + B891A3542BCD13AB006CB06E /* button_purple.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_purple.png; sourceTree = "<group>"; };
  1158 + B891A3552BCD13AB006CB06E /* button_red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_red.png; sourceTree = "<group>"; };
  1159 + B891A3562BCD13AB006CB06E /* button_repeat.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_repeat.png; sourceTree = "<group>"; };
  1160 + B891A3572BCD13AB006CB06E /* button_setting.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_setting.png; sourceTree = "<group>"; };
  1161 + B891A3582BCD13AB006CB06E /* button_sound_off.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_sound_off.png; sourceTree = "<group>"; };
  1162 + B891A3592BCD13AB006CB06E /* button_sound_on.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_sound_on.png; sourceTree = "<group>"; };
  1163 + B891A35A2BCD13AB006CB06E /* button_turquoise.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_turquoise.png; sourceTree = "<group>"; };
  1164 + B891A35B2BCD13AB006CB06E /* button_yellow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_yellow.png; sourceTree = "<group>"; };
  1165 + B891A35C2BCD13AB006CB06E /* buttonff.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = buttonff.png; sourceTree = "<group>"; };
  1166 + B891A35D2BCD13AB006CB06E /* dark_green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dark_green.png; sourceTree = "<group>"; };
  1167 + B891A35F2BCD13AB006CB06E /* horizontalButtonPanelBackFFPause.obl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = horizontalButtonPanelBackFFPause.obl; sourceTree = "<group>"; };
  1168 + B891A3612BCD13AB006CB06E /* level_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = level_1.png; sourceTree = "<group>"; };
  1169 + B891A3622BCD13AB006CB06E /* level_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = level_2.png; sourceTree = "<group>"; };
  1170 + B891A3632BCD13AB006CB06E /* level_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = level_3.png; sourceTree = "<group>"; };
  1171 + B891A3652BCD13AB006CB06E /* apples.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = apples.png; sourceTree = "<group>"; };
  1172 + B891A3662BCD13AB006CB06E /* baguettes.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = baguettes.png; sourceTree = "<group>"; };
  1173 + B891A3672BCD13AB006CB06E /* bananas.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bananas.png; sourceTree = "<group>"; };
  1174 + B891A3682BCD13AB006CB06E /* cakes.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cakes.png; sourceTree = "<group>"; };
  1175 + B891A3692BCD13AB006CB06E /* chocolate.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = chocolate.png; sourceTree = "<group>"; };
  1176 + B891A36A2BCD13AB006CB06E /* cucumbers.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cucumbers.png; sourceTree = "<group>"; };
  1177 + B891A36B2BCD13AB006CB06E /* donuts.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = donuts.png; sourceTree = "<group>"; };
  1178 + B891A36C2BCD13AB006CB06E /* icecream.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icecream.png; sourceTree = "<group>"; };
  1179 + B891A36D2BCD13AB006CB06E /* lettuce.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lettuce.png; sourceTree = "<group>"; };
  1180 + B891A36E2BCD13AB006CB06E /* milk.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = milk.png; sourceTree = "<group>"; };
  1181 + B891A36F2BCD13AB006CB06E /* orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = orange.png; sourceTree = "<group>"; };
  1182 + B891A3702BCD13AB006CB06E /* tomatoes.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tomatoes.png; sourceTree = "<group>"; };
  1183 + B891A3722BCD13AB006CB06E /* apple_splodge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = apple_splodge.png; sourceTree = "<group>"; };
  1184 + B891A3732BCD13AB006CB06E /* apple1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = apple1.png; sourceTree = "<group>"; };
  1185 + B891A3742BCD13AB006CB06E /* apple2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = apple2.png; sourceTree = "<group>"; };
  1186 + B891A3752BCD13AB006CB06E /* baguette.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = baguette.png; sourceTree = "<group>"; };
  1187 + B891A3762BCD13AB006CB06E /* banana_splodge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = banana_splodge.png; sourceTree = "<group>"; };
  1188 + B891A3772BCD13AB006CB06E /* banana1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = banana1.png; sourceTree = "<group>"; };
  1189 + B891A3782BCD13AB006CB06E /* banana2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = banana2.png; sourceTree = "<group>"; };
  1190 + B891A3792BCD13AB006CB06E /* cake_splodge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cake_splodge.png; sourceTree = "<group>"; };
  1191 + B891A37A2BCD13AB006CB06E /* cake1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cake1.png; sourceTree = "<group>"; };
  1192 + B891A37B2BCD13AB006CB06E /* cake2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cake2.png; sourceTree = "<group>"; };
  1193 + B891A37C2BCD13AB006CB06E /* chocolate_splodge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = chocolate_splodge.png; sourceTree = "<group>"; };
  1194 + B891A37D2BCD13AB006CB06E /* chocolate1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = chocolate1.png; sourceTree = "<group>"; };
  1195 + B891A37E2BCD13AB006CB06E /* chocolate2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = chocolate2.png; sourceTree = "<group>"; };
  1196 + B891A37F2BCD13AB006CB06E /* cucumber_splodge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cucumber_splodge.png; sourceTree = "<group>"; };
  1197 + B891A3802BCD13AB006CB06E /* cucumber1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cucumber1.png; sourceTree = "<group>"; };
  1198 + B891A3812BCD13AB006CB06E /* cucumber2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cucumber2.png; sourceTree = "<group>"; };
  1199 + B891A3822BCD13AB006CB06E /* donut_splodge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = donut_splodge.png; sourceTree = "<group>"; };
  1200 + B891A3832BCD13AB006CB06E /* donut1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = donut1.png; sourceTree = "<group>"; };
  1201 + B891A3842BCD13AB006CB06E /* donut2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = donut2.png; sourceTree = "<group>"; };
  1202 + B891A3852BCD13AB006CB06E /* icecream_splodge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icecream_splodge.png; sourceTree = "<group>"; };
  1203 + B891A3862BCD13AB006CB06E /* icecream1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icecream1.png; sourceTree = "<group>"; };
  1204 + B891A3872BCD13AB006CB06E /* icecream2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icecream2.png; sourceTree = "<group>"; };
  1205 + B891A3882BCD13AB006CB06E /* lettuce.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lettuce.png; sourceTree = "<group>"; };
  1206 + B891A3892BCD13AB006CB06E /* milk.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = milk.png; sourceTree = "<group>"; };
  1207 + B891A38A2BCD13AB006CB06E /* orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = orange.png; sourceTree = "<group>"; };
  1208 + B891A38B2BCD13AB006CB06E /* tomato_splodge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tomato_splodge.png; sourceTree = "<group>"; };
  1209 + B891A38C2BCD13AB006CB06E /* tomato1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tomato1.png; sourceTree = "<group>"; };
  1210 + B891A38D2BCD13AB006CB06E /* tomato2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tomato2.png; sourceTree = "<group>"; };
  1211 + B891A38F2BCD13AB006CB06E /* cart_back1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cart_back1.png; sourceTree = "<group>"; };
  1212 + B891A3902BCD13AB006CB06E /* cart_back2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cart_back2.png; sourceTree = "<group>"; };
  1213 + B891A3912BCD13AB006CB06E /* cart_front.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cart_front.png; sourceTree = "<group>"; };
  1214 + B891A3922BCD13AB006CB06E /* clock.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = clock.png; sourceTree = "<group>"; };
  1215 + B891A3932BCD13AB006CB06E /* food_in_cart.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = food_in_cart.png; sourceTree = "<group>"; };
  1216 + B891A3942BCD13AB006CB06E /* gum.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = gum.png; sourceTree = "<group>"; };
  1217 + B891A3952BCD13AB006CB06E /* hand_leather.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hand_leather.png; sourceTree = "<group>"; };
  1218 + B891A3962BCD13AB006CB06E /* hand_sling.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hand_sling.png; sourceTree = "<group>"; };
  1219 + B891A3972BCD13AB006CB06E /* sling.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sling.png; sourceTree = "<group>"; };
  1220 + B891A3982BCD13AB006CB06E /* steve_head1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = steve_head1.png; sourceTree = "<group>"; };
  1221 + B891A3992BCD13AB006CB06E /* steve_head2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = steve_head2.png; sourceTree = "<group>"; };
  1222 + B891A39A2BCD13AB006CB06E /* steve_head3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = steve_head3.png; sourceTree = "<group>"; };
  1223 + B891A39B2BCD13AB006CB06E /* steve_head4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = steve_head4.png; sourceTree = "<group>"; };
  1224 + B891A39C2BCD13AB006CB06E /* steve_head5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = steve_head5.png; sourceTree = "<group>"; };
  1225 + B891A39D2BCD13AB006CB06E /* wooden_shelf.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = wooden_shelf.png; sourceTree = "<group>"; };
  1226 + B891A39F2BCD13AB006CB06E /* scene_layout.scl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = scene_layout.scl; sourceTree = "<group>"; };
  1227 + B891A3A12BCD13AB006CB06E /* accept_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = accept_button.png; sourceTree = "<group>"; };
  1228 + B891A3A22BCD13AB006CB06E /* accept_popup.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = accept_popup.png; sourceTree = "<group>"; };
  1229 + B891A3A42BCD13AB006CB06E /* g_finger.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = g_finger.png; sourceTree = "<group>"; };
  1230 + B891A3A52BCD13AB006CB06E /* g_life_indicator_dead.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = g_life_indicator_dead.png; sourceTree = "<group>"; };
  1231 + B891A3A62BCD13AB006CB06E /* g_life_indicator_ok.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = g_life_indicator_ok.png; sourceTree = "<group>"; };
  1232 + B891A3A72BCD13AB006CB06E /* level_halo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = level_halo.png; sourceTree = "<group>"; };
  1233 + B891A3AA2BCD13AB006CB06E /* app_link_halloween.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = app_link_halloween.png; sourceTree = "<group>"; };
  1234 + B891A3AB2BCD13AB006CB06E /* app_link_toy.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = app_link_toy.png; sourceTree = "<group>"; };
  1235 + B891A3AC2BCD13AB006CB06E /* doll_toy_app.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = doll_toy_app.png; sourceTree = "<group>"; };
  1236 + B891A3AD2BCD13AB006CB06E /* halo_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = halo_icon.png; sourceTree = "<group>"; };
  1237 + B891A3AE2BCD13AB006CB06E /* steve_maggie.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = steve_maggie.png; sourceTree = "<group>"; };
  1238 + B891A3AF2BCD13AB006CB06E /* witch_halloween_app.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = witch_halloween_app.png; sourceTree = "<group>"; };
  1239 + B891A3B12BCD13AB006CB06E /* button_back.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_back.png; sourceTree = "<group>"; };
  1240 + B891A3B22BCD13AB006CB06E /* button_go.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_go.png; sourceTree = "<group>"; };
  1241 + B891A3B32BCD13AB006CB06E /* button_green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_green.png; sourceTree = "<group>"; };
  1242 + B891A3B42BCD13AB006CB06E /* button_grey.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_grey.png; sourceTree = "<group>"; };
  1243 + B891A3B52BCD13AB006CB06E /* button_orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_orange.png; sourceTree = "<group>"; };
  1244 + B891A3B62BCD13AB006CB06E /* button_pause.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_pause.png; sourceTree = "<group>"; };
  1245 + B891A3B72BCD13AB006CB06E /* button_purple.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_purple.png; sourceTree = "<group>"; };
  1246 + B891A3B82BCD13AB006CB06E /* button_red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_red.png; sourceTree = "<group>"; };
  1247 + B891A3B92BCD13AB006CB06E /* button_repeat.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_repeat.png; sourceTree = "<group>"; };
  1248 + B891A3BA2BCD13AB006CB06E /* button_setting.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_setting.png; sourceTree = "<group>"; };
  1249 + B891A3BB2BCD13AB006CB06E /* button_sound_off.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_sound_off.png; sourceTree = "<group>"; };
  1250 + B891A3BC2BCD13AB006CB06E /* button_sound_on.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_sound_on.png; sourceTree = "<group>"; };
  1251 + B891A3BD2BCD13AB006CB06E /* button_turquoise.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_turquoise.png; sourceTree = "<group>"; };
  1252 + B891A3BE2BCD13AB006CB06E /* button_yellow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_yellow.png; sourceTree = "<group>"; };
  1253 + B891A3BF2BCD13AB006CB06E /* buttonff.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = buttonff.png; sourceTree = "<group>"; };
  1254 + B891A3C02BCD13AB006CB06E /* dark_green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dark_green.png; sourceTree = "<group>"; };
  1255 + B891A3C22BCD13AB006CB06E /* horizontalButtonPanelBackFFPause.obl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = horizontalButtonPanelBackFFPause.obl; sourceTree = "<group>"; };
  1256 + B891A3C42BCD13AB006CB06E /* level_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = level_1.png; sourceTree = "<group>"; };
  1257 + B891A3C52BCD13AB006CB06E /* level_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = level_2.png; sourceTree = "<group>"; };
  1258 + B891A3C62BCD13AB006CB06E /* level_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = level_3.png; sourceTree = "<group>"; };
  1259 + B891A3C82BCD13AB006CB06E /* apples.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = apples.png; sourceTree = "<group>"; };
  1260 + B891A3C92BCD13AB006CB06E /* baguettes.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = baguettes.png; sourceTree = "<group>"; };
  1261 + B891A3CA2BCD13AB006CB06E /* bananas.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bananas.png; sourceTree = "<group>"; };
  1262 + B891A3CB2BCD13AB006CB06E /* cakes.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cakes.png; sourceTree = "<group>"; };
  1263 + B891A3CC2BCD13AB006CB06E /* chocolate.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = chocolate.png; sourceTree = "<group>"; };
  1264 + B891A3CD2BCD13AB006CB06E /* cucumbers.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cucumbers.png; sourceTree = "<group>"; };
  1265 + B891A3CE2BCD13AB006CB06E /* donuts.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = donuts.png; sourceTree = "<group>"; };
  1266 + B891A3CF2BCD13AB006CB06E /* icecream.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icecream.png; sourceTree = "<group>"; };
  1267 + B891A3D02BCD13AB006CB06E /* lettuce.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lettuce.png; sourceTree = "<group>"; };
  1268 + B891A3D12BCD13AB006CB06E /* milk.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = milk.png; sourceTree = "<group>"; };
  1269 + B891A3D22BCD13AB006CB06E /* orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = orange.png; sourceTree = "<group>"; };
  1270 + B891A3D32BCD13AB006CB06E /* tomatoes.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tomatoes.png; sourceTree = "<group>"; };
  1271 + B891A3D52BCD13AB006CB06E /* apple_splodge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = apple_splodge.png; sourceTree = "<group>"; };
  1272 + B891A3D62BCD13AB006CB06E /* apple1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = apple1.png; sourceTree = "<group>"; };
  1273 + B891A3D72BCD13AB006CB06E /* apple2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = apple2.png; sourceTree = "<group>"; };
  1274 + B891A3D82BCD13AB006CB06E /* baguette.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = baguette.png; sourceTree = "<group>"; };
  1275 + B891A3D92BCD13AB006CB06E /* banana_splodge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = banana_splodge.png; sourceTree = "<group>"; };
  1276 + B891A3DA2BCD13AB006CB06E /* banana1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = banana1.png; sourceTree = "<group>"; };
  1277 + B891A3DB2BCD13AB006CB06E /* banana2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = banana2.png; sourceTree = "<group>"; };
  1278 + B891A3DC2BCD13AB006CB06E /* cake_splodge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cake_splodge.png; sourceTree = "<group>"; };
  1279 + B891A3DD2BCD13AB006CB06E /* cake1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cake1.png; sourceTree = "<group>"; };
  1280 + B891A3DE2BCD13AB006CB06E /* cake2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cake2.png; sourceTree = "<group>"; };
  1281 + B891A3DF2BCD13AB006CB06E /* chocolate_splodge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = chocolate_splodge.png; sourceTree = "<group>"; };
  1282 + B891A3E02BCD13AB006CB06E /* chocolate1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = chocolate1.png; sourceTree = "<group>"; };
  1283 + B891A3E12BCD13AB006CB06E /* chocolate2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = chocolate2.png; sourceTree = "<group>"; };
  1284 + B891A3E22BCD13AB006CB06E /* cucumber_splodge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cucumber_splodge.png; sourceTree = "<group>"; };
  1285 + B891A3E32BCD13AB006CB06E /* cucumber1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cucumber1.png; sourceTree = "<group>"; };
  1286 + B891A3E42BCD13AB006CB06E /* cucumber2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cucumber2.png; sourceTree = "<group>"; };
  1287 + B891A3E52BCD13AB006CB06E /* donut_splodge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = donut_splodge.png; sourceTree = "<group>"; };
  1288 + B891A3E62BCD13AB006CB06E /* donut1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = donut1.png; sourceTree = "<group>"; };
  1289 + B891A3E72BCD13AB006CB06E /* donut2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = donut2.png; sourceTree = "<group>"; };
  1290 + B891A3E82BCD13AB006CB06E /* icecream_splodge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icecream_splodge.png; sourceTree = "<group>"; };
  1291 + B891A3E92BCD13AB006CB06E /* icecream1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icecream1.png; sourceTree = "<group>"; };
  1292 + B891A3EA2BCD13AB006CB06E /* icecream2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icecream2.png; sourceTree = "<group>"; };
  1293 + B891A3EB2BCD13AB006CB06E /* lettuce.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lettuce.png; sourceTree = "<group>"; };
  1294 + B891A3EC2BCD13AB006CB06E /* milk.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = milk.png; sourceTree = "<group>"; };
  1295 + B891A3ED2BCD13AB006CB06E /* orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = orange.png; sourceTree = "<group>"; };
  1296 + B891A3EE2BCD13AB006CB06E /* tomato_splodge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tomato_splodge.png; sourceTree = "<group>"; };
  1297 + B891A3EF2BCD13AB006CB06E /* tomato1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tomato1.png; sourceTree = "<group>"; };
  1298 + B891A3F02BCD13AB006CB06E /* tomato2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tomato2.png; sourceTree = "<group>"; };
  1299 + B891A3F22BCD13AB006CB06E /* background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = background.png; sourceTree = "<group>"; };
  1300 + B891A3F32BCD13AB006CB06E /* cart_back1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cart_back1.png; sourceTree = "<group>"; };
  1301 + B891A3F42BCD13AB006CB06E /* cart_back2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cart_back2.png; sourceTree = "<group>"; };
  1302 + B891A3F52BCD13AB006CB06E /* cart_front.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cart_front.png; sourceTree = "<group>"; };
  1303 + B891A3F62BCD13AB006CB06E /* clock.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = clock.png; sourceTree = "<group>"; };
  1304 + B891A3F72BCD13AB006CB06E /* food_in_cart.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = food_in_cart.png; sourceTree = "<group>"; };
  1305 + B891A3F82BCD13AB006CB06E /* gum.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = gum.png; sourceTree = "<group>"; };
  1306 + B891A3F92BCD13AB006CB06E /* hand_leather.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hand_leather.png; sourceTree = "<group>"; };
  1307 + B891A3FA2BCD13AB006CB06E /* hand_sling.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hand_sling.png; sourceTree = "<group>"; };
  1308 + B891A3FB2BCD13AB006CB06E /* sling.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sling.png; sourceTree = "<group>"; };
  1309 + B891A3FC2BCD13AB006CB06E /* steve_head1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = steve_head1.png; sourceTree = "<group>"; };
  1310 + B891A3FD2BCD13AB006CB06E /* steve_head2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = steve_head2.png; sourceTree = "<group>"; };
  1311 + B891A3FE2BCD13AB006CB06E /* steve_head3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = steve_head3.png; sourceTree = "<group>"; };
  1312 + B891A3FF2BCD13AB006CB06E /* steve_head4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = steve_head4.png; sourceTree = "<group>"; };
  1313 + B891A4002BCD13AB006CB06E /* steve_head5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = steve_head5.png; sourceTree = "<group>"; };
  1314 + B891A4012BCD13AB006CB06E /* well_done_pic.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = well_done_pic.png; sourceTree = "<group>"; };
  1315 + B891A4022BCD13AB006CB06E /* wooden_shelf.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = wooden_shelf.png; sourceTree = "<group>"; };
  1316 + B891A4042BCD13AB006CB06E /* scene_layout.scl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = scene_layout.scl; sourceTree = "<group>"; };
  1317 + B891A4062BCD13AB006CB06E /* accept_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = accept_button.png; sourceTree = "<group>"; };
  1318 + B891A4072BCD13AB006CB06E /* accept_popup.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = accept_popup.png; sourceTree = "<group>"; };
  1319 + B891A4092BCD13AB006CB06E /* g_finger.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = g_finger.png; sourceTree = "<group>"; };
  1320 + B891A40A2BCD13AB006CB06E /* g_life_indicator_dead.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = g_life_indicator_dead.png; sourceTree = "<group>"; };
  1321 + B891A40B2BCD13AB006CB06E /* g_life_indicator_ok.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = g_life_indicator_ok.png; sourceTree = "<group>"; };
  1322 + B891A40C2BCD13AB006CB06E /* level_halo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = level_halo.png; sourceTree = "<group>"; };
  1323 + B891A40F2BCD13AB006CB06E /* .gitkeep */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .gitkeep; sourceTree = "<group>"; };
  1324 + D63F3847140160A2204489BA /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
  1325 + D8C046A1A9C279FDBB5C174E /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
  1326 + F04D1DAE6591EAD461CBBE9A /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
  1327 +/* End PBXFileReference section */
  1328 +
  1329 +/* Begin PBXFrameworksBuildPhase section */
  1330 + 97C146EB1CF9000F007C117D /* Frameworks */ = {
  1331 + isa = PBXFrameworksBuildPhase;
  1332 + buildActionMask = 2147483647;
  1333 + files = (
  1334 + FB8AFCB0A8C34B5508A68F45 /* Pods_Runner.framework in Frameworks */,
  1335 + );
  1336 + runOnlyForDeploymentPostprocessing = 0;
  1337 + };
  1338 + C23E992F6BFFE604720B1F08 /* Frameworks */ = {
  1339 + isa = PBXFrameworksBuildPhase;
  1340 + buildActionMask = 2147483647;
  1341 + files = (
  1342 + F5FCE34FB9E028C20A7850DE /* Pods_RunnerTests.framework in Frameworks */,
  1343 + );
  1344 + runOnlyForDeploymentPostprocessing = 0;
  1345 + };
  1346 +/* End PBXFrameworksBuildPhase section */
  1347 +
  1348 +/* Begin PBXGroup section */
  1349 + 331C8082294A63A400263BE5 /* RunnerTests */ = {
  1350 + isa = PBXGroup;
  1351 + children = (
  1352 + 331C807B294A618700263BE5 /* RunnerTests.swift */,
  1353 + );
  1354 + path = RunnerTests;
  1355 + sourceTree = "<group>";
  1356 + };
  1357 + 340CE8403EC22FE8EE1FA3EF /* Pods */ = {
  1358 + isa = PBXGroup;
  1359 + children = (
  1360 + F04D1DAE6591EAD461CBBE9A /* Pods-Runner.debug.xcconfig */,
  1361 + 3563EC8D55A646823FD26A83 /* Pods-Runner.release.xcconfig */,
  1362 + 2DE9FE013448D0821175591C /* Pods-Runner.profile.xcconfig */,
  1363 + D63F3847140160A2204489BA /* Pods-RunnerTests.debug.xcconfig */,
  1364 + D8C046A1A9C279FDBB5C174E /* Pods-RunnerTests.release.xcconfig */,
  1365 + 48BCA0827DCB98991774F5AC /* Pods-RunnerTests.profile.xcconfig */,
  1366 + );
  1367 + path = Pods;
  1368 + sourceTree = "<group>";
  1369 + };
  1370 + 9740EEB11CF90186004384FC /* Flutter */ = {
  1371 + isa = PBXGroup;
  1372 + children = (
  1373 + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
  1374 + 9740EEB21CF90195004384FC /* Debug.xcconfig */,
  1375 + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
  1376 + 9740EEB31CF90195004384FC /* Generated.xcconfig */,
  1377 + );
  1378 + name = Flutter;
  1379 + sourceTree = "<group>";
  1380 + };
  1381 + 97C146E51CF9000F007C117D = {
  1382 + isa = PBXGroup;
  1383 + children = (
  1384 + B852D3ED2BCADF3600A53FC4 /* cocos2d_libs.xcodeproj */,
  1385 + 9740EEB11CF90186004384FC /* Flutter */,
  1386 + 97C146F01CF9000F007C117D /* Runner */,
  1387 + 97C146EF1CF9000F007C117D /* Products */,
  1388 + 331C8082294A63A400263BE5 /* RunnerTests */,
  1389 + 340CE8403EC22FE8EE1FA3EF /* Pods */,
  1390 + E653501EF99460B1BB76C5EE /* Frameworks */,
  1391 + );
  1392 + sourceTree = "<group>";
  1393 + };
  1394 + 97C146EF1CF9000F007C117D /* Products */ = {
  1395 + isa = PBXGroup;
  1396 + children = (
  1397 + 97C146EE1CF9000F007C117D /* Runner.app */,
  1398 + 331C8081294A63A400263BE5 /* RunnerTests.xctest */,
  1399 + );
  1400 + name = Products;
  1401 + sourceTree = "<group>";
  1402 + };
  1403 + 97C146F01CF9000F007C117D /* Runner */ = {
  1404 + isa = PBXGroup;
  1405 + children = (
  1406 + B891A25D2BCD102C006CB06E /* Wowgame */,
  1407 + 52450AF22A4ED0EC007B3E4B /* Runner.entitlements */,
  1408 + 97C146FA1CF9000F007C117D /* Main.storyboard */,
  1409 + 97C146FD1CF9000F007C117D /* Assets.xcassets */,
  1410 + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
  1411 + 97C147021CF9000F007C117D /* Info.plist */,
  1412 + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
  1413 + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
  1414 + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
  1415 + 52450AF02A4C415B007B3E4B /* XSMessageMehtodChannel.swift */,
  1416 + 525E17192A4BD03900104CDF /* VoiceXSMessageChannel.swift */,
  1417 + B852C1342BCABB5E00A53FC4 /* GameMessageChannel.swift */,
  1418 + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
  1419 + );
  1420 + path = Runner;
  1421 + sourceTree = "<group>";
  1422 + };
  1423 + B852D3EE2BCADF3600A53FC4 /* Products */ = {
  1424 + isa = PBXGroup;
  1425 + children = (
  1426 + B852D3FF2BCADF3700A53FC4 /* libcocos2d.a */,
  1427 + B852D4012BCADF3700A53FC4 /* libext_clipper.a */,
  1428 + B852D4032BCADF3700A53FC4 /* libext_convertUTF.a */,
  1429 + B852D4052BCADF3700A53FC4 /* libext_edtaa3func.a */,
  1430 + B852D4072BCADF3700A53FC4 /* libext_md5.a */,
  1431 + B852D4092BCADF3700A53FC4 /* libext_poly2tri.a */,
  1432 + B852D40B2BCADF3700A53FC4 /* libext_recast.a */,
  1433 + B852D40D2BCADF3700A53FC4 /* libext_tinyxml2.a */,
  1434 + B852D40F2BCADF3700A53FC4 /* libext_unzip.a */,
  1435 + B852D4112BCADF3700A53FC4 /* libext_xxhash.a */,
  1436 + B852D4132BCADF3700A53FC4 /* libext_xxtea.a */,
  1437 + B852D4152BCADF3700A53FC4 /* libexternal.a */,
  1438 + );
  1439 + name = Products;
  1440 + sourceTree = "<group>";
  1441 + };
  1442 + B891A25D2BCD102C006CB06E /* Wowgame */ = {
  1443 + isa = PBXGroup;
  1444 + children = (
  1445 + B891A2DF2BCD1392006CB06E /* Classes */,
  1446 + B891A4112BCD13AB006CB06E /* Resources */,
  1447 + );
  1448 + path = Wowgame;
  1449 + sourceTree = "<group>";
  1450 + };
  1451 + B891A2642BCD1392006CB06E /* Layers */ = {
  1452 + isa = PBXGroup;
  1453 + children = (
  1454 + B891A2622BCD1392006CB06E /* TouchInterceptingLayer.cpp */,
  1455 + B891A2632BCD1392006CB06E /* TouchInterceptingLayer.h */,
  1456 + );
  1457 + path = Layers;
  1458 + sourceTree = "<group>";
  1459 + };
  1460 + B891A26B2BCD1392006CB06E /* LevelPickerView */ = {
  1461 + isa = PBXGroup;
  1462 + children = (
  1463 + B891A2652BCD1392006CB06E /* LevelPickerLayer.cpp */,
  1464 + B891A2662BCD1392006CB06E /* LevelPickerLayer.h */,
  1465 + B891A2672BCD1392006CB06E /* LevelPickerView.cpp */,
  1466 + B891A2682BCD1392006CB06E /* LevelPickerView.h */,
  1467 + B891A2692BCD1392006CB06E /* SimpleLevelPickerView.cpp */,
  1468 + B891A26A2BCD1392006CB06E /* SimpleLevelPickerView.h */,
  1469 + );
  1470 + path = LevelPickerView;
  1471 + sourceTree = "<group>";
  1472 + };
  1473 + B891A27C2BCD1392006CB06E /* CustomViews */ = {
  1474 + isa = PBXGroup;
  1475 + children = (
  1476 + B891A2642BCD1392006CB06E /* Layers */,
  1477 + B891A26B2BCD1392006CB06E /* LevelPickerView */,
  1478 + B891A26C2BCD1392006CB06E /* AlertView.cpp */,
  1479 + B891A26D2BCD1392006CB06E /* AlertView.h */,
  1480 + B891A26E2BCD1392006CB06E /* AppLinksView.cpp */,
  1481 + B891A26F2BCD1392006CB06E /* AppLinksView.h */,
  1482 + B891A2702BCD1392006CB06E /* GameLifeIndicatorView.cpp */,
  1483 + B891A2712BCD1392006CB06E /* GameLifeIndicatorView.h */,
  1484 + B891A2722BCD1392006CB06E /* LevelView.cpp */,
  1485 + B891A2732BCD1392006CB06E /* LevelView.h */,
  1486 + B891A2742BCD1392006CB06E /* ParentalGateShowInterface.cpp */,
  1487 + B891A2752BCD1392006CB06E /* ParentalGateShowInterface.h */,
  1488 + B891A2762BCD1392006CB06E /* ParentalGateView.cpp */,
  1489 + B891A2772BCD1392006CB06E /* ParentalGateView.h */,
  1490 + B891A2782BCD1392006CB06E /* SettingsLayer.cpp */,
  1491 + B891A2792BCD1392006CB06E /* SettingsLayer.h */,
  1492 + B891A27A2BCD1392006CB06E /* TOSAcceptPopupView.cpp */,
  1493 + B891A27B2BCD1392006CB06E /* TOSAcceptPopupView.h */,
  1494 + );
  1495 + path = CustomViews;
  1496 + sourceTree = "<group>";
  1497 + };
  1498 + B891A28F2BCD1392006CB06E /* LayoutObjects */ = {
  1499 + isa = PBXGroup;
  1500 + children = (
  1501 + B891A27D2BCD1392006CB06E /* ChangingSprite.cpp */,
  1502 + B891A27E2BCD1392006CB06E /* ChangingSprite.h */,
  1503 + B891A27F2BCD1392006CB06E /* ContainerSprite.cpp */,
  1504 + B891A2802BCD1392006CB06E /* ContainerSprite.h */,
  1505 + B891A2812BCD1392006CB06E /* PlainLabel.cpp */,
  1506 + B891A2822BCD1392006CB06E /* PlainLabel.h */,
  1507 + B891A2832BCD1392006CB06E /* PlainNode.cpp */,
  1508 + B891A2842BCD1392006CB06E /* PlainNode.h */,
  1509 + B891A2852BCD1392006CB06E /* PlainSprite.cpp */,
  1510 + B891A2862BCD1392006CB06E /* PlainSprite.h */,
  1511 + B891A2872BCD1392006CB06E /* ProgressSliderNode.cpp */,
  1512 + B891A2882BCD1392006CB06E /* ProgressSliderNode.h */,
  1513 + B891A2892BCD1392006CB06E /* SimpleButton.cpp */,
  1514 + B891A28A2BCD1392006CB06E /* SimpleButton.h */,
  1515 + B891A28B2BCD1392006CB06E /* TouchableSprite.cpp */,
  1516 + B891A28C2BCD1392006CB06E /* TouchableSprite.h */,
  1517 + B891A28D2BCD1392006CB06E /* TwoStateButton.cpp */,
  1518 + B891A28E2BCD1392006CB06E /* TwoStateButton.h */,
  1519 + );
  1520 + path = LayoutObjects;
  1521 + sourceTree = "<group>";
  1522 + };
  1523 + B891A2962BCD1392006CB06E /* Misc */ = {
  1524 + isa = PBXGroup;
  1525 + children = (
  1526 + B891A2902BCD1392006CB06E /* MiscConfig.h */,
  1527 + B891A2912BCD1392006CB06E /* ResourcesConfig.cpp */,
  1528 + B891A2922BCD1392006CB06E /* ResourcesConfig.h */,
  1529 + B891A2932BCD1392006CB06E /* Strings.cpp */,
  1530 + B891A2942BCD1392006CB06E /* Strings.h */,
  1531 + B891A2952BCD1392006CB06E /* TouchHandlerTypes.h */,
  1532 + );
  1533 + path = Misc;
  1534 + sourceTree = "<group>";
  1535 + };
  1536 + B891A29B2BCD1392006CB06E /* GameParsing */ = {
  1537 + isa = PBXGroup;
  1538 + children = (
  1539 + B891A2992BCD1392006CB06E /* GameConfigParser.cpp */,
  1540 + B891A29A2BCD1392006CB06E /* GameConfigParser.h */,
  1541 + );
  1542 + path = GameParsing;
  1543 + sourceTree = "<group>";
  1544 + };
  1545 + B891A2A02BCD1392006CB06E /* LayoutParsing */ = {
  1546 + isa = PBXGroup;
  1547 + children = (
  1548 + B891A29C2BCD1392006CB06E /* LayoutObject.cpp */,
  1549 + B891A29D2BCD1392006CB06E /* LayoutObject.h */,
  1550 + B891A29E2BCD1392006CB06E /* LayoutParser.cpp */,
  1551 + B891A29F2BCD1392006CB06E /* LayoutParser.h */,
  1552 + );
  1553 + path = LayoutParsing;
  1554 + sourceTree = "<group>";
  1555 + };
  1556 + B891A2B42BCD1392006CB06E /* ScenarioParsing */ = {
  1557 + isa = PBXGroup;
  1558 + children = (
  1559 + B891A2A12BCD1392006CB06E /* ActionData.cpp */,
  1560 + B891A2A22BCD1392006CB06E /* ActionData.h */,
  1561 + B891A2AD2BCD1392006CB06E /* ScenarioObject.h */,
  1562 + B891A2B02BCD1392006CB06E /* SimpleValue.h */,
  1563 + B891A2B12BCD1392006CB06E /* TimeIndicatorInterface.h */,
  1564 + );
  1565 + path = ScenarioParsing;
  1566 + sourceTree = "<group>";
  1567 + };
  1568 + B891A2BC2BCD1392006CB06E /* Parsing */ = {
  1569 + isa = PBXGroup;
  1570 + children = (
  1571 + B891A29B2BCD1392006CB06E /* GameParsing */,
  1572 + B891A2A02BCD1392006CB06E /* LayoutParsing */,
  1573 + B891A2B42BCD1392006CB06E /* ScenarioParsing */,
  1574 + B891A2B52BCD1392006CB06E /* JSONParseUtils.cpp */,
  1575 + B891A2B62BCD1392006CB06E /* JSONParseUtils.h */,
  1576 + B891A2B72BCD1392006CB06E /* SimpleValue.h */,
  1577 + B891A2B82BCD1392006CB06E /* StaticActionParser.cpp */,
  1578 + B891A2B92BCD1392006CB06E /* StaticActionParser.h */,
  1579 + B891A2BA2BCD1392006CB06E /* ValueStorage.cpp */,
  1580 + B891A2BB2BCD1392006CB06E /* ValueStorage.h */,
  1581 + );
  1582 + path = Parsing;
  1583 + sourceTree = "<group>";
  1584 + };
  1585 + B891A2C12BCD1392006CB06E /* SubGameScenes */ = {
  1586 + isa = PBXGroup;
  1587 + children = (
  1588 + B891A2BD2BCD1392006CB06E /* SubGameScene.cpp */,
  1589 + B891A2BE2BCD1392006CB06E /* SubGameScene.h */,
  1590 + B891A2BF2BCD1392006CB06E /* SubGameSceneShoot.cpp */,
  1591 + B891A2C02BCD1392006CB06E /* SubGameSceneShoot.h */,
  1592 + );
  1593 + path = SubGameScenes;
  1594 + sourceTree = "<group>";
  1595 + };
  1596 + B891A2C82BCD1392006CB06E /* Scenes */ = {
  1597 + isa = PBXGroup;
  1598 + children = (
  1599 + B891A2C12BCD1392006CB06E /* SubGameScenes */,
  1600 + B891A2C42BCD1392006CB06E /* ParentScene.cpp */,
  1601 + B891A2C52BCD1392006CB06E /* ParentScene.h */,
  1602 + B891A2C62BCD1392006CB06E /* SceneWithUtils.cpp */,
  1603 + B891A2C72BCD1392006CB06E /* SceneWithUtils.h */,
  1604 + );
  1605 + path = Scenes;
  1606 + sourceTree = "<group>";
  1607 + };
  1608 + B891A2DB2BCD1392006CB06E /* Utils */ = {
  1609 + isa = PBXGroup;
  1610 + children = (
  1611 + B891A2C92BCD1392006CB06E /* DrawingUtils.cpp */,
  1612 + B891A2CA2BCD1392006CB06E /* DrawingUtils.h */,
  1613 + B891A2CB2BCD1392006CB06E /* GeometryUtils.cpp */,
  1614 + B891A2CC2BCD1392006CB06E /* GeometryUtils.h */,
  1615 + B891A2CD2BCD1392006CB06E /* MathUtils.cpp */,
  1616 + B891A2CE2BCD1392006CB06E /* MathUtils.h */,
  1617 + B891A2CF2BCD1392006CB06E /* MiscUtils.cpp */,
  1618 + B891A2D02BCD1392006CB06E /* MiscUtils.h */,
  1619 + B891A2D12BCD1392006CB06E /* ResourceUtilities.cpp */,
  1620 + B891A2D22BCD1392006CB06E /* ResourceUtilities.h */,
  1621 + B891A2D32BCD1392006CB06E /* ScalingUtils.cpp */,
  1622 + B891A2D42BCD1392006CB06E /* ScalingUtils.h */,
  1623 + B891A2D52BCD1392006CB06E /* SoundsRepo.cpp */,
  1624 + B891A2D62BCD1392006CB06E /* SoundsRepo.h */,
  1625 + B891A2D72BCD1392006CB06E /* SoundUtils.cpp */,
  1626 + B891A2D82BCD1392006CB06E /* SoundUtils.h */,
  1627 + B891A2D92BCD1392006CB06E /* StringUtils.cpp */,
  1628 + B891A2DA2BCD1392006CB06E /* StringUtils.h */,
  1629 + );
  1630 + path = Utils;
  1631 + sourceTree = "<group>";
  1632 + };
  1633 + B891A2DF2BCD1392006CB06E /* Classes */ = {
  1634 + isa = PBXGroup;
  1635 + children = (
  1636 + B891A27C2BCD1392006CB06E /* CustomViews */,
  1637 + B891A28F2BCD1392006CB06E /* LayoutObjects */,
  1638 + B891A2962BCD1392006CB06E /* Misc */,
  1639 + B891A2BC2BCD1392006CB06E /* Parsing */,
  1640 + B891A2C82BCD1392006CB06E /* Scenes */,
  1641 + B891A2DB2BCD1392006CB06E /* Utils */,
  1642 + );
  1643 + path = Classes;
  1644 + sourceTree = "<group>";
  1645 + };
  1646 + B891A3182BCD13AB006CB06E /* fonts */ = {
  1647 + isa = PBXGroup;
  1648 + children = (
  1649 + B891A3162BCD13AB006CB06E /* ComicSansMSBold.ttf */,
  1650 + B891A3172BCD13AB006CB06E /* ComicSansMSRegular.ttf */,
  1651 + );
  1652 + path = fonts;
  1653 + sourceTree = "<group>";
  1654 + };
  1655 + B891A31A2BCD13AB006CB06E /* shoot_game */ = {
  1656 + isa = PBXGroup;
  1657 + children = (
  1658 + B891A3192BCD13AB006CB06E /* gconfig.gcf */,
  1659 + );
  1660 + path = shoot_game;
  1661 + sourceTree = "<group>";
  1662 + };
  1663 + B891A31B2BCD13AB006CB06E /* games */ = {
  1664 + isa = PBXGroup;
  1665 + children = (
  1666 + B891A31A2BCD13AB006CB06E /* shoot_game */,
  1667 + );
  1668 + path = games;
  1669 + sourceTree = "<group>";
128 1670 };
129   -/* End PBXCopyFilesBuildPhase section */
130   -
131   -/* Begin PBXFileReference section */
132   - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
133   - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
134   - 2A3DBEAB6142776646A34D9C /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
135   - 2DE9FE013448D0821175591C /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
136   - 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
137   - 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
138   - 3563EC8D55A646823FD26A83 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
139   - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
140   - 48BCA0827DCB98991774F5AC /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
141   - 52450AF02A4C415B007B3E4B /* XSMessageMehtodChannel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XSMessageMehtodChannel.swift; sourceTree = "<group>"; };
142   - 52450AF22A4ED0EC007B3E4B /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
143   - 525E17192A4BD03900104CDF /* VoiceXSMessageChannel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoiceXSMessageChannel.swift; sourceTree = "<group>"; };
144   - 6DEBBC1D861BE053F3ECE0B9 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
145   - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
146   - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
147   - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
148   - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
149   - 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
150   - 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
151   - 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
152   - 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
153   - 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
154   - 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
155   - B852C1342BCABB5E00A53FC4 /* GameMessageChannel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameMessageChannel.swift; sourceTree = "<group>"; };
156   - B852D3ED2BCADF3600A53FC4 /* cocos2d_libs.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = cocos2d_libs.xcodeproj; path = cocosgame/engine/cocos/core/cocos2d_libs.xcodeproj; sourceTree = "<group>"; };
157   - D63F3847140160A2204489BA /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
158   - D8C046A1A9C279FDBB5C174E /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
159   - F04D1DAE6591EAD461CBBE9A /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
160   -/* End PBXFileReference section */
161   -
162   -/* Begin PBXFrameworksBuildPhase section */
163   - 97C146EB1CF9000F007C117D /* Frameworks */ = {
164   - isa = PBXFrameworksBuildPhase;
165   - buildActionMask = 2147483647;
166   - files = (
167   - FB8AFCB0A8C34B5508A68F45 /* Pods_Runner.framework in Frameworks */,
  1671 + B891A3382BCD13AB006CB06E /* game_shoot */ = {
  1672 + isa = PBXGroup;
  1673 + children = (
  1674 + B891A31C2BCD13AB006CB06E /* all_in_trolley.mp3 */,
  1675 + B891A31D2BCD13AB006CB06E /* apple.mp3 */,
  1676 + B891A31E2BCD13AB006CB06E /* banana.mp3 */,
  1677 + B891A31F2BCD13AB006CB06E /* cake.mp3 */,
  1678 + B891A3202BCD13AB006CB06E /* chocolate.mp3 */,
  1679 + B891A3212BCD13AB006CB06E /* cucumber.mp3 */,
  1680 + B891A3222BCD13AB006CB06E /* donut.mp3 */,
  1681 + B891A3232BCD13AB006CB06E /* effect_catapult.mp3 */,
  1682 + B891A3242BCD13AB006CB06E /* effect_hit.mp3 */,
  1683 + B891A3252BCD13AB006CB06E /* effect_in_trolley.mp3 */,
  1684 + B891A3262BCD13AB006CB06E /* hit_maggie.mp3 */,
  1685 + B891A3272BCD13AB006CB06E /* hit_steve.mp3 */,
  1686 + B891A3282BCD13AB006CB06E /* icecream.mp3 */,
  1687 + B891A3292BCD13AB006CB06E /* in_trolley.mp3 */,
  1688 + B891A32A2BCD13AB006CB06E /* not_apple.mp3 */,
  1689 + B891A32B2BCD13AB006CB06E /* not_banana.mp3 */,
  1690 + B891A32C2BCD13AB006CB06E /* not_cake.mp3 */,
  1691 + B891A32D2BCD13AB006CB06E /* not_chocolate.mp3 */,
  1692 + B891A32E2BCD13AB006CB06E /* not_cucumber.mp3 */,
  1693 + B891A32F2BCD13AB006CB06E /* not_donut.mp3 */,
  1694 + B891A3302BCD13AB006CB06E /* not_icecream.mp3 */,
  1695 + B891A3312BCD13AB006CB06E /* not_in_trolley.mp3 */,
  1696 + B891A3322BCD13AB006CB06E /* not_tomato.mp3 */,
  1697 + B891A3332BCD13AB006CB06E /* put_it_trolley.mp3 */,
  1698 + B891A3342BCD13AB006CB06E /* shop_closed.mp3 */,
  1699 + B891A3352BCD13AB006CB06E /* start.mp3 */,
  1700 + B891A3362BCD13AB006CB06E /* tomato.mp3 */,
  1701 + B891A3372BCD13AB006CB06E /* wrong_3_times.mp3 */,
168 1702 );
169   - runOnlyForDeploymentPostprocessing = 0;
  1703 + path = game_shoot;
  1704 + sourceTree = "<group>";
170 1705 };
171   - C23E992F6BFFE604720B1F08 /* Frameworks */ = {
172   - isa = PBXFrameworksBuildPhase;
173   - buildActionMask = 2147483647;
174   - files = (
175   - F5FCE34FB9E028C20A7850DE /* Pods_RunnerTests.framework in Frameworks */,
  1706 + B891A3422BCD13AB006CB06E /* games */ = {
  1707 + isa = PBXGroup;
  1708 + children = (
  1709 + B891A3382BCD13AB006CB06E /* game_shoot */,
  1710 + B891A3392BCD13AB006CB06E /* g_no.mp3 */,
  1711 + B891A33A2BCD13AB006CB06E /* g_oops.mp3 */,
  1712 + B891A33B2BCD13AB006CB06E /* g_uh_oh.mp3 */,
  1713 + B891A33C2BCD13AB006CB06E /* g_well_done.mp3 */,
  1714 + B891A33D2BCD13AB006CB06E /* g_whoo_hoo.mp3 */,
  1715 + B891A33E2BCD13AB006CB06E /* g_yeah.mp3 */,
  1716 + B891A33F2BCD13AB006CB06E /* maggie_super.mp3 */,
  1717 + B891A3402BCD13AB006CB06E /* maggie_thats_right.mp3 */,
  1718 + B891A3412BCD13AB006CB06E /* maggie_yeah.mp3 */,
176 1719 );
177   - runOnlyForDeploymentPostprocessing = 0;
  1720 + path = games;
  1721 + sourceTree = "<group>";
178 1722 };
179   -/* End PBXFrameworksBuildPhase section */
180   -
181   -/* Begin PBXGroup section */
182   - 331C8082294A63A400263BE5 /* RunnerTests */ = {
  1723 + B891A3442BCD13AB006CB06E /* level_picking */ = {
183 1724 isa = PBXGroup;
184 1725 children = (
185   - 331C807B294A618700263BE5 /* RunnerTests.swift */,
  1726 + B891A3432BCD13AB006CB06E /* g_pick_level.mp3 */,
186 1727 );
187   - path = RunnerTests;
  1728 + path = level_picking;
188 1729 sourceTree = "<group>";
189 1730 };
190   - 340CE8403EC22FE8EE1FA3EF /* Pods */ = {
  1731 + B891A3452BCD13AB006CB06E /* sounds */ = {
191 1732 isa = PBXGroup;
192 1733 children = (
193   - F04D1DAE6591EAD461CBBE9A /* Pods-Runner.debug.xcconfig */,
194   - 3563EC8D55A646823FD26A83 /* Pods-Runner.release.xcconfig */,
195   - 2DE9FE013448D0821175591C /* Pods-Runner.profile.xcconfig */,
196   - D63F3847140160A2204489BA /* Pods-RunnerTests.debug.xcconfig */,
197   - D8C046A1A9C279FDBB5C174E /* Pods-RunnerTests.release.xcconfig */,
198   - 48BCA0827DCB98991774F5AC /* Pods-RunnerTests.profile.xcconfig */,
  1734 + B891A3422BCD13AB006CB06E /* games */,
  1735 + B891A3442BCD13AB006CB06E /* level_picking */,
199 1736 );
200   - path = Pods;
  1737 + path = sounds;
201 1738 sourceTree = "<group>";
202 1739 };
203   - 9740EEB11CF90186004384FC /* Flutter */ = {
  1740 + B891A3462BCD13AB006CB06E /* common */ = {
204 1741 isa = PBXGroup;
205 1742 children = (
206   - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
207   - 9740EEB21CF90195004384FC /* Debug.xcconfig */,
208   - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
209   - 9740EEB31CF90195004384FC /* Generated.xcconfig */,
  1743 + B891A31B2BCD13AB006CB06E /* games */,
  1744 + B891A3452BCD13AB006CB06E /* sounds */,
210 1745 );
211   - name = Flutter;
  1746 + path = common;
212 1747 sourceTree = "<group>";
213 1748 };
214   - 97C146E51CF9000F007C117D = {
  1749 + B891A34D2BCD13AB006CB06E /* app_links */ = {
215 1750 isa = PBXGroup;
216 1751 children = (
217   - B852D3ED2BCADF3600A53FC4 /* cocos2d_libs.xcodeproj */,
218   - 9740EEB11CF90186004384FC /* Flutter */,
219   - 97C146F01CF9000F007C117D /* Runner */,
220   - 97C146EF1CF9000F007C117D /* Products */,
221   - 331C8082294A63A400263BE5 /* RunnerTests */,
222   - 340CE8403EC22FE8EE1FA3EF /* Pods */,
223   - E653501EF99460B1BB76C5EE /* Frameworks */,
  1752 + B891A3472BCD13AB006CB06E /* app_link_halloween.png */,
  1753 + B891A3482BCD13AB006CB06E /* app_link_toy.png */,
  1754 + B891A3492BCD13AB006CB06E /* doll_toy_app.png */,
  1755 + B891A34A2BCD13AB006CB06E /* halo_icon.png */,
  1756 + B891A34B2BCD13AB006CB06E /* steve_maggie.png */,
  1757 + B891A34C2BCD13AB006CB06E /* witch_halloween_app.png */,
224 1758 );
  1759 + path = app_links;
225 1760 sourceTree = "<group>";
226 1761 };
227   - 97C146EF1CF9000F007C117D /* Products */ = {
  1762 + B891A35E2BCD13AB006CB06E /* graphics */ = {
228 1763 isa = PBXGroup;
229 1764 children = (
230   - 97C146EE1CF9000F007C117D /* Runner.app */,
231   - 331C8081294A63A400263BE5 /* RunnerTests.xctest */,
  1765 + B891A34E2BCD13AB006CB06E /* button_back.png */,
  1766 + B891A34F2BCD13AB006CB06E /* button_go.png */,
  1767 + B891A3502BCD13AB006CB06E /* button_green.png */,
  1768 + B891A3512BCD13AB006CB06E /* button_grey.png */,
  1769 + B891A3522BCD13AB006CB06E /* button_orange.png */,
  1770 + B891A3532BCD13AB006CB06E /* button_pause.png */,
  1771 + B891A3542BCD13AB006CB06E /* button_purple.png */,
  1772 + B891A3552BCD13AB006CB06E /* button_red.png */,
  1773 + B891A3562BCD13AB006CB06E /* button_repeat.png */,
  1774 + B891A3572BCD13AB006CB06E /* button_setting.png */,
  1775 + B891A3582BCD13AB006CB06E /* button_sound_off.png */,
  1776 + B891A3592BCD13AB006CB06E /* button_sound_on.png */,
  1777 + B891A35A2BCD13AB006CB06E /* button_turquoise.png */,
  1778 + B891A35B2BCD13AB006CB06E /* button_yellow.png */,
  1779 + B891A35C2BCD13AB006CB06E /* buttonff.png */,
  1780 + B891A35D2BCD13AB006CB06E /* dark_green.png */,
232 1781 );
233   - name = Products;
  1782 + path = graphics;
234 1783 sourceTree = "<group>";
235 1784 };
236   - 97C146F01CF9000F007C117D /* Runner */ = {
  1785 + B891A3602BCD13AB006CB06E /* buttons */ = {
237 1786 isa = PBXGroup;
238 1787 children = (
239   - 52450AF22A4ED0EC007B3E4B /* Runner.entitlements */,
240   - 97C146FA1CF9000F007C117D /* Main.storyboard */,
241   - 97C146FD1CF9000F007C117D /* Assets.xcassets */,
242   - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
243   - 97C147021CF9000F007C117D /* Info.plist */,
244   - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
245   - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
246   - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
247   - 52450AF02A4C415B007B3E4B /* XSMessageMehtodChannel.swift */,
248   - 525E17192A4BD03900104CDF /* VoiceXSMessageChannel.swift */,
249   - B852C1342BCABB5E00A53FC4 /* GameMessageChannel.swift */,
250   - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
  1788 + B891A35E2BCD13AB006CB06E /* graphics */,
  1789 + B891A35F2BCD13AB006CB06E /* horizontalButtonPanelBackFFPause.obl */,
251 1790 );
252   - path = Runner;
  1791 + path = buttons;
253 1792 sourceTree = "<group>";
254 1793 };
255   - B852D3EE2BCADF3600A53FC4 /* Products */ = {
  1794 + B891A3642BCD13AB006CB06E /* levels */ = {
256 1795 isa = PBXGroup;
257 1796 children = (
258   - B852D3FF2BCADF3700A53FC4 /* libcocos2d.a */,
259   - B852D4012BCADF3700A53FC4 /* libext_clipper.a */,
260   - B852D4032BCADF3700A53FC4 /* libext_convertUTF.a */,
261   - B852D4052BCADF3700A53FC4 /* libext_edtaa3func.a */,
262   - B852D4072BCADF3700A53FC4 /* libext_md5.a */,
263   - B852D4092BCADF3700A53FC4 /* libext_poly2tri.a */,
264   - B852D40B2BCADF3700A53FC4 /* libext_recast.a */,
265   - B852D40D2BCADF3700A53FC4 /* libext_tinyxml2.a */,
266   - B852D40F2BCADF3700A53FC4 /* libext_unzip.a */,
267   - B852D4112BCADF3700A53FC4 /* libext_xxhash.a */,
268   - B852D4132BCADF3700A53FC4 /* libext_xxtea.a */,
269   - B852D4152BCADF3700A53FC4 /* libexternal.a */,
  1797 + B891A3612BCD13AB006CB06E /* level_1.png */,
  1798 + B891A3622BCD13AB006CB06E /* level_2.png */,
  1799 + B891A3632BCD13AB006CB06E /* level_3.png */,
270 1800 );
271   - name = Products;
  1801 + path = levels;
  1802 + sourceTree = "<group>";
  1803 + };
  1804 + B891A3712BCD13AB006CB06E /* shelf_food */ = {
  1805 + isa = PBXGroup;
  1806 + children = (
  1807 + B891A3652BCD13AB006CB06E /* apples.png */,
  1808 + B891A3662BCD13AB006CB06E /* baguettes.png */,
  1809 + B891A3672BCD13AB006CB06E /* bananas.png */,
  1810 + B891A3682BCD13AB006CB06E /* cakes.png */,
  1811 + B891A3692BCD13AB006CB06E /* chocolate.png */,
  1812 + B891A36A2BCD13AB006CB06E /* cucumbers.png */,
  1813 + B891A36B2BCD13AB006CB06E /* donuts.png */,
  1814 + B891A36C2BCD13AB006CB06E /* icecream.png */,
  1815 + B891A36D2BCD13AB006CB06E /* lettuce.png */,
  1816 + B891A36E2BCD13AB006CB06E /* milk.png */,
  1817 + B891A36F2BCD13AB006CB06E /* orange.png */,
  1818 + B891A3702BCD13AB006CB06E /* tomatoes.png */,
  1819 + );
  1820 + path = shelf_food;
  1821 + sourceTree = "<group>";
  1822 + };
  1823 + B891A38E2BCD13AB006CB06E /* single_food */ = {
  1824 + isa = PBXGroup;
  1825 + children = (
  1826 + B891A3722BCD13AB006CB06E /* apple_splodge.png */,
  1827 + B891A3732BCD13AB006CB06E /* apple1.png */,
  1828 + B891A3742BCD13AB006CB06E /* apple2.png */,
  1829 + B891A3752BCD13AB006CB06E /* baguette.png */,
  1830 + B891A3762BCD13AB006CB06E /* banana_splodge.png */,
  1831 + B891A3772BCD13AB006CB06E /* banana1.png */,
  1832 + B891A3782BCD13AB006CB06E /* banana2.png */,
  1833 + B891A3792BCD13AB006CB06E /* cake_splodge.png */,
  1834 + B891A37A2BCD13AB006CB06E /* cake1.png */,
  1835 + B891A37B2BCD13AB006CB06E /* cake2.png */,
  1836 + B891A37C2BCD13AB006CB06E /* chocolate_splodge.png */,
  1837 + B891A37D2BCD13AB006CB06E /* chocolate1.png */,
  1838 + B891A37E2BCD13AB006CB06E /* chocolate2.png */,
  1839 + B891A37F2BCD13AB006CB06E /* cucumber_splodge.png */,
  1840 + B891A3802BCD13AB006CB06E /* cucumber1.png */,
  1841 + B891A3812BCD13AB006CB06E /* cucumber2.png */,
  1842 + B891A3822BCD13AB006CB06E /* donut_splodge.png */,
  1843 + B891A3832BCD13AB006CB06E /* donut1.png */,
  1844 + B891A3842BCD13AB006CB06E /* donut2.png */,
  1845 + B891A3852BCD13AB006CB06E /* icecream_splodge.png */,
  1846 + B891A3862BCD13AB006CB06E /* icecream1.png */,
  1847 + B891A3872BCD13AB006CB06E /* icecream2.png */,
  1848 + B891A3882BCD13AB006CB06E /* lettuce.png */,
  1849 + B891A3892BCD13AB006CB06E /* milk.png */,
  1850 + B891A38A2BCD13AB006CB06E /* orange.png */,
  1851 + B891A38B2BCD13AB006CB06E /* tomato_splodge.png */,
  1852 + B891A38C2BCD13AB006CB06E /* tomato1.png */,
  1853 + B891A38D2BCD13AB006CB06E /* tomato2.png */,
  1854 + );
  1855 + path = single_food;
  1856 + sourceTree = "<group>";
  1857 + };
  1858 + B891A39E2BCD13AB006CB06E /* graphics */ = {
  1859 + isa = PBXGroup;
  1860 + children = (
  1861 + B891A3712BCD13AB006CB06E /* shelf_food */,
  1862 + B891A38E2BCD13AB006CB06E /* single_food */,
  1863 + B891A38F2BCD13AB006CB06E /* cart_back1.png */,
  1864 + B891A3902BCD13AB006CB06E /* cart_back2.png */,
  1865 + B891A3912BCD13AB006CB06E /* cart_front.png */,
  1866 + B891A3922BCD13AB006CB06E /* clock.png */,
  1867 + B891A3932BCD13AB006CB06E /* food_in_cart.png */,
  1868 + B891A3942BCD13AB006CB06E /* gum.png */,
  1869 + B891A3952BCD13AB006CB06E /* hand_leather.png */,
  1870 + B891A3962BCD13AB006CB06E /* hand_sling.png */,
  1871 + B891A3972BCD13AB006CB06E /* sling.png */,
  1872 + B891A3982BCD13AB006CB06E /* steve_head1.png */,
  1873 + B891A3992BCD13AB006CB06E /* steve_head2.png */,
  1874 + B891A39A2BCD13AB006CB06E /* steve_head3.png */,
  1875 + B891A39B2BCD13AB006CB06E /* steve_head4.png */,
  1876 + B891A39C2BCD13AB006CB06E /* steve_head5.png */,
  1877 + B891A39D2BCD13AB006CB06E /* wooden_shelf.png */,
  1878 + );
  1879 + path = graphics;
  1880 + sourceTree = "<group>";
  1881 + };
  1882 + B891A3A02BCD13AB006CB06E /* shoot_game */ = {
  1883 + isa = PBXGroup;
  1884 + children = (
  1885 + B891A39E2BCD13AB006CB06E /* graphics */,
  1886 + B891A39F2BCD13AB006CB06E /* scene_layout.scl */,
  1887 + );
  1888 + path = shoot_game;
  1889 + sourceTree = "<group>";
  1890 + };
  1891 + B891A3A32BCD13AB006CB06E /* tos_popup */ = {
  1892 + isa = PBXGroup;
  1893 + children = (
  1894 + B891A3A12BCD13AB006CB06E /* accept_button.png */,
  1895 + B891A3A22BCD13AB006CB06E /* accept_popup.png */,
  1896 + );
  1897 + path = tos_popup;
  1898 + sourceTree = "<group>";
  1899 + };
  1900 + B891A3A82BCD13AB006CB06E /* graphics */ = {
  1901 + isa = PBXGroup;
  1902 + children = (
  1903 + B891A3642BCD13AB006CB06E /* levels */,
  1904 + B891A3A02BCD13AB006CB06E /* shoot_game */,
  1905 + B891A3A32BCD13AB006CB06E /* tos_popup */,
  1906 + B891A3A42BCD13AB006CB06E /* g_finger.png */,
  1907 + B891A3A52BCD13AB006CB06E /* g_life_indicator_dead.png */,
  1908 + B891A3A62BCD13AB006CB06E /* g_life_indicator_ok.png */,
  1909 + B891A3A72BCD13AB006CB06E /* level_halo.png */,
  1910 + );
  1911 + path = graphics;
  1912 + sourceTree = "<group>";
  1913 + };
  1914 + B891A3A92BCD13AB006CB06E /* small */ = {
  1915 + isa = PBXGroup;
  1916 + children = (
  1917 + B891A34D2BCD13AB006CB06E /* app_links */,
  1918 + B891A3602BCD13AB006CB06E /* buttons */,
  1919 + B891A3A82BCD13AB006CB06E /* graphics */,
  1920 + );
  1921 + path = small;
  1922 + sourceTree = "<group>";
  1923 + };
  1924 + B891A3B02BCD13AB006CB06E /* app_links */ = {
  1925 + isa = PBXGroup;
  1926 + children = (
  1927 + B891A3AA2BCD13AB006CB06E /* app_link_halloween.png */,
  1928 + B891A3AB2BCD13AB006CB06E /* app_link_toy.png */,
  1929 + B891A3AC2BCD13AB006CB06E /* doll_toy_app.png */,
  1930 + B891A3AD2BCD13AB006CB06E /* halo_icon.png */,
  1931 + B891A3AE2BCD13AB006CB06E /* steve_maggie.png */,
  1932 + B891A3AF2BCD13AB006CB06E /* witch_halloween_app.png */,
  1933 + );
  1934 + path = app_links;
  1935 + sourceTree = "<group>";
  1936 + };
  1937 + B891A3C12BCD13AB006CB06E /* graphics */ = {
  1938 + isa = PBXGroup;
  1939 + children = (
  1940 + B891A3B12BCD13AB006CB06E /* button_back.png */,
  1941 + B891A3B22BCD13AB006CB06E /* button_go.png */,
  1942 + B891A3B32BCD13AB006CB06E /* button_green.png */,
  1943 + B891A3B42BCD13AB006CB06E /* button_grey.png */,
  1944 + B891A3B52BCD13AB006CB06E /* button_orange.png */,
  1945 + B891A3B62BCD13AB006CB06E /* button_pause.png */,
  1946 + B891A3B72BCD13AB006CB06E /* button_purple.png */,
  1947 + B891A3B82BCD13AB006CB06E /* button_red.png */,
  1948 + B891A3B92BCD13AB006CB06E /* button_repeat.png */,
  1949 + B891A3BA2BCD13AB006CB06E /* button_setting.png */,
  1950 + B891A3BB2BCD13AB006CB06E /* button_sound_off.png */,
  1951 + B891A3BC2BCD13AB006CB06E /* button_sound_on.png */,
  1952 + B891A3BD2BCD13AB006CB06E /* button_turquoise.png */,
  1953 + B891A3BE2BCD13AB006CB06E /* button_yellow.png */,
  1954 + B891A3BF2BCD13AB006CB06E /* buttonff.png */,
  1955 + B891A3C02BCD13AB006CB06E /* dark_green.png */,
  1956 + );
  1957 + path = graphics;
  1958 + sourceTree = "<group>";
  1959 + };
  1960 + B891A3C32BCD13AB006CB06E /* buttons */ = {
  1961 + isa = PBXGroup;
  1962 + children = (
  1963 + B891A3C12BCD13AB006CB06E /* graphics */,
  1964 + B891A3C22BCD13AB006CB06E /* horizontalButtonPanelBackFFPause.obl */,
  1965 + );
  1966 + path = buttons;
  1967 + sourceTree = "<group>";
  1968 + };
  1969 + B891A3C72BCD13AB006CB06E /* levels */ = {
  1970 + isa = PBXGroup;
  1971 + children = (
  1972 + B891A3C42BCD13AB006CB06E /* level_1.png */,
  1973 + B891A3C52BCD13AB006CB06E /* level_2.png */,
  1974 + B891A3C62BCD13AB006CB06E /* level_3.png */,
  1975 + );
  1976 + path = levels;
  1977 + sourceTree = "<group>";
  1978 + };
  1979 + B891A3D42BCD13AB006CB06E /* shelf_food */ = {
  1980 + isa = PBXGroup;
  1981 + children = (
  1982 + B891A3C82BCD13AB006CB06E /* apples.png */,
  1983 + B891A3C92BCD13AB006CB06E /* baguettes.png */,
  1984 + B891A3CA2BCD13AB006CB06E /* bananas.png */,
  1985 + B891A3CB2BCD13AB006CB06E /* cakes.png */,
  1986 + B891A3CC2BCD13AB006CB06E /* chocolate.png */,
  1987 + B891A3CD2BCD13AB006CB06E /* cucumbers.png */,
  1988 + B891A3CE2BCD13AB006CB06E /* donuts.png */,
  1989 + B891A3CF2BCD13AB006CB06E /* icecream.png */,
  1990 + B891A3D02BCD13AB006CB06E /* lettuce.png */,
  1991 + B891A3D12BCD13AB006CB06E /* milk.png */,
  1992 + B891A3D22BCD13AB006CB06E /* orange.png */,
  1993 + B891A3D32BCD13AB006CB06E /* tomatoes.png */,
  1994 + );
  1995 + path = shelf_food;
  1996 + sourceTree = "<group>";
  1997 + };
  1998 + B891A3F12BCD13AB006CB06E /* single_food */ = {
  1999 + isa = PBXGroup;
  2000 + children = (
  2001 + B891A3D52BCD13AB006CB06E /* apple_splodge.png */,
  2002 + B891A3D62BCD13AB006CB06E /* apple1.png */,
  2003 + B891A3D72BCD13AB006CB06E /* apple2.png */,
  2004 + B891A3D82BCD13AB006CB06E /* baguette.png */,
  2005 + B891A3D92BCD13AB006CB06E /* banana_splodge.png */,
  2006 + B891A3DA2BCD13AB006CB06E /* banana1.png */,
  2007 + B891A3DB2BCD13AB006CB06E /* banana2.png */,
  2008 + B891A3DC2BCD13AB006CB06E /* cake_splodge.png */,
  2009 + B891A3DD2BCD13AB006CB06E /* cake1.png */,
  2010 + B891A3DE2BCD13AB006CB06E /* cake2.png */,
  2011 + B891A3DF2BCD13AB006CB06E /* chocolate_splodge.png */,
  2012 + B891A3E02BCD13AB006CB06E /* chocolate1.png */,
  2013 + B891A3E12BCD13AB006CB06E /* chocolate2.png */,
  2014 + B891A3E22BCD13AB006CB06E /* cucumber_splodge.png */,
  2015 + B891A3E32BCD13AB006CB06E /* cucumber1.png */,
  2016 + B891A3E42BCD13AB006CB06E /* cucumber2.png */,
  2017 + B891A3E52BCD13AB006CB06E /* donut_splodge.png */,
  2018 + B891A3E62BCD13AB006CB06E /* donut1.png */,
  2019 + B891A3E72BCD13AB006CB06E /* donut2.png */,
  2020 + B891A3E82BCD13AB006CB06E /* icecream_splodge.png */,
  2021 + B891A3E92BCD13AB006CB06E /* icecream1.png */,
  2022 + B891A3EA2BCD13AB006CB06E /* icecream2.png */,
  2023 + B891A3EB2BCD13AB006CB06E /* lettuce.png */,
  2024 + B891A3EC2BCD13AB006CB06E /* milk.png */,
  2025 + B891A3ED2BCD13AB006CB06E /* orange.png */,
  2026 + B891A3EE2BCD13AB006CB06E /* tomato_splodge.png */,
  2027 + B891A3EF2BCD13AB006CB06E /* tomato1.png */,
  2028 + B891A3F02BCD13AB006CB06E /* tomato2.png */,
  2029 + );
  2030 + path = single_food;
  2031 + sourceTree = "<group>";
  2032 + };
  2033 + B891A4032BCD13AB006CB06E /* graphics */ = {
  2034 + isa = PBXGroup;
  2035 + children = (
  2036 + B891A3D42BCD13AB006CB06E /* shelf_food */,
  2037 + B891A3F12BCD13AB006CB06E /* single_food */,
  2038 + B891A3F22BCD13AB006CB06E /* background.png */,
  2039 + B891A3F32BCD13AB006CB06E /* cart_back1.png */,
  2040 + B891A3F42BCD13AB006CB06E /* cart_back2.png */,
  2041 + B891A3F52BCD13AB006CB06E /* cart_front.png */,
  2042 + B891A3F62BCD13AB006CB06E /* clock.png */,
  2043 + B891A3F72BCD13AB006CB06E /* food_in_cart.png */,
  2044 + B891A3F82BCD13AB006CB06E /* gum.png */,
  2045 + B891A3F92BCD13AB006CB06E /* hand_leather.png */,
  2046 + B891A3FA2BCD13AB006CB06E /* hand_sling.png */,
  2047 + B891A3FB2BCD13AB006CB06E /* sling.png */,
  2048 + B891A3FC2BCD13AB006CB06E /* steve_head1.png */,
  2049 + B891A3FD2BCD13AB006CB06E /* steve_head2.png */,
  2050 + B891A3FE2BCD13AB006CB06E /* steve_head3.png */,
  2051 + B891A3FF2BCD13AB006CB06E /* steve_head4.png */,
  2052 + B891A4002BCD13AB006CB06E /* steve_head5.png */,
  2053 + B891A4012BCD13AB006CB06E /* well_done_pic.png */,
  2054 + B891A4022BCD13AB006CB06E /* wooden_shelf.png */,
  2055 + );
  2056 + path = graphics;
  2057 + sourceTree = "<group>";
  2058 + };
  2059 + B891A4052BCD13AB006CB06E /* shoot_game */ = {
  2060 + isa = PBXGroup;
  2061 + children = (
  2062 + B891A4032BCD13AB006CB06E /* graphics */,
  2063 + B891A4042BCD13AB006CB06E /* scene_layout.scl */,
  2064 + );
  2065 + path = shoot_game;
  2066 + sourceTree = "<group>";
  2067 + };
  2068 + B891A4082BCD13AB006CB06E /* tos_popup */ = {
  2069 + isa = PBXGroup;
  2070 + children = (
  2071 + B891A4062BCD13AB006CB06E /* accept_button.png */,
  2072 + B891A4072BCD13AB006CB06E /* accept_popup.png */,
  2073 + );
  2074 + path = tos_popup;
  2075 + sourceTree = "<group>";
  2076 + };
  2077 + B891A40D2BCD13AB006CB06E /* graphics */ = {
  2078 + isa = PBXGroup;
  2079 + children = (
  2080 + B891A3C72BCD13AB006CB06E /* levels */,
  2081 + B891A4052BCD13AB006CB06E /* shoot_game */,
  2082 + B891A4082BCD13AB006CB06E /* tos_popup */,
  2083 + B891A4092BCD13AB006CB06E /* g_finger.png */,
  2084 + B891A40A2BCD13AB006CB06E /* g_life_indicator_dead.png */,
  2085 + B891A40B2BCD13AB006CB06E /* g_life_indicator_ok.png */,
  2086 + B891A40C2BCD13AB006CB06E /* level_halo.png */,
  2087 + );
  2088 + path = graphics;
  2089 + sourceTree = "<group>";
  2090 + };
  2091 + B891A40E2BCD13AB006CB06E /* xlarge */ = {
  2092 + isa = PBXGroup;
  2093 + children = (
  2094 + B891A3B02BCD13AB006CB06E /* app_links */,
  2095 + B891A3C32BCD13AB006CB06E /* buttons */,
  2096 + B891A40D2BCD13AB006CB06E /* graphics */,
  2097 + );
  2098 + path = xlarge;
  2099 + sourceTree = "<group>";
  2100 + };
  2101 + B891A4102BCD13AB006CB06E /* res */ = {
  2102 + isa = PBXGroup;
  2103 + children = (
  2104 + B891A3462BCD13AB006CB06E /* common */,
  2105 + B891A3A92BCD13AB006CB06E /* small */,
  2106 + B891A40E2BCD13AB006CB06E /* xlarge */,
  2107 + B891A40F2BCD13AB006CB06E /* .gitkeep */,
  2108 + );
  2109 + path = res;
  2110 + sourceTree = "<group>";
  2111 + };
  2112 + B891A4112BCD13AB006CB06E /* Resources */ = {
  2113 + isa = PBXGroup;
  2114 + children = (
  2115 + B891A3182BCD13AB006CB06E /* fonts */,
  2116 + B891A4102BCD13AB006CB06E /* res */,
  2117 + );
  2118 + path = Resources;
272 2119 sourceTree = "<group>";
273 2120 };
274 2121 E653501EF99460B1BB76C5EE /* Frameworks */ = {
... ... @@ -315,10 +2162,54 @@
315 2162 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
316 2163 7C15D12B84189A796384E28E /* [CP] Embed Pods Frameworks */,
317 2164 62E27B63BBBA522854453C53 /* [CP] Copy Pods Resources */,
  2165 + B891A4F12BCD17E2006CB06E /* CopyFiles */,
  2166 + B891A4F22BCD240A006CB06E /* CopyFiles */,
  2167 + B891A4F32BCD240C006CB06E /* CopyFiles */,
  2168 + B891A4F42BCD240D006CB06E /* CopyFiles */,
  2169 + B891A4F52BCD240E006CB06E /* CopyFiles */,
  2170 + B891A4F62BCD240F006CB06E /* CopyFiles */,
  2171 + B891A4F72BCD2410006CB06E /* CopyFiles */,
  2172 + B891A4F82BCD2411006CB06E /* CopyFiles */,
  2173 + B891A5062BCD24CE006CB06E /* CopyFiles */,
  2174 + B891A5072BCD24DF006CB06E /* CopyFiles */,
  2175 + B891A5082BCD24E0006CB06E /* CopyFiles */,
  2176 + B891A5092BCD24E1006CB06E /* CopyFiles */,
  2177 + B891A50A2BCD24E2006CB06E /* CopyFiles */,
  2178 + B891A50B2BCD24E3006CB06E /* CopyFiles */,
  2179 + B891A50C2BCD24E4006CB06E /* CopyFiles */,
  2180 + B891A50D2BCD24E5006CB06E /* CopyFiles */,
  2181 + B891A50E2BCD24E6006CB06E /* CopyFiles */,
  2182 + B891A54B2BCD261A006CB06E /* CopyFiles */,
  2183 + B891A54C2BCD261B006CB06E /* CopyFiles */,
  2184 + B891A54D2BCD261C006CB06E /* CopyFiles */,
  2185 + B891A54E2BCD261D006CB06E /* CopyFiles */,
  2186 + B891A54F2BCD261E006CB06E /* CopyFiles */,
  2187 + B891A5502BCD261F006CB06E /* CopyFiles */,
  2188 + B891A5512BCD2620006CB06E /* CopyFiles */,
  2189 + B891A5522BCD2621006CB06E /* CopyFiles */,
  2190 + B891A5532BCD2622006CB06E /* CopyFiles */,
  2191 + B891A5542BCD2623006CB06E /* CopyFiles */,
  2192 + B891A5552BCD2624006CB06E /* CopyFiles */,
  2193 + B891A5562BCD2625006CB06E /* CopyFiles */,
  2194 + B891A5C02BCD27CC006CB06E /* CopyFiles */,
  2195 + B891A5C12BCD27CD006CB06E /* CopyFiles */,
  2196 + B891A5C22BCD27CE006CB06E /* CopyFiles */,
318 2197 );
319 2198 buildRules = (
320 2199 );
321 2200 dependencies = (
  2201 + B891A2382BCD0799006CB06E /* PBXTargetDependency */,
  2202 + B891A25C2BCD07AE006CB06E /* PBXTargetDependency */,
  2203 + B891A24C2BCD07AE006CB06E /* PBXTargetDependency */,
  2204 + B891A24E2BCD07AE006CB06E /* PBXTargetDependency */,
  2205 + B891A2502BCD07AE006CB06E /* PBXTargetDependency */,
  2206 + B891A2522BCD07AE006CB06E /* PBXTargetDependency */,
  2207 + B891A2542BCD07AE006CB06E /* PBXTargetDependency */,
  2208 + B891A2562BCD07AE006CB06E /* PBXTargetDependency */,
  2209 + B891A2582BCD07AE006CB06E /* PBXTargetDependency */,
  2210 + B891A25A2BCD07AE006CB06E /* PBXTargetDependency */,
  2211 + B891A24A2BCD07A4006CB06E /* PBXTargetDependency */,
  2212 + B891A2482BCD07A0006CB06E /* PBXTargetDependency */,
322 2213 );
323 2214 name = Runner;
324 2215 productName = Runner;
... ... @@ -602,11 +2493,54 @@
602 2493 isa = PBXSourcesBuildPhase;
603 2494 buildActionMask = 2147483647;
604 2495 files = (
  2496 + B891A3112BCD1392006CB06E /* ScalingUtils.cpp in Sources */,
  2497 + B891A2F02BCD1392006CB06E /* PlainNode.cpp in Sources */,
  2498 + B891A3052BCD1392006CB06E /* StaticActionParser.cpp in Sources */,
  2499 + B891A30C2BCD1392006CB06E /* DrawingUtils.cpp in Sources */,
  2500 + B891A2E22BCD1392006CB06E /* LevelPickerLayer.cpp in Sources */,
605 2501 525E171A2A4BD03900104CDF /* VoiceXSMessageChannel.swift in Sources */,
  2502 + B891A3122BCD1392006CB06E /* SoundsRepo.cpp in Sources */,
  2503 + B891A2EC2BCD1392006CB06E /* TOSAcceptPopupView.cpp in Sources */,
  2504 + B891A30A2BCD1392006CB06E /* ParentScene.cpp in Sources */,
  2505 + B891A30F2BCD1392006CB06E /* MiscUtils.cpp in Sources */,
  2506 + B891A2F42BCD1392006CB06E /* TouchableSprite.cpp in Sources */,
606 2507 52450AF12A4C415B007B3E4B /* XSMessageMehtodChannel.swift in Sources */,
  2508 + B891A2F22BCD1392006CB06E /* ProgressSliderNode.cpp in Sources */,
  2509 + B891A2ED2BCD1392006CB06E /* ChangingSprite.cpp in Sources */,
  2510 + B891A2E42BCD1392006CB06E /* SimpleLevelPickerView.cpp in Sources */,
  2511 + B891A2E72BCD1392006CB06E /* GameLifeIndicatorView.cpp in Sources */,
  2512 + B891A2E52BCD1392006CB06E /* AlertView.cpp in Sources */,
  2513 + B891A2F12BCD1392006CB06E /* PlainSprite.cpp in Sources */,
  2514 + B891A2EB2BCD1392006CB06E /* SettingsLayer.cpp in Sources */,
  2515 + B891A3042BCD1392006CB06E /* JSONParseUtils.cpp in Sources */,
607 2516 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
  2517 + B891A2F72BCD1392006CB06E /* Strings.cpp in Sources */,
  2518 + B891A30E2BCD1392006CB06E /* MathUtils.cpp in Sources */,
  2519 + B891A3062BCD1392006CB06E /* ValueStorage.cpp in Sources */,
  2520 + B891A2F92BCD1392006CB06E /* GameConfigParser.cpp in Sources */,
  2521 + B891A2F32BCD1392006CB06E /* SimpleButton.cpp in Sources */,
  2522 + B891A2E62BCD1392006CB06E /* AppLinksView.cpp in Sources */,
  2523 + B891A3102BCD1392006CB06E /* ResourceUtilities.cpp in Sources */,
  2524 + B891A2EA2BCD1392006CB06E /* ParentalGateView.cpp in Sources */,
  2525 + B891A2E32BCD1392006CB06E /* LevelPickerView.cpp in Sources */,
  2526 + B891A2EF2BCD1392006CB06E /* PlainLabel.cpp in Sources */,
  2527 + B891A30B2BCD1392006CB06E /* SceneWithUtils.cpp in Sources */,
  2528 + B891A2FA2BCD1392006CB06E /* LayoutObject.cpp in Sources */,
  2529 + B891A2E92BCD1392006CB06E /* ParentalGateShowInterface.cpp in Sources */,
608 2530 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
  2531 + B891A30D2BCD1392006CB06E /* GeometryUtils.cpp in Sources */,
  2532 + B891A3072BCD1392006CB06E /* SubGameScene.cpp in Sources */,
  2533 + B891A2F62BCD1392006CB06E /* ResourcesConfig.cpp in Sources */,
  2534 + B891A2F52BCD1392006CB06E /* TwoStateButton.cpp in Sources */,
  2535 + B891A3142BCD1392006CB06E /* StringUtils.cpp in Sources */,
609 2536 B852C1352BCABB5E00A53FC4 /* GameMessageChannel.swift in Sources */,
  2537 + B891A2E82BCD1392006CB06E /* LevelView.cpp in Sources */,
  2538 + B891A2FC2BCD1392006CB06E /* ActionData.cpp in Sources */,
  2539 + B891A2E12BCD1392006CB06E /* TouchInterceptingLayer.cpp in Sources */,
  2540 + B891A3132BCD1392006CB06E /* SoundUtils.cpp in Sources */,
  2541 + B891A2EE2BCD1392006CB06E /* ContainerSprite.cpp in Sources */,
  2542 + B891A3082BCD1392006CB06E /* SubGameSceneShoot.cpp in Sources */,
  2543 + B891A2FB2BCD1392006CB06E /* LayoutParser.cpp in Sources */,
610 2544 );
611 2545 runOnlyForDeploymentPostprocessing = 0;
612 2546 };
... ... @@ -618,6 +2552,66 @@
618 2552 target = 97C146ED1CF9000F007C117D /* Runner */;
619 2553 targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */;
620 2554 };
  2555 + B891A2382BCD0799006CB06E /* PBXTargetDependency */ = {
  2556 + isa = PBXTargetDependency;
  2557 + name = cocos2d;
  2558 + targetProxy = B891A2372BCD0799006CB06E /* PBXContainerItemProxy */;
  2559 + };
  2560 + B891A2482BCD07A0006CB06E /* PBXTargetDependency */ = {
  2561 + isa = PBXTargetDependency;
  2562 + name = ext_clipper;
  2563 + targetProxy = B891A2472BCD07A0006CB06E /* PBXContainerItemProxy */;
  2564 + };
  2565 + B891A24A2BCD07A4006CB06E /* PBXTargetDependency */ = {
  2566 + isa = PBXTargetDependency;
  2567 + name = ext_convertUTF;
  2568 + targetProxy = B891A2492BCD07A4006CB06E /* PBXContainerItemProxy */;
  2569 + };
  2570 + B891A24C2BCD07AE006CB06E /* PBXTargetDependency */ = {
  2571 + isa = PBXTargetDependency;
  2572 + name = ext_edtaa3func;
  2573 + targetProxy = B891A24B2BCD07AE006CB06E /* PBXContainerItemProxy */;
  2574 + };
  2575 + B891A24E2BCD07AE006CB06E /* PBXTargetDependency */ = {
  2576 + isa = PBXTargetDependency;
  2577 + name = ext_md5;
  2578 + targetProxy = B891A24D2BCD07AE006CB06E /* PBXContainerItemProxy */;
  2579 + };
  2580 + B891A2502BCD07AE006CB06E /* PBXTargetDependency */ = {
  2581 + isa = PBXTargetDependency;
  2582 + name = ext_poly2tri;
  2583 + targetProxy = B891A24F2BCD07AE006CB06E /* PBXContainerItemProxy */;
  2584 + };
  2585 + B891A2522BCD07AE006CB06E /* PBXTargetDependency */ = {
  2586 + isa = PBXTargetDependency;
  2587 + name = ext_recast;
  2588 + targetProxy = B891A2512BCD07AE006CB06E /* PBXContainerItemProxy */;
  2589 + };
  2590 + B891A2542BCD07AE006CB06E /* PBXTargetDependency */ = {
  2591 + isa = PBXTargetDependency;
  2592 + name = ext_tinyxml2;
  2593 + targetProxy = B891A2532BCD07AE006CB06E /* PBXContainerItemProxy */;
  2594 + };
  2595 + B891A2562BCD07AE006CB06E /* PBXTargetDependency */ = {
  2596 + isa = PBXTargetDependency;
  2597 + name = ext_unzip;
  2598 + targetProxy = B891A2552BCD07AE006CB06E /* PBXContainerItemProxy */;
  2599 + };
  2600 + B891A2582BCD07AE006CB06E /* PBXTargetDependency */ = {
  2601 + isa = PBXTargetDependency;
  2602 + name = ext_xxhash;
  2603 + targetProxy = B891A2572BCD07AE006CB06E /* PBXContainerItemProxy */;
  2604 + };
  2605 + B891A25A2BCD07AE006CB06E /* PBXTargetDependency */ = {
  2606 + isa = PBXTargetDependency;
  2607 + name = ext_xxtea;
  2608 + targetProxy = B891A2592BCD07AE006CB06E /* PBXContainerItemProxy */;
  2609 + };
  2610 + B891A25C2BCD07AE006CB06E /* PBXTargetDependency */ = {
  2611 + isa = PBXTargetDependency;
  2612 + name = external;
  2613 + targetProxy = B891A25B2BCD07AE006CB06E /* PBXContainerItemProxy */;
  2614 + };
621 2615 /* End PBXTargetDependency section */
622 2616  
623 2617 /* Begin PBXVariantGroup section */
... ... @@ -706,6 +2700,131 @@
706 2700 "@executable_path/Frameworks",
707 2701 );
708 2702 MARKETING_VERSION = 1.0.2;
  2703 + OTHER_CFLAGS = (
  2704 + "-DNDEBUG",
  2705 + "'-std=gnu99'",
  2706 + );
  2707 + OTHER_CPLUSPLUSFLAGS = (
  2708 + "-DNDEBUG",
  2709 + "'-std=c++11'",
  2710 + );
  2711 + OTHER_LDFLAGS = (
  2712 + "-Wl,-headerpad_max_install_names",
  2713 + $SRCROOT/cocosgame/lib/Release/libext_tinyxml2.a,
  2714 + $SRCROOT/cocosgame/lib/Release/libext_xxhash.a,
  2715 + $SRCROOT/cocosgame/lib/Release/libext_clipper.a,
  2716 + $SRCROOT/cocosgame/lib/Release/libext_edtaa3func.a,
  2717 + $SRCROOT/cocosgame/lib/Release/libext_convertUTF.a,
  2718 + $SRCROOT/cocosgame/lib/Release/libext_recast.a,
  2719 + $SRCROOT/cocosgame/lib/Release/libext_unzip.a,
  2720 + $SRCROOT/cocosgame/lib/Release/libext_poly2tri.a,
  2721 + $SRCROOT/cocosgame/lib/Release/libext_md5.a,
  2722 + $SRCROOT/cocosgame/lib/Release/libext_xxtea.a,
  2723 + $SRCROOT/cocosgame/lib/Release/libexternal.a,
  2724 + $SRCROOT/cocosgame/lib/Release/libcocos2d.a,
  2725 + $SRCROOT/cocos2d/external/chipmunk/prebuilt/ios/libchipmunk.a,
  2726 + $SRCROOT/cocos2d/external/freetype2/prebuilt/ios/libfreetype.a,
  2727 + $SRCROOT/cocos2d/external/bullet/prebuilt/ios/libLinearMath.a,
  2728 + $SRCROOT/cocos2d/external/bullet/prebuilt/ios/libBulletCollision.a,
  2729 + $SRCROOT/cocos2d/external/bullet/prebuilt/ios/libBulletMultiThreaded.a,
  2730 + $SRCROOT/cocos2d/external/bullet/prebuilt/ios/libLinearMath.a,
  2731 + $SRCROOT/cocos2d/external/webp/prebuilt/ios/libwebp.a,
  2732 + $SRCROOT/cocos2d/external/bullet/prebuilt/ios/libMiniCL.a,
  2733 + $SRCROOT/cocos2d/external/jpeg/prebuilt/ios/libjpeg.a,
  2734 + $SRCROOT/cocos2d/external/websockets/prebuilt/ios/libwebsockets.a,
  2735 + $SRCROOT/cocos2d/external/openssl/prebuilt/ios/libssl.a,
  2736 + $SRCROOT/cocos2d/external/openssl/prebuilt/ios/libcrypto.a,
  2737 + $SRCROOT/cocos2d/external/bullet/prebuilt/ios/libBulletDynamics.a,
  2738 + $SRCROOT/cocos2d/external/uv/prebuilt/ios/libuv_a.a,
  2739 + $SRCROOT/cocos2d/external/curl/prebuilt/ios/libcurl.a,
  2740 + "$SRCROOT/cocos2d/external/glsl-optimizer/prebuilt/ios/libglcpp-library.a",
  2741 + $SRCROOT/cocos2d/external/png/prebuilt/ios/libpng.a,
  2742 + "$SRCROOT/cocos2d/external/glsl-optimizer/prebuilt/ios/libglsl_optimizer.a",
  2743 + "$SRCROOT/cocos2d/external/glsl-optimizer/prebuilt/ios/libmesa.a",
  2744 + $SRCROOT/cocos2d/external/Box2D/prebuilt/ios/libbox2d.a,
  2745 + "-framework",
  2746 + OpenGLES,
  2747 + "-framework",
  2748 + CoreMotion,
  2749 + "-framework",
  2750 + AVKit,
  2751 + "-framework",
  2752 + CoreMedia,
  2753 + "-framework",
  2754 + Security,
  2755 + "-framework",
  2756 + CoreGraphics,
  2757 + "-framework",
  2758 + WebKit,
  2759 + "-framework",
  2760 + OpenAL,
  2761 + "-framework",
  2762 + AudioToolbox,
  2763 + "-framework",
  2764 + GameController,
  2765 + "-framework",
  2766 + Metal,
  2767 + "-framework",
  2768 + CoreText,
  2769 + "-framework",
  2770 + Foundation,
  2771 + "-l",
  2772 + iconv,
  2773 + "$(inherited)",
  2774 + "-ObjC",
  2775 + "-l\"c++\"",
  2776 + "-l\"z\"",
  2777 + "-framework",
  2778 + "\"AVFoundation\"",
  2779 + "-framework",
  2780 + "\"CoreTelephony\"",
  2781 + "-framework",
  2782 + "\"MediaPlayer\"",
  2783 + "-framework",
  2784 + "\"QuartzCore\"",
  2785 + "-framework",
  2786 + "\"Reachability\"",
  2787 + "-framework",
  2788 + "\"SingSound\"",
  2789 + "-framework",
  2790 + "\"SystemConfiguration\"",
  2791 + "-framework",
  2792 + "\"Toast\"",
  2793 + "-framework",
  2794 + "\"audio_session\"",
  2795 + "-framework",
  2796 + "\"audioplayers_darwin\"",
  2797 + "-framework",
  2798 + "\"connectivity_plus\"",
  2799 + "-framework",
  2800 + "\"device_info_plus\"",
  2801 + "-framework",
  2802 + "\"flutter_sound\"",
  2803 + "-framework",
  2804 + "\"flutter_sound_core\"",
  2805 + "-framework",
  2806 + "\"fluttertoast\"",
  2807 + "-framework",
  2808 + "\"image_picker_ios\"",
  2809 + "-framework",
  2810 + "\"limiting_direction_csx\"",
  2811 + "-framework",
  2812 + "\"package_info_plus\"",
  2813 + "-framework",
  2814 + "\"path_provider_foundation\"",
  2815 + "-framework",
  2816 + "\"permission_handler_apple\"",
  2817 + "-framework",
  2818 + "\"shared_preferences_foundation\"",
  2819 + "-framework",
  2820 + "\"sqflite\"",
  2821 + "-framework",
  2822 + "\"url_launcher_ios\"",
  2823 + "-framework",
  2824 + "\"video_player_avfoundation\"",
  2825 + "-framework",
  2826 + "\"webview_flutter_wkwebview\"",
  2827 + );
709 2828 PRODUCT_BUNDLE_IDENTIFIER = com.kouyuxingqiu.wowenglish;
710 2829 PRODUCT_NAME = "$(TARGET_NAME)";
711 2830 SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
... ... @@ -714,6 +2833,39 @@
714 2833 SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
715 2834 SWIFT_VERSION = 5.0;
716 2835 TARGETED_DEVICE_FAMILY = "1,2";
  2836 + USER_HEADER_SEARCH_PATHS = (
  2837 + $SRCROOT/cocos2d,
  2838 + $SRCROOT/cocos2d/cocos,
  2839 + $SRCROOT/cocos2d/extensions,
  2840 + $SRCROOT/cocos2d/cocos/audio/include,
  2841 + $SRCROOT/cocos2d/cocos/platform,
  2842 + "$SRCROOT/cocos2d/cocos/editor-support",
  2843 + $SRCROOT/cocos2d/cocos/base,
  2844 + $SRCROOT/cocos2d/cocos/platform/ios,
  2845 + $SRCROOT/cocos2d/external/recast/..,
  2846 + $SRCROOT/cocos2d/external/tinyxml2/.,
  2847 + $SRCROOT/cocos2d/external/xxhash/.,
  2848 + $SRCROOT/cocos2d/external/xxtea/.,
  2849 + $SRCROOT/cocos2d/external/clipper/.,
  2850 + $SRCROOT/cocos2d/external/edtaa3func/.,
  2851 + $SRCROOT/cocos2d/external/ConvertUTF/.,
  2852 + $SRCROOT/cocos2d/external/poly2tri/..,
  2853 + $SRCROOT/cocos2d/external/md5/..,
  2854 + $SRCROOT/cocos2d/external/unzip/.,
  2855 + $SRCROOT/cocos2d/external/Box2D/include,
  2856 + $SRCROOT/cocos2d/external/chipmunk/include,
  2857 + $SRCROOT/cocos2d/external/freetype2/include/ios/freetype2,
  2858 + $SRCROOT/cocos2d/external/bullet/include,
  2859 + $SRCROOT/cocos2d/external/bullet/include/bullet,
  2860 + $SRCROOT/cocos2d/external/jpeg/include/ios,
  2861 + $SRCROOT/cocos2d/external/openssl/include/ios,
  2862 + $SRCROOT/cocos2d/external/uv/include,
  2863 + $SRCROOT/cocos2d/external/webp/include/ios,
  2864 + $SRCROOT/cocos2d/external/websockets/include/ios,
  2865 + $SRCROOT/cocos2d/external/curl/include/ios,
  2866 + $SRCROOT/cocos2d/external/png/include/ios,
  2867 + "$SRCROOT/cocos2d/external/glsl-optimizer/include",
  2868 + );
717 2869 VERSIONING_SYSTEM = "apple-generic";
718 2870 };
719 2871 name = Profile;
... ... @@ -885,12 +3037,154 @@
885 3037 CURRENT_PROJECT_VERSION = 2;
886 3038 DEVELOPMENT_TEAM = T8P9KW8GWH;
887 3039 ENABLE_BITCODE = NO;
  3040 + HEADER_SEARCH_PATHS = (
  3041 + "$(inherited)",
  3042 + "\"${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift/Reachability.framework/Headers\"",
  3043 + "\"${PODS_CONFIGURATION_BUILD_DIR}/Toast/Toast.framework/Headers\"",
  3044 + "\"${PODS_CONFIGURATION_BUILD_DIR}/audio_session/audio_session.framework/Headers\"",
  3045 + "\"${PODS_CONFIGURATION_BUILD_DIR}/audioplayers_darwin/audioplayers_darwin.framework/Headers\"",
  3046 + "\"${PODS_CONFIGURATION_BUILD_DIR}/connectivity_plus/connectivity_plus.framework/Headers\"",
  3047 + "\"${PODS_CONFIGURATION_BUILD_DIR}/device_info_plus/device_info_plus.framework/Headers\"",
  3048 + "\"${PODS_CONFIGURATION_BUILD_DIR}/flutter_sound/flutter_sound.framework/Headers\"",
  3049 + "\"${PODS_CONFIGURATION_BUILD_DIR}/flutter_sound_core/flutter_sound_core.framework/Headers\"",
  3050 + "\"${PODS_CONFIGURATION_BUILD_DIR}/fluttertoast/fluttertoast.framework/Headers\"",
  3051 + "\"${PODS_CONFIGURATION_BUILD_DIR}/image_picker_ios/image_picker_ios.framework/Headers\"",
  3052 + "\"${PODS_CONFIGURATION_BUILD_DIR}/limiting_direction_csx/limiting_direction_csx.framework/Headers\"",
  3053 + "\"${PODS_CONFIGURATION_BUILD_DIR}/package_info_plus/package_info_plus.framework/Headers\"",
  3054 + "\"${PODS_CONFIGURATION_BUILD_DIR}/path_provider_foundation/path_provider_foundation.framework/Headers\"",
  3055 + "\"${PODS_CONFIGURATION_BUILD_DIR}/permission_handler_apple/permission_handler_apple.framework/Headers\"",
  3056 + "\"${PODS_CONFIGURATION_BUILD_DIR}/shared_preferences_foundation/shared_preferences_foundation.framework/Headers\"",
  3057 + "\"${PODS_CONFIGURATION_BUILD_DIR}/sqflite/sqflite.framework/Headers\"",
  3058 + "\"${PODS_CONFIGURATION_BUILD_DIR}/url_launcher_ios/url_launcher_ios.framework/Headers\"",
  3059 + "\"${PODS_CONFIGURATION_BUILD_DIR}/video_player_avfoundation/video_player_avfoundation.framework/Headers\"",
  3060 + "\"${PODS_CONFIGURATION_BUILD_DIR}/webview_flutter_wkwebview/webview_flutter_wkwebview.framework/Headers\"",
  3061 + );
888 3062 INFOPLIST_FILE = Runner/Info.plist;
889 3063 LD_RUNPATH_SEARCH_PATHS = (
890 3064 "$(inherited)",
891 3065 "@executable_path/Frameworks",
892 3066 );
893 3067 MARKETING_VERSION = 1.0.2;
  3068 + ONLY_ACTIVE_ARCH = NO;
  3069 + OTHER_CFLAGS = "'-std=gnu99'";
  3070 + OTHER_CPLUSPLUSFLAGS = "'-std=c++11'";
  3071 + OTHER_LDFLAGS = (
  3072 + "-Wl,-headerpad_max_install_names",
  3073 + $SRCROOT/cocosgame/lib/Debug/libext_tinyxml2.a,
  3074 + $SRCROOT/cocosgame/lib/Debug/libext_xxhash.a,
  3075 + $SRCROOT/cocosgame/lib/Debug/libext_clipper.a,
  3076 + $SRCROOT/cocosgame/lib/Debug/libext_edtaa3func.a,
  3077 + $SRCROOT/cocosgame/lib/Debug/libext_convertUTF.a,
  3078 + $SRCROOT/cocosgame/lib/Debug/libext_recast.a,
  3079 + $SRCROOT/cocosgame/lib/Debug/libext_unzip.a,
  3080 + $SRCROOT/cocosgame/lib/Debug/libext_poly2tri.a,
  3081 + $SRCROOT/cocosgame/lib/Debug/libext_md5.a,
  3082 + $SRCROOT/cocosgame/lib/Debug/libext_xxtea.a,
  3083 + $SRCROOT/cocosgame/lib/Debug/libexternal.a,
  3084 + $SRCROOT/cocosgame/lib/Debug/libcocos2d.a,
  3085 + $SRCROOT/cocos2d/external/chipmunk/prebuilt/ios/libchipmunk.a,
  3086 + $SRCROOT/cocos2d/external/freetype2/prebuilt/ios/libfreetype.a,
  3087 + $SRCROOT/cocos2d/external/bullet/prebuilt/ios/libLinearMath.a,
  3088 + $SRCROOT/cocos2d/external/bullet/prebuilt/ios/libBulletCollision.a,
  3089 + $SRCROOT/cocos2d/external/bullet/prebuilt/ios/libBulletMultiThreaded.a,
  3090 + $SRCROOT/cocos2d/external/bullet/prebuilt/ios/libLinearMath.a,
  3091 + $SRCROOT/cocos2d/external/webp/prebuilt/ios/libwebp.a,
  3092 + $SRCROOT/cocos2d/external/bullet/prebuilt/ios/libMiniCL.a,
  3093 + $SRCROOT/cocos2d/external/jpeg/prebuilt/ios/libjpeg.a,
  3094 + $SRCROOT/cocos2d/external/websockets/prebuilt/ios/libwebsockets.a,
  3095 + $SRCROOT/cocos2d/external/openssl/prebuilt/ios/libssl.a,
  3096 + $SRCROOT/cocos2d/external/openssl/prebuilt/ios/libcrypto.a,
  3097 + $SRCROOT/cocos2d/external/bullet/prebuilt/ios/libBulletDynamics.a,
  3098 + $SRCROOT/cocos2d/external/uv/prebuilt/ios/libuv_a.a,
  3099 + $SRCROOT/cocos2d/external/curl/prebuilt/ios/libcurl.a,
  3100 + "$SRCROOT/cocos2d/external/glsl-optimizer/prebuilt/ios/libglcpp-library.a",
  3101 + $SRCROOT/cocos2d/external/png/prebuilt/ios/libpng.a,
  3102 + "$SRCROOT/cocos2d/external/glsl-optimizer/prebuilt/ios/libglsl_optimizer.a",
  3103 + "$SRCROOT/cocos2d/external/glsl-optimizer/prebuilt/ios/libmesa.a",
  3104 + $SRCROOT/cocos2d/external/Box2D/prebuilt/ios/libbox2d.a,
  3105 + "-framework",
  3106 + OpenGLES,
  3107 + "-framework",
  3108 + CoreMotion,
  3109 + "-framework",
  3110 + AVKit,
  3111 + "-framework",
  3112 + CoreMedia,
  3113 + "-framework",
  3114 + Security,
  3115 + "-framework",
  3116 + CoreGraphics,
  3117 + "-framework",
  3118 + WebKit,
  3119 + "-framework",
  3120 + OpenAL,
  3121 + "-framework",
  3122 + AudioToolbox,
  3123 + "-framework",
  3124 + GameController,
  3125 + "-framework",
  3126 + Metal,
  3127 + "-framework",
  3128 + CoreText,
  3129 + "-framework",
  3130 + Foundation,
  3131 + "-l",
  3132 + iconv,
  3133 + "$(inherited)",
  3134 + "-ObjC",
  3135 + "-l\"c++\"",
  3136 + "-l\"z\"",
  3137 + "-framework",
  3138 + "\"AVFoundation\"",
  3139 + "-framework",
  3140 + "\"CoreTelephony\"",
  3141 + "-framework",
  3142 + "\"MediaPlayer\"",
  3143 + "-framework",
  3144 + "\"QuartzCore\"",
  3145 + "-framework",
  3146 + "\"Reachability\"",
  3147 + "-framework",
  3148 + "\"SingSound\"",
  3149 + "-framework",
  3150 + "\"SystemConfiguration\"",
  3151 + "-framework",
  3152 + "\"Toast\"",
  3153 + "-framework",
  3154 + "\"audio_session\"",
  3155 + "-framework",
  3156 + "\"audioplayers_darwin\"",
  3157 + "-framework",
  3158 + "\"connectivity_plus\"",
  3159 + "-framework",
  3160 + "\"device_info_plus\"",
  3161 + "-framework",
  3162 + "\"flutter_sound\"",
  3163 + "-framework",
  3164 + "\"flutter_sound_core\"",
  3165 + "-framework",
  3166 + "\"fluttertoast\"",
  3167 + "-framework",
  3168 + "\"image_picker_ios\"",
  3169 + "-framework",
  3170 + "\"limiting_direction_csx\"",
  3171 + "-framework",
  3172 + "\"package_info_plus\"",
  3173 + "-framework",
  3174 + "\"path_provider_foundation\"",
  3175 + "-framework",
  3176 + "\"permission_handler_apple\"",
  3177 + "-framework",
  3178 + "\"shared_preferences_foundation\"",
  3179 + "-framework",
  3180 + "\"sqflite\"",
  3181 + "-framework",
  3182 + "\"url_launcher_ios\"",
  3183 + "-framework",
  3184 + "\"video_player_avfoundation\"",
  3185 + "-framework",
  3186 + "\"webview_flutter_wkwebview\"",
  3187 + );
894 3188 PRODUCT_BUNDLE_IDENTIFIER = com.kouyuxingqiu.wowenglish;
895 3189 PRODUCT_NAME = "$(TARGET_NAME)";
896 3190 SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
... ... @@ -900,6 +3194,39 @@
900 3194 SWIFT_OPTIMIZATION_LEVEL = "-Onone";
901 3195 SWIFT_VERSION = 5.0;
902 3196 TARGETED_DEVICE_FAMILY = "1,2";
  3197 + USER_HEADER_SEARCH_PATHS = (
  3198 + $SRCROOT/cocos2d,
  3199 + $SRCROOT/cocos2d/cocos,
  3200 + $SRCROOT/cocos2d/extensions,
  3201 + $SRCROOT/cocos2d/cocos/audio/include,
  3202 + $SRCROOT/cocos2d/cocos/platform,
  3203 + "$SRCROOT/cocos2d/cocos/editor-support",
  3204 + $SRCROOT/cocos2d/cocos/base,
  3205 + $SRCROOT/cocos2d/cocos/platform/ios,
  3206 + $SRCROOT/cocos2d/external/recast/..,
  3207 + $SRCROOT/cocos2d/external/tinyxml2/.,
  3208 + $SRCROOT/cocos2d/external/xxhash/.,
  3209 + $SRCROOT/cocos2d/external/xxtea/.,
  3210 + $SRCROOT/cocos2d/external/clipper/.,
  3211 + $SRCROOT/cocos2d/external/edtaa3func/.,
  3212 + $SRCROOT/cocos2d/external/ConvertUTF/.,
  3213 + $SRCROOT/cocos2d/external/poly2tri/..,
  3214 + $SRCROOT/cocos2d/external/md5/..,
  3215 + $SRCROOT/cocos2d/external/unzip/.,
  3216 + $SRCROOT/cocos2d/external/Box2D/include,
  3217 + $SRCROOT/cocos2d/external/chipmunk/include,
  3218 + $SRCROOT/cocos2d/external/freetype2/include/ios/freetype2,
  3219 + $SRCROOT/cocos2d/external/bullet/include,
  3220 + $SRCROOT/cocos2d/external/bullet/include/bullet,
  3221 + $SRCROOT/cocos2d/external/jpeg/include/ios,
  3222 + $SRCROOT/cocos2d/external/openssl/include/ios,
  3223 + $SRCROOT/cocos2d/external/uv/include,
  3224 + $SRCROOT/cocos2d/external/webp/include/ios,
  3225 + $SRCROOT/cocos2d/external/websockets/include/ios,
  3226 + $SRCROOT/cocos2d/external/curl/include/ios,
  3227 + $SRCROOT/cocos2d/external/png/include/ios,
  3228 + "$SRCROOT/cocos2d/external/glsl-optimizer/include",
  3229 + );
903 3230 VERSIONING_SYSTEM = "apple-generic";
904 3231 };
905 3232 name = Debug;
... ... @@ -920,6 +3247,131 @@
920 3247 "@executable_path/Frameworks",
921 3248 );
922 3249 MARKETING_VERSION = 1.0.2;
  3250 + OTHER_CFLAGS = (
  3251 + "-DNDEBUG",
  3252 + "'-std=gnu99'",
  3253 + );
  3254 + OTHER_CPLUSPLUSFLAGS = (
  3255 + "-DNDEBUG",
  3256 + "'-std=c++11'",
  3257 + );
  3258 + OTHER_LDFLAGS = (
  3259 + "-Wl,-headerpad_max_install_names",
  3260 + $SRCROOT/cocosgame/lib/Release/libext_tinyxml2.a,
  3261 + $SRCROOT/cocosgame/lib/Release/libext_xxhash.a,
  3262 + $SRCROOT/cocosgame/lib/Release/libext_clipper.a,
  3263 + $SRCROOT/cocosgame/lib/Release/libext_edtaa3func.a,
  3264 + $SRCROOT/cocosgame/lib/Release/libext_convertUTF.a,
  3265 + $SRCROOT/cocosgame/lib/Release/libext_recast.a,
  3266 + $SRCROOT/cocosgame/lib/Release/libext_unzip.a,
  3267 + $SRCROOT/cocosgame/lib/Release/libext_poly2tri.a,
  3268 + $SRCROOT/cocosgame/lib/Release/libext_md5.a,
  3269 + $SRCROOT/cocosgame/lib/Release/libext_xxtea.a,
  3270 + $SRCROOT/cocosgame/lib/Release/libexternal.a,
  3271 + $SRCROOT/cocosgame/lib/Release/libcocos2d.a,
  3272 + $SRCROOT/cocos2d/external/chipmunk/prebuilt/ios/libchipmunk.a,
  3273 + $SRCROOT/cocos2d/external/freetype2/prebuilt/ios/libfreetype.a,
  3274 + $SRCROOT/cocos2d/external/bullet/prebuilt/ios/libLinearMath.a,
  3275 + $SRCROOT/cocos2d/external/bullet/prebuilt/ios/libBulletCollision.a,
  3276 + $SRCROOT/cocos2d/external/bullet/prebuilt/ios/libBulletMultiThreaded.a,
  3277 + $SRCROOT/cocos2d/external/bullet/prebuilt/ios/libLinearMath.a,
  3278 + $SRCROOT/cocos2d/external/webp/prebuilt/ios/libwebp.a,
  3279 + $SRCROOT/cocos2d/external/bullet/prebuilt/ios/libMiniCL.a,
  3280 + $SRCROOT/cocos2d/external/jpeg/prebuilt/ios/libjpeg.a,
  3281 + $SRCROOT/cocos2d/external/websockets/prebuilt/ios/libwebsockets.a,
  3282 + $SRCROOT/cocos2d/external/openssl/prebuilt/ios/libssl.a,
  3283 + $SRCROOT/cocos2d/external/openssl/prebuilt/ios/libcrypto.a,
  3284 + $SRCROOT/cocos2d/external/bullet/prebuilt/ios/libBulletDynamics.a,
  3285 + $SRCROOT/cocos2d/external/uv/prebuilt/ios/libuv_a.a,
  3286 + $SRCROOT/cocos2d/external/curl/prebuilt/ios/libcurl.a,
  3287 + "$SRCROOT/cocos2d/external/glsl-optimizer/prebuilt/ios/libglcpp-library.a",
  3288 + $SRCROOT/cocos2d/external/png/prebuilt/ios/libpng.a,
  3289 + "$SRCROOT/cocos2d/external/glsl-optimizer/prebuilt/ios/libglsl_optimizer.a",
  3290 + "$SRCROOT/cocos2d/external/glsl-optimizer/prebuilt/ios/libmesa.a",
  3291 + $SRCROOT/cocos2d/external/Box2D/prebuilt/ios/libbox2d.a,
  3292 + "-framework",
  3293 + OpenGLES,
  3294 + "-framework",
  3295 + CoreMotion,
  3296 + "-framework",
  3297 + AVKit,
  3298 + "-framework",
  3299 + CoreMedia,
  3300 + "-framework",
  3301 + Security,
  3302 + "-framework",
  3303 + CoreGraphics,
  3304 + "-framework",
  3305 + WebKit,
  3306 + "-framework",
  3307 + OpenAL,
  3308 + "-framework",
  3309 + AudioToolbox,
  3310 + "-framework",
  3311 + GameController,
  3312 + "-framework",
  3313 + Metal,
  3314 + "-framework",
  3315 + CoreText,
  3316 + "-framework",
  3317 + Foundation,
  3318 + "-l",
  3319 + iconv,
  3320 + "$(inherited)",
  3321 + "-ObjC",
  3322 + "-l\"c++\"",
  3323 + "-l\"z\"",
  3324 + "-framework",
  3325 + "\"AVFoundation\"",
  3326 + "-framework",
  3327 + "\"CoreTelephony\"",
  3328 + "-framework",
  3329 + "\"MediaPlayer\"",
  3330 + "-framework",
  3331 + "\"QuartzCore\"",
  3332 + "-framework",
  3333 + "\"Reachability\"",
  3334 + "-framework",
  3335 + "\"SingSound\"",
  3336 + "-framework",
  3337 + "\"SystemConfiguration\"",
  3338 + "-framework",
  3339 + "\"Toast\"",
  3340 + "-framework",
  3341 + "\"audio_session\"",
  3342 + "-framework",
  3343 + "\"audioplayers_darwin\"",
  3344 + "-framework",
  3345 + "\"connectivity_plus\"",
  3346 + "-framework",
  3347 + "\"device_info_plus\"",
  3348 + "-framework",
  3349 + "\"flutter_sound\"",
  3350 + "-framework",
  3351 + "\"flutter_sound_core\"",
  3352 + "-framework",
  3353 + "\"fluttertoast\"",
  3354 + "-framework",
  3355 + "\"image_picker_ios\"",
  3356 + "-framework",
  3357 + "\"limiting_direction_csx\"",
  3358 + "-framework",
  3359 + "\"package_info_plus\"",
  3360 + "-framework",
  3361 + "\"path_provider_foundation\"",
  3362 + "-framework",
  3363 + "\"permission_handler_apple\"",
  3364 + "-framework",
  3365 + "\"shared_preferences_foundation\"",
  3366 + "-framework",
  3367 + "\"sqflite\"",
  3368 + "-framework",
  3369 + "\"url_launcher_ios\"",
  3370 + "-framework",
  3371 + "\"video_player_avfoundation\"",
  3372 + "-framework",
  3373 + "\"webview_flutter_wkwebview\"",
  3374 + );
923 3375 PRODUCT_BUNDLE_IDENTIFIER = com.kouyuxingqiu.wowenglish;
924 3376 PRODUCT_NAME = "$(TARGET_NAME)";
925 3377 SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
... ... @@ -928,6 +3380,39 @@
928 3380 SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
929 3381 SWIFT_VERSION = 5.0;
930 3382 TARGETED_DEVICE_FAMILY = "1,2";
  3383 + USER_HEADER_SEARCH_PATHS = (
  3384 + $SRCROOT/cocos2d,
  3385 + $SRCROOT/cocos2d/cocos,
  3386 + $SRCROOT/cocos2d/extensions,
  3387 + $SRCROOT/cocos2d/cocos/audio/include,
  3388 + $SRCROOT/cocos2d/cocos/platform,
  3389 + "$SRCROOT/cocos2d/cocos/editor-support",
  3390 + $SRCROOT/cocos2d/cocos/base,
  3391 + $SRCROOT/cocos2d/cocos/platform/ios,
  3392 + $SRCROOT/cocos2d/external/recast/..,
  3393 + $SRCROOT/cocos2d/external/tinyxml2/.,
  3394 + $SRCROOT/cocos2d/external/xxhash/.,
  3395 + $SRCROOT/cocos2d/external/xxtea/.,
  3396 + $SRCROOT/cocos2d/external/clipper/.,
  3397 + $SRCROOT/cocos2d/external/edtaa3func/.,
  3398 + $SRCROOT/cocos2d/external/ConvertUTF/.,
  3399 + $SRCROOT/cocos2d/external/poly2tri/..,
  3400 + $SRCROOT/cocos2d/external/md5/..,
  3401 + $SRCROOT/cocos2d/external/unzip/.,
  3402 + $SRCROOT/cocos2d/external/Box2D/include,
  3403 + $SRCROOT/cocos2d/external/chipmunk/include,
  3404 + $SRCROOT/cocos2d/external/freetype2/include/ios/freetype2,
  3405 + $SRCROOT/cocos2d/external/bullet/include,
  3406 + $SRCROOT/cocos2d/external/bullet/include/bullet,
  3407 + $SRCROOT/cocos2d/external/jpeg/include/ios,
  3408 + $SRCROOT/cocos2d/external/openssl/include/ios,
  3409 + $SRCROOT/cocos2d/external/uv/include,
  3410 + $SRCROOT/cocos2d/external/webp/include/ios,
  3411 + $SRCROOT/cocos2d/external/websockets/include/ios,
  3412 + $SRCROOT/cocos2d/external/curl/include/ios,
  3413 + $SRCROOT/cocos2d/external/png/include/ios,
  3414 + "$SRCROOT/cocos2d/external/glsl-optimizer/include",
  3415 + );
931 3416 VERSIONING_SYSTEM = "apple-generic";
932 3417 };
933 3418 name = Release;
... ...
ios/Runner/Wowgame/Classes/AndroidUtils_cpp.h 0 → 100644
  1 +//
  2 +// Created by Katarzyna Kalinowska-Górska on 2020-01-24.
  3 +//
  4 +
  5 +#ifndef PROJ_ANDROID_ANDROIDUTILS_CPP_H
  6 +#define PROJ_ANDROID_ANDROIDUTILS_CPP_H
  7 +
  8 +int androidUtils_osApiVersion();
  9 +
  10 +
  11 +#endif //PROJ_ANDROID_ANDROIDUTILS_CPP_H
... ...
ios/Runner/Wowgame/Classes/AppDelegate.cpp 0 → 100644
  1 +/****************************************************************************
  2 + Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
  3 +
  4 + http://www.cocos2d-x.org
  5 +
  6 + Permission is hereby granted, free of charge, to any person obtaining a copy
  7 + of this software and associated documentation files (the "Software"), to deal
  8 + in the Software without restriction, including without limitation the rights
  9 + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  10 + copies of the Software, and to permit persons to whom the Software is
  11 + furnished to do so, subject to the following conditions:
  12 +
  13 + The above copyright notice and this permission notice shall be included in
  14 + all copies or substantial portions of the Software.
  15 +
  16 + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17 + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18 + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  19 + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20 + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  21 + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  22 + THE SOFTWARE.
  23 + ****************************************************************************/
  24 +
  25 +#include "AppDelegate.h"
  26 +#include "GameConfigParser.h"
  27 +#include "ResourcesConfig.h"
  28 +#include "MiscUtils.h"
  29 +#include "SoundsRepo.h"
  30 +#include "ScalingUtils.h"
  31 +
  32 + #define USE_AUDIO_ENGINE 1
  33 +
  34 +#if USE_AUDIO_ENGINE
  35 +#include "audio/include/AudioEngine.h"
  36 +#endif
  37 +
  38 +USING_NS_CC;
  39 +
  40 +static cocos2d::Size designResolutionSize = cocos2d::Size(2732, 2048);
  41 +static cocos2d::Size tinyResolutionSize = cocos2d::Size(1366, 1024);
  42 +
  43 +AppDelegate::AppDelegate()
  44 +{
  45 +}
  46 +
  47 +AppDelegate::~AppDelegate()
  48 +{
  49 + AudioEngine::end();
  50 +}
  51 +
  52 +// if you want a different context, modify the value of glContextAttrs
  53 +// it will affect all platforms
  54 +void AppDelegate::initGLContextAttrs()
  55 +{
  56 + // set OpenGL context attributes: red,green,blue,alpha,depth,stencil,multisamplesCount
  57 + GLContextAttrs glContextAttrs = {8, 8, 8, 8, 24, 8, 0};
  58 +
  59 + GLView::setGLContextAttrs(glContextAttrs);
  60 +}
  61 +
  62 +// if you want to use the package manager to install more packages,
  63 +// don't modify or remove this function
  64 +static int register_all_packages()
  65 +{
  66 + return 0; //flag for packages manager
  67 +}
  68 +
  69 +bool AppDelegate::applicationDidFinishLaunching() {
  70 +
  71 + // initialize director
  72 + auto director = Director::getInstance();
  73 + auto glview = director->getOpenGLView();
  74 + if(!glview) {
  75 + glview = GLViewImpl::create("Steve and Maggie Food App");
  76 + director->setOpenGLView(glview);
  77 + }
  78 +
  79 + // turn on display FPS
  80 +// director->setDisplayStats(true); //TODO remove this
  81 +
  82 + auto searchPaths = cocos2d::FileUtils::getInstance()->getSearchPaths();
  83 +// std::string deviceSpecificFolderName;
  84 +
  85 +// auto frameSize = glview->getFrameSize();
  86 + // if the frame's height is larger than the height of medium size.
  87 +// if (frameSize.height > xlargeResolutionSize.height)
  88 +// {
  89 +// deviceSpecificFolderName = ResourcesConfig::RES_FOLDER_NAME_XLARGE;
  90 +// }
  91 +// // if the frame's height is larger than the height of small size.
  92 +// else if (frameSize.height > largeResolutionSize.height)
  93 +// {
  94 +// deviceSpecificFolderName = ResourcesConfig::RES_FOLDER_NAME_XLARGE; //TODO change to large once the resurces are ready
  95 +// }
  96 +// // if the frame's height is smaller than the height of medium size.
  97 +// else
  98 +// {
  99 +// deviceSpecificFolderName = ResourcesConfig::RES_FOLDER_NAME_MEDIUM;
  100 +// }
  101 +
  102 +// deviceSpecificFolderName = ScalingUtils::isSmallDevice() ? ResourcesConfig::RES_FOLDER_NAME_TINY : ResourcesConfig::RES_FOLDER_NAME_XLARGE;//TODO TEMP
  103 + searchPaths.push_back("res");
  104 + if(ScalingUtils::isSmallDevice()){
  105 + searchPaths.push_back("res/" + std::string(ResourcesConfig::RES_FOLDER_NAME_TINY));
  106 + searchPaths.push_back("res/" + std::string(ResourcesConfig::RES_FOLDER_NAME_XLARGE));
  107 + } else {
  108 + searchPaths.push_back("res/" + std::string(ResourcesConfig::RES_FOLDER_NAME_XLARGE));
  109 + }
  110 + searchPaths.push_back("res/common");
  111 +
  112 + cocos2d::FileUtils::getInstance()->setSearchPaths(searchPaths);
  113 +
  114 + auto screenSizePoints = director->getWinSize();
  115 +
  116 + auto scale = ScalingUtils::isSmallDevice() ? MAX(tinyResolutionSize.width / screenSizePoints.width, tinyResolutionSize.height / screenSizePoints.height) : MAX(designResolutionSize.width / screenSizePoints.width, designResolutionSize.height / screenSizePoints.height);
  117 + director->setContentScaleFactor(scale);
  118 +
  119 + register_all_packages();
  120 +
  121 +// SoundsRepo::loadSoundsList();
  122 +
  123 + srand(time(0));
  124 +
  125 + // run
  126 + std::string sceneLayoutPath = "graphics/shoot_game/scene_layout.scl";
  127 + GameConfigParser parser("res/common/games/shoot_game/gconfig.gcf");
  128 + auto newScene = parser.createGameScene(45, sceneLayoutPath);
  129 + director->runWithScene(newScene);
  130 +
  131 + return true;
  132 +}
  133 +
  134 +// This function will be called when the app is inactive. Note, when receiving a phone call it is invoked.
  135 +void AppDelegate::applicationDidEnterBackground() {
  136 + Director::getInstance()->stopAnimation();
  137 + cocos2d::AudioEngine::pauseAll();
  138 +
  139 +#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
  140 + MiscUtils::closeAppCloseConfirmDialogIfNecessary();
  141 +#endif
  142 + auto runningGame = dynamic_cast<SubGameScene*>(cocos2d::Director::getInstance()->getRunningScene());
  143 + if(runningGame){
  144 + runningGame->presentGameResumeLayer();
  145 + }
  146 +}
  147 +
  148 +// this function will be called when the app is active again
  149 +void AppDelegate::applicationWillEnterForeground() {
  150 + Director::getInstance()->startAnimation();
  151 + auto runningGame = dynamic_cast<SubGameScene*>(cocos2d::Director::getInstance()->getRunningScene());
  152 + if(!runningGame->isPaused()){
  153 + cocos2d::AudioEngine::resumeAll();
  154 + }
  155 +}
... ...
ios/Runner/Wowgame/Classes/AppDelegate.h 0 → 100644
  1 +/****************************************************************************
  2 + Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
  3 +
  4 + http://www.cocos2d-x.org
  5 +
  6 + Permission is hereby granted, free of charge, to any person obtaining a copy
  7 + of this software and associated documentation files (the "Software"), to deal
  8 + in the Software without restriction, including without limitation the rights
  9 + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  10 + copies of the Software, and to permit persons to whom the Software is
  11 + furnished to do so, subject to the following conditions:
  12 +
  13 + The above copyright notice and this permission notice shall be included in
  14 + all copies or substantial portions of the Software.
  15 +
  16 + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17 + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18 + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  19 + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20 + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  21 + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  22 + THE SOFTWARE.
  23 + ****************************************************************************/
  24 +
  25 +#ifndef _APP_DELEGATE_H_
  26 +#define _APP_DELEGATE_H_
  27 +
  28 +#include "cocos2d.h"
  29 +
  30 +/**
  31 +@brief The cocos2d Application.
  32 +
  33 +Private inheritance here hides part of interface from Director.
  34 +*/
  35 +class AppDelegate : private cocos2d::Application
  36 +{
  37 +public:
  38 + AppDelegate();
  39 + virtual ~AppDelegate();
  40 +
  41 + virtual void initGLContextAttrs();
  42 +
  43 + /**
  44 + @brief Implement Director and Scene init code here.
  45 + @return true Initialize success, app continue.
  46 + @return false Initialize failed, app terminate.
  47 + */
  48 + virtual bool applicationDidFinishLaunching();
  49 +
  50 + /**
  51 + @brief Called when the application moves to the background
  52 + @param the pointer of the application
  53 + */
  54 + virtual void applicationDidEnterBackground();
  55 +
  56 + /**
  57 + @brief Called when the application reenters the foreground
  58 + @param the pointer of the application
  59 + */
  60 + virtual void applicationWillEnterForeground();
  61 +
  62 +//protected:
  63 +};
  64 +
  65 +#endif // _APP_DELEGATE_H_
  66 +
... ...
ios/Runner/Wowgame/Classes/CustomViews/AlertView.cpp 0 → 100644
  1 +//
  2 +// AlertView.cpp
  3 +// Steve and Maggie Halloween
  4 +//
  5 +// Created by Katarzyna Kalinowska-Górska on 09/10/2019.
  6 +//
  7 +
  8 +#include <stdio.h>
  9 +#include "AlertView.h"
  10 +#include "ScalingUtils.h"
  11 +#include "../../cocos2d/cocos/2d/CCActionInterval.h"
  12 +#include "../../cocos2d/cocos/2d/CCActionInstant.h"
  13 +#include "../../cocos2d/cocos/2d/CCNode.h"
  14 +#include "../Utils/MiscUtils.h"
  15 +
  16 +//AlertView* AlertView::create(std::string message, std::string okText, cocos2d::Color3B okColor, std::function<void()> onConfirmCallback,){
  17 +//
  18 +// AlertView * view = new (std::nothrow) AlertView();
  19 +// if(view && view->init(message, okText, okColor, onConfirmCallback))
  20 +// {
  21 +// view->autorelease();
  22 +// return view;
  23 +// }
  24 +// CC_SAFE_DELETE(view);
  25 +// return nullptr;
  26 +//}
  27 +
  28 +AlertView* AlertView::create(std::string message, std::string okText, std::string cancelText, cocos2d::Color3B okColor, cocos2d::Color3B cancelColor, std::function<void()> onConfirmCallback,std::function<void()> onCancelCallback){
  29 +
  30 + AlertView * view = new (std::nothrow) AlertView();
  31 + if(view && view->init(message, okText, cancelText, okColor, cancelColor, onConfirmCallback, onCancelCallback))
  32 + {
  33 + view->autorelease();
  34 + return view;
  35 + }
  36 + CC_SAFE_DELETE(view);
  37 + return nullptr;
  38 +}
  39 +
  40 +bool AlertView::init(std::string message, std::string okText, std::string cancelText, cocos2d::Color3B okColor, cocos2d::Color3B cancelColor, std::function<void()> onConfirmCallback,std::function<void()> onCancelCallback){
  41 +
  42 + auto winSize = cocos2d::Director::getInstance()->getWinSize();
  43 + if(!cocos2d::LayerColor::initWithColor(cocos2d::Color4B(0,0,0,220), winSize.width, winSize.height)){
  44 + return false;
  45 + }
  46 +
  47 + _onConfirmCallback = onConfirmCallback;
  48 + _onCancelCallback = onCancelCallback;
  49 + setupAppearance(message, okText, cancelText, okColor, cancelColor);
  50 +
  51 + return true;
  52 +}
  53 +
  54 +void AlertView::setupAppearance(std::string message, std::string okText, std::string cancelText, cocos2d::Color3B okColor, cocos2d::Color3B cancelColor){
  55 +
  56 + setCascadeOpacityEnabled(true);
  57 +;
  58 + auto wholeContainer = cocos2d::Node::create();
  59 + addChild(wholeContainer);
  60 +
  61 + // // add the instruction label
  62 + auto messageLabel = cocos2d::Label::createWithTTF(message, "fonts/ComicSansMSBold.ttf", 90*ScalingUtils::getScaleForFont()); //TODO magic number, hard-coded text
  63 + messageLabel->setColor(cocos2d::Color3B(200, 200, 200));
  64 + wholeContainer->addChild(messageLabel);
  65 + wholeContainer->setCascadeOpacityEnabled(true);
  66 +
  67 + cocos2d::MenuItemFont::setFontSize(80*ScalingUtils::getScaleForFont()); //TODO MAGIC NUMBER
  68 +#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
  69 + cocos2d::MenuItemFont::setFontName("ComicSansMS-Bold");
  70 +#else
  71 + cocos2d::MenuItemFont::setFontName("fonts/ComicSansMSBold.ttf");
  72 +#endif
  73 + auto menuPadding = 140*ScalingUtils::scaleAspectFillToDesignIpadProSize();//TODO magic number
  74 + auto menuItemCancel = cocos2d::MenuItemFont::create(cancelText, CC_CALLBACK_1(AlertView::onCancelClicked, this));
  75 + menuItemCancel->setColor(cancelColor);
  76 + auto menuItemOK = cocos2d::MenuItemFont::create(okText, CC_CALLBACK_1(AlertView::onOKClicked, this));
  77 +// menuItemOK->setColor(cocos2d::Color3B(200, 100, 100));
  78 + menuItemOK->setColor(okColor);
  79 + auto menuCenter = cocos2d::Menu::create(menuItemCancel,menuItemOK, nullptr);
  80 + menuCenter->setContentSize(cocos2d::Size(menuItemOK->getBoundingBox().size.width + menuItemCancel->getBoundingBox().size.width + menuPadding, MAX(menuItemOK->getBoundingBox().size.height, menuItemCancel->getBoundingBox().size.height)));
  81 + menuCenter->alignItemsHorizontallyWithPadding(menuPadding);
  82 + menuCenter->setCascadeOpacityEnabled(true);
  83 +
  84 + wholeContainer->addChild(menuCenter);
  85 + wholeContainer->setContentSize(cocos2d::Size(MAX(menuCenter->getBoundingBox().size.width, messageLabel->getBoundingBox().size.width), menuCenter->getBoundingBox().size.height + menuPadding + messageLabel->getBoundingBox().size.height));
  86 +
  87 + menuCenter->setPositionX(wholeContainer->getContentSize().width/2);
  88 + menuCenter->setPositionY(messageLabel->getBoundingBox().getMinY() + menuPadding);
  89 + messageLabel->setPositionY(wholeContainer->getContentSize().height - messageLabel->getBoundingBox().size.height/2);
  90 + messageLabel->setPositionX(wholeContainer->getContentSize().width/2);
  91 +
  92 + wholeContainer->setAnchorPoint(cocos2d::Vec2(0.5, 0.5));
  93 + wholeContainer->setPosition(getContentSize().width/2, getContentSize().height/2);
  94 +}
  95 +
  96 +void AlertView::onCancelClicked(cocos2d::Ref* pSender){
  97 + _onCancelCallback();
  98 + runAction(cocos2d::Sequence::create(cocos2d::FadeOut::create(MiscUtils::StandardAnimationTime), cocos2d::CallFunc::create([&](){
  99 + MiscUtils::hideAndRemoveView(this,true);
  100 + }), nullptr));
  101 +}
  102 +
  103 +void AlertView::onOKClicked(cocos2d::Ref* pSender){
  104 + _onConfirmCallback();
  105 +}
... ...
ios/Runner/Wowgame/Classes/CustomViews/AlertView.h 0 → 100644
  1 +//
  2 +// AlertView.h
  3 +// HalloweenSpaceInvaders
  4 +//
  5 +// Created by Katarzyna Kalinowska-Górska on 09/10/2019.
  6 +//
  7 +
  8 +#ifndef AlertView_h
  9 +#define AlertView_h
  10 +
  11 +#include "cocos2d.h"
  12 +#include <string>
  13 +
  14 +class AlertView : public cocos2d::LayerColor {
  15 +public:
  16 + static AlertView* create(std::string message, std::string okText, std::string cancelText, cocos2d::Color3B okColor, cocos2d::Color3B cancelColor, std::function<void()> onConfirmCallback,std::function<void()> onCancelCallback);
  17 +
  18 +protected:
  19 +
  20 + std::function<void()> _onConfirmCallback;
  21 + std::function<void()> _onCancelCallback;
  22 +
  23 + bool init(std::string message, std::string okText, std::string cancelText, cocos2d::Color3B okColor, cocos2d::Color3B cancelColor, std::function<void()> onConfirmCallback,std::function<void()> onCancelCallback);
  24 + void setupAppearance(std::string message, std::string okText, std::string cancelText, cocos2d::Color3B okColor, cocos2d::Color3B cancelColor);
  25 +
  26 + void onCancelClicked(cocos2d::Ref* pSender);
  27 + void onOKClicked(cocos2d::Ref* pSender);
  28 +};
  29 +
  30 +#endif /* AlertView_h */
... ...
ios/Runner/Wowgame/Classes/CustomViews/AppLinksView.cpp 0 → 100644
  1 +//
  2 +// Created by Katarzyna Kalinowska-Górska on 2019-10-07.
  3 +//
  4 +
  5 +#include "AppLinksView.h"
  6 +#include "SimpleButton.h"
  7 +#include "ScalingUtils.h"
  8 +
  9 +AppLinksView* AppLinksView::create(float width, float height, const std::vector<AppLinkData>& appsData, ParentalGateShowInterface* p_delegate){
  10 + AppLinksView * node = new (std::nothrow) AppLinksView();
  11 + if(node && node->init(width, height, appsData, p_delegate))
  12 + {
  13 + node->autorelease();
  14 + return node;
  15 + }
  16 + CC_SAFE_DELETE(node);
  17 + return nullptr;
  18 +}
  19 +
  20 +AppLinksView* AppLinksView::create(const std::vector<AppLinkData>& appsData, ParentalGateShowInterface* p_delegate){
  21 + AppLinksView * node = new (std::nothrow) AppLinksView();
  22 + if(node && node->init(-1, -1, appsData, p_delegate))
  23 + {
  24 + node->autorelease();
  25 + return node;
  26 + }
  27 + CC_SAFE_DELETE(node);
  28 + return nullptr;
  29 +}
  30 +
  31 +bool AppLinksView::init(float width, float height, const std::vector<AppLinkData>& appsData, ParentalGateShowInterface* p_delegate){
  32 + if(!cocos2d::ui::ScrollView::init()){
  33 + return false;
  34 + }
  35 +
  36 + assert(p_delegate != nullptr);
  37 + m_delegate = p_delegate;
  38 +
  39 + setDirection(cocos2d::ui::ScrollView::Direction::HORIZONTAL);
  40 + bool adjustContentSize = width < 0 || height < 0;
  41 +
  42 + if(!adjustContentSize) {
  43 + setContentSize(cocos2d::Size(width, height));
  44 + }
  45 + setScrollBarEnabled(false);
  46 +
  47 + auto scaleF = ScalingUtils::getAdjustedContentScaleFactor();
  48 + static float PaddingX = 20/scaleF;
  49 + static float PaddingY = 20/scaleF;
  50 +#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
  51 + static std::string PlayStoreBaseLinkApp = "market://details?id=";
  52 + static std::string PlayStoreBaseLinkWeb = "https://play.google.com/store/apps/details?id=";
  53 +#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
  54 + static std::string ITunesBaseLink = "itms-apps://itunes.apple.com/app/";
  55 +#endif
  56 +
  57 + auto tempX = PaddingX;
  58 +
  59 + float contentW = 0, contentH = 0;
  60 +
  61 + for(auto it = appsData.begin(); it != appsData.end(); ++it){
  62 +// m_links.push_back(it->appStoreId);
  63 +
  64 + auto button = SimpleButton::create();
  65 + auto buttonTexturePath = it->iconFilePath;
  66 + button->loadTextures(buttonTexturePath, buttonTexturePath, buttonTexturePath);
  67 + addChild(button);
  68 + button->setPosition(cocos2d::Point(tempX + button->getBoundingBox().size.width/2, PaddingY + button->getBoundingBox().size.height/2));
  69 + tempX += button->getContentSize().width + PaddingX;
  70 + auto haloSprite = cocos2d::Sprite::create("app_links/halo_icon.png");
  71 + haloSprite->setPosition(button->getPosition());
  72 + addChild(haloSprite);
  73 + haloSprite->setOpacity(0);
  74 + haloSprite->setLocalZOrder(0);
  75 + button->setLocalZOrder(1);
  76 +
  77 + button->setOnTouchBeganCallback([haloSprite, button](std::string name, cocos2d::ui::Widget::TouchEventType eventType){
  78 + haloSprite->setScale(button->getScale());
  79 + haloSprite->stopAllActions();
  80 + haloSprite->runAction(cocos2d::FadeIn::create(0.1));
  81 + });
  82 +
  83 + button->setOnTouchEndedCallback([&, haloSprite, button, link = it->storeId](std::string name, cocos2d::ui::Widget::TouchEventType eventType){
  84 + haloSprite->stopAllActions();
  85 + haloSprite->runAction(cocos2d::FadeOut::create(0.1));
  86 + haloSprite->setScale(button->getScale());
  87 + m_delegate->presentParentalGate([&](){
  88 + m_delegate->hideParentalGate();
  89 +#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
  90 + if(!cocos2d::Application::getInstance()->openURL(PlayStoreBaseLinkApp + link)){
  91 + cocos2d::Application::getInstance()->openURL(PlayStoreBaseLinkWeb + link);
  92 + }
  93 +#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
  94 + cocos2d::Application::getInstance()->openURL(ITunesBaseLink + link);
  95 +#endif
  96 + }, [&](){
  97 + m_delegate->hideParentalGate();
  98 + });
  99 + });
  100 +
  101 + button->setOnTouchCancelledCallback([haloSprite, button](std::string name, cocos2d::ui::Widget::TouchEventType eventType){
  102 + haloSprite->stopAllActions();
  103 + haloSprite->runAction(cocos2d::FadeOut::create(0.1));
  104 + haloSprite->setScale(button->getScale());
  105 + });
  106 +
  107 + contentH = haloSprite->getBoundingBox().size.height;
  108 + contentW += button->getBoundingBox().size.width*1.4f;
  109 + }
  110 +
  111 + if(adjustContentSize){
  112 + setContentSize(cocos2d::Size(tempX, contentH));
  113 + }
  114 +
  115 + return true;
  116 +}
  117 +
  118 +
... ...
ios/Runner/Wowgame/Classes/CustomViews/AppLinksView.h 0 → 100644
  1 +//
  2 +// Created by Katarzyna Kalinowska-Górska on 2019-10-07.
  3 +//
  4 +
  5 +#ifndef APP_LINKS_VIEW_H
  6 +#define APP_LINKS_VIEW_H
  7 +
  8 +#include "cocos2d.h"
  9 +#include "ParentalGateShowInterface.h"
  10 +#include "ui/CocosGUI.h"
  11 +
  12 +class AppLinksView : public cocos2d::ui::ScrollView {
  13 +
  14 +public:
  15 + struct AppLinkData {
  16 + AppLinkData(std::string p_iconFilePath, std::string p_storeId) : iconFilePath(p_iconFilePath), storeId(p_storeId) {}
  17 + std::string iconFilePath;
  18 + std::string storeId;
  19 + };
  20 +
  21 + static AppLinksView* create(float width, float height, const std::vector<AppLinkData>& appsData, ParentalGateShowInterface* p_delegate);
  22 + static AppLinksView* create(const std::vector<AppLinkData>& appsData, ParentalGateShowInterface* p_delegate);
  23 +
  24 +
  25 +protected:
  26 + std::vector<cocos2d::Sprite*> m_halos;
  27 +
  28 + bool init(float width, float height, const std::vector<AppLinkData>& appsData, ParentalGateShowInterface* p_delegate);
  29 +
  30 + ParentalGateShowInterface* m_delegate {nullptr};
  31 +};
  32 +
  33 +
  34 +#endif //APP_LINKS_VIEW_H
... ...
ios/Runner/Wowgame/Classes/CustomViews/GameLifeIndicatorView.cpp 0 → 100644
  1 +//
  2 +// GameLifeIndicatorView.cpp
  3 +// SteveAndMaggieGame-mobile
  4 +//
  5 +// Created by Katarzyna Kalinowska-Górska on 21/06/2019.
  6 +//
  7 +
  8 +#include <stdio.h>
  9 +#include "GameLifeIndicatorView.h"
  10 +
  11 +GameLifeIndicatorView* GameLifeIndicatorView::create(std::string liveImagePath, std::string deadImagePath, int maxLives){
  12 + GameLifeIndicatorView * view = new (std::nothrow) GameLifeIndicatorView();
  13 + if(view && view->init(liveImagePath, deadImagePath, maxLives))
  14 + {
  15 + view->autorelease();
  16 + return view;
  17 + }
  18 + CC_SAFE_DELETE(view);
  19 + return nullptr;
  20 +}
  21 +
  22 +bool GameLifeIndicatorView::init(std::string liveImagePath, std::string deadImagePath, int maxLives){
  23 +
  24 + if(!cocos2d::Layer::init()){
  25 + return false;
  26 + }
  27 +
  28 + float lifeSpriteWidth = 0;
  29 + float lifeSpriteHeight = 0;
  30 +
  31 + for (int i = 0; i < maxLives; ++i) {
  32 + auto lifeItem = new LifeItem(liveImagePath, deadImagePath);
  33 + addChild(lifeItem->lifeSprite);
  34 + lifeItem->lifeSprite->setPosition((i+0.5+i*PADDING_MULTIPLIER)*lifeItem->lifeSprite->getBoundingBox().size.width, lifeItem->lifeSprite->getBoundingBox().size.height/2);
  35 + addChild(lifeItem->deadSprite);
  36 + lifeItem->deadSprite->setPosition(lifeItem->lifeSprite->getPosition());
  37 + lives.push_back(lifeItem);
  38 + lifeSpriteWidth = lifeItem->lifeSprite->getBoundingBox().size.width;
  39 + lifeSpriteHeight = lifeItem->lifeSprite->getBoundingBox().size.height;
  40 + }
  41 +
  42 + setContentSize(cocos2d::Size(maxLives*lifeSpriteWidth*(1+PADDING_MULTIPLIER), lifeSpriteHeight));
  43 +
  44 + currentLives = maxLives;
  45 +
  46 + return true;
  47 +}
  48 +
  49 +GameLifeIndicatorView::~GameLifeIndicatorView(){
  50 + for(auto it = lives.begin(); it != lives.end(); ++it){
  51 + delete *it;
  52 + }
  53 +}
  54 +
  55 +int GameLifeIndicatorView::loseLife(){
  56 + if(currentLives > 0){
  57 + --currentLives;
  58 + lives[currentLives]->deactivate(true);
  59 + }
  60 + return currentLives;
  61 +}
  62 +
  63 +int GameLifeIndicatorView::restoreLife(){
  64 + if(currentLives < lives.size()){
  65 + lives[currentLives]->activate(true);
  66 + ++currentLives;
  67 + }
  68 + return currentLives;
  69 +}
  70 +
  71 +void GameLifeIndicatorView::reset(){
  72 + currentLives = (int)lives.size();
  73 + for(auto it = lives.begin(); it != lives.end(); ++it){
  74 + (*it)->activate(false);
  75 + }
  76 +}
  77 +
  78 +float GameLifeIndicatorView::getPaddingX(){
  79 + if(lives.size() > 0){
  80 + return PADDING_MULTIPLIER*lives[0]->lifeSprite->getBoundingBox().size.width;
  81 + }
  82 + return 0;
  83 +}
  84 +
... ...
ios/Runner/Wowgame/Classes/CustomViews/GameLifeIndicatorView.h 0 → 100644
  1 +//
  2 +// GameLifeIndicatorView.h
  3 +// SteveAndMaggieGame
  4 +//
  5 +// Created by Katarzyna Kalinowska-Górska on 21/06/2019.
  6 +//
  7 +
  8 +#ifndef GameLifeIndicatorView_h
  9 +#define GameLifeIndicatorView_h
  10 +
  11 +#include <string>
  12 +#include "cocos2d.h"
  13 +#include "MiscUtils.h"
  14 +
  15 +#endif /* GameLifeIndicatorView_h */
  16 +
  17 +class GameLifeIndicatorView : public cocos2d::Layer {
  18 +public:
  19 + static GameLifeIndicatorView* create(std::string liveImagePath, std::string deadImagePath, int maxLives);
  20 + virtual int loseLife(); //return current number of lives
  21 + virtual int restoreLife();
  22 + virtual void reset();
  23 + virtual float getPaddingX();
  24 +
  25 +protected:
  26 + bool init(std::string liveImagePath, std::string deadImagePath, int maxLives);
  27 + static constexpr float PADDING_MULTIPLIER = 0.1f;
  28 +
  29 + virtual ~GameLifeIndicatorView();
  30 +
  31 + class LifeItem {
  32 + public:
  33 + bool isActive;
  34 + cocos2d::Sprite* lifeSprite;
  35 + cocos2d::Sprite* deadSprite;
  36 + constexpr static const int DEAD_OPACITY = 128;
  37 +
  38 + LifeItem(std::string liveImagePath, std::string deadImagePath){
  39 + isActive = true;
  40 + lifeSprite = cocos2d::Sprite::create(liveImagePath);
  41 + lifeSprite->retain();
  42 + deadSprite = cocos2d::Sprite::create(deadImagePath);
  43 + deadSprite->retain();
  44 + deadSprite->setOpacity(0);
  45 + }
  46 +
  47 + ~LifeItem(){
  48 + if(deadSprite != nullptr){
  49 + deadSprite->removeFromParent();
  50 + deadSprite->release();
  51 + }
  52 + if(lifeSprite != nullptr){
  53 + lifeSprite->removeFromParent();
  54 + lifeSprite->release();
  55 + }
  56 + }
  57 +
  58 + virtual void activate(bool animated){
  59 + isActive = true;
  60 + if(animated){
  61 + lifeSprite->runAction(cocos2d::FadeIn::create(MiscUtils::StandardAnimationTime));
  62 + deadSprite->runAction(cocos2d::FadeOut::create(MiscUtils::StandardAnimationTime));
  63 + } else {
  64 + lifeSprite->setOpacity(255);
  65 + deadSprite->setOpacity(0);
  66 + }
  67 + }
  68 +
  69 + virtual void deactivate(bool animated){
  70 + isActive = false;
  71 + if(animated){
  72 + lifeSprite->runAction(cocos2d::FadeOut::create(MiscUtils::StandardAnimationTime));
  73 + deadSprite->runAction(cocos2d::FadeTo::create(MiscUtils::StandardAnimationTime, DEAD_OPACITY));
  74 + } else {
  75 + lifeSprite->setOpacity(0);
  76 + deadSprite->setOpacity(DEAD_OPACITY);
  77 + }
  78 + }
  79 + };
  80 +
  81 + std::vector<LifeItem*> lives;
  82 + int currentLives;
  83 +};
... ...
ios/Runner/Wowgame/Classes/CustomViews/Layers/CustomLayerView.cpp 0 → 100644
  1 +//
  2 +// CustomLayerView.cpp
  3 +// SteveMaggieCpp
  4 +//
  5 +// Created by Katarzyna Kalinowska-Górska on 19.05.2017.
  6 +//
  7 +//
  8 +
  9 +#include <stdio.h>
  10 +#include "CustomLayerView.h"
  11 +#include "LayoutParser.h"
  12 +
  13 +CustomLayerView* CustomLayerView::create(std::string layoutFilePath, std::string scenarioFilePath)
  14 +{
  15 + CustomLayerView * view = new (std::nothrow) CustomLayerView();
  16 + if(view && view->init(layoutFilePath, scenarioFilePath))
  17 + {
  18 + view->autorelease();
  19 + return view;
  20 + }
  21 + CC_SAFE_DELETE(view);
  22 + return nullptr;
  23 +}
  24 +
  25 +bool CustomLayerView::init(std::string layoutFilePath, std::string scenarioFilePath)
  26 +{
  27 + if(!Layer::init()){
  28 + return false;
  29 + }
  30 +
  31 + _layoutFilePath = layoutFilePath;
  32 + _layoutLoaded = false;
  33 + _loadFromAssets = false;
  34 + _widgetTouchEventCallback = [](std::string, cocos2d::ui::Widget::TouchEventType){};
  35 + if(scenarioFilePath != ""){
  36 + auto fileUtils = cocos2d::FileUtils::getInstance();
  37 + if (fileUtils->isFileExist(scenarioFilePath)) {
  38 + std::string jsonString = fileUtils->getStringFromFile(scenarioFilePath);
  39 + rapidjson::Document doc;
  40 + doc.Parse(jsonString.c_str());
  41 + _actionSequenceHandler = new (std::nothrow) ActionSequenceHandler(this, doc);
  42 + }
  43 + }
  44 +
  45 + return true;
  46 +}
  47 +
  48 +CustomLayerView::~CustomLayerView()
  49 +{
  50 + if(_actionSequenceHandler){
  51 + delete _actionSequenceHandler;
  52 + }
  53 +}
  54 +
  55 +void CustomLayerView::onEnter()
  56 +{
  57 + cocos2d::Layer::onEnter();
  58 + this->loadLayout(false);
  59 + if(_actionSequenceHandler){
  60 + _actionSequenceHandler->runNext();
  61 + }
  62 +}
  63 +
  64 +void CustomLayerView::onExit()
  65 +{
  66 + cocos2d::Layer::onExit();
  67 +}
  68 +
  69 +void CustomLayerView::loadLayout(bool forceLoad)
  70 +{
  71 + if(!_layoutLoaded || forceLoad){
  72 +
  73 + auto& layoutParser = LayoutParser::getInstance();
  74 + if (_loadFromAssets && cocos2d::FileUtils::getInstance()->isFileExist(this->_layoutFilePath)) {
  75 + layoutParser.loadLayoutFromJSONFile(this->_layoutFilePath, this);
  76 + }
  77 + else if(!_loadFromAssets){
  78 + layoutParser.loadLayoutFromDownloadedJSONFile(this->_layoutFilePath, this);
  79 + }
  80 +
  81 + _layoutLoaded = true;
  82 + this->layoutLoaded();
  83 + }
  84 +}
  85 +
  86 +void CustomLayerView::layoutLoaded()
  87 +{
  88 + // to override in subclasses if needed
  89 +}
  90 +
  91 +bool CustomLayerView::touchHandlerForWidget(std::string objectName, cocos2d::ui::Widget::TouchEventType touchEventType)
  92 +{
  93 + _widgetTouchEventCallback(objectName, touchEventType);
  94 +
  95 +// auto object = _scenarioObjects[objectName];
  96 +
  97 +// if(objectName == "backButton" && touchEventType == ccui.Widget.TOUCH_ENDED){
  98 +//
  99 +// log("gugugug");
  100 +// }
  101 +
  102 + //todo add animation to dismiss dialog
  103 + // todo make a parser outside
  104 + return false;
  105 +}
  106 +
  107 +void CustomLayerView::resetActionSequence()
  108 +{
  109 + if(_actionSequenceHandler){
  110 + _actionSequenceHandler->reset();
  111 + }
  112 +}
  113 +
  114 +void CustomLayerView::setWidgetTouchEventCallback(std::function<void(std::string widgetName, cocos2d::ui::Widget::TouchEventType touchEventType)> widgetTouchEventCallback)
  115 +{
  116 + _widgetTouchEventCallback = widgetTouchEventCallback;
  117 +}
  118 +
  119 +// layout parse delegate
  120 +void CustomLayerView::addLayer(cocos2d::Layer* layer)
  121 +{
  122 + _layers.push_back(layer);
  123 +}
  124 +
  125 +void CustomLayerView::addObject(std::string objectName, cocos2d::Node* object)
  126 +{
  127 + _objects.insert({objectName, object});
  128 +}
  129 +
  130 +void CustomLayerView::addScenarioObject(std::string objectName, ScenarioObject* object)
  131 +{
  132 + _scenarioObjects.insert({objectName, object});
  133 +}
  134 +
  135 +ScenarioObject* CustomLayerView::getScenarioObjectByName(std::string objectName)
  136 +{
  137 + if(_scenarioObjects.find(objectName) != _scenarioObjects.end()){
  138 + return _scenarioObjects[objectName];
  139 + }
  140 + return nullptr;
  141 +}
  142 +
  143 +
... ...
ios/Runner/Wowgame/Classes/CustomViews/Layers/CustomLayerView.h 0 → 100644
  1 +//
  2 +// CustomLayerView.h
  3 +// SteveMaggieCpp
  4 +//
  5 +// Created by Katarzyna Kalinowska-Górska on 19.05.2017.
  6 +//
  7 +//
  8 +
  9 +#ifndef CustomLayerView_h
  10 +#define CustomLayerView_h
  11 +
  12 +#include "ScenarioObject.h"
  13 +#include "LayoutParser.h"
  14 +#include "ActionSequenceHandler.h"
  15 +
  16 +class CustomLayerView : public cocos2d::Layer, public LayoutViewInterface, public ScenarioObject
  17 +{
  18 + public:
  19 + static CustomLayerView* create(std::string layoutFilePath, std::string scenarioFilePath = "");
  20 + virtual bool init(std::string layoutFilePath, std::string scenarioFilePath = "");
  21 + virtual ~CustomLayerView();
  22 +
  23 + virtual void onEnter() override;
  24 + virtual void onExit() override;
  25 + virtual void loadLayout(bool forceLoad);
  26 + virtual void layoutLoaded();
  27 + virtual void resetActionSequence();
  28 +
  29 + virtual bool touchHandlerForWidget(std::string objectName, cocos2d::ui::Widget::TouchEventType touchEventType) override;
  30 +
  31 + virtual void setWidgetTouchEventCallback(std::function<void(std::string widgetName, cocos2d::ui::Widget::TouchEventType touchEventType)> widgetTouchEventCallback);
  32 +
  33 + //LayoutViewInterface
  34 + virtual void addLayer(cocos2d::Layer* layer) override;
  35 + virtual void addObject(std::string objectName, cocos2d::Node* object) override;
  36 + virtual void addScenarioObject(std::string objectName, ScenarioObject* object) override;
  37 +
  38 + //ScenarioObject - for ActionSequenceHandler
  39 + virtual ScenarioObject* getScenarioObjectByName(std::string name) override;
  40 +
  41 + protected:
  42 + std::string _layoutFilePath;
  43 + ActionSequenceHandler* _actionSequenceHandler;
  44 + bool _layoutLoaded;
  45 + std::vector<cocos2d::Layer*> _layers;
  46 + std::map<std::string, cocos2d::Node*> _objects;
  47 + std::map<std::string, ScenarioObject*> _scenarioObjects;
  48 + bool _loadFromAssets;
  49 +
  50 + std::function<void(std::string, cocos2d::ui::Widget::TouchEventType)> _widgetTouchEventCallback;
  51 +};
  52 +
  53 +#endif /* CustomLayerView_h */
  54 +
... ...
ios/Runner/Wowgame/Classes/CustomViews/Layers/TouchInterceptingLayer.cpp 0 → 100644
  1 +//
  2 +// TouchInterceptingLayer.cpp
  3 +// SteveMaggieCpp
  4 +//
  5 +// Created by Katarzyna Kalinowska-Górska on 12.05.2017.
  6 +//
  7 +//
  8 +
  9 +#include "TouchInterceptingLayer.h"
  10 +
  11 +// create
  12 +
  13 +TouchInterceptingLayer * TouchInterceptingLayer::create(const cocos2d::Color4B& color, bool sceneGraphPriority)
  14 +{
  15 + TouchInterceptingLayer * layer = new (std::nothrow) TouchInterceptingLayer();
  16 + if(layer && layer->initWithColor(color, sceneGraphPriority))
  17 + {
  18 + layer->autorelease();
  19 + return layer;
  20 + }
  21 + CC_SAFE_DELETE(layer);
  22 + return nullptr;
  23 +}
  24 +
  25 +// overrides
  26 +
  27 +bool TouchInterceptingLayer::initWithColor(const cocos2d::Color4B& color, bool sceneGraphPriority)
  28 +{
  29 + if(!LayerColor::initWithColor(color))
  30 + {
  31 + return false;
  32 + }
  33 +
  34 + _onTouchCallback = nullptr;
  35 + this->configureTouchListener(sceneGraphPriority);
  36 +
  37 + return true;
  38 +}
  39 +
  40 +//void TouchInterceptingLayer::onEnter()
  41 +//{
  42 +// cocos2d::LayerColor::onEnter();
  43 +//}
  44 +
  45 +void TouchInterceptingLayer::configureTouchListener(bool sceneGraphPriority)
  46 +{
  47 + auto touchListener = cocos2d::EventListenerTouchOneByOne::create();
  48 + touchListener->setSwallowTouches(true);
  49 + touchListener->onTouchBegan = [&](cocos2d::Touch* touch, cocos2d::Event* event){
  50 +
  51 + if(_onTouchCallback){
  52 + _onTouchCallback(touch);
  53 + }
  54 +
  55 + return true;
  56 + };
  57 +
  58 + touchListener->onTouchMoved = [&](cocos2d::Touch* touch, cocos2d::Event* event){
  59 +
  60 + if(_onTouchMovedCallback){
  61 + _onTouchMovedCallback(touch);
  62 + }
  63 + };
  64 +
  65 + touchListener->onTouchEnded = [&](cocos2d::Touch* touch, cocos2d::Event* event){
  66 +
  67 + if(_onTouchEndedCallback){
  68 + _onTouchEndedCallback(touch);
  69 + }
  70 + };
  71 +
  72 + if(sceneGraphPriority){
  73 + _eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener, this);
  74 + } else {
  75 + _eventDispatcher->addEventListenerWithFixedPriority(touchListener, TouchEventListenerPriority);
  76 + }
  77 +}
  78 +
  79 +//setters
  80 +
  81 +void TouchInterceptingLayer::setOnTouchCallback(const std::function<void(cocos2d::Touch*)>& onTouchCallback)
  82 +{
  83 + this->_onTouchCallback = onTouchCallback;
  84 +}
  85 +
  86 +void TouchInterceptingLayer::setOnTouchMovedCallback(const std::function<void(cocos2d::Touch*)>& onTouchCallback)
  87 +{
  88 + this->_onTouchMovedCallback = onTouchCallback;
  89 +}
  90 +
  91 +void TouchInterceptingLayer::setOnTouchEndedCallback(const std::function<void(cocos2d::Touch*)>& onTouchCallback)
  92 +{
  93 + this->_onTouchEndedCallback = onTouchCallback;
  94 +}
  95 +
  96 +void TouchInterceptingLayer::clearTouchHandlers()
  97 +{
  98 + _onTouchCallback = nullptr;
  99 + _onTouchMovedCallback = nullptr;
  100 + _onTouchEndedCallback = nullptr;
  101 +}
  102 +
... ...
ios/Runner/Wowgame/Classes/CustomViews/Layers/TouchInterceptingLayer.h 0 → 100644
  1 +//
  2 +// TouchInterceptingLayer.hpp
  3 +// SteveMaggieCpp
  4 +//
  5 +// Created by Katarzyna Kalinowska-Górska on 12.05.2017.
  6 +//
  7 +//
  8 +
  9 +#ifndef TouchInterceptingLayer_h
  10 +#define TouchInterceptingLayer_h
  11 +
  12 +#include <stdio.h>
  13 +#include "cocos2d.h"
  14 +
  15 +class TouchInterceptingLayer : public cocos2d::LayerColor {
  16 +
  17 + public:
  18 +
  19 + static const int TouchEventListenerPriority = -100;
  20 +
  21 + // create
  22 + static TouchInterceptingLayer * create(const cocos2d::Color4B& color, bool sceneGraphPriority = true);
  23 +
  24 + // init
  25 + virtual bool initWithColor(const cocos2d::Color4B& color, bool sceneGraphPriority = true);
  26 + virtual void configureTouchListener(bool sceneGraphPriority = true);
  27 +
  28 + // setters
  29 + virtual void setOnTouchCallback(const std::function<void(cocos2d::Touch*)>& onTouchCallback);
  30 + virtual void setOnTouchMovedCallback(const std::function<void(cocos2d::Touch*)>& onTouchCallback);
  31 + virtual void setOnTouchEndedCallback(const std::function<void(cocos2d::Touch*)>& onTouchCallback);
  32 + virtual void clearTouchHandlers();
  33 +
  34 + protected:
  35 +
  36 + std::function<void(cocos2d::Touch*)> _onTouchCallback;
  37 + std::function<void(cocos2d::Touch*)> _onTouchMovedCallback;
  38 + std::function<void(cocos2d::Touch*)> _onTouchEndedCallback;
  39 +
  40 +};
  41 +
  42 +#endif /* TouchInterceptingLayer_hpp */
... ...
ios/Runner/Wowgame/Classes/CustomViews/LevelPickerView/LevelPickerLayer.cpp 0 → 100644
  1 +//
  2 +// LevelPickerLayer.cpp
  3 +// HalloweenSpaceInvaders-mobile
  4 +//
  5 +// Created by Katarzyna Kalinowska-Górska on 03/10/2019.
  6 +//
  7 +
  8 +#include <stdio.h>
  9 +#include "LevelPickerLayer.h"
  10 +#include "ScalingUtils.h"
  11 +#include "SimpleButton.h"
  12 +#include "MiscUtils.h"
  13 +
  14 +LevelPickerLayer* LevelPickerLayer::create(float width, float height){
  15 + LevelPickerLayer * view = new (std::nothrow) LevelPickerLayer();
  16 + if(view && view->init(width, height))
  17 + {
  18 + view->autorelease();
  19 + return view;
  20 + }
  21 + CC_SAFE_DELETE(view);
  22 + return nullptr;
  23 +}
  24 +
  25 +bool LevelPickerLayer::init(float width, float height){
  26 + if(!cocos2d::LayerColor::initWithColor(cocos2d::Color4B(0,0,0,220), width, height)){
  27 + return false;
  28 + }
  29 +
  30 + setCascadeOpacityEnabled(true);
  31 + // add the level picker
  32 + std::vector<std::string> levelImagePaths = { "graphics/levels/level_1.png", "graphics/levels/level_2.png", "graphics/levels/level_3.png" };
  33 + std::vector<std::string> levelNames = { "EASY", "MEDIUM", "DIFFICULT" }; //TODO HARD CODED
  34 + _levelPickerView = LevelPickerView::create(levelImagePaths, levelNames);
  35 + addChild(_levelPickerView);
  36 + _levelPickerView->setAnchorPoint(cocos2d::Vec2(0.5, 0.5));
  37 + _levelPickerView->setPosition(width/2, height/2);
  38 + _levelPickerView->addOnLevelChangedCallback([&](int pickedLevel){
  39 + MiscUtils::saveLastLevel(pickedLevel);
  40 + _onLevelChangedCallback(pickedLevel);
  41 + });
  42 + _levelPickerView->selectLevelIndex((int)MiscUtils::lastLevel(), false);
  43 +
  44 + // add the instruction label
  45 + auto instructionLabel = cocos2d::Label::createWithTTF("CHOOSE YOUR LEVEL:", "fonts/ComicSansMSBold.ttf", 120*ScalingUtils::getScaleForFont()); //magic number
  46 + addChild(instructionLabel);
  47 + auto paddingTop = instructionLabel->getBoundingBox().size.height*1.5f;
  48 + instructionLabel->setPosition(width/2, _levelPickerView->getBoundingBox().getMaxY() + paddingTop);
  49 +
  50 + // add the go button
  51 + auto buttonGo = SimpleButton::create();
  52 + auto goButtonTexturePath = "buttons/graphics/dark_green.png";
  53 + buttonGo->loadTextures(goButtonTexturePath, goButtonTexturePath, goButtonTexturePath);
  54 + auto buttonBg = cocos2d::Sprite::create("buttons/graphics/button_go.png");
  55 + buttonGo->addChild(buttonBg);
  56 + buttonBg->setPosition(cocos2d::Vec2(buttonGo->getContentSize().width/2,buttonGo->getContentSize().height/2));
  57 + addChild(buttonGo);
  58 + auto paddingBottom = paddingTop;
  59 + buttonGo->setAnchorPoint(cocos2d::Vec2(1, 0.5));
  60 + buttonGo->setPosition(cocos2d::Vec2(_levelPickerView->getBoundingBox().getMaxX(), _levelPickerView->getBoundingBox().getMinY() - paddingBottom));
  61 + buttonGo->setOnTouchEndedCallback([&](std::string name, cocos2d::ui::Widget::TouchEventType eventType){
  62 + if(_onGoPressedCallback != nullptr){
  63 + _onGoPressedCallback();
  64 + }
  65 + MiscUtils::hideAndRemoveView(this, true);
  66 + });
  67 +
  68 + return true;
  69 +}
  70 +
  71 +void LevelPickerLayer::addOnGoPressedCallback(std::function<void()> onGoPressed){
  72 + _onGoPressedCallback = onGoPressed;
  73 +}
  74 +
  75 +void LevelPickerLayer::setOnLevelChangedCallback(std::function<void(int)> p_onLevelChangedCallback){
  76 + _onLevelChangedCallback = p_onLevelChangedCallback;
  77 +}
... ...
ios/Runner/Wowgame/Classes/CustomViews/LevelPickerView/LevelPickerLayer.h 0 → 100644
  1 +//
  2 +// LevelPickerLayer.h
  3 +// HalloweenSpaceInvaders
  4 +//
  5 +// Created by Katarzyna Kalinowska-Górska on 03/10/2019.
  6 +//
  7 +
  8 +#ifndef LevelPickerLayer_h
  9 +#define LevelPickerLayer_h
  10 +
  11 +#include "cocos2d.h"
  12 +#include "LevelPickerView.h"
  13 +
  14 +class LevelPickerLayer : public cocos2d::LayerColor {
  15 +
  16 +public:
  17 + static LevelPickerLayer* create(float width, float height);
  18 + void addOnGoPressedCallback(std::function<void()> onGoPressed);
  19 + void setOnLevelChangedCallback(std::function<void(int)> p_onLevelChangedCallback);
  20 +
  21 +protected:
  22 + LevelPickerView* _levelPickerView;
  23 + std::function<void()> _onGoPressedCallback;
  24 + std::function<void(int)> _onLevelChangedCallback { [](int){} };
  25 +
  26 + bool init(float width, float height);
  27 +
  28 +
  29 +
  30 +};
  31 +
  32 +#endif /* LevelPickerLayer_h */
... ...
ios/Runner/Wowgame/Classes/CustomViews/LevelPickerView/LevelPickerView.cpp 0 → 100644
  1 +//
  2 +// LevelPickerView.cpp
  3 +// HalloweenSpaceInvaders-mobile
  4 +//
  5 +// Created by Katarzyna Kalinowska-Górska on 29/09/2019.
  6 +//
  7 +
  8 +#include <stdio.h>
  9 +#include "LevelPickerView.h"
  10 +#include "GeometryUtils.h"
  11 +#include "MiscUtils.h"
  12 +
  13 +LevelPickerView* LevelPickerView::create(const std::vector<std::string>& levelImagePaths, const std::vector<std::string>& levelNames){
  14 + LevelPickerView * view = new (std::nothrow) LevelPickerView();
  15 + if(view && view->init(levelImagePaths, levelNames))
  16 + {
  17 + view->autorelease();
  18 + return view;
  19 + }
  20 + CC_SAFE_DELETE(view);
  21 + return nullptr;
  22 +}
  23 +
  24 +
  25 +bool LevelPickerView::init(const std::vector<std::string>& levelImagePaths, const std::vector<std::string>& levelNames){
  26 +
  27 +// assert(levelNames.size() == levelImagePaths.size());
  28 +
  29 + if(!cocos2d::Node::init()){
  30 + return false;
  31 + }
  32 +
  33 + setCascadeOpacityEnabled(true);
  34 + reloadLevels(levelImagePaths, levelNames);
  35 +
  36 + _onLevelChanged = nullptr;
  37 + prepareTouchHandlers();
  38 +
  39 + return true;
  40 +}
  41 +
  42 +void LevelPickerView::reloadLevels(const std::vector<std::string>& levelImagePaths, const std::vector<std::string>& levelNames){
  43 + for(auto oldLevelView : levelViews){
  44 + oldLevelView->removeFromParent();
  45 + }
  46 + levelViews.clear();
  47 + float maxHeight = 0;
  48 + float sumWidth = 0;
  49 +
  50 + for(int i = 0; i < levelImagePaths.size(); ++i){
  51 + auto newLevelView = levelNames.size() == levelImagePaths.size() ? LevelView::create(levelImagePaths[i], levelNames[i]) : LevelView::create(levelImagePaths[i]);
  52 + addChild(newLevelView);
  53 + levelViews.emplace_back(newLevelView);
  54 + sumWidth += newLevelView->getBoundingBox().size.width;
  55 + maxHeight = MAX(newLevelView->getBoundingBox().size.height, maxHeight);
  56 + }
  57 +
  58 + auto padding = sumWidth/levelImagePaths.size()/3;
  59 + auto contentSize = cocos2d::Size(sumWidth+padding*3, maxHeight);
  60 +
  61 + setContentSize(contentSize);
  62 +
  63 + for(int i = 0; i < levelViews.size(); ++i){
  64 + auto levelView = levelViews[i];
  65 + levelView->setPosition(levelView->getBoundingBox().size.width/2 + padding*(4*i+0.5), contentSize.height/2);
  66 + }
  67 +
  68 + _selectedLevelIndex = 0;
  69 + levelViews[_selectedLevelIndex]->setChosen(true, false);
  70 +}
  71 +
  72 +void LevelPickerView::selectLevelIndex(int index, bool animated){
  73 + if(_selectedLevelIndex != index){
  74 + if(animated){
  75 + levelViews[_selectedLevelIndex]->setChosen(false, true);
  76 + levelViews[index]->setChosen(true, true);
  77 + } else {
  78 + levelViews[_selectedLevelIndex]->setChosen(false, false);
  79 + levelViews[index]->setChosen(true, false);
  80 + }
  81 + _selectedLevelIndex = index;
  82 + }
  83 +}
  84 +
  85 +int LevelPickerView::getPickedLevelIndex(){
  86 + return _selectedLevelIndex;
  87 +}
  88 +
  89 +void LevelPickerView::addOnLevelChangedCallback(std::function<void(int)> onLevelChanged){
  90 + _onLevelChanged = onLevelChanged;
  91 +}
  92 +
  93 +void LevelPickerView::prepareTouchHandlers()
  94 +{
  95 + auto touchListener = cocos2d::EventListenerTouchOneByOne::create();
  96 + touchListener->onTouchBegan = [&](cocos2d::Touch* touch, cocos2d::Event* event){
  97 + return MiscUtils::isNodeVisible(this) && GeometryUtils::getBoundingBoxToWorld(this).containsPoint(touch->getLocation());
  98 + };
  99 + touchListener->onTouchEnded = [&](cocos2d::Touch* touch, cocos2d::Event* event){
  100 + for(int i = 0; i < levelViews.size(); ++i){
  101 + if(GeometryUtils::getBoundingBoxToWorld(levelViews[i]).containsPoint(touch->getLocation())){
  102 + selectLevelIndex(i, true);
  103 + if(_onLevelChanged != nullptr){
  104 + _onLevelChanged(i);
  105 + }
  106 + break;
  107 + }
  108 + }
  109 + };
  110 + _eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener, this);
  111 +}
  112 +
  113 +void LevelPickerView::loadPropertiesFromJSON(const rapidjson::Value& jsonValue, LayoutViewInterface* scene, const std::string resFolder, const std::string altResFolder)
  114 +{
  115 + setAnchorPoint(cocos2d::Vec2(0.5,0.5));
  116 + this->loadCommonPropertiesFromJSON(jsonValue);
  117 +}
  118 +
  119 +
  120 +
  121 +
  122 +
... ...
ios/Runner/Wowgame/Classes/CustomViews/LevelPickerView/LevelPickerView.h 0 → 100644
  1 +//
  2 +// LevelPickerView.h
  3 +// HalloweenSpaceInvaders
  4 +//
  5 +// Created by Katarzyna Kalinowska-Górska on 29/09/2019.
  6 +//
  7 +
  8 +#ifndef LevelPickerView_h
  9 +#define LevelPickerView_h
  10 +
  11 +#include "cocos2d.h"
  12 +#include "LevelView.h"
  13 +#include <vector>
  14 +#include <string>
  15 +#include "LayoutObject.h"
  16 +
  17 +class LevelPickerView : public cocos2d::Node, public LayoutObject {
  18 +
  19 +public:
  20 + static LevelPickerView* create(const std::vector<std::string>& levelImagePaths, const std::vector<std::string>& levelNames);
  21 + void selectLevelIndex(int index, bool animated = true);
  22 + int getPickedLevelIndex();
  23 + void addOnLevelChangedCallback(std::function<void(int)> onLevelChanged);
  24 + void reloadLevels(const std::vector<std::string>& levelImagePaths, const std::vector<std::string>& levelNames);
  25 +
  26 + virtual void loadPropertiesFromJSON(const rapidjson::Value& jsonValue, LayoutViewInterface* scene = NULL, const std::string resFolder = "", const std::string altResFolder = "") override;
  27 +
  28 +protected:
  29 + int _selectedLevelIndex;
  30 + std::vector<LevelView*> levelViews;
  31 + std::function<void(int)> _onLevelChanged;
  32 + bool init(const std::vector<std::string>& levelImagePaths, const std::vector<std::string>& levelNames);
  33 + void prepareTouchHandlers();
  34 +};
  35 +
  36 +#endif /* LevelPickerView_h */
... ...
ios/Runner/Wowgame/Classes/CustomViews/LevelPickerView/SimpleLevelPickerView.cpp 0 → 100644
  1 +//
  2 +// SimpleLevelPickerView.cpp
  3 +// HalloweenSpaceInvaders-mobile
  4 +//
  5 +// Created by Katarzyna Kalinowska-Górska on 01/10/2019.
  6 +//
  7 +
  8 +#include <stdio.h>
  9 +#include "SimpleLevelPickerView.h"
  10 +#include "MiscUtils.h"
  11 +#include "GeometryUtils.h"
  12 +
  13 +SimpleLevelPickerView* SimpleLevelPickerView::create(std::vector<std::string> levelImagePaths){
  14 + SimpleLevelPickerView * view = new (std::nothrow) SimpleLevelPickerView();
  15 + if(view && view->init(levelImagePaths))
  16 + {
  17 + view->autorelease();
  18 + return view;
  19 + }
  20 + CC_SAFE_DELETE(view);
  21 + return nullptr;
  22 +}
  23 +
  24 +bool SimpleLevelPickerView::init(std::vector<std::string> levelImagePaths){
  25 + if(!cocos2d::Node::init()){
  26 + return false;
  27 + }
  28 +
  29 + for(auto levelImagePath : levelImagePaths){
  30 + auto newLevelView = LevelView::create(levelImagePath);
  31 + addChild(newLevelView);
  32 + levelViews.emplace_back(newLevelView);
  33 + newLevelView->setCascadeOpacityEnabled(true);
  34 + newLevelView->setOpacity(0);
  35 + auto contentSize = getContentSize();
  36 + contentSize = cocos2d::Size(MAX(contentSize.width, newLevelView->getBoundingBox().size.width), MAX(contentSize.height, newLevelView->getBoundingBox().size.height));
  37 + setContentSize(contentSize);
  38 + }
  39 +
  40 + for(auto levelView : levelViews){
  41 + levelView->setPosition(getContentSize().width/2, getContentSize().height/2);
  42 + }
  43 +
  44 + _selectedLevelIndex = 0;
  45 + levelViews[_selectedLevelIndex]->setOpacity(255);
  46 + levelViews[_selectedLevelIndex]->setChosen(true, false);
  47 +
  48 + _onLevelChanged = nullptr;
  49 + prepareTouchHandlers();
  50 +
  51 + return true;
  52 +}
  53 +
  54 +void SimpleLevelPickerView::selectLevelIndex(int index, bool animated){
  55 + if(_selectedLevelIndex != index){
  56 + if(animated){
  57 + levelViews[_selectedLevelIndex]->runAction(cocos2d::FadeOut::create(MiscUtils::StandardAnimationTime));
  58 + levelViews[_selectedLevelIndex]->setChosen(false, true);
  59 + levelViews[index]->runAction(cocos2d::FadeIn::create(MiscUtils::StandardAnimationTime));
  60 + levelViews[index]->setChosen(true, true);
  61 + } else {
  62 + levelViews[_selectedLevelIndex]->setOpacity(0);
  63 + levelViews[_selectedLevelIndex]->setChosen(false, false);
  64 + levelViews[index]->setOpacity(255);
  65 + levelViews[index]->setChosen(true, false);
  66 + }
  67 + _selectedLevelIndex = index;
  68 + }
  69 +}
  70 +
  71 +int SimpleLevelPickerView::getPickedLevelIndex(){
  72 + return _selectedLevelIndex;
  73 +}
  74 +
  75 +void SimpleLevelPickerView::addOnLevelChangedCallback(std::function<void(int)> onLevelChanged){
  76 + _onLevelChanged = onLevelChanged;
  77 +}
  78 +
  79 +void SimpleLevelPickerView::loadPropertiesFromJSON(const rapidjson::Value& jsonValue, LayoutViewInterface* scene, const std::string resFolder, const std::string altResFolder)
  80 +{
  81 + setAnchorPoint(cocos2d::Vec2(0.5,0.5));
  82 + this->loadCommonPropertiesFromJSON(jsonValue);
  83 +}
  84 +
  85 +void SimpleLevelPickerView::prepareTouchHandlers()
  86 +{
  87 + auto touchListener = cocos2d::EventListenerTouchOneByOne::create();
  88 + touchListener->onTouchBegan = [&](cocos2d::Touch* touch, cocos2d::Event* event){
  89 + return GeometryUtils::getBoundingBoxToWorld(this).containsPoint(touch->getLocation());
  90 +// if(getBoundingBox().containsPoint(touch->getLocation())){
  91 +// return true;
  92 +// }
  93 +// return false;
  94 + };
  95 + touchListener->onTouchEnded = [&](cocos2d::Touch* touch, cocos2d::Event* event){
  96 +
  97 + if(GeometryUtils::getBoundingBoxToWorld(this).containsPoint(touch->getLocation())){
  98 + selectLevelIndex((_selectedLevelIndex+1)%levelViews.size(), true);
  99 + if(_onLevelChanged != nullptr){
  100 + _onLevelChanged(_selectedLevelIndex);
  101 + }
  102 + }
  103 + };
  104 + _eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener, this);
  105 +}
  106 +
  107 +
... ...
ios/Runner/Wowgame/Classes/CustomViews/LevelPickerView/SimpleLevelPickerView.h 0 → 100644
  1 +//
  2 +// SimpleLevelPickerView.h
  3 +// HalloweenSpaceInvaders
  4 +//
  5 +// Created by Katarzyna Kalinowska-Górska on 01/10/2019.
  6 +//
  7 +
  8 +#ifndef SimpleLevelPickerView_h
  9 +#define SimpleLevelPickerView_h
  10 +
  11 +#include "cocos2d.h"
  12 +#include "LevelView.h"
  13 +#include "LayoutObject.h"
  14 +
  15 +class SimpleLevelPickerView : public cocos2d::Node, public LayoutObject {
  16 +
  17 +public:
  18 + static SimpleLevelPickerView* create(std::vector<std::string> levelImagePaths);
  19 + void selectLevelIndex(int index, bool animated);
  20 + int getPickedLevelIndex();
  21 + void addOnLevelChangedCallback(std::function<void(int)> onLevelChanged);
  22 +
  23 + virtual void loadPropertiesFromJSON(const rapidjson::Value& jsonValue, LayoutViewInterface* scene = NULL, const std::string resFolder = "", const std::string altResFolder = "") override;
  24 +
  25 +protected:
  26 + int _selectedLevelIndex;
  27 + std::vector<LevelView*> levelViews;
  28 + std::function<void(int)> _onLevelChanged;
  29 +
  30 + bool init(std::vector<std::string> levelImagePaths);
  31 + virtual void prepareTouchHandlers();
  32 +
  33 +};
  34 +
  35 +
  36 +#endif /* SimpleLevelPickerView_h */
... ...
ios/Runner/Wowgame/Classes/CustomViews/LevelView.cpp 0 → 100644
  1 +//
  2 +// LevelView.cpp
  3 +// HalloweenSpaceInvaders-mobile
  4 +//
  5 +// Created by Katarzyna Kalinowska-Górska on 27/09/2019.
  6 +//
  7 +
  8 +#include "LevelView.h"
  9 +#include <stdio.h>
  10 +#include <string>
  11 +#include "ScalingUtils.h"
  12 +#include "MathUtils.h"
  13 +#include "MiscUtils.h"
  14 +
  15 +static const float InactivePicScale = 0.8f;
  16 +static const int InactivePicOpacity = 100;
  17 +static const int FloatActionTag = 10;
  18 +
  19 +LevelView* LevelView::create(std::string levelImagePath){
  20 + LevelView * view = new (std::nothrow) LevelView();
  21 + if(view && view->init(levelImagePath))
  22 + {
  23 + view->autorelease();
  24 + return view;
  25 + }
  26 + CC_SAFE_DELETE(view);
  27 + return nullptr;
  28 +}
  29 +
  30 +LevelView* LevelView::create(std::string levelImagePath, std::string levelName){
  31 + LevelView * view = new (std::nothrow) LevelView();
  32 + if(view && view->init(levelImagePath, levelName))
  33 + {
  34 + view->autorelease();
  35 + return view;
  36 + }
  37 + CC_SAFE_DELETE(view);
  38 + return nullptr;
  39 +}
  40 +
  41 +bool LevelView::init(std::string levelImagePath){
  42 + if(!cocos2d::Node::init()){
  43 + return false;
  44 + }
  45 +
  46 + _bgNode = cocos2d::Sprite::create("graphics/level_halo.png");
  47 + _pic = cocos2d::Sprite::create(levelImagePath);
  48 +
  49 + addChild(_bgNode);
  50 + addChild(_pic);
  51 +
  52 + setContentSize(_pic->getBoundingBox().size);
  53 +
  54 + auto contentWidth = getContentSize().width;
  55 + auto contentHeight = getContentSize().height;
  56 + _bgNode->setPosition(contentWidth/2, contentHeight/2);
  57 + _pic->setPosition(contentWidth/2, contentHeight/2);
  58 +
  59 + setAnchorPoint(cocos2d::Vec2(0.5,0.5));
  60 +
  61 + _isChosen = true;
  62 + setChosen(false, false);
  63 +
  64 + return true;
  65 +}
  66 +
  67 +bool LevelView::init(std::string levelImagePath, std::string levelName){
  68 + if(!init(levelImagePath)){
  69 + return false;
  70 + }
  71 +
  72 + _label = cocos2d::Label::createWithTTF(levelName, "fonts/ComicSansMSBold.ttf", 100*ScalingUtils::getScaleForFont()); //magic number
  73 + addChild(_label);
  74 + float padding = 50*ScalingUtils::scaleAspectFillToDesignIpadProSize(); //TODO magic number
  75 + setContentSize(cocos2d::Size(getContentSize().width, getContentSize().height+padding+_label->getBoundingBox().size.height));
  76 + _pic->setPosition(getContentSize().width/2, getContentSize().height - _pic->getBoundingBox().size.height/2 - padding);
  77 + _bgNode->setPosition(_pic->getPosition());
  78 + _label->setPosition(_pic->getPositionX(), _pic->getBoundingBox().getMinY() - padding - _label->getBoundingBox().size.height/2);
  79 +
  80 +// auto bg = cocos2d::LayerColor::create(cocos2d::Color4B(100,100,255, 255));
  81 +// bg->setContentSize(getContentSize());
  82 +// addChild(bg);
  83 +// bg->_setLocalZOrder(-10);
  84 +
  85 + _isChosen = true;
  86 + setChosen(false, false);
  87 +
  88 + return true;
  89 +}
  90 +
  91 +void LevelView::setChosen(bool chosen, bool animated){
  92 + static cocos2d::Color3B FontColorChosen = cocos2d::Color3B(255, 255, 255);
  93 + static cocos2d::Color3B FontColorDimmed = cocos2d::Color3B(128, 128, 128);
  94 + static float FontScaleChosen = 1.f;
  95 + static float FontScaleSmaller = 0.9f;
  96 +
  97 + if(chosen != _isChosen){
  98 + _bgNode->stopAllActions();
  99 + auto newBgNodeOpacity = 255.f;
  100 + auto newPicScale = 1.f;
  101 + auto newPicOpacity = 255;
  102 + if(!chosen){
  103 + newBgNodeOpacity = 0;
  104 + newPicScale = InactivePicScale;
  105 + newPicOpacity = InactivePicOpacity;
  106 + }
  107 +
  108 + if(animated){
  109 +// _bgNode->runAction(cocos2d::FadeTo::create(MiscUtils::StandardAnimationTime, newBgNodeOpacity));
  110 + _pic->runAction(cocos2d::Spawn::create(cocos2d::ScaleTo::create(MiscUtils::StandardAnimationTime, newPicScale),
  111 + cocos2d::FadeTo::create(MiscUtils::StandardAnimationTime, newPicOpacity), nullptr));
  112 + _bgNode->runAction(cocos2d::FadeTo::create(MiscUtils::StandardAnimationTime, newBgNodeOpacity));
  113 + if(_label != nullptr){
  114 + _label->runAction(cocos2d::TintTo::create(MiscUtils::StandardAnimationTime, (chosen? FontColorChosen : FontColorDimmed)));
  115 + _label->runAction(cocos2d::ScaleTo::create(MiscUtils::StandardAnimationTime, (chosen? FontScaleChosen : FontScaleSmaller)));
  116 + }
  117 +
  118 + } else {
  119 + _bgNode->setOpacity(newBgNodeOpacity);
  120 + _pic->setScale(newPicScale, newPicScale);
  121 + _pic->setOpacity(newPicOpacity);
  122 + if(_label != nullptr){
  123 + _label->setColor(chosen? FontColorChosen : FontColorDimmed);
  124 + _label->setScale(chosen ? FontScaleChosen : FontScaleSmaller);
  125 + }
  126 + }
  127 + _isChosen = chosen;
  128 + }
  129 +}
  130 +
  131 +void LevelView::loadPropertiesFromJSON(const rapidjson::Value& jsonValue, LayoutViewInterface* scene, const std::string resFolder, const std::string altResFolder)
  132 +{
  133 + this->loadCommonPropertiesFromJSON(jsonValue);
  134 + if(jsonValue.HasMember("opacity")){
  135 + auto opacity = jsonValue["opacity"].GetInt();
  136 + _pic->setOpacity(opacity);
  137 + }
  138 +}
  139 +
  140 +void LevelView::startFloating(){
  141 + _isFloating = true;
  142 + _circleMidPoint = getPosition();
  143 + _floatDirection = 1;
  144 + doFloat(true);
  145 +}
  146 +
  147 +void LevelView::stopFloating(){
  148 + if(_isFloating){
  149 + _isFloating = false;
  150 + stopActionByTag(FloatActionTag);
  151 + }
  152 +}
  153 +
  154 +void LevelView::doFloat(bool start){
  155 + float radiusX = getContentSize().height/100;
  156 + float radiusY = getContentSize().height/16;
  157 + float newX = _circleMidPoint.x + MathUtils::getRandom(-radiusX, radiusX);
  158 + float newY = _circleMidPoint.y + radiusY*_floatDirection;
  159 + auto animationTime = start ? 0.8 : 1.6f;
  160 + auto floatAction = cocos2d::Sequence::create(cocos2d::EaseInOut::create(cocos2d::MoveTo::create(animationTime, cocos2d::Vec2(newX, newY)), 2), cocos2d::CallFunc::create([&](){
  161 + doFloat();
  162 + }), nullptr);
  163 + floatAction->setTag(FloatActionTag);
  164 + runAction(floatAction);
  165 + _floatDirection *= -1;
  166 +}
  167 +
  168 +void LevelView::flash(){
  169 + auto halfDuration = MiscUtils::StandardAnimationTime*2;
  170 + if(_bgNode != nullptr){
  171 + auto flashAction = cocos2d::Sequence::create(cocos2d::EaseInOut::create(cocos2d::FadeIn::create(halfDuration),2),
  172 + cocos2d::EaseInOut::create(cocos2d::FadeOut::create(halfDuration),2),nullptr);
  173 + _bgNode->runAction(flashAction);
  174 + }
  175 + if(_pic != nullptr){
  176 + auto lastOpacity = _pic->getOpacity();
  177 + _pic->runAction(cocos2d::Sequence::create(cocos2d::EaseInOut::create(cocos2d::FadeIn::create(halfDuration), 2),
  178 + cocos2d::EaseInOut::create(cocos2d::FadeTo::create(halfDuration, lastOpacity), 2), nullptr));
  179 + }
  180 +}
  181 +
  182 +void LevelView::changePicture(std::string newPicturePath){
  183 + auto oldOpacity = _pic->getOpacity();
  184 + _pic->removeFromParent();
  185 + _pic = cocos2d::Sprite::create(newPicturePath);
  186 + addChild(_pic);
  187 + setContentSize(_pic->getBoundingBox().size);
  188 +
  189 + auto contentWidth = getContentSize().width;
  190 + auto contentHeight = getContentSize().height;
  191 + _bgNode->setPosition(contentWidth/2, contentHeight/2);
  192 + _pic->setPosition(contentWidth/2, contentHeight/2);
  193 +
  194 + if(_label != nullptr){
  195 + float padding = 50*ScalingUtils::scaleAspectFillToDesignIpadProSize(); //TODO magic number
  196 + setContentSize(cocos2d::Size(getContentSize().width, getContentSize().height+padding+_label->getBoundingBox().size.height));
  197 + _pic->setPosition(getContentSize().width/2, getContentSize().height - _pic->getBoundingBox().size.height/2 - padding);
  198 + _bgNode->setPosition(_pic->getPosition());
  199 + _label->setPosition(_pic->getPositionX(), _pic->getBoundingBox().getMinY() - padding - _label->getBoundingBox().size.height/2);
  200 + }
  201 +
  202 + setChosen(_isChosen, false);
  203 + _pic->setOpacity(oldOpacity);
  204 +
  205 +}
... ...
ios/Runner/Wowgame/Classes/CustomViews/LevelView.h 0 → 100644
  1 +//
  2 +// LevelView.h
  3 +// HalloweenSpaceInvaders
  4 +//
  5 +// Created by Katarzyna Kalinowska-Górska on 27/09/2019.
  6 +//
  7 +
  8 +#ifndef LevelView_h
  9 +#define LevelView_h
  10 +
  11 +#include "cocos2d.h"
  12 +#include <string>
  13 +#include "LayoutObject.h"
  14 +
  15 +class LevelView : public cocos2d::Node, public LayoutObject {
  16 +
  17 +public:
  18 + static LevelView* create(std::string levelImagePath);
  19 + static LevelView* create(std::string levelImagePath, std::string levelName);
  20 + void setChosen(bool chosen, bool animated = true);
  21 + void changePicture(std::string newPicturePath);
  22 +
  23 + virtual void loadPropertiesFromJSON(const rapidjson::Value& jsonValue, LayoutViewInterface* scene = NULL, const std::string resFolder = "", const std::string altResFolder = "") override;
  24 +
  25 + void startFloating();
  26 + void stopFloating();
  27 + virtual void doFloat(bool start = false);
  28 + void flash();
  29 +
  30 +protected:
  31 + bool _isChosen;
  32 + bool _isFloating;
  33 + int _floatDirection;
  34 + cocos2d::Point _circleMidPoint;
  35 + cocos2d::Sprite* _bgNode;
  36 + cocos2d::Sprite* _pic;
  37 + cocos2d::Label* _label;
  38 +
  39 + bool init(std::string levelImagePath);
  40 + bool init(std::string levelImagePath, std::string levelName);
  41 +};
  42 +
  43 +
  44 +#endif /* LevelView_h */
... ...
ios/Runner/Wowgame/Classes/CustomViews/ParentalGateShowInterface.cpp 0 → 100644
  1 +//
  2 +// ParentalGateShowInterface.cpp
  3 +// Steve and Maggie Halloween
  4 +//
  5 +// Created by Katarzyna Kalinowska-Górska on 14/10/2019.
  6 +//
  7 +
  8 +#include "ParentalGateShowInterface.h"
  9 +#include "MiscUtils.h"
  10 +#include "ParentalGateView.h"
  11 +
  12 +static int ParentalGateViewTag = 90;
  13 +
  14 +void ParentalGateShowInterface::presentParentalGate(std::function<void()> onSuccessCallback, std::function<void()> onFailureCallback){
  15 + _isPresentingParentalGate = true;
  16 + auto screenSize = cocos2d::Director::getInstance()->getWinSize();
  17 + auto parentalGate = ParentalGateView::create(screenSize.width, screenSize.height, onSuccessCallback, onFailureCallback);
  18 + parentalGate->setTag(ParentalGateViewTag);
  19 + PGSI_addChild(parentalGate);
  20 + parentalGate->setLocalZOrder(1000);
  21 +
  22 + parentalGate->setPosition(cocos2d::Vec2(0, 0));
  23 + parentalGate->setCascadeOpacityEnabled(true);
  24 +
  25 + auto touchListener = cocos2d::EventListenerTouchOneByOne::create();
  26 + touchListener->setSwallowTouches(true);
  27 + touchListener->onTouchBegan = [&](cocos2d::Touch* touch, cocos2d::Event* event){
  28 + return true;
  29 + };
  30 + PGSI_getEventDispatcher()->addEventListenerWithSceneGraphPriority(touchListener, parentalGate);
  31 + // #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
  32 + // auto keyboardListener = cocos2d::EventListenerKeyboard::create();
  33 + // keyboardListener->onKeyReleased = [&](cocos2d::EventKeyboard::KeyCode keyCode, cocos2d::Event* event){
  34 + // if(keyCode == cocos2d::EventKeyboard::KeyCode::KEY_BACK){
  35 + // hideParentalGate();
  36 + // }
  37 + // };
  38 + // _eventDispatcher->addEventListenerWithSceneGraphPriority(keyboardListener, parentalGate);
  39 + // #endif
  40 +
  41 + parentalGate->stopAllActions();
  42 + parentalGate->setOpacity(0);
  43 + parentalGate->runAction(cocos2d::FadeIn::create(MiscUtils::StandardAnimationTime));
  44 +}
  45 +
  46 +void ParentalGateShowInterface::hideParentalGate(){
  47 + _isPresentingParentalGate = false;
  48 + auto parentalGate = PGSI_getChildByTag(ParentalGateViewTag);
  49 + if(parentalGate != nullptr){
  50 + parentalGate->stopAllActions();
  51 + PGSI_getEventDispatcher()->removeEventListenersForTarget(parentalGate);
  52 + MiscUtils::hideAndRemoveView(parentalGate, true);
  53 + }
  54 +}
... ...
ios/Runner/Wowgame/Classes/CustomViews/ParentalGateShowInterface.h 0 → 100644
  1 +//
  2 +// ParentalGateShowInterface.h
  3 +// HalloweenSpaceInvaders
  4 +//
  5 +// Created by Katarzyna Kalinowska-Górska on 14/10/2019.
  6 +//
  7 +
  8 +#ifndef ParentalGateShowInterface_h
  9 +#define ParentalGateShowInterface_h
  10 +
  11 +#include "ParentalGateView.h"
  12 +#include "cocos2d.h"
  13 +
  14 +class ParentalGateShowInterface {
  15 +
  16 +public:
  17 + virtual ~ParentalGateShowInterface(){}
  18 + bool isShowingParentalGate(){return _isPresentingParentalGate;};
  19 + virtual void presentParentalGate(std::function<void()> onSuccessCallback, std::function<void()> onFailureCallback);
  20 + virtual void hideParentalGate();
  21 + virtual void PGSI_addChild(cocos2d::Node* n) {
  22 + auto selfNode = dynamic_cast<cocos2d::Node*>(this);
  23 + if(selfNode != nullptr){
  24 + selfNode->addChild(n);
  25 + }
  26 + }
  27 + virtual cocos2d::Node* PGSI_getChildByTag(int t) {
  28 + auto selfNode = dynamic_cast<cocos2d::Node*>(this);
  29 + if(selfNode != nullptr){
  30 + return selfNode->getChildByTag(t);
  31 + }
  32 + return nullptr;
  33 + }
  34 + virtual cocos2d::EventDispatcher* PGSI_getEventDispatcher(){
  35 + auto selfNode = dynamic_cast<cocos2d::Node*>(this);
  36 + if(selfNode != nullptr){
  37 + return selfNode->getEventDispatcher();
  38 + }
  39 + return nullptr;
  40 + }
  41 +
  42 +protected:
  43 + bool _isPresentingParentalGate;
  44 +
  45 +};
  46 +
  47 +#endif /* ParentalGateShowInterface_h */
... ...
ios/Runner/Wowgame/Classes/CustomViews/ParentalGateView.cpp 0 → 100644
  1 +//
  2 +// Created by Katarzyna Kalinowska-Górska on 2019-10-07.
  3 +//
  4 +
  5 +#include "ParentalGateView.h"
  6 +#include "ScalingUtils.h"
  7 +#include "SimpleButton.h"
  8 +#include "MathUtils.h"
  9 +
  10 +const std::vector<const char*> ParentalGateView::KKTextDigit::DigitNames = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
  11 +
  12 +ParentalGateView* ParentalGateView::create(float width, float height, std::function<void()> onSuccessCallback,std::function<void()> onFailureCallback){
  13 + ParentalGateView * view = new (std::nothrow) ParentalGateView();
  14 + if(view && view->init(width, height, onSuccessCallback, onFailureCallback))
  15 + {
  16 + view->autorelease();
  17 + return view;
  18 + }
  19 + CC_SAFE_DELETE(view);
  20 + return nullptr;
  21 +}
  22 +
  23 +bool ParentalGateView::init(float width, float height, std::function<void()> onSuccessCallback,std::function<void()> onFailureCallback){
  24 +
  25 + if(!cocos2d::LayerColor::initWithColor(cocos2d::Color4B(40, 40, 70, 240), width, height)){
  26 + return false;
  27 + }
  28 +
  29 + _onSuccessCallback = onSuccessCallback;
  30 + _onFailureCallback = onFailureCallback;
  31 + setupAppearance();
  32 + setupLogic();
  33 + setCascadeOpacityEnabled(true);
  34 +
  35 + return true;
  36 +}
  37 +
  38 +void ParentalGateView::setupAppearance(){
  39 +
  40 + auto wholeContainer = cocos2d::Node::create();
  41 + addChild(wholeContainer);
  42 + wholeContainer->setCascadeOpacityEnabled(true);
  43 +
  44 + // // add the instruction label
  45 + auto instructionLabel1 = cocos2d::Label::createWithTTF("Are you a parent?", "fonts/ComicSansMSBold.ttf", 120*ScalingUtils::getScaleForFont()); //TODO magic number, hard-coded text
  46 + instructionLabel1->setColor(cocos2d::Color3B(200, 200, 200));
  47 + auto instructionLabel2 = cocos2d::Label::createWithTTF("To continue, tap:", "fonts/ComicSansMSRegular.ttf", 100*ScalingUtils::getScaleForFont()); //TODO magic number, hard-coded text
  48 + instructionLabel2->setColor(cocos2d::Color3B(200, 200, 200));
  49 + digitsLabel = cocos2d::Label::createWithTTF("seven, seven, seven", "fonts/ComicSansMSBold.ttf", 110*ScalingUtils::getScaleForFont());
  50 + digitsLabel->setColor(cocos2d::Color3B(160, 130, 160));
  51 + wholeContainer->addChild(instructionLabel1);
  52 + wholeContainer->addChild(instructionLabel2);
  53 + wholeContainer->addChild(digitsLabel);
  54 +
  55 + auto buttonPadding = 20*ScalingUtils::scaleAspectFillToDesignIpadProSize();
  56 + float digitButtonSide = 0;
  57 + auto buttonContainer = cocos2d::Node::create();
  58 + buttonContainer->setCascadeOpacityEnabled(true);
  59 + for(int i = 1; i <= 9; ++i){
  60 + auto digitButton = SimpleButton::create();
  61 + auto digitButtonBgTexturePath = randomButtonBgImagePath();
  62 + digitButton->loadTextures(digitButtonBgTexturePath, digitButtonBgTexturePath, digitButtonBgTexturePath);
  63 + digitButton->setCascadeOpacityEnabled(true);
  64 + auto label = cocos2d::Label::createWithTTF(std::to_string(i), "fonts/ComicSansMSBold.ttf", 110*ScalingUtils::getScaleForFont());
  65 + label->setColor(cocos2d::Color3B(0, 0, 0));
  66 + label->setAnchorPoint(cocos2d::Vec2(0.5, 0.5));
  67 + label->setPosition(cocos2d::Vec2(digitButton->getBoundingBox().size.width/2, digitButton->getBoundingBox().size.height/2));
  68 + digitButton->addChild(label);
  69 + buttonContainer->addChild(digitButton);
  70 + auto iMult = (i-1)%3+1;
  71 + digitButton->setPositionX(buttonPadding*iMult + digitButton->getBoundingBox().size.width*(iMult-0.5));
  72 + auto yMult = 1;
  73 + if(i > 6) yMult = 3;
  74 + else if(i > 3) yMult = 2;
  75 + yMult = 4 - yMult;
  76 + digitButton->setPositionY(buttonPadding*yMult + digitButton->getBoundingBox().size.height*(yMult-0.5));
  77 + digitButtonSide = MAX(digitButtonSide, MAX(digitButton->getBoundingBox().size.width, digitButton->getBoundingBox().size.height));
  78 + digitButton->objectName = KKTextDigit::DigitNames[i];
  79 + digitButton->setOnTouchEndedCallback([&](std::string name, cocos2d::ui::Widget::TouchEventType eventType){
  80 + digitButtonPressed(name);
  81 + });
  82 + }
  83 +
  84 + auto buttonContainerSide = 3*digitButtonSide+5*buttonPadding;
  85 + buttonContainer->setContentSize(cocos2d::Size(buttonContainerSide, buttonContainerSide));
  86 + wholeContainer->addChild(buttonContainer);
  87 +
  88 +// auto nevermindButton = SimpleButton::create();
  89 +// auto nevermindLabel = cocos2d::Label::createWithTTF("Never mind", "fonts/ComicSansMSRegular.ttf", 110*ScalingUtils::getScaleForFont()); //TODO magic number, hard-coded text
  90 +// nevermindLabel->setAnchorPoint(cocos2d::Vec2(0.5, 0.5));
  91 +// nevermindButton->addChild(nevermindLabel);
  92 +//// nevermindButton->loadText
  93 +// nevermindButton->setContentSize(nevermindLabel->getContentSize());
  94 +// nevermindLabel->setPosition(nevermindButton->getContentSize().width/2, nevermindButton->getContentSize().height/2);
  95 +// wholeContainer->addChild(nevermindButton);
  96 +
  97 + auto wholeWidth = MAX(buttonContainer->getContentSize().width, instructionLabel1->getBoundingBox().size.width);
  98 + auto wholeHeight = buttonContainer->getContentSize().height + instructionLabel1->getBoundingBox().size.height + instructionLabel2->getBoundingBox().size.height + digitsLabel->getBoundingBox().size.height;// + nevermindButton->getBoundingBox().size.height;
  99 + wholeContainer->setContentSize(cocos2d::Size(wholeWidth, wholeHeight));
  100 + wholeContainer->setAnchorPoint(cocos2d::Vec2(0.5, 0.5));
  101 + wholeContainer->setPosition(getContentSize().width/2, getContentSize().height/2);
  102 +
  103 + buttonContainer->setAnchorPoint(cocos2d::Vec2(0.5,0));
  104 + buttonContainer->setPositionX(wholeWidth/2);
  105 + buttonContainer->setPositionY(0);//nevermindButton->getBoundingBox().size.height);
  106 +
  107 + instructionLabel1->setPosition(wholeWidth/2, wholeHeight - instructionLabel1->getBoundingBox().size.height/2);
  108 + instructionLabel2->setPosition(wholeWidth/2, instructionLabel1->getBoundingBox().getMinY() - instructionLabel2->getBoundingBox().size.height/2);
  109 + digitsLabel->setPosition(wholeWidth/2, instructionLabel2->getBoundingBox().getMinY() - digitsLabel->getBoundingBox().size.height/2);
  110 +
  111 +// nevermindButton->setAnchorPoint(cocos2d::Vec2(1, 0));
  112 +// nevermindButton->setPosition(cocos2d::Vec2(wholeWidth, 0));
  113 +
  114 +}
  115 +
  116 +void ParentalGateView::setupLogic(){
  117 + correctDigitSequence = generateTextDigits(3);
  118 + currentIndex = 0;
  119 + updateDigitsLabel();
  120 +}
  121 +
  122 +std::vector<ParentalGateView::KKTextDigit> ParentalGateView::generateTextDigits(int digitsCount){
  123 + std::vector<KKTextDigit> digits;
  124 + for(int i = 0; i < digitsCount; ++i){
  125 + auto newDigit = KKTextDigit(MathUtils::getRandomInt(1, 9));
  126 + digits.push_back(newDigit);
  127 + }
  128 + return digits;
  129 +}
  130 +
  131 +void ParentalGateView::updateDigitsLabel(){
  132 + std::string digitString = "";
  133 + for(int i = currentIndex; i < correctDigitSequence.size(); ++i){
  134 + digitString += correctDigitSequence[i].text;
  135 + if(i < correctDigitSequence.size()-1){
  136 + digitString += ", ";
  137 + }
  138 + }
  139 + digitsLabel->setString(digitString);
  140 +}
  141 +
  142 +std::string ParentalGateView::randomButtonBgImagePath(){
  143 + auto index = MathUtils::getRandomInt(1, 16);
  144 + switch (index%4) {
  145 + case 1:
  146 + return "buttons/graphics/button_yellow.png";
  147 + break;
  148 + case 2:
  149 + return "buttons/graphics/button_orange.png";
  150 + break;
  151 + case 3:
  152 + return "buttons/graphics/button_grey.png";
  153 + break;
  154 + default:
  155 + return "buttons/graphics/button_purple.png";
  156 + break;
  157 + }
  158 +}
  159 +
  160 +void ParentalGateView::digitButtonPressed(std::string digitName){
  161 + if(currentIndex < 0 || currentIndex >= correctDigitSequence.size()){
  162 + return;
  163 + }
  164 +
  165 + if(digitName == correctDigitSequence[currentIndex].text){
  166 + if(currentIndex == correctDigitSequence.size()-1){
  167 + currentIndex = -1;
  168 + _onSuccessCallback();
  169 + } else {
  170 + ++currentIndex;
  171 + updateDigitsLabel();
  172 + }
  173 + } else {
  174 + currentIndex = -1;
  175 + _onFailureCallback();
  176 + }
  177 +}
  178 +
  179 +//private func scaleSelfToHeight() {
  180 +// let screenHeight = UIScreen.main.bounds.height
  181 +// if(screenHeight < windowHeightConstraint.constant){
  182 +// let scale : CGFloat = screenHeight / windowHeightConstraint.constant;
  183 +// WOWScalingUtils.scaleAllDistances(inView: self.view, withScale: scale)
  184 +// WOWScalingUtils.scaleFonts(inView: self.view, withScale: scale)
  185 +// } else {
  186 +// WOWScalingUtils.ultimateScaleAllToIpadProDesign(inView: self.view)
  187 +// }
  188 +//}
  189 +//
  190 +//}
... ...
ios/Runner/Wowgame/Classes/CustomViews/ParentalGateView.h 0 → 100644
  1 +//
  2 +// Created by Katarzyna Kalinowska-Górska on 2019-10-07.
  3 +//
  4 +
  5 +#ifndef PROJ_ANDROID_PARENTALGATEVIEW_H
  6 +#define PROJ_ANDROID_PARENTALGATEVIEW_H
  7 +
  8 +#include "cocos2d.h"
  9 +#include <vector>
  10 +
  11 +class ParentalGateView : public cocos2d::LayerColor {
  12 +public:
  13 + static ParentalGateView* create(float width, float height, std::function<void()> onSuccessCallback,std::function<void()> onFailureCallback);
  14 + virtual ~ParentalGateView(){}
  15 +
  16 +protected:
  17 +
  18 + struct KKTextDigit {
  19 + static const std::vector<const char*> DigitNames;
  20 + int digit;
  21 + const char* text;
  22 +
  23 + KKTextDigit(int pDigit) {
  24 + assert(pDigit >= 0 && pDigit <= 9);
  25 + digit = pDigit;
  26 + text = DigitNames[digit];
  27 + }
  28 + };
  29 +
  30 +
  31 + std::function<void()> _onSuccessCallback;
  32 + std::function<void()> _onFailureCallback;
  33 + cocos2d::Label* digitsLabel;
  34 + std::vector<KKTextDigit> correctDigitSequence;
  35 + int currentIndex;
  36 +
  37 + bool init(float width, float height, std::function<void()> onSuccessCallback,std::function<void()> onFailureCallback);
  38 + void setupAppearance();
  39 + void setupLogic();
  40 + std::vector<KKTextDigit> generateTextDigits(int digitsCount);
  41 + std::string randomButtonBgImagePath();
  42 + void highlightTextDigit(int atIndex);
  43 + void digitButtonPressed(std::string digitName);
  44 + void updateDigitsLabel();
  45 +};
  46 +
  47 +
  48 +#endif //PROJ_ANDROID_PARENTALGATEVIEW_H
... ...