diff --git a/iOS/app/MMMemory.xcodeproj/project.pbxproj b/iOS/app/MMMemory.xcodeproj/project.pbxproj index 1ac7e20..a1fce3b 100644 --- a/iOS/app/MMMemory.xcodeproj/project.pbxproj +++ b/iOS/app/MMMemory.xcodeproj/project.pbxproj @@ -8,13 +8,11 @@ /* Begin PBXBuildFile section */ 1F083A14C69F20A6BA92A63E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F16A7DD61EF6CD4FB4E3DE25 /* AppDelegate.swift */; }; - 248FA3B7A82DA60E6892F821 /* memorySpace.swift in Sources */ = {isa = PBXBuildFile; fileRef = 490862345F009401FB4E1199 /* memorySpace.swift */; }; 3D03666F3BC2B1F2CBB49530 /* Main.SectionSelection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D5F2B2E3A26F03F6825608E /* Main.SectionSelection.swift */; }; - 3EA747EF132EF00B60CE3BA8 /* memorySide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17E6ABD013AB08F7DF11C069 /* memorySide.swift */; }; 79FB208C9DADDA6179E588C3 /* Main.SectionGrid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AC22F19366076CF4168BFBD /* Main.SectionGrid.swift */; }; - 7B6D5211C387213AE05C080F /* memoryGap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9994AEAC20F4AB2DA70C9840 /* memoryGap.swift */; }; 89086E3972F560A9A1A76CE4 /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C71EDBDFFDBC96F6E8E7762 /* Model.swift */; }; B19B3998FA2BA651ACB1E53C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C1742EFC5A1E818780679340 /* Assets.xcassets */; }; + BE2994BF2FFF272E62883953 /* swift.swift in Sources */ = {isa = PBXBuildFile; fileRef = D414A6174931F533B0B286E8 /* swift.swift */; }; CAFD870CA84084E45011CC23 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4E32B0495E4BCEA4EE0508D4 /* LaunchScreen.storyboard */; }; D505E64F4CD6EAEB530BF851 /* Main.Section16Buttons.swift in Sources */ = {isa = PBXBuildFile; fileRef = A38A1AA6B57483F6B44CDF78 /* Main.Section16Buttons.swift */; }; DB1010B8A246D47BEC6B3FA6 /* Main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DF762100A8EDF105B6E136D /* Main.swift */; }; @@ -23,30 +21,26 @@ /* Begin PBXFileReference section */ 0DF762100A8EDF105B6E136D /* Main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Main.swift; sourceTree = ""; }; - 17E6ABD013AB08F7DF11C069 /* memorySide.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = memorySide.swift; sourceTree = ""; }; - 490862345F009401FB4E1199 /* memorySpace.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = memorySpace.swift; sourceTree = ""; }; 4E32B0495E4BCEA4EE0508D4 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; 6D5F2B2E3A26F03F6825608E /* Main.SectionSelection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Main.SectionSelection.swift; sourceTree = ""; }; - 9994AEAC20F4AB2DA70C9840 /* memoryGap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = memoryGap.swift; sourceTree = ""; }; 9AC22F19366076CF4168BFBD /* Main.SectionGrid.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Main.SectionGrid.swift; sourceTree = ""; }; 9C71EDBDFFDBC96F6E8E7762 /* Model.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Model.swift; sourceTree = ""; }; 9D774FEE86833E8A0A74387C /* App.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = App.app; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; + D414A6174931F533B0B286E8 /* swift.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = swift.swift; sourceTree = ""; }; F16A7DD61EF6CD4FB4E3DE25 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXGroup section */ - 44681273C081F5991624384F /* Swift */ = { + 4F93BC5459F4AF4391816D4A /* shared */ = { isa = PBXGroup; children = ( - 9994AEAC20F4AB2DA70C9840 /* memoryGap.swift */, - 17E6ABD013AB08F7DF11C069 /* memorySide.swift */, - 490862345F009401FB4E1199 /* memorySpace.swift */, + D414A6174931F533B0B286E8 /* swift.swift */, ); - name = Swift; - path = ../../shared/Swift; + name = shared; + path = ../../shared; sourceTree = ""; }; 667BC26EA8068A9FA707FC02 /* src */ = { @@ -77,8 +71,8 @@ CD7F0F0C9CA1BA5EAFD5CA09 = { isa = PBXGroup; children = ( + 4F93BC5459F4AF4391816D4A /* shared */, 667BC26EA8068A9FA707FC02 /* src */, - 44681273C081F5991624384F /* Swift */, AE7B74413EC292E802CC5C70 /* Products */, ); sourceTree = ""; @@ -152,9 +146,7 @@ 3D03666F3BC2B1F2CBB49530 /* Main.SectionSelection.swift in Sources */, DB1010B8A246D47BEC6B3FA6 /* Main.swift in Sources */, 89086E3972F560A9A1A76CE4 /* Model.swift in Sources */, - 7B6D5211C387213AE05C080F /* memoryGap.swift in Sources */, - 3EA747EF132EF00B60CE3BA8 /* memorySide.swift in Sources */, - 248FA3B7A82DA60E6892F821 /* memorySpace.swift in Sources */, + BE2994BF2FFF272E62883953 /* swift.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 2aeda50..2b53817 100644 Binary files a/iOS/app/MMMemory.xcodeproj/project.xcworkspace/xcuserdata/mk.xcuserdatad/UserInterfaceState.xcuserstate and b/iOS/app/MMMemory.xcodeproj/project.xcworkspace/xcuserdata/mk.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/iOS/app/project.yml b/iOS/app/project.yml index 474936c..016fd4d 100644 --- a/iOS/app/project.yml +++ b/iOS/app/project.yml @@ -8,7 +8,7 @@ targets: deploymentTarget: "16.0" sources: - path: "../src" - - path: "../../shared/Swift" + - path: "../../shared/swift.swift" settings: base: INFOPLIST_FILE: Info.plist diff --git a/shared/gen b/shared/gen index d4c4b85..b63f016 100755 --- a/shared/gen +++ b/shared/gen @@ -3,5 +3,5 @@ SCRIPT_DIR=$(cd "$(dirname "$0")" ; pwd -P) tsc $SCRIPT_DIR/typeScript.ts --outfile $SCRIPT_DIR/javaScript.js -#$SCRIPT_DIR/../toSwift $SCRIPT_DIR/typeScript.ts $SCRIPT_DIR/swift.swift +$SCRIPT_DIR/../toSwift $SCRIPT_DIR/typeScript.ts $SCRIPT_DIR/swift.swift diff --git a/shared/swift.swift b/shared/swift.swift new file mode 100644 index 0000000..4973e36 --- /dev/null +++ b/shared/swift.swift @@ -0,0 +1,32 @@ +protocol Context { + var itemsCount: Float { get } +} + +protocol Position { + var x: Float { get } + var y: Float { get } +} + +func memoryGap() -> Float { + return memorySide() + memorySpace() +} + +func memorySide() -> Float { + return 50 +} + +func memorySpace() -> Float { + return 20 +} + +func memoryItemPositions(c: Context) -> [Position] { + var pos: [Position] = [] + for (var i = 0; i < c.itemsCount; i++) { + let row = Math.floor(i / 4) + let x = memoryGap() + (i - row * 4) * memoryGap() + let y = memoryGap() + row * memoryGap() + // @ts-ignore + pos.push(memoryCreatePosition(x, y)) + } + return pos +} diff --git a/toSwift b/toSwift index 9bcc98b..77ab809 100755 --- a/toSwift +++ b/toSwift @@ -39,6 +39,7 @@ function convert(line) { result = result.replace(src, dst); } result = protocolReplace(result); + result = typeArrayReplace(result); return result; } @@ -51,7 +52,6 @@ function protocolReplace(line) { if (line == "}") { isProtocol = false; } - console.log("ИГР protocolR-1 isP/line:", isProtocol, line); if (!isProtocol) { return line; } @@ -60,7 +60,6 @@ function protocolReplace(line) { if (isProtocol) { result = protocolReplaceVariable(result); } - console.log("ИГР protocolR-2 isP/line:", isProtocol, line); return result; } @@ -71,8 +70,26 @@ function protocolReplaceVariable(line) { let name = parts[0].trim(); let spaceLength = parts[0].length - name.length; let spaces = " ".repeat(spaceLength); - //console.log("Variable. name/spaceL/parts:", name, spaceLength, parts); return `${spaces}var ${name}: ${type} { get }`; } return line; } + +// func memoryItemPositions(c: Context) -> Position[] { +// var pos: Position[] = [] + +function typeArrayReplace(line) { + let parts = line.split(" "); + for (var i in parts) { + let part = parts[i]; + if ( + part != "[]" && + part.endsWith("[]") + ) { + let type = part.substring(0, part.length - 2) + let swiftType = `[${type}]`; + return line.replace(part, swiftType); + } + } + return line; +} diff --git a/будущее b/будущее index e5ad2b7..0b32b11 100644 --- a/будущее +++ b/будущее @@ -1,25 +1,10 @@ -08.06: 19:30- - -* перейти на один файл ts -* перейти на один файл js -* оставить в файле ts лишь interfaces -* ввести внешние функции создания экземпляров интерфейсов в js - * web/platform.js НАДО: +* конвертировать for loop +* конвертить Math.floor * перейти на один файл swift -* генерить по одному файлу в shared - * в проектах ссылаться по одному файлу -* исправить ошибку tsc: cannot find name -* в shared помещать лишь функции и интерфейсы без объявления типов - * ибо дофига работы -* генерить class в Swift? - * нет struct, к сожалению - * может, стоит остановиться и на протоколах/интерфейсах? * генерить memoryItemPositions.swift -* генерить библиотеку на основе иных replacements -* ввести общую библиотеку -* генерить itemPositions -* оптимизация - * разделить функции на разные файлы - * будет ошибка tsc: cannot find name +* ввести общую библиотеку? + +* в конце: разделить функции на разные файлы + * будет ошибка tsc: cannot find name, так что придётся покумекать diff --git a/прошлое b/прошлое index 14e382f..1ee094e 100644 --- a/прошлое +++ b/прошлое @@ -1,3 +1,21 @@ +08.06: 30 + +* перейти на один файл ts +* перейти на один файл js +* оставить в файле ts лишь interfaces +* ввести внешние функции создания экземпляров интерфейсов в js + * web/platform.js +* конвертировать Position[] +* генерить по одному файлу в shared + * в проектах ссылаться по одному файлу +* исправить ошибку tsc: cannot find name +* в shared помещать лишь функции и интерфейсы без объявления типов + * ибо дофига работы +* генерить class в Swift? + * нет struct, к сожалению + * может, стоит остановиться и на протоколах/интерфейсах? + * да + 06.06: 25 * починить ^M