From 3bacbf6ac85330d35493953d7296e5ba420b7750 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Mon, 7 Jul 2025 13:51:43 +0200 Subject: Use inertia instead of blockers --- .../Base Components/MapRender/MapBlockers.swift | 55 ---------------------- .../Base Components/MapRender/MapIntertias.swift | 55 ++++++++++++++++++++++ .../Base Components/MapTextEditor.swift | 4 +- 3 files changed, 57 insertions(+), 57 deletions(-) delete mode 100644 Map/Presentation/Base Components/MapRender/MapBlockers.swift create mode 100644 Map/Presentation/Base Components/MapRender/MapIntertias.swift (limited to 'Map/Presentation/Base Components') diff --git a/Map/Presentation/Base Components/MapRender/MapBlockers.swift b/Map/Presentation/Base Components/MapRender/MapBlockers.swift deleted file mode 100644 index e550ca9..0000000 --- a/Map/Presentation/Base Components/MapRender/MapBlockers.swift +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (C) 2024 Rubén Beltrán del Río - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see https://map.tranquil.systems. -import SwiftUI - -struct MapBlockers: View { - - let mapSize: CGSize - let vertexSize: CGSize - let blockers: [Blocker] - - let cornerSize = CGSize(width: 2.0, height: 2.0) - - var body: some View { - ForEach(blockers, id: \.id) { vertex in - Path { path in - path.addRoundedRect( - in: CGRect( - origin: CGPoint( - x: w(vertex.position.x) + 3 * vertexSize.width, - y: h(vertex.position.y) - vertexSize.height * 2 / 3), - size: CGSize(width: vertexSize.width / 2, height: vertexSize.height * 2) - ), cornerSize: cornerSize) - }.fill(Color.Theme.Map.blockerColor) - } - } - - func h(_ dimension: CGFloat) -> CGFloat { - max(0.0, min(mapSize.height, dimension * mapSize.height / 100.0)) - } - - func w(_ dimension: CGFloat) -> CGFloat { - max(0.0, min(mapSize.width, dimension * mapSize.width / 100.0)) - } -} - -#Preview { - MapBlockers( - mapSize: CGSize(width: 400.0, height: 400.0), vertexSize: CGSize(width: 25.0, height: 25.0), - blockers: [ - Blocker(id: 0, position: CGPoint(x: 50.0, y: 50.0)), - Blocker(id: 1, position: CGPoint(x: 10.0, y: 20.0)), - ]) -} diff --git a/Map/Presentation/Base Components/MapRender/MapIntertias.swift b/Map/Presentation/Base Components/MapRender/MapIntertias.swift new file mode 100644 index 0000000..91ec6f9 --- /dev/null +++ b/Map/Presentation/Base Components/MapRender/MapIntertias.swift @@ -0,0 +1,55 @@ +// Copyright (C) 2024 Rubén Beltrán del Río + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see https://map.tranquil.systems. +import SwiftUI + +struct MapIntertias: View { + + let mapSize: CGSize + let vertexSize: CGSize + let inertias: [Inertia] + + let cornerSize = CGSize(width: 2.0, height: 2.0) + + var body: some View { + ForEach(inertias, id: \.id) { vertex in + Path { path in + path.addRoundedRect( + in: CGRect( + origin: CGPoint( + x: w(vertex.position.x) + 3 * vertexSize.width, + y: h(vertex.position.y) - vertexSize.height * 2 / 3), + size: CGSize(width: vertexSize.width / 2, height: vertexSize.height * 2) + ), cornerSize: cornerSize) + }.fill(Color.Theme.Map.inertia) + } + } + + func h(_ dimension: CGFloat) -> CGFloat { + max(0.0, min(mapSize.height, dimension * mapSize.height / 100.0)) + } + + func w(_ dimension: CGFloat) -> CGFloat { + max(0.0, min(mapSize.width, dimension * mapSize.width / 100.0)) + } +} + +#Preview { + MapIntertias( + mapSize: CGSize(width: 400.0, height: 400.0), vertexSize: CGSize(width: 25.0, height: 25.0), + inertias: [ + Inertia(id: 0, position: CGPoint(x: 50.0, y: 50.0)), + Inertia(id: 1, position: CGPoint(x: 10.0, y: 20.0)), + ]) +} diff --git a/Map/Presentation/Base Components/MapTextEditor.swift b/Map/Presentation/Base Components/MapTextEditor.swift index fe4a7d6..b247047 100644 --- a/Map/Presentation/Base Components/MapTextEditor.swift +++ b/Map/Presentation/Base Components/MapTextEditor.swift @@ -36,7 +36,7 @@ class MapTextEditorController: NSViewController { private let vertexRegex = MapParsingPatterns.vertex private let edgeRegex = MapParsingPatterns.edge - private let blockerRegex = MapParsingPatterns.blocker + private let inertiaRegex = MapParsingPatterns.inertia private let opportunityRegex = MapParsingPatterns.opportunity private let noteRegex = MapParsingPatterns.note private let stageRegex = MapParsingPatterns.stage @@ -195,7 +195,7 @@ extension MapTextEditorController: NSTextStorageDelegate { [.foregroundColor: NSColor.Theme.Syntax.number], range: match.range(at: 4)) } - matches = blockerRegex.matches(in: textStorage.string, options: [], range: range) + matches = inertiaRegex.matches(in: textStorage.string, options: [], range: range) for match in matches { textStorage.addAttributes( -- cgit