├── README.md ├── Data Assets ├── icon.png ├── gameoverpng ├── redline.png ├── restart.png ├── Fruit │ ├── kiwi.png │ ├── cherry.png │ ├── grape.png │ ├── lemon.png │ ├── orange.png │ ├── peach.png │ ├── tomato.png │ ├── cocount.png │ ├── pineapple.png │ ├── watermelon.png │ └── halfwatermelon.png ├── number │ ├── 0.png │ ├── 1.png │ ├── 2.png │ ├── 3.png │ ├── 4.png │ ├── 5.png │ ├── 6.png │ ├── 7.png │ ├── 8.png │ ├── 9.png │ └── .DS_Store ├── yellowlight.png └── Explode │ ├── .DS_Store │ ├── purple.png │ ├── yellow.png │ ├── redpiece.png │ ├── greenpiece.png │ ├── orangepiece.png │ ├── purplepiece.png │ └── yellowpiece.png ├── Watermelon ├── Sounds │ ├── bomb.mp3 │ ├── win.mp3 │ └── falldown.mp3 ├── Bootstrap │ ├── Assets.xcassets │ │ ├── Contents.json │ │ ├── Fruit │ │ │ ├── Contents.json │ │ │ ├── kiwi.imageset │ │ │ │ ├── kiwi.png │ │ │ │ └── Contents.json │ │ │ ├── grape.imageset │ │ │ │ ├── grape.png │ │ │ │ └── Contents.json │ │ │ ├── lemon.imageset │ │ │ │ ├── lemon.png │ │ │ │ └── Contents.json │ │ │ ├── peach.imageset │ │ │ │ ├── peach.png │ │ │ │ └── Contents.json │ │ │ ├── cherry.imageset │ │ │ │ ├── cherry.png │ │ │ │ └── Contents.json │ │ │ ├── cocount.imageset │ │ │ │ ├── cocount.png │ │ │ │ └── Contents.json │ │ │ ├── orange.imageset │ │ │ │ ├── orange.png │ │ │ │ └── Contents.json │ │ │ ├── tomato.imageset │ │ │ │ ├── tomato.png │ │ │ │ └── Contents.json │ │ │ ├── pineapple.imageset │ │ │ │ ├── pineapple.png │ │ │ │ └── Contents.json │ │ │ ├── watermelon.imageset │ │ │ │ ├── watermelon.png │ │ │ │ └── Contents.json │ │ │ └── halfwatermelon.imageset │ │ │ │ ├── halfwatermelon.png │ │ │ │ └── Contents.json │ │ ├── number │ │ │ ├── 0.imageset │ │ │ │ ├── 0.png │ │ │ │ └── Contents.json │ │ │ ├── 1.imageset │ │ │ │ ├── 1.png │ │ │ │ └── Contents.json │ │ │ ├── 2.imageset │ │ │ │ ├── 2.png │ │ │ │ └── Contents.json │ │ │ ├── 3.imageset │ │ │ │ ├── 3.png │ │ │ │ └── Contents.json │ │ │ ├── 4.imageset │ │ │ │ ├── 4.png │ │ │ │ └── Contents.json │ │ │ ├── 5.imageset │ │ │ │ ├── 5.png │ │ │ │ └── Contents.json │ │ │ ├── 6.imageset │ │ │ │ ├── 6.png │ │ │ │ └── Contents.json │ │ │ ├── 7.imageset │ │ │ │ ├── 7.png │ │ │ │ └── Contents.json │ │ │ ├── 8.imageset │ │ │ │ ├── 8.png │ │ │ │ └── Contents.json │ │ │ ├── 9.imageset │ │ │ │ ├── 9.png │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ ├── icon.png │ │ │ ├── icon-40.png │ │ │ ├── icon-72.png │ │ │ ├── icon-76.png │ │ │ ├── icon@2x.png │ │ │ ├── icon-40@2x.png │ │ │ ├── icon-40@3x.png │ │ │ ├── icon-60@2x.png │ │ │ ├── icon-60@3x.png │ │ │ ├── icon-72@2x.png │ │ │ ├── icon-76@2x.png │ │ │ ├── icon-small.png │ │ │ ├── icon-83.5@2x.png │ │ │ ├── icon-small-50.png │ │ │ ├── icon-small@2x.png │ │ │ ├── icon-small@3x.png │ │ │ ├── ios-marketing.png │ │ │ ├── icon-small-50@2x.png │ │ │ ├── notification-icon@2x.png │ │ │ ├── notification-icon@3x.png │ │ │ ├── notification-icon~ipad.png │ │ │ ├── notification-icon~ipad@2x.png │ │ │ └── Contents.json │ │ ├── redline.imageset │ │ │ ├── redline.png │ │ │ └── Contents.json │ │ ├── Explode │ │ │ ├── orange.imageset │ │ │ │ ├── orange.png │ │ │ │ └── Contents.json │ │ │ ├── purple.imageset │ │ │ │ ├── purple.png │ │ │ │ └── Contents.json │ │ │ ├── yellow.imageset │ │ │ │ ├── yellow.png │ │ │ │ └── Contents.json │ │ │ ├── redpiece.imageset │ │ │ │ ├── redpiece.png │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── greenpiece.imageset │ │ │ │ ├── greenpiece.png │ │ │ │ └── Contents.json │ │ │ ├── orangepiece.imageset │ │ │ │ ├── orangepiece.png │ │ │ │ └── Contents.json │ │ │ ├── purplepiece.imageset │ │ │ │ ├── purplepiece.png │ │ │ │ └── Contents.json │ │ │ └── yellowpiece.imageset │ │ │ │ ├── yellowpiece.png │ │ │ │ └── Contents.json │ │ ├── restart.imageset │ │ │ ├── restart copy.png │ │ │ └── Contents.json │ │ ├── gameover.imageset │ │ │ ├── gameover copy.png │ │ │ └── Contents.json │ │ ├── yellowlight.imageset │ │ │ ├── yellowlight.png │ │ │ └── Contents.json │ │ └── AccentColor.colorset │ │ │ └── Contents.json │ ├── WatermelonApp.swift │ └── ContentView.swift ├── Preview Content │ └── Preview Assets.xcassets │ │ └── Contents.json ├── Scene │ ├── GameScene+RedLine.swift │ ├── GameScene+Touches.swift │ ├── GameScene.swift │ ├── GameScene+LoadUI.swift │ └── GameScene+Collisions.swift ├── Utils │ ├── AudioUtil.swift │ ├── FruitTexture.swift │ └── FruitUtil.swift └── Info.plist └── Watermelon.xcodeproj ├── project.xcworkspace ├── contents.xcworkspacedata ├── xcuserdata │ └── steveyu.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcshareddata │ └── IDEWorkspaceChecks.plist ├── xcuserdata └── steveyu.xcuserdatad │ └── xcschemes │ └── xcschememanagement.plist └── project.pbxproj /README.md: -------------------------------------------------------------------------------- 1 | # Mix-watermelon 2 | 3 | 合成大西瓜 SwiftUI & SpriteKit 4 | -------------------------------------------------------------------------------- /Data Assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/icon.png -------------------------------------------------------------------------------- /Data Assets/gameoverpng: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/gameoverpng -------------------------------------------------------------------------------- /Data Assets/redline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/redline.png -------------------------------------------------------------------------------- /Data Assets/restart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/restart.png -------------------------------------------------------------------------------- /Data Assets/Fruit/kiwi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Fruit/kiwi.png -------------------------------------------------------------------------------- /Data Assets/number/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/number/0.png -------------------------------------------------------------------------------- /Data Assets/number/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/number/1.png -------------------------------------------------------------------------------- /Data Assets/number/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/number/2.png -------------------------------------------------------------------------------- /Data Assets/number/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/number/3.png -------------------------------------------------------------------------------- /Data Assets/number/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/number/4.png -------------------------------------------------------------------------------- /Data Assets/number/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/number/5.png -------------------------------------------------------------------------------- /Data Assets/number/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/number/6.png -------------------------------------------------------------------------------- /Data Assets/number/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/number/7.png -------------------------------------------------------------------------------- /Data Assets/number/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/number/8.png -------------------------------------------------------------------------------- /Data Assets/number/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/number/9.png -------------------------------------------------------------------------------- /Watermelon/Sounds/bomb.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Sounds/bomb.mp3 -------------------------------------------------------------------------------- /Watermelon/Sounds/win.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Sounds/win.mp3 -------------------------------------------------------------------------------- /Data Assets/Fruit/cherry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Fruit/cherry.png -------------------------------------------------------------------------------- /Data Assets/Fruit/grape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Fruit/grape.png -------------------------------------------------------------------------------- /Data Assets/Fruit/lemon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Fruit/lemon.png -------------------------------------------------------------------------------- /Data Assets/Fruit/orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Fruit/orange.png -------------------------------------------------------------------------------- /Data Assets/Fruit/peach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Fruit/peach.png -------------------------------------------------------------------------------- /Data Assets/Fruit/tomato.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Fruit/tomato.png -------------------------------------------------------------------------------- /Data Assets/number/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/number/.DS_Store -------------------------------------------------------------------------------- /Data Assets/yellowlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/yellowlight.png -------------------------------------------------------------------------------- /Data Assets/Explode/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Explode/.DS_Store -------------------------------------------------------------------------------- /Data Assets/Explode/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Explode/purple.png -------------------------------------------------------------------------------- /Data Assets/Explode/yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Explode/yellow.png -------------------------------------------------------------------------------- /Data Assets/Fruit/cocount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Fruit/cocount.png -------------------------------------------------------------------------------- /Data Assets/Fruit/pineapple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Fruit/pineapple.png -------------------------------------------------------------------------------- /Watermelon/Sounds/falldown.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Sounds/falldown.mp3 -------------------------------------------------------------------------------- /Data Assets/Explode/redpiece.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Explode/redpiece.png -------------------------------------------------------------------------------- /Data Assets/Fruit/watermelon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Fruit/watermelon.png -------------------------------------------------------------------------------- /Data Assets/Explode/greenpiece.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Explode/greenpiece.png -------------------------------------------------------------------------------- /Data Assets/Explode/orangepiece.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Explode/orangepiece.png -------------------------------------------------------------------------------- /Data Assets/Explode/purplepiece.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Explode/purplepiece.png -------------------------------------------------------------------------------- /Data Assets/Explode/yellowpiece.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Explode/yellowpiece.png -------------------------------------------------------------------------------- /Data Assets/Fruit/halfwatermelon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Data Assets/Fruit/halfwatermelon.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Watermelon/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/0.imageset/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/number/0.imageset/0.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/1.imageset/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/number/1.imageset/1.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/2.imageset/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/number/2.imageset/2.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/3.imageset/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/number/3.imageset/3.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/4.imageset/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/number/4.imageset/4.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/5.imageset/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/number/5.imageset/5.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/6.imageset/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/number/6.imageset/6.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/7.imageset/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/number/7.imageset/7.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/8.imageset/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/number/8.imageset/8.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/9.imageset/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/number/9.imageset/9.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/kiwi.imageset/kiwi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Fruit/kiwi.imageset/kiwi.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/redline.imageset/redline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/redline.imageset/redline.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-40.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-72.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-76.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon@2x.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/grape.imageset/grape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Fruit/grape.imageset/grape.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/lemon.imageset/lemon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Fruit/lemon.imageset/lemon.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/peach.imageset/peach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Fruit/peach.imageset/peach.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-small.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Explode/orange.imageset/orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Explode/orange.imageset/orange.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Explode/purple.imageset/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Explode/purple.imageset/purple.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Explode/yellow.imageset/yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Explode/yellow.imageset/yellow.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/cherry.imageset/cherry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Fruit/cherry.imageset/cherry.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/cocount.imageset/cocount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Fruit/cocount.imageset/cocount.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/orange.imageset/orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Fruit/orange.imageset/orange.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/tomato.imageset/tomato.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Fruit/tomato.imageset/tomato.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/restart.imageset/restart copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/restart.imageset/restart copy.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-small-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-small-50.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-small@2x.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-small@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-small@3x.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/ios-marketing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/ios-marketing.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/gameover.imageset/gameover copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/gameover.imageset/gameover copy.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/yellowlight.imageset/yellowlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/yellowlight.imageset/yellowlight.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-small-50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-small-50@2x.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Explode/redpiece.imageset/redpiece.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Explode/redpiece.imageset/redpiece.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/pineapple.imageset/pineapple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Fruit/pineapple.imageset/pineapple.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/watermelon.imageset/watermelon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Fruit/watermelon.imageset/watermelon.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/notification-icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/notification-icon@2x.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/notification-icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/notification-icon@3x.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Explode/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "properties" : { 7 | "provides-namespace" : true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Explode/greenpiece.imageset/greenpiece.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Explode/greenpiece.imageset/greenpiece.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Explode/orangepiece.imageset/orangepiece.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Explode/orangepiece.imageset/orangepiece.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Explode/purplepiece.imageset/purplepiece.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Explode/purplepiece.imageset/purplepiece.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Explode/yellowpiece.imageset/yellowpiece.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Explode/yellowpiece.imageset/yellowpiece.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "properties" : { 7 | "provides-namespace" : true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Watermelon.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/notification-icon~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/notification-icon~ipad.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/notification-icon~ipad@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/notification-icon~ipad@2x.png -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/halfwatermelon.imageset/halfwatermelon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon/Bootstrap/Assets.xcassets/Fruit/halfwatermelon.imageset/halfwatermelon.png -------------------------------------------------------------------------------- /Watermelon.xcodeproj/project.xcworkspace/xcuserdata/steveyu.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveYuOWO/Mix-watermelon/HEAD/Watermelon.xcodeproj/project.xcworkspace/xcuserdata/steveyu.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/0.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "0.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "1.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "2.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/3.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "3.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/4.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "4.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/5.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "5.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/6.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "6.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/7.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "7.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/8.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "8.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/number/9.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "9.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/grape.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "grape.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/kiwi.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "kiwi.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/lemon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "lemon.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/peach.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "peach.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/redline.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "redline.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Explode/orange.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "orange.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Explode/purple.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "purple.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Explode/yellow.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "yellow.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/cherry.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "cherry.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/cocount.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "cocount.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/orange.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "orange.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/tomato.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "tomato.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/gameover.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "gameover copy.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/restart.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "restart copy.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/yellowlight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "yellowlight.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Explode/redpiece.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "redpiece.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/pineapple.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "pineapple.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/watermelon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "watermelon.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Explode/greenpiece.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "greenpiece.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Explode/orangepiece.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "orangepiece.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Explode/purplepiece.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "purplepiece.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Explode/yellowpiece.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "yellowpiece.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/Fruit/halfwatermelon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "halfwatermelon.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Watermelon.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/WatermelonApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WatermelonApp.swift 3 | // Watermelon 4 | // 5 | // Created by Steve Yu on 2021/1/28. 6 | // 7 | 8 | import SwiftUI 9 | 10 | @main 11 | struct WatermelonApp: App { 12 | var body: some Scene { 13 | WindowGroup { 14 | ContentView() 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Watermelon.xcodeproj/xcuserdata/steveyu.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Watermelon.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.616", 9 | "green" : "0.906", 10 | "red" : "1.000" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/ContentView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ContentView.swift 3 | // Watermelon 4 | // 5 | // Created by Steve Yu on 2021/1/28. 6 | // 7 | 8 | import SwiftUI 9 | import SpriteKit 10 | 11 | let screen = UIScreen.main.bounds 12 | 13 | struct ContentView: View { 14 | var scene: SKScene { 15 | let scene = GameScene() 16 | 17 | scene.size = CGSize(width: screen.width, height: screen.height) 18 | 19 | return scene 20 | } 21 | var body: some View { 22 | SpriteView(scene: scene) 23 | .frame(width: screen.width, height: screen.height) 24 | .ignoresSafeArea() 25 | } 26 | } 27 | 28 | struct ContentView_Previews: PreviewProvider { 29 | static var previews: some View { 30 | ContentView() 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Watermelon/Scene/GameScene+RedLine.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GameScene+RedLine.swift 3 | // Watermelon 4 | // 5 | // Created by Steve Yu on 2021/1/29. 6 | // 7 | 8 | import SpriteKit 9 | import SwiftUI 10 | 11 | extension GameScene { 12 | func makeRedline() { 13 | redline = SKSpriteNode(imageNamed: "redline") 14 | redline.anchorPoint = CGPoint.zero 15 | redline.position = CGPoint(x: 0, y: screen.height - 80) 16 | // screen.height - 80 - 150 17 | addChild(redline) 18 | redline.setScale(0) 19 | redline.run(.repeat(.sequence([ 20 | .fadeIn(withDuration: 0.4), 21 | .fadeOut(withDuration: 0.4) 22 | ]), count: -1)) 23 | } 24 | 25 | func showInRedline() { 26 | redline.setScale(1) 27 | } 28 | 29 | func showOutRedline() { 30 | redline.setScale(0) 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Watermelon/Utils/AudioUtil.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AudioUtil.swift 3 | // Watermelon 4 | // 5 | // Created by Steve Yu on 2021/1/29. 6 | // 7 | 8 | import Foundation 9 | import AVFoundation 10 | 11 | class AudioUtil { 12 | 13 | var resourceName: String 14 | 15 | var player: AVAudioPlayer! 16 | 17 | var playing = false 18 | 19 | init(resourceName: String) { 20 | self.resourceName = resourceName 21 | } 22 | func playAudio() { 23 | if playing { return } 24 | guard let fileUrl = Bundle.main.url(forResource: resourceName, withExtension: "mp3") else { return } 25 | do { 26 | player = try AVAudioPlayer(contentsOf: fileUrl) 27 | player.prepareToPlay() 28 | player.play() 29 | playing = true 30 | } catch let err { 31 | print(err.localizedDescription) 32 | } 33 | 34 | Timer(timeInterval: 1, repeats: false) { _ in 35 | self.playing = false 36 | }.fire() 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Watermelon/Utils/FruitTexture.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FruitTexture.swift 3 | // Watermelon 4 | // 5 | // Created by Steve Yu on 2021/1/29. 6 | // 7 | 8 | import Foundation 9 | 10 | enum FruitTexture: String, CaseIterable { 11 | case cherry = "cherry" 12 | case cocount = "cocount" 13 | case grape = "grape" 14 | case halfwatermelon = "halfwatermelon" 15 | case kiwi = "kiwi" 16 | case lemon = "lemon" 17 | case orange = "orange" 18 | case peach = "peach" 19 | case pineapple = "pineapple" 20 | case tomato = "tomato" 21 | case watermelon = "watermelon" 22 | 23 | 24 | var name: String { 25 | rawValue 26 | } 27 | 28 | var bitmask: UInt32 { 29 | switch self { 30 | case .cherry: return 1 << 1 31 | case .cocount: return 1 << 2 32 | case .grape: return 1 << 3 33 | case .halfwatermelon: return 1 << 4 34 | case .kiwi: return 1 << 5 35 | case .lemon: return 1 << 6 36 | case .orange: return 1 << 7 37 | case .peach: return 1 << 8 38 | case .pineapple: return 1 << 9 39 | case .tomato: return 1 << 10 40 | case .watermelon: return 1 << 11 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Watermelon/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UIApplicationSceneManifest 24 | 25 | UIApplicationSupportsMultipleScenes 26 | 27 | 28 | UIApplicationSupportsIndirectInputEvents 29 | 30 | UILaunchScreen 31 | 32 | UIRequiredDeviceCapabilities 33 | 34 | armv7 35 | 36 | UISupportedInterfaceOrientations 37 | 38 | UIInterfaceOrientationPortrait 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UISupportedInterfaceOrientations~ipad 43 | 44 | UIInterfaceOrientationPortrait 45 | UIInterfaceOrientationPortraitUpsideDown 46 | UIInterfaceOrientationLandscapeLeft 47 | UIInterfaceOrientationLandscapeRight 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /Watermelon/Scene/GameScene+Touches.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GameScene+Touches.swift 3 | // Watermelon 4 | // 5 | // Created by Steve Yu on 2021/1/29. 6 | // 7 | 8 | import SpriteKit 9 | import SwiftUI 10 | 11 | // MARK: - Touches 12 | extension GameScene { 13 | override func touchesBegan(_ touches: Set, with event: UIEvent?) { 14 | 15 | guard let touch = touches.first else { return } 16 | let location = touch.location(in: self) 17 | 18 | if gameover { 19 | if atPoint(location) == restart { 20 | groundCollision = false 21 | isShowingRedline = false 22 | gameover = false 23 | score = 0 24 | groundFruits = [] 25 | removeAllChildren() 26 | print(111) 27 | 28 | print(gameover) 29 | initGame() 30 | } 31 | return 32 | } 33 | nowFruit.run(.sequence([ 34 | .moveTo(x: location.x, duration: 0.1), 35 | .run { 36 | self.nowFruit.physicsBody = SKPhysicsBody(circleOfRadius: self.nowFruit.size.height / 2) 37 | let bitmask = self.fruitUtil.getFruitTextureByName(fruitName: self.nowFruit.name!).bitmask 38 | self.nowFruit.physicsBody?.categoryBitMask = bitmask 39 | self.nowFruit.physicsBody?.contactTestBitMask = bitmask 40 | }, 41 | .wait(forDuration: 0.5), 42 | .run { 43 | self.groundFruits.append(self.nowFruit) 44 | self.nowFruit = self.fruitUtil.randomFruit() 45 | self.addChild(self.nowFruit) 46 | self.nowFruit.setScale(0) 47 | self.nowFruit.run(.scale(to: 0.5, duration: 0.1)) 48 | } 49 | ])) 50 | 51 | } 52 | 53 | override func touchesMoved(_ touches: Set, with event: UIEvent?) { 54 | 55 | } 56 | 57 | override func touchesEnded(_ touches: Set, with event: UIEvent?) { 58 | 59 | } 60 | } 61 | 62 | struct GameSceneTouches_Previews: PreviewProvider { 63 | static var previews: some View { 64 | ContentView() 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /Watermelon/Utils/FruitUtil.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FruitUtil.swift 3 | // Watermelon 4 | // 5 | // Created by Steve Yu on 2021/1/28. 6 | // 7 | 8 | import Foundation 9 | import SpriteKit 10 | 11 | class FruitUtil { 12 | private let randomList = [ 13 | FruitTexture.grape, 14 | FruitTexture.cherry, 15 | FruitTexture.orange, 16 | FruitTexture.lemon, 17 | FruitTexture.kiwi 18 | ] 19 | 20 | private var randomCnt = 0 21 | 22 | private let mixList = [ 23 | FruitTexture.grape, 24 | FruitTexture.cherry, 25 | FruitTexture.orange, 26 | FruitTexture.lemon, 27 | FruitTexture.kiwi, 28 | FruitTexture.tomato, 29 | FruitTexture.peach, 30 | FruitTexture.pineapple, 31 | FruitTexture.cocount, 32 | FruitTexture.halfwatermelon, 33 | FruitTexture.watermelon 34 | ] 35 | 36 | func getFruitScore(fruitName: String) -> Int { 37 | mixList.firstIndex{ $0.name == fruitName }! + 1 38 | } 39 | 40 | func mixFruit(fruitName: String) -> SKSpriteNode? { 41 | let index = mixList.firstIndex{ fruitName == $0.name } 42 | if index == nil || index! == mixList.count - 1 { 43 | print("fatal error: fruitName not found") 44 | return nil 45 | } 46 | let name = mixList[index! + 1].name 47 | let fruit = SKSpriteNode(imageNamed: name) 48 | fruit.name = name 49 | return fruit 50 | } 51 | 52 | func randomFruit() -> SKSpriteNode { 53 | randomCnt += 1 54 | var fruit: SKSpriteNode 55 | var name: String 56 | switch randomCnt { 57 | case 1...3: 58 | name = FruitTexture.grape.name 59 | case 4: 60 | name = FruitTexture.cherry.name 61 | case 5: 62 | name = FruitTexture.orange.name 63 | default: 64 | name = randomList.randomElement()!.name 65 | } 66 | fruit = SKSpriteNode(imageNamed: name) 67 | fruit.position = CGPoint(x: screen.width / 2, y: screen.height - 50) 68 | fruit.setScale(0.5) 69 | fruit.name = name 70 | return fruit 71 | } 72 | 73 | func getFruitTextureByName(fruitName: String) -> FruitTexture { 74 | FruitTexture.allCases.first{ $0.name == fruitName }! 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /Watermelon/Scene/GameScene.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GameScene.swift 3 | // Watermelon 4 | // 5 | // Created by Steve Yu on 2021/1/28. 6 | // 7 | 8 | import SwiftUI 9 | import SpriteKit 10 | 11 | class GameScene: SKScene, SKPhysicsContactDelegate { 12 | var nowFruit: SKSpriteNode! 13 | var scoreNode: SKSpriteNode! 14 | 15 | var score: Int = 0 { 16 | didSet { 17 | updateScore() 18 | } 19 | } 20 | 21 | var groundFruits: [SKSpriteNode] = [] 22 | 23 | var fruitUtil: FruitUtil! 24 | 25 | var ground: SKSpriteNode! 26 | 27 | let falldownAudio = AudioUtil(resourceName: "falldown") 28 | let winAudio = AudioUtil(resourceName: "win") 29 | let bombAudio = AudioUtil(resourceName: "bomb") 30 | 31 | 32 | var groundCollision = false 33 | 34 | 35 | var redline: SKSpriteNode! 36 | var isShowingRedline = false 37 | 38 | var gameover = false 39 | var gameoverNode: SKSpriteNode! 40 | var restart: SKSpriteNode! 41 | 42 | func initGame() { 43 | fruitUtil = FruitUtil() 44 | 45 | makeUI() 46 | makeNowFruit() 47 | makeScoreNode() 48 | makeRedline() 49 | } 50 | 51 | override func update(_ currentTime: TimeInterval) { 52 | if gameover { return } 53 | 54 | if isShowingRedline { 55 | for fruit in groundFruits { 56 | if fruit.position.y > screen.height - 80 { 57 | gameover = true 58 | loadingGameover() 59 | break 60 | } 61 | } 62 | } 63 | 64 | if isShowingRedline { 65 | if !checkWillShowingRedline() { 66 | showOutRedline() 67 | isShowingRedline = false 68 | } 69 | } else { 70 | if checkWillShowingRedline() { 71 | showInRedline() 72 | isShowingRedline = true 73 | } 74 | } 75 | } 76 | 77 | private func checkWillShowingRedline()->Bool { 78 | for fruit in groundFruits { 79 | if fruit.position.y > screen.height - 80 - 150 { 80 | return true 81 | } 82 | } 83 | return false 84 | } 85 | } 86 | 87 | struct GameScene_Previews: PreviewProvider { 88 | static var previews: some View { 89 | ContentView() 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /Watermelon/Bootstrap/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "notification-icon@2x.png", 5 | "idiom" : "iphone", 6 | "scale" : "2x", 7 | "size" : "20x20" 8 | }, 9 | { 10 | "filename" : "notification-icon@3x.png", 11 | "idiom" : "iphone", 12 | "scale" : "3x", 13 | "size" : "20x20" 14 | }, 15 | { 16 | "filename" : "icon-small.png", 17 | "idiom" : "iphone", 18 | "scale" : "1x", 19 | "size" : "29x29" 20 | }, 21 | { 22 | "filename" : "icon-small@2x.png", 23 | "idiom" : "iphone", 24 | "scale" : "2x", 25 | "size" : "29x29" 26 | }, 27 | { 28 | "filename" : "icon-small@3x.png", 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "29x29" 32 | }, 33 | { 34 | "filename" : "icon-40@2x.png", 35 | "idiom" : "iphone", 36 | "scale" : "2x", 37 | "size" : "40x40" 38 | }, 39 | { 40 | "filename" : "icon-40@3x.png", 41 | "idiom" : "iphone", 42 | "scale" : "3x", 43 | "size" : "40x40" 44 | }, 45 | { 46 | "filename" : "icon.png", 47 | "idiom" : "iphone", 48 | "scale" : "1x", 49 | "size" : "57x57" 50 | }, 51 | { 52 | "filename" : "icon@2x.png", 53 | "idiom" : "iphone", 54 | "scale" : "2x", 55 | "size" : "57x57" 56 | }, 57 | { 58 | "filename" : "icon-60@2x.png", 59 | "idiom" : "iphone", 60 | "scale" : "2x", 61 | "size" : "60x60" 62 | }, 63 | { 64 | "filename" : "icon-60@3x.png", 65 | "idiom" : "iphone", 66 | "scale" : "3x", 67 | "size" : "60x60" 68 | }, 69 | { 70 | "filename" : "notification-icon~ipad.png", 71 | "idiom" : "ipad", 72 | "scale" : "1x", 73 | "size" : "20x20" 74 | }, 75 | { 76 | "filename" : "notification-icon~ipad@2x.png", 77 | "idiom" : "ipad", 78 | "scale" : "2x", 79 | "size" : "20x20" 80 | }, 81 | { 82 | "filename" : "icon-small.png", 83 | "idiom" : "ipad", 84 | "scale" : "1x", 85 | "size" : "29x29" 86 | }, 87 | { 88 | "filename" : "icon-small@2x.png", 89 | "idiom" : "ipad", 90 | "scale" : "2x", 91 | "size" : "29x29" 92 | }, 93 | { 94 | "filename" : "icon-40.png", 95 | "idiom" : "ipad", 96 | "scale" : "1x", 97 | "size" : "40x40" 98 | }, 99 | { 100 | "filename" : "icon-40@2x.png", 101 | "idiom" : "ipad", 102 | "scale" : "2x", 103 | "size" : "40x40" 104 | }, 105 | { 106 | "filename" : "icon-small-50.png", 107 | "idiom" : "ipad", 108 | "scale" : "1x", 109 | "size" : "50x50" 110 | }, 111 | { 112 | "filename" : "icon-small-50@2x.png", 113 | "idiom" : "ipad", 114 | "scale" : "2x", 115 | "size" : "50x50" 116 | }, 117 | { 118 | "filename" : "icon-72.png", 119 | "idiom" : "ipad", 120 | "scale" : "1x", 121 | "size" : "72x72" 122 | }, 123 | { 124 | "filename" : "icon-72@2x.png", 125 | "idiom" : "ipad", 126 | "scale" : "2x", 127 | "size" : "72x72" 128 | }, 129 | { 130 | "filename" : "icon-76.png", 131 | "idiom" : "ipad", 132 | "scale" : "1x", 133 | "size" : "76x76" 134 | }, 135 | { 136 | "filename" : "icon-76@2x.png", 137 | "idiom" : "ipad", 138 | "scale" : "2x", 139 | "size" : "76x76" 140 | }, 141 | { 142 | "filename" : "icon-83.5@2x.png", 143 | "idiom" : "ipad", 144 | "scale" : "2x", 145 | "size" : "83.5x83.5" 146 | }, 147 | { 148 | "filename" : "ios-marketing.png", 149 | "idiom" : "ios-marketing", 150 | "scale" : "1x", 151 | "size" : "1024x1024" 152 | } 153 | ], 154 | "info" : { 155 | "author" : "xcode", 156 | "version" : 1 157 | } 158 | } 159 | -------------------------------------------------------------------------------- /Watermelon/Scene/GameScene+LoadUI.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GameScene+LoadUI.swift 3 | // Watermelon 4 | // 5 | // Created by Steve Yu on 2021/1/29. 6 | // 7 | 8 | import SpriteKit 9 | import SwiftUI 10 | 11 | // MARK: - Load UI 12 | extension GameScene { 13 | override func didMove(to view: SKView) { 14 | // view.showsFPS = true 15 | // view.showsNodeCount = true 16 | 17 | self.physicsWorld.contactDelegate = self 18 | self.physicsBody = SKPhysicsBody(edgeLoopFrom: frame) 19 | 20 | initGame() 21 | } 22 | 23 | func loadingGameover() { 24 | gameoverNode = SKSpriteNode() 25 | gameoverNode.position = CGPoint(x: screen.width / 2, y: screen.height / 2) 26 | 27 | let gray = SKSpriteNode(color: UIColor(#colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.4022575949)), 28 | size: CGSize(width: screen.width, 29 | height: screen.height)) 30 | let gameover = SKSpriteNode(imageNamed: "gameover") 31 | restart = SKSpriteNode(imageNamed: "restart") 32 | 33 | gameover.position = CGPoint(x: 0, y: 20) 34 | restart.position = CGPoint(x: 0, y: -20) 35 | 36 | gameoverNode.addChild(gray) 37 | gameoverNode.addChild(gameover) 38 | gameoverNode.addChild(restart) 39 | 40 | gameover.setScale(0.3) 41 | restart.setScale(0.3) 42 | addChild(gameoverNode) 43 | } 44 | 45 | func makeNowFruit() { 46 | nowFruit = fruitUtil.randomFruit() 47 | addChild(nowFruit) 48 | } 49 | 50 | func makeScoreNode() { 51 | scoreNode = SKSpriteNode() 52 | scoreNode.position = CGPoint(x: 30, y: screen.height - 50) 53 | scoreNode.setScale(0.5) 54 | addChild(scoreNode) 55 | 56 | updateScore() 57 | } 58 | 59 | func updateScore() { 60 | scoreNode.removeAllChildren() 61 | 62 | var scoreCopy = score 63 | var arr: [Int] = [] 64 | 65 | if scoreCopy == 0 { 66 | arr.append(0) 67 | } else { 68 | while scoreCopy != 0 { 69 | arr.append(scoreCopy % 10) 70 | scoreCopy /= 10 71 | } 72 | } 73 | 74 | var cnt = 0 75 | while arr.count != 0 { 76 | let last = arr.popLast()! 77 | let node = SKSpriteNode(imageNamed: "number/\(last)") 78 | node.position = CGPoint(x: cnt * 70, y: 0) 79 | cnt += 1 80 | scoreNode.addChild(node) 81 | } 82 | } 83 | 84 | func makeUI() { 85 | let background = SKSpriteNode(color: UIColor(#colorLiteral(red: 0.9843137255, green: 0.9098039216, blue: 0.6509803922, alpha: 1)), size: CGSize(width: screen.width, height: screen.height)) 86 | background.anchorPoint = CGPoint.zero 87 | background.position = CGPoint.zero 88 | 89 | addChild(background) 90 | 91 | let solid = SKSpriteNode(color: UIColor(#colorLiteral(red: 0.4588235294, green: 0.3333333333, blue: 0.2352941176, alpha: 1)), size: CGSize(width: screen.width, height: screen.height / 5)) 92 | solid.anchorPoint = CGPoint.zero 93 | solid.position = CGPoint.zero 94 | 95 | addChild(solid) 96 | 97 | 98 | ground = SKSpriteNode(color: UIColor(#colorLiteral(red: 0.6745098039, green: 0.537254902, blue: 0.3490196078, alpha: 1)), size: CGSize(width: screen.width, height: 10)) 99 | ground.anchorPoint = CGPoint.zero 100 | ground.position = CGPoint(x: 0, y: screen.height / 5) 101 | 102 | ground.physicsBody = SKPhysicsBody(edgeFrom: CGPoint(x: 0, y: ground.size.height), to: CGPoint(x: ground.size.width, y: ground.size.height)) 103 | ground.physicsBody?.categoryBitMask = 0xFFFFFFFF >> 1 104 | ground.physicsBody?.contactTestBitMask = 0xFFFFFFFF >> 1 105 | 106 | addChild(ground) 107 | } 108 | } 109 | 110 | struct GameSceneLoadUI_Previews: PreviewProvider { 111 | static var previews: some View { 112 | ContentView() 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /Watermelon/Scene/GameScene+Collisions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GameScene+Collisions.swift 3 | // Watermelon 4 | // 5 | // Created by Steve Yu on 2021/1/29. 6 | // 7 | 8 | import SpriteKit 9 | import SwiftUI 10 | 11 | // MARK: - Collisions 12 | extension GameScene { 13 | func didBegin(_ contact: SKPhysicsContact) { 14 | if groundCollision { return } 15 | 16 | let collision = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask 17 | 18 | // ground collison 19 | for fruit in FruitTexture.allCases { 20 | let bit = fruit.bitmask | ground.physicsBody!.categoryBitMask 21 | if bit == collision { 22 | groundCollision = true 23 | falldownAudio.playAudio() 24 | Timer(timeInterval: 1, repeats: false) { _ in 25 | self.groundCollision = false 26 | }.fire() 27 | break 28 | } 29 | } 30 | 31 | // fruit collision 32 | for fruit in FruitTexture.allCases { 33 | let fruitBit = fruit.bitmask | fruit.bitmask 34 | if fruitBit == collision { 35 | // bomb sound 36 | bombAudio.playAudio() 37 | 38 | // collision appear 39 | let nodeA = contact.bodyA.node! 40 | let nodeB = contact.bodyB.node! 41 | // two watermelon collision 42 | if nodeA.name == FruitTexture.watermelon.name { 43 | return 44 | } 45 | // update score 46 | let score = fruitUtil.getFruitScore(fruitName: nodeA.name!) 47 | self.score += score 48 | // bonus 49 | if nodeA.name! == FruitTexture.halfwatermelon.name { 50 | self.score += 100 51 | showBonusAnimation() 52 | // bonus audio 53 | winAudio.playAudio() 54 | } 55 | 56 | // animation 57 | let newFruitPosition = CGPoint( 58 | x: (nodeA.position.x + nodeB.position.x) / 2, 59 | y: (nodeA.position.y + nodeB.position.y) / 2 60 | ) 61 | run(.sequence([ 62 | .run { 63 | nodeA.run(.fadeOut(withDuration: 0.1)) 64 | nodeB.run(.fadeOut(withDuration: 0.1)) 65 | }, 66 | .run { 67 | nodeA.removeFromParent() 68 | nodeB.removeFromParent() 69 | }, 70 | .run { 71 | self.generateNewFruitFromPosition(fruitName: nodeA.name!, position: newFruitPosition) 72 | } 73 | ])) 74 | 75 | } 76 | } 77 | } 78 | 79 | func showBonusAnimation() { 80 | let bonusNode = SKSpriteNode() 81 | bonusNode.position = CGPoint(x: screen.width / 2, y: screen.height / 2) 82 | 83 | let gray = SKSpriteNode(color: UIColor(#colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.4022575949)), 84 | size: CGSize(width: screen.width, 85 | height: screen.height)) 86 | 87 | let layer = SKSpriteNode() 88 | let watermelon = SKSpriteNode(imageNamed: FruitTexture.watermelon.name) 89 | let yellowlight = SKSpriteNode(imageNamed: "yellowlight") 90 | 91 | 92 | watermelon.setScale(0.3) 93 | 94 | layer.addChild(yellowlight) 95 | layer.addChild(watermelon) 96 | 97 | bonusNode.addChild(gray) 98 | bonusNode.addChild(layer) 99 | 100 | addChild(bonusNode) 101 | 102 | yellowlight.run(.rotate(byAngle: 30, duration: 30)) 103 | 104 | layer.setScale(0.1) 105 | layer.position = CGPoint(x: 0, y: 50) 106 | layer.run(.sequence([ 107 | .scale(to: 1, duration: 0.5), 108 | 109 | .wait(forDuration: 1), 110 | .scale(to: 0, duration: 0.5) 111 | ])) 112 | layer.run(.sequence([ 113 | .moveTo(y: 150, duration: 0.1), 114 | .moveTo(y: 0, duration: 0.4), 115 | .wait(forDuration: 1), 116 | .moveTo(y: 500, duration: 0.5), 117 | .run { 118 | bonusNode.run(.fadeOut(withDuration: 0.1)) 119 | bonusNode.removeFromParent() 120 | } 121 | ])) 122 | 123 | } 124 | 125 | func generateNewFruitFromPosition(fruitName: String, position: CGPoint) { 126 | // add new Fruit 127 | guard let fruit = fruitUtil.mixFruit(fruitName: fruitName) else { return } 128 | 129 | fruit.position = position 130 | fruit.physicsBody = SKPhysicsBody(circleOfRadius: fruit.size.height/2) 131 | let bitmask = fruitUtil.getFruitTextureByName(fruitName: fruit.name!).bitmask 132 | fruit.physicsBody?.categoryBitMask = bitmask 133 | fruit.physicsBody?.contactTestBitMask = bitmask 134 | 135 | addChild(fruit) 136 | // animation 137 | fruit.setScale(0) 138 | fruit.run(.scale(to: 0.5, duration: 0.3)) 139 | 140 | groundFruits.append(fruit) 141 | } 142 | 143 | func didEnd(_ contact: SKPhysicsContact) { 144 | 145 | } 146 | } 147 | 148 | struct GameSceneCollisions_Previews: PreviewProvider { 149 | static var previews: some View { 150 | ContentView() 151 | } 152 | } 153 | -------------------------------------------------------------------------------- /Watermelon.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 50; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 9F3031D825C2AE0A009E083D /* WatermelonApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3031D725C2AE0A009E083D /* WatermelonApp.swift */; }; 11 | 9F3031DA25C2AE0A009E083D /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3031D925C2AE0A009E083D /* ContentView.swift */; }; 12 | 9F3031DC25C2AE0D009E083D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9F3031DB25C2AE0D009E083D /* Assets.xcassets */; }; 13 | 9F3031DF25C2AE0D009E083D /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9F3031DE25C2AE0D009E083D /* Preview Assets.xcassets */; }; 14 | 9F3031E825C2AEE9009E083D /* GameScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3031E725C2AEE9009E083D /* GameScene.swift */; }; 15 | 9F3031F125C2B0A4009E083D /* win.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 9F3031EE25C2B0A4009E083D /* win.mp3 */; }; 16 | 9F3031F225C2B0A4009E083D /* falldown.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 9F3031EF25C2B0A4009E083D /* falldown.mp3 */; }; 17 | 9F3031F325C2B0A4009E083D /* bomb.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 9F3031F025C2B0A4009E083D /* bomb.mp3 */; }; 18 | 9F6B978F25C2BAF200465A17 /* FruitUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F6B978E25C2BAF200465A17 /* FruitUtil.swift */; }; 19 | 9FD013D925C3FBEF002897F8 /* GameScene+LoadUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FD013D825C3FBEF002897F8 /* GameScene+LoadUI.swift */; }; 20 | 9FD013DC25C3FC15002897F8 /* GameScene+Touches.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FD013DB25C3FC15002897F8 /* GameScene+Touches.swift */; }; 21 | 9FD013E725C3FD64002897F8 /* FruitTexture.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FD013E625C3FD64002897F8 /* FruitTexture.swift */; }; 22 | 9FD013EC25C40043002897F8 /* GameScene+Collisions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FD013EB25C40043002897F8 /* GameScene+Collisions.swift */; }; 23 | 9FDD9FAA25C425DB00876792 /* AudioUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FDD9FA925C425DB00876792 /* AudioUtil.swift */; }; 24 | 9FDD9FCF25C42BC500876792 /* icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FAD25C42BC500876792 /* icon.png */; }; 25 | 9FDD9FD025C42BC500876792 /* yellowlight.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FAE25C42BC500876792 /* yellowlight.png */; }; 26 | 9FDD9FD125C42BC500876792 /* peach.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FB025C42BC500876792 /* peach.png */; }; 27 | 9FDD9FD225C42BC500876792 /* pineapple.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FB125C42BC500876792 /* pineapple.png */; }; 28 | 9FDD9FD325C42BC500876792 /* tomato.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FB225C42BC500876792 /* tomato.png */; }; 29 | 9FDD9FD425C42BC500876792 /* grape.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FB325C42BC500876792 /* grape.png */; }; 30 | 9FDD9FD525C42BC500876792 /* watermelon.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FB425C42BC500876792 /* watermelon.png */; }; 31 | 9FDD9FD625C42BC500876792 /* cherry.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FB525C42BC500876792 /* cherry.png */; }; 32 | 9FDD9FD725C42BC500876792 /* orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FB625C42BC500876792 /* orange.png */; }; 33 | 9FDD9FD825C42BC500876792 /* cocount.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FB725C42BC500876792 /* cocount.png */; }; 34 | 9FDD9FD925C42BC500876792 /* lemon.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FB825C42BC500876792 /* lemon.png */; }; 35 | 9FDD9FDA25C42BC500876792 /* kiwi.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FB925C42BC500876792 /* kiwi.png */; }; 36 | 9FDD9FDB25C42BC500876792 /* halfwatermelon.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FBA25C42BC500876792 /* halfwatermelon.png */; }; 37 | 9FDD9FDC25C42BC500876792 /* 8.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FBC25C42BC500876792 /* 8.png */; }; 38 | 9FDD9FDD25C42BC500876792 /* 9.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FBD25C42BC500876792 /* 9.png */; }; 39 | 9FDD9FDE25C42BC500876792 /* 4.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FBE25C42BC500876792 /* 4.png */; }; 40 | 9FDD9FDF25C42BC500876792 /* 5.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FBF25C42BC500876792 /* 5.png */; }; 41 | 9FDD9FE025C42BC500876792 /* 7.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FC025C42BC500876792 /* 7.png */; }; 42 | 9FDD9FE125C42BC500876792 /* 6.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FC125C42BC500876792 /* 6.png */; }; 43 | 9FDD9FE225C42BC500876792 /* 2.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FC225C42BC500876792 /* 2.png */; }; 44 | 9FDD9FE325C42BC500876792 /* 3.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FC325C42BC500876792 /* 3.png */; }; 45 | 9FDD9FE425C42BC500876792 /* 1.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FC425C42BC500876792 /* 1.png */; }; 46 | 9FDD9FE525C42BC500876792 /* 0.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FC525C42BC500876792 /* 0.png */; }; 47 | 9FDD9FE625C42BC500876792 /* yellow.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FC725C42BC500876792 /* yellow.png */; }; 48 | 9FDD9FE725C42BC500876792 /* yellowpiece.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FC825C42BC500876792 /* yellowpiece.png */; }; 49 | 9FDD9FE825C42BC500876792 /* orangepiece.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FC925C42BC500876792 /* orangepiece.png */; }; 50 | 9FDD9FEA25C42BC500876792 /* greenpiece.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FCB25C42BC500876792 /* greenpiece.png */; }; 51 | 9FDD9FEB25C42BC500876792 /* redpiece.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FCC25C42BC500876792 /* redpiece.png */; }; 52 | 9FDD9FEC25C42BC500876792 /* purple.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FCD25C42BC500876792 /* purple.png */; }; 53 | 9FDD9FED25C42BC500876792 /* purplepiece.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FCE25C42BC500876792 /* purplepiece.png */; }; 54 | 9FDD9FF125C42C1D00876792 /* redline.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FF025C42C1D00876792 /* redline.png */; }; 55 | 9FDD9FFC25C4331800876792 /* GameScene+RedLine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FDD9FFB25C4331800876792 /* GameScene+RedLine.swift */; }; 56 | 9FDDA00025C4377100876792 /* restart.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FFE25C4377100876792 /* restart.png */; }; 57 | 9FDDA00125C4377200876792 /* gameoverpng in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD9FFF25C4377100876792 /* gameoverpng */; }; 58 | /* End PBXBuildFile section */ 59 | 60 | /* Begin PBXFileReference section */ 61 | 9F3031D725C2AE0A009E083D /* WatermelonApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatermelonApp.swift; sourceTree = ""; }; 62 | 9F3031D925C2AE0A009E083D /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 63 | 9F3031DB25C2AE0D009E083D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 64 | 9F3031DE25C2AE0D009E083D /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 65 | 9F3031E025C2AE0D009E083D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 66 | 9F3031E725C2AEE9009E083D /* GameScene.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameScene.swift; sourceTree = ""; }; 67 | 9F3031EE25C2B0A4009E083D /* win.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = win.mp3; sourceTree = ""; }; 68 | 9F3031EF25C2B0A4009E083D /* falldown.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = falldown.mp3; sourceTree = ""; }; 69 | 9F3031F025C2B0A4009E083D /* bomb.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = bomb.mp3; sourceTree = ""; }; 70 | 9F46A66425C4492A00D7EEE5 /* Watermelon.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Watermelon.app; sourceTree = BUILT_PRODUCTS_DIR; }; 71 | 9F6B978E25C2BAF200465A17 /* FruitUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FruitUtil.swift; sourceTree = ""; }; 72 | 9FD013D825C3FBEF002897F8 /* GameScene+LoadUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "GameScene+LoadUI.swift"; sourceTree = ""; }; 73 | 9FD013DB25C3FC15002897F8 /* GameScene+Touches.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "GameScene+Touches.swift"; sourceTree = ""; }; 74 | 9FD013E625C3FD64002897F8 /* FruitTexture.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FruitTexture.swift; sourceTree = ""; }; 75 | 9FD013EB25C40043002897F8 /* GameScene+Collisions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "GameScene+Collisions.swift"; sourceTree = ""; }; 76 | 9FDD9FA925C425DB00876792 /* AudioUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioUtil.swift; sourceTree = ""; }; 77 | 9FDD9FAD25C42BC500876792 /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = ""; }; 78 | 9FDD9FAE25C42BC500876792 /* yellowlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = yellowlight.png; sourceTree = ""; }; 79 | 9FDD9FB025C42BC500876792 /* peach.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = peach.png; sourceTree = ""; }; 80 | 9FDD9FB125C42BC500876792 /* pineapple.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pineapple.png; sourceTree = ""; }; 81 | 9FDD9FB225C42BC500876792 /* tomato.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tomato.png; sourceTree = ""; }; 82 | 9FDD9FB325C42BC500876792 /* grape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = grape.png; sourceTree = ""; }; 83 | 9FDD9FB425C42BC500876792 /* watermelon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = watermelon.png; sourceTree = ""; }; 84 | 9FDD9FB525C42BC500876792 /* cherry.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cherry.png; sourceTree = ""; }; 85 | 9FDD9FB625C42BC500876792 /* orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = orange.png; sourceTree = ""; }; 86 | 9FDD9FB725C42BC500876792 /* cocount.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cocount.png; sourceTree = ""; }; 87 | 9FDD9FB825C42BC500876792 /* lemon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lemon.png; sourceTree = ""; }; 88 | 9FDD9FB925C42BC500876792 /* kiwi.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = kiwi.png; sourceTree = ""; }; 89 | 9FDD9FBA25C42BC500876792 /* halfwatermelon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = halfwatermelon.png; sourceTree = ""; }; 90 | 9FDD9FBC25C42BC500876792 /* 8.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 8.png; sourceTree = ""; }; 91 | 9FDD9FBD25C42BC500876792 /* 9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 9.png; sourceTree = ""; }; 92 | 9FDD9FBE25C42BC500876792 /* 4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 4.png; sourceTree = ""; }; 93 | 9FDD9FBF25C42BC500876792 /* 5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 5.png; sourceTree = ""; }; 94 | 9FDD9FC025C42BC500876792 /* 7.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 7.png; sourceTree = ""; }; 95 | 9FDD9FC125C42BC500876792 /* 6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 6.png; sourceTree = ""; }; 96 | 9FDD9FC225C42BC500876792 /* 2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 2.png; sourceTree = ""; }; 97 | 9FDD9FC325C42BC500876792 /* 3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 3.png; sourceTree = ""; }; 98 | 9FDD9FC425C42BC500876792 /* 1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 1.png; sourceTree = ""; }; 99 | 9FDD9FC525C42BC500876792 /* 0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 0.png; sourceTree = ""; }; 100 | 9FDD9FC725C42BC500876792 /* yellow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = yellow.png; sourceTree = ""; }; 101 | 9FDD9FC825C42BC500876792 /* yellowpiece.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = yellowpiece.png; sourceTree = ""; }; 102 | 9FDD9FC925C42BC500876792 /* orangepiece.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = orangepiece.png; sourceTree = ""; }; 103 | 9FDD9FCB25C42BC500876792 /* greenpiece.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = greenpiece.png; sourceTree = ""; }; 104 | 9FDD9FCC25C42BC500876792 /* redpiece.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = redpiece.png; sourceTree = ""; }; 105 | 9FDD9FCD25C42BC500876792 /* purple.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = purple.png; sourceTree = ""; }; 106 | 9FDD9FCE25C42BC500876792 /* purplepiece.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = purplepiece.png; sourceTree = ""; }; 107 | 9FDD9FF025C42C1D00876792 /* redline.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = redline.png; sourceTree = ""; }; 108 | 9FDD9FFB25C4331800876792 /* GameScene+RedLine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "GameScene+RedLine.swift"; sourceTree = ""; }; 109 | 9FDD9FFE25C4377100876792 /* restart.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = restart.png; sourceTree = ""; }; 110 | 9FDD9FFF25C4377100876792 /* gameoverpng */ = {isa = PBXFileReference; lastKnownFileType = file; path = gameoverpng; sourceTree = ""; }; 111 | /* End PBXFileReference section */ 112 | 113 | /* Begin PBXFrameworksBuildPhase section */ 114 | 9F3031D125C2AE0A009E083D /* Frameworks */ = { 115 | isa = PBXFrameworksBuildPhase; 116 | buildActionMask = 2147483647; 117 | files = ( 118 | ); 119 | runOnlyForDeploymentPostprocessing = 0; 120 | }; 121 | /* End PBXFrameworksBuildPhase section */ 122 | 123 | /* Begin PBXGroup section */ 124 | 9F3031CB25C2AE0A009E083D = { 125 | isa = PBXGroup; 126 | children = ( 127 | 9FDD9FAC25C42BC500876792 /* Data Assets */, 128 | 9F3031D625C2AE0A009E083D /* Watermelon */, 129 | 9F46A66425C4492A00D7EEE5 /* Watermelon.app */, 130 | ); 131 | sourceTree = ""; 132 | }; 133 | 9F3031D625C2AE0A009E083D /* Watermelon */ = { 134 | isa = PBXGroup; 135 | children = ( 136 | 9FD013E525C3FD4D002897F8 /* Utils */, 137 | 9F3031E025C2AE0D009E083D /* Info.plist */, 138 | 9F3031ED25C2B0A4009E083D /* Sounds */, 139 | 9FD013E125C3FC4A002897F8 /* Bootstrap */, 140 | 9FD013DF25C3FC33002897F8 /* Scene */, 141 | 9F3031DD25C2AE0D009E083D /* Preview Content */, 142 | ); 143 | path = Watermelon; 144 | sourceTree = ""; 145 | }; 146 | 9F3031DD25C2AE0D009E083D /* Preview Content */ = { 147 | isa = PBXGroup; 148 | children = ( 149 | 9F3031DE25C2AE0D009E083D /* Preview Assets.xcassets */, 150 | ); 151 | path = "Preview Content"; 152 | sourceTree = ""; 153 | }; 154 | 9F3031ED25C2B0A4009E083D /* Sounds */ = { 155 | isa = PBXGroup; 156 | children = ( 157 | 9F3031EE25C2B0A4009E083D /* win.mp3 */, 158 | 9F3031EF25C2B0A4009E083D /* falldown.mp3 */, 159 | 9F3031F025C2B0A4009E083D /* bomb.mp3 */, 160 | ); 161 | path = Sounds; 162 | sourceTree = ""; 163 | }; 164 | 9FD013DF25C3FC33002897F8 /* Scene */ = { 165 | isa = PBXGroup; 166 | children = ( 167 | 9F3031E725C2AEE9009E083D /* GameScene.swift */, 168 | 9FDD9FFB25C4331800876792 /* GameScene+RedLine.swift */, 169 | 9FD013DB25C3FC15002897F8 /* GameScene+Touches.swift */, 170 | 9FD013EB25C40043002897F8 /* GameScene+Collisions.swift */, 171 | 9FD013D825C3FBEF002897F8 /* GameScene+LoadUI.swift */, 172 | ); 173 | path = Scene; 174 | sourceTree = ""; 175 | }; 176 | 9FD013E125C3FC4A002897F8 /* Bootstrap */ = { 177 | isa = PBXGroup; 178 | children = ( 179 | 9F3031D725C2AE0A009E083D /* WatermelonApp.swift */, 180 | 9F3031D925C2AE0A009E083D /* ContentView.swift */, 181 | 9F3031DB25C2AE0D009E083D /* Assets.xcassets */, 182 | ); 183 | path = Bootstrap; 184 | sourceTree = ""; 185 | }; 186 | 9FD013E525C3FD4D002897F8 /* Utils */ = { 187 | isa = PBXGroup; 188 | children = ( 189 | 9F6B978E25C2BAF200465A17 /* FruitUtil.swift */, 190 | 9FD013E625C3FD64002897F8 /* FruitTexture.swift */, 191 | 9FDD9FA925C425DB00876792 /* AudioUtil.swift */, 192 | ); 193 | path = Utils; 194 | sourceTree = ""; 195 | }; 196 | 9FDD9FAC25C42BC500876792 /* Data Assets */ = { 197 | isa = PBXGroup; 198 | children = ( 199 | 9FDD9FFF25C4377100876792 /* gameoverpng */, 200 | 9FDD9FFE25C4377100876792 /* restart.png */, 201 | 9FDD9FAD25C42BC500876792 /* icon.png */, 202 | 9FDD9FF025C42C1D00876792 /* redline.png */, 203 | 9FDD9FAE25C42BC500876792 /* yellowlight.png */, 204 | 9FDD9FAF25C42BC500876792 /* Fruit */, 205 | 9FDD9FBB25C42BC500876792 /* number */, 206 | 9FDD9FC625C42BC500876792 /* Explode */, 207 | ); 208 | path = "Data Assets"; 209 | sourceTree = ""; 210 | }; 211 | 9FDD9FAF25C42BC500876792 /* Fruit */ = { 212 | isa = PBXGroup; 213 | children = ( 214 | 9FDD9FB025C42BC500876792 /* peach.png */, 215 | 9FDD9FB125C42BC500876792 /* pineapple.png */, 216 | 9FDD9FB225C42BC500876792 /* tomato.png */, 217 | 9FDD9FB325C42BC500876792 /* grape.png */, 218 | 9FDD9FB425C42BC500876792 /* watermelon.png */, 219 | 9FDD9FB525C42BC500876792 /* cherry.png */, 220 | 9FDD9FB625C42BC500876792 /* orange.png */, 221 | 9FDD9FB725C42BC500876792 /* cocount.png */, 222 | 9FDD9FB825C42BC500876792 /* lemon.png */, 223 | 9FDD9FB925C42BC500876792 /* kiwi.png */, 224 | 9FDD9FBA25C42BC500876792 /* halfwatermelon.png */, 225 | ); 226 | path = Fruit; 227 | sourceTree = ""; 228 | }; 229 | 9FDD9FBB25C42BC500876792 /* number */ = { 230 | isa = PBXGroup; 231 | children = ( 232 | 9FDD9FBC25C42BC500876792 /* 8.png */, 233 | 9FDD9FBD25C42BC500876792 /* 9.png */, 234 | 9FDD9FBE25C42BC500876792 /* 4.png */, 235 | 9FDD9FBF25C42BC500876792 /* 5.png */, 236 | 9FDD9FC025C42BC500876792 /* 7.png */, 237 | 9FDD9FC125C42BC500876792 /* 6.png */, 238 | 9FDD9FC225C42BC500876792 /* 2.png */, 239 | 9FDD9FC325C42BC500876792 /* 3.png */, 240 | 9FDD9FC425C42BC500876792 /* 1.png */, 241 | 9FDD9FC525C42BC500876792 /* 0.png */, 242 | ); 243 | path = number; 244 | sourceTree = ""; 245 | }; 246 | 9FDD9FC625C42BC500876792 /* Explode */ = { 247 | isa = PBXGroup; 248 | children = ( 249 | 9FDD9FC725C42BC500876792 /* yellow.png */, 250 | 9FDD9FC825C42BC500876792 /* yellowpiece.png */, 251 | 9FDD9FC925C42BC500876792 /* orangepiece.png */, 252 | 9FDD9FCB25C42BC500876792 /* greenpiece.png */, 253 | 9FDD9FCC25C42BC500876792 /* redpiece.png */, 254 | 9FDD9FCD25C42BC500876792 /* purple.png */, 255 | 9FDD9FCE25C42BC500876792 /* purplepiece.png */, 256 | ); 257 | path = Explode; 258 | sourceTree = ""; 259 | }; 260 | /* End PBXGroup section */ 261 | 262 | /* Begin PBXNativeTarget section */ 263 | 9F3031D325C2AE0A009E083D /* Watermelon */ = { 264 | isa = PBXNativeTarget; 265 | buildConfigurationList = 9F3031E325C2AE0D009E083D /* Build configuration list for PBXNativeTarget "Watermelon" */; 266 | buildPhases = ( 267 | 9F3031D025C2AE0A009E083D /* Sources */, 268 | 9F3031D125C2AE0A009E083D /* Frameworks */, 269 | 9F3031D225C2AE0A009E083D /* Resources */, 270 | ); 271 | buildRules = ( 272 | ); 273 | dependencies = ( 274 | ); 275 | name = Watermelon; 276 | productName = Watermelon; 277 | productReference = 9F46A66425C4492A00D7EEE5 /* Watermelon.app */; 278 | productType = "com.apple.product-type.application"; 279 | }; 280 | /* End PBXNativeTarget section */ 281 | 282 | /* Begin PBXProject section */ 283 | 9F3031CC25C2AE0A009E083D /* Project object */ = { 284 | isa = PBXProject; 285 | attributes = { 286 | LastSwiftUpdateCheck = 1240; 287 | LastUpgradeCheck = 1240; 288 | TargetAttributes = { 289 | 9F3031D325C2AE0A009E083D = { 290 | CreatedOnToolsVersion = 12.4; 291 | }; 292 | }; 293 | }; 294 | buildConfigurationList = 9F3031CF25C2AE0A009E083D /* Build configuration list for PBXProject "Watermelon" */; 295 | compatibilityVersion = "Xcode 9.3"; 296 | developmentRegion = en; 297 | hasScannedForEncodings = 0; 298 | knownRegions = ( 299 | en, 300 | Base, 301 | ); 302 | mainGroup = 9F3031CB25C2AE0A009E083D; 303 | productRefGroup = 9F3031CB25C2AE0A009E083D; 304 | projectDirPath = ""; 305 | projectRoot = ""; 306 | targets = ( 307 | 9F3031D325C2AE0A009E083D /* Watermelon */, 308 | ); 309 | }; 310 | /* End PBXProject section */ 311 | 312 | /* Begin PBXResourcesBuildPhase section */ 313 | 9F3031D225C2AE0A009E083D /* Resources */ = { 314 | isa = PBXResourcesBuildPhase; 315 | buildActionMask = 2147483647; 316 | files = ( 317 | 9F3031DF25C2AE0D009E083D /* Preview Assets.xcassets in Resources */, 318 | 9FDD9FF125C42C1D00876792 /* redline.png in Resources */, 319 | 9F3031F325C2B0A4009E083D /* bomb.mp3 in Resources */, 320 | 9FDD9FEC25C42BC500876792 /* purple.png in Resources */, 321 | 9FDD9FD225C42BC500876792 /* pineapple.png in Resources */, 322 | 9FDD9FCF25C42BC500876792 /* icon.png in Resources */, 323 | 9F3031DC25C2AE0D009E083D /* Assets.xcassets in Resources */, 324 | 9FDD9FD325C42BC500876792 /* tomato.png in Resources */, 325 | 9FDD9FE125C42BC500876792 /* 6.png in Resources */, 326 | 9F3031F125C2B0A4009E083D /* win.mp3 in Resources */, 327 | 9FDD9FDC25C42BC500876792 /* 8.png in Resources */, 328 | 9FDDA00125C4377200876792 /* gameoverpng in Resources */, 329 | 9FDD9FD925C42BC500876792 /* lemon.png in Resources */, 330 | 9FDD9FD525C42BC500876792 /* watermelon.png in Resources */, 331 | 9FDD9FD625C42BC500876792 /* cherry.png in Resources */, 332 | 9FDD9FEA25C42BC500876792 /* greenpiece.png in Resources */, 333 | 9FDD9FE725C42BC500876792 /* yellowpiece.png in Resources */, 334 | 9FDD9FE225C42BC500876792 /* 2.png in Resources */, 335 | 9FDD9FDF25C42BC500876792 /* 5.png in Resources */, 336 | 9FDD9FD825C42BC500876792 /* cocount.png in Resources */, 337 | 9FDD9FD425C42BC500876792 /* grape.png in Resources */, 338 | 9FDD9FE825C42BC500876792 /* orangepiece.png in Resources */, 339 | 9FDDA00025C4377100876792 /* restart.png in Resources */, 340 | 9FDD9FDD25C42BC500876792 /* 9.png in Resources */, 341 | 9FDD9FDB25C42BC500876792 /* halfwatermelon.png in Resources */, 342 | 9FDD9FE425C42BC500876792 /* 1.png in Resources */, 343 | 9FDD9FE625C42BC500876792 /* yellow.png in Resources */, 344 | 9FDD9FED25C42BC500876792 /* purplepiece.png in Resources */, 345 | 9FDD9FE025C42BC500876792 /* 7.png in Resources */, 346 | 9FDD9FDE25C42BC500876792 /* 4.png in Resources */, 347 | 9FDD9FDA25C42BC500876792 /* kiwi.png in Resources */, 348 | 9FDD9FEB25C42BC500876792 /* redpiece.png in Resources */, 349 | 9FDD9FE325C42BC500876792 /* 3.png in Resources */, 350 | 9FDD9FD125C42BC500876792 /* peach.png in Resources */, 351 | 9FDD9FE525C42BC500876792 /* 0.png in Resources */, 352 | 9FDD9FD025C42BC500876792 /* yellowlight.png in Resources */, 353 | 9F3031F225C2B0A4009E083D /* falldown.mp3 in Resources */, 354 | 9FDD9FD725C42BC500876792 /* orange.png in Resources */, 355 | ); 356 | runOnlyForDeploymentPostprocessing = 0; 357 | }; 358 | /* End PBXResourcesBuildPhase section */ 359 | 360 | /* Begin PBXSourcesBuildPhase section */ 361 | 9F3031D025C2AE0A009E083D /* Sources */ = { 362 | isa = PBXSourcesBuildPhase; 363 | buildActionMask = 2147483647; 364 | files = ( 365 | 9FDD9FAA25C425DB00876792 /* AudioUtil.swift in Sources */, 366 | 9FD013DC25C3FC15002897F8 /* GameScene+Touches.swift in Sources */, 367 | 9F3031E825C2AEE9009E083D /* GameScene.swift in Sources */, 368 | 9F3031DA25C2AE0A009E083D /* ContentView.swift in Sources */, 369 | 9F3031D825C2AE0A009E083D /* WatermelonApp.swift in Sources */, 370 | 9FD013E725C3FD64002897F8 /* FruitTexture.swift in Sources */, 371 | 9F6B978F25C2BAF200465A17 /* FruitUtil.swift in Sources */, 372 | 9FD013D925C3FBEF002897F8 /* GameScene+LoadUI.swift in Sources */, 373 | 9FDD9FFC25C4331800876792 /* GameScene+RedLine.swift in Sources */, 374 | 9FD013EC25C40043002897F8 /* GameScene+Collisions.swift in Sources */, 375 | ); 376 | runOnlyForDeploymentPostprocessing = 0; 377 | }; 378 | /* End PBXSourcesBuildPhase section */ 379 | 380 | /* Begin XCBuildConfiguration section */ 381 | 9F3031E125C2AE0D009E083D /* Debug */ = { 382 | isa = XCBuildConfiguration; 383 | buildSettings = { 384 | ALWAYS_SEARCH_USER_PATHS = NO; 385 | CLANG_ANALYZER_NONNULL = YES; 386 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 387 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 388 | CLANG_CXX_LIBRARY = "libc++"; 389 | CLANG_ENABLE_MODULES = YES; 390 | CLANG_ENABLE_OBJC_ARC = YES; 391 | CLANG_ENABLE_OBJC_WEAK = YES; 392 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 393 | CLANG_WARN_BOOL_CONVERSION = YES; 394 | CLANG_WARN_COMMA = YES; 395 | CLANG_WARN_CONSTANT_CONVERSION = YES; 396 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 397 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 398 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 399 | CLANG_WARN_EMPTY_BODY = YES; 400 | CLANG_WARN_ENUM_CONVERSION = YES; 401 | CLANG_WARN_INFINITE_RECURSION = YES; 402 | CLANG_WARN_INT_CONVERSION = YES; 403 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 404 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 405 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 406 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 407 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 408 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 409 | CLANG_WARN_STRICT_PROTOTYPES = YES; 410 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 411 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 412 | CLANG_WARN_UNREACHABLE_CODE = YES; 413 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 414 | COPY_PHASE_STRIP = NO; 415 | DEBUG_INFORMATION_FORMAT = dwarf; 416 | ENABLE_STRICT_OBJC_MSGSEND = YES; 417 | ENABLE_TESTABILITY = YES; 418 | GCC_C_LANGUAGE_STANDARD = gnu11; 419 | GCC_DYNAMIC_NO_PIC = NO; 420 | GCC_NO_COMMON_BLOCKS = YES; 421 | GCC_OPTIMIZATION_LEVEL = 0; 422 | GCC_PREPROCESSOR_DEFINITIONS = ( 423 | "DEBUG=1", 424 | "$(inherited)", 425 | ); 426 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 427 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 428 | GCC_WARN_UNDECLARED_SELECTOR = YES; 429 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 430 | GCC_WARN_UNUSED_FUNCTION = YES; 431 | GCC_WARN_UNUSED_VARIABLE = YES; 432 | IPHONEOS_DEPLOYMENT_TARGET = 14.4; 433 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 434 | MTL_FAST_MATH = YES; 435 | ONLY_ACTIVE_ARCH = YES; 436 | SDKROOT = iphoneos; 437 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 438 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 439 | }; 440 | name = Debug; 441 | }; 442 | 9F3031E225C2AE0D009E083D /* Release */ = { 443 | isa = XCBuildConfiguration; 444 | buildSettings = { 445 | ALWAYS_SEARCH_USER_PATHS = NO; 446 | CLANG_ANALYZER_NONNULL = YES; 447 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 448 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 449 | CLANG_CXX_LIBRARY = "libc++"; 450 | CLANG_ENABLE_MODULES = YES; 451 | CLANG_ENABLE_OBJC_ARC = YES; 452 | CLANG_ENABLE_OBJC_WEAK = YES; 453 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 454 | CLANG_WARN_BOOL_CONVERSION = YES; 455 | CLANG_WARN_COMMA = YES; 456 | CLANG_WARN_CONSTANT_CONVERSION = YES; 457 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 458 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 459 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 460 | CLANG_WARN_EMPTY_BODY = YES; 461 | CLANG_WARN_ENUM_CONVERSION = YES; 462 | CLANG_WARN_INFINITE_RECURSION = YES; 463 | CLANG_WARN_INT_CONVERSION = YES; 464 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 465 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 466 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 467 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 468 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 469 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 470 | CLANG_WARN_STRICT_PROTOTYPES = YES; 471 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 472 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 473 | CLANG_WARN_UNREACHABLE_CODE = YES; 474 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 475 | COPY_PHASE_STRIP = NO; 476 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 477 | ENABLE_NS_ASSERTIONS = NO; 478 | ENABLE_STRICT_OBJC_MSGSEND = YES; 479 | GCC_C_LANGUAGE_STANDARD = gnu11; 480 | GCC_NO_COMMON_BLOCKS = YES; 481 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 482 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 483 | GCC_WARN_UNDECLARED_SELECTOR = YES; 484 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 485 | GCC_WARN_UNUSED_FUNCTION = YES; 486 | GCC_WARN_UNUSED_VARIABLE = YES; 487 | IPHONEOS_DEPLOYMENT_TARGET = 14.4; 488 | MTL_ENABLE_DEBUG_INFO = NO; 489 | MTL_FAST_MATH = YES; 490 | SDKROOT = iphoneos; 491 | SWIFT_COMPILATION_MODE = wholemodule; 492 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 493 | VALIDATE_PRODUCT = YES; 494 | }; 495 | name = Release; 496 | }; 497 | 9F3031E425C2AE0D009E083D /* Debug */ = { 498 | isa = XCBuildConfiguration; 499 | buildSettings = { 500 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 501 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 502 | CODE_SIGN_STYLE = Automatic; 503 | DEVELOPMENT_ASSET_PATHS = "\"Watermelon/Preview Content\""; 504 | DEVELOPMENT_TEAM = 49LSS4CMK7; 505 | ENABLE_PREVIEWS = YES; 506 | INFOPLIST_FILE = Watermelon/Info.plist; 507 | IPHONEOS_DEPLOYMENT_TARGET = 14.0; 508 | LD_RUNPATH_SEARCH_PATHS = ( 509 | "$(inherited)", 510 | "@executable_path/Frameworks", 511 | ); 512 | PRODUCT_BUNDLE_IDENTIFIER = com.steveyu; 513 | PRODUCT_NAME = "$(TARGET_NAME)"; 514 | SWIFT_VERSION = 5.0; 515 | TARGETED_DEVICE_FAMILY = "1,2"; 516 | }; 517 | name = Debug; 518 | }; 519 | 9F3031E525C2AE0D009E083D /* Release */ = { 520 | isa = XCBuildConfiguration; 521 | buildSettings = { 522 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 523 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 524 | CODE_SIGN_STYLE = Automatic; 525 | DEVELOPMENT_ASSET_PATHS = "\"Watermelon/Preview Content\""; 526 | DEVELOPMENT_TEAM = 49LSS4CMK7; 527 | ENABLE_PREVIEWS = YES; 528 | INFOPLIST_FILE = Watermelon/Info.plist; 529 | IPHONEOS_DEPLOYMENT_TARGET = 14.0; 530 | LD_RUNPATH_SEARCH_PATHS = ( 531 | "$(inherited)", 532 | "@executable_path/Frameworks", 533 | ); 534 | PRODUCT_BUNDLE_IDENTIFIER = com.steveyu; 535 | PRODUCT_NAME = "$(TARGET_NAME)"; 536 | SWIFT_VERSION = 5.0; 537 | TARGETED_DEVICE_FAMILY = "1,2"; 538 | }; 539 | name = Release; 540 | }; 541 | /* End XCBuildConfiguration section */ 542 | 543 | /* Begin XCConfigurationList section */ 544 | 9F3031CF25C2AE0A009E083D /* Build configuration list for PBXProject "Watermelon" */ = { 545 | isa = XCConfigurationList; 546 | buildConfigurations = ( 547 | 9F3031E125C2AE0D009E083D /* Debug */, 548 | 9F3031E225C2AE0D009E083D /* Release */, 549 | ); 550 | defaultConfigurationIsVisible = 0; 551 | defaultConfigurationName = Release; 552 | }; 553 | 9F3031E325C2AE0D009E083D /* Build configuration list for PBXNativeTarget "Watermelon" */ = { 554 | isa = XCConfigurationList; 555 | buildConfigurations = ( 556 | 9F3031E425C2AE0D009E083D /* Debug */, 557 | 9F3031E525C2AE0D009E083D /* Release */, 558 | ); 559 | defaultConfigurationIsVisible = 0; 560 | defaultConfigurationName = Release; 561 | }; 562 | /* End XCConfigurationList section */ 563 | }; 564 | rootObject = 9F3031CC25C2AE0A009E083D /* Project object */; 565 | } 566 | --------------------------------------------------------------------------------