From 187af293e97ce15b12df5d064c148a2d540f7564 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=9A=D0=B0=D0=BF?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BA=D0=BE?= Date: Wed, 24 May 2023 19:51:40 +0300 Subject: [PATCH] d --- iOS/app/MMMemory.xcodeproj/project.pbxproj | 13 ++++++++++++ .../UserInterfaceState.xcuserstate | Bin 28935 -> 31294 bytes iOS/app/project.yml | 1 + iOS/src/Main.SectionGrid.swift | 8 +++---- iOS/src/Model.swift | 20 ++++-------------- shared/model.iOS.swift | 11 ++++++++++ 6 files changed, 33 insertions(+), 20 deletions(-) create mode 100644 shared/model.iOS.swift diff --git a/iOS/app/MMMemory.xcodeproj/project.pbxproj b/iOS/app/MMMemory.xcodeproj/project.pbxproj index cf84228..f27b9e8 100644 --- a/iOS/app/MMMemory.xcodeproj/project.pbxproj +++ b/iOS/app/MMMemory.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ 3D03666F3BC2B1F2CBB49530 /* Main.SectionSelection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D5F2B2E3A26F03F6825608E /* Main.SectionSelection.swift */; }; 79FB208C9DADDA6179E588C3 /* Main.SectionGrid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AC22F19366076CF4168BFBD /* Main.SectionGrid.swift */; }; 89086E3972F560A9A1A76CE4 /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C71EDBDFFDBC96F6E8E7762 /* Model.swift */; }; + A8118182ABE97FA935A1A4F9 /* model.iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3A95F2FA5C43AF82C7A97FC /* model.iOS.swift */; }; B19B3998FA2BA651ACB1E53C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C1742EFC5A1E818780679340 /* Assets.xcassets */; }; CAFD870CA84084E45011CC23 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4E32B0495E4BCEA4EE0508D4 /* LaunchScreen.storyboard */; }; D505E64F4CD6EAEB530BF851 /* Main.Section16Buttons.swift in Sources */ = {isa = PBXBuildFile; fileRef = A38A1AA6B57483F6B44CDF78 /* Main.Section16Buttons.swift */; }; @@ -28,10 +29,20 @@ A355A898E25602F45B88CCBA /* Main.Platform.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Main.Platform.swift; sourceTree = ""; }; A38A1AA6B57483F6B44CDF78 /* Main.Section16Buttons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Main.Section16Buttons.swift; sourceTree = ""; }; C1742EFC5A1E818780679340 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + E3A95F2FA5C43AF82C7A97FC /* model.iOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = model.iOS.swift; sourceTree = ""; }; F16A7DD61EF6CD4FB4E3DE25 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXGroup section */ + 4F93BC5459F4AF4391816D4A /* shared */ = { + isa = PBXGroup; + children = ( + E3A95F2FA5C43AF82C7A97FC /* model.iOS.swift */, + ); + name = shared; + path = ../../shared; + sourceTree = ""; + }; 667BC26EA8068A9FA707FC02 /* src */ = { isa = PBXGroup; children = ( @@ -60,6 +71,7 @@ CD7F0F0C9CA1BA5EAFD5CA09 = { isa = PBXGroup; children = ( + 4F93BC5459F4AF4391816D4A /* shared */, 667BC26EA8068A9FA707FC02 /* src */, AE7B74413EC292E802CC5C70 /* Products */, ); @@ -134,6 +146,7 @@ 3D03666F3BC2B1F2CBB49530 /* Main.SectionSelection.swift in Sources */, DB1010B8A246D47BEC6B3FA6 /* Main.swift in Sources */, 89086E3972F560A9A1A76CE4 /* Model.swift in Sources */, + A8118182ABE97FA935A1A4F9 /* model.iOS.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/iOS/app/MMMemory.xcodeproj/project.xcworkspace/xcuserdata/mk.xcuserdatad/UserInterfaceState.xcuserstate b/iOS/app/MMMemory.xcodeproj/project.xcworkspace/xcuserdata/mk.xcuserdatad/UserInterfaceState.xcuserstate index 5b9881c67ee15f636a88edee3e2a85b620c56b3b..0bd332e6ebbf9f0dc2067602177975fb2db2f90b 100644 GIT binary patch delta 15974 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 delta 14375 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 diff --git a/iOS/app/project.yml b/iOS/app/project.yml index 01f5e56..4cd13c3 100644 --- a/iOS/app/project.yml +++ b/iOS/app/project.yml @@ -8,6 +8,7 @@ targets: deploymentTarget: "16.0" sources: - path: "../src" + - path: "../../shared/model.iOS.swift" settings: base: INFOPLIST_FILE: Info.plist diff --git a/iOS/src/Main.SectionGrid.swift b/iOS/src/Main.SectionGrid.swift index 5c89e1d..4f54493 100644 --- a/iOS/src/Main.SectionGrid.swift +++ b/iOS/src/Main.SectionGrid.swift @@ -14,10 +14,10 @@ extension Main { let btn = core.buttons[id] btn.frame = CGRect( - x: p.0, - y: p.1, - width: memorySide(), - height: memorySide() + x: CGFloat(p.0), + y: CGFloat(p.1), + width: CGFloat(memorySide()), + height: CGFloat(memorySide()) ) btn.backgroundColor = .blue } diff --git a/iOS/src/Model.swift b/iOS/src/Model.swift index c7d8cd8..0b64e15 100644 --- a/iOS/src/Model.swift +++ b/iOS/src/Model.swift @@ -4,23 +4,11 @@ struct M { var itemsCount: Int = 16 } -func memorySide() -> CGFloat { - return 50 -} - -func memorySpace() -> CGFloat { - return 20 -} - -func memoryGap() -> CGFloat { - return memorySide() + memorySpace() -} - -func memoryItemPositions(_ M: M) -> [(CGFloat, CGFloat)] { - var pos = [(CGFloat, CGFloat)]() +func memoryItemPositions(_ M: M) -> [(Float, Float)] { + var pos = [(Float, Float)]() for i in stride(from: 0, to: M.itemsCount, by: 1) { - let row = floor(Double(i) / 4) - let x = memoryGap() + (Double(i) - row * 4) * memoryGap() + let row = floor(Float(i) / 4) + let x = memoryGap() + (Float(i) - row * 4) * memoryGap() let y = memoryGap() + row * memoryGap() pos.append((x, y)) } diff --git a/shared/model.iOS.swift b/shared/model.iOS.swift new file mode 100644 index 0000000..044f484 --- /dev/null +++ b/shared/model.iOS.swift @@ -0,0 +1,11 @@ +func memorySide() -> Float { + return 50 +} + +func memorySpace() -> Float { + return 20 +} + +func memoryGap() -> Float { + return memorySide() + memorySpace() +}