From 297cd71b427125f0e3f76ab9e45a3aeeb30f21a0 Mon Sep 17 00:00:00 2001 From: jasonqiu212 Date: Thu, 14 Mar 2024 02:59:09 +0800 Subject: [PATCH 1/6] feat: add event protocols --- star-dash/star-dash.xcodeproj/project.pbxproj | 102 ++++++++++-------- star-dash/star-dash/Events/Event.swift | 15 +++ .../star-dash/Events/EventModifiable.swift | 11 ++ 3 files changed, 85 insertions(+), 43 deletions(-) create mode 100644 star-dash/star-dash/Events/Event.swift create mode 100644 star-dash/star-dash/Events/EventModifiable.swift diff --git a/star-dash/star-dash.xcodeproj/project.pbxproj b/star-dash/star-dash.xcodeproj/project.pbxproj index 7b322b3b..91986176 100644 --- a/star-dash/star-dash.xcodeproj/project.pbxproj +++ b/star-dash/star-dash.xcodeproj/project.pbxproj @@ -8,6 +8,8 @@ /* Begin PBXBuildFile section */ 142D9F8F2BA15FBB005FE9E0 /* .swiftlint.yml in Resources */ = {isa = PBXBuildFile; fileRef = 142D9F8E2BA15FBB005FE9E0 /* .swiftlint.yml */; }; + 145F2C802BA203B400457549 /* Event.swift in Sources */ = {isa = PBXBuildFile; fileRef = 145F2C7F2BA203B400457549 /* Event.swift */; }; + 145F2C842BA22CA300457549 /* EventModifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 145F2C832BA22CA300457549 /* EventModifiable.swift */; }; 4E630EF62B9F7E070008F887 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630EF52B9F7E070008F887 /* AppDelegate.swift */; }; 4E630EF82B9F7E070008F887 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630EF72B9F7E070008F887 /* SceneDelegate.swift */; }; 4E630EFA2B9F7E070008F887 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630EF92B9F7E070008F887 /* ViewController.swift */; }; @@ -17,13 +19,6 @@ 4E630F0D2B9F7E090008F887 /* star_dashTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630F0C2B9F7E090008F887 /* star_dashTests.swift */; }; 4E630F172B9F7E090008F887 /* star_dashUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630F162B9F7E090008F887 /* star_dashUITests.swift */; }; 4E630F192B9F7E090008F887 /* star_dashUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630F182B9F7E090008F887 /* star_dashUITestsLaunchTests.swift */; }; - E6A745162BA057040080C1BE /* MTKRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A745112BA057040080C1BE /* MTKRenderer.swift */; }; - E6A745172BA057040080C1BE /* ControlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A745122BA057040080C1BE /* ControlView.swift */; }; - E6A745182BA057040080C1BE /* Renderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A745132BA057040080C1BE /* Renderer.swift */; }; - E6A745192BA057040080C1BE /* GameScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A745152BA057040080C1BE /* GameScene.swift */; }; - E6A7451B2BA0C1890080C1BE /* PlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A7451A2BA0C1890080C1BE /* PlayerView.swift */; }; - E6A7451D2BA0CAD90080C1BE /* JoystickView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A7451C2BA0CAD90080C1BE /* JoystickView.swift */; }; - E6B550A12BA15E9C00DC7396 /* OverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6B550A02BA15E9C00DC7396 /* OverlayView.swift */; }; 4E630F272B9F7E770008F887 /* Entity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630F262B9F7E770008F887 /* Entity.swift */; }; 4E630F2A2B9F7EF60008F887 /* PositionComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630F292B9F7EF60008F887 /* PositionComponent.swift */; }; 4E630F2C2B9F7F460008F887 /* Component.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630F2B2B9F7F460008F887 /* Component.swift */; }; @@ -38,6 +33,13 @@ 4E8660622BA0964A0035530D /* Obstacle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E8660612BA0964A0035530D /* Obstacle.swift */; }; 4E8660642BA096600035530D /* Tool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E8660632BA096600035530D /* Tool.swift */; }; 4E8660662BA097D40035530D /* PhysicsConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E8660652BA097D40035530D /* PhysicsConstants.swift */; }; + E6A745162BA057040080C1BE /* MTKRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A745112BA057040080C1BE /* MTKRenderer.swift */; }; + E6A745172BA057040080C1BE /* ControlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A745122BA057040080C1BE /* ControlView.swift */; }; + E6A745182BA057040080C1BE /* Renderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A745132BA057040080C1BE /* Renderer.swift */; }; + E6A745192BA057040080C1BE /* GameScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A745152BA057040080C1BE /* GameScene.swift */; }; + E6A7451B2BA0C1890080C1BE /* PlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A7451A2BA0C1890080C1BE /* PlayerView.swift */; }; + E6A7451D2BA0CAD90080C1BE /* JoystickView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A7451C2BA0CAD90080C1BE /* JoystickView.swift */; }; + E6B550A12BA15E9C00DC7396 /* OverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6B550A02BA15E9C00DC7396 /* OverlayView.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -59,6 +61,8 @@ /* Begin PBXFileReference section */ 142D9F8E2BA15FBB005FE9E0 /* .swiftlint.yml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.yaml; path = .swiftlint.yml; sourceTree = ""; }; + 145F2C7F2BA203B400457549 /* Event.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Event.swift; sourceTree = ""; }; + 145F2C832BA22CA300457549 /* EventModifiable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventModifiable.swift; sourceTree = ""; }; 4E630EF22B9F7E070008F887 /* star-dash.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "star-dash.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 4E630EF52B9F7E070008F887 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 4E630EF72B9F7E070008F887 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -72,13 +76,6 @@ 4E630F122B9F7E090008F887 /* star-dashUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "star-dashUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 4E630F162B9F7E090008F887 /* star_dashUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = star_dashUITests.swift; sourceTree = ""; }; 4E630F182B9F7E090008F887 /* star_dashUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = star_dashUITestsLaunchTests.swift; sourceTree = ""; }; - E6A745112BA057040080C1BE /* MTKRenderer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MTKRenderer.swift; sourceTree = ""; }; - E6A745122BA057040080C1BE /* ControlView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlView.swift; sourceTree = ""; }; - E6A745132BA057040080C1BE /* Renderer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Renderer.swift; sourceTree = ""; }; - E6A745152BA057040080C1BE /* GameScene.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GameScene.swift; sourceTree = ""; }; - E6A7451A2BA0C1890080C1BE /* PlayerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlayerView.swift; sourceTree = ""; }; - E6A7451C2BA0CAD90080C1BE /* JoystickView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JoystickView.swift; sourceTree = ""; }; - E6B550A02BA15E9C00DC7396 /* OverlayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverlayView.swift; sourceTree = ""; }; 4E630F262B9F7E770008F887 /* Entity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Entity.swift; sourceTree = ""; }; 4E630F292B9F7EF60008F887 /* PositionComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PositionComponent.swift; sourceTree = ""; }; 4E630F2B2B9F7F460008F887 /* Component.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Component.swift; sourceTree = ""; }; @@ -93,6 +90,13 @@ 4E8660612BA0964A0035530D /* Obstacle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Obstacle.swift; sourceTree = ""; }; 4E8660632BA096600035530D /* Tool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tool.swift; sourceTree = ""; }; 4E8660652BA097D40035530D /* PhysicsConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhysicsConstants.swift; sourceTree = ""; }; + E6A745112BA057040080C1BE /* MTKRenderer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MTKRenderer.swift; sourceTree = ""; }; + E6A745122BA057040080C1BE /* ControlView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlView.swift; sourceTree = ""; }; + E6A745132BA057040080C1BE /* Renderer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Renderer.swift; sourceTree = ""; }; + E6A745152BA057040080C1BE /* GameScene.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GameScene.swift; sourceTree = ""; }; + E6A7451A2BA0C1890080C1BE /* PlayerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlayerView.swift; sourceTree = ""; }; + E6A7451C2BA0CAD90080C1BE /* JoystickView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JoystickView.swift; sourceTree = ""; }; + E6B550A02BA15E9C00DC7396 /* OverlayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverlayView.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -120,6 +124,15 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 145F2C7E2BA2039700457549 /* Events */ = { + isa = PBXGroup; + children = ( + 145F2C7F2BA203B400457549 /* Event.swift */, + 145F2C832BA22CA300457549 /* EventModifiable.swift */, + ); + path = Events; + sourceTree = ""; + }; 4E630EE92B9F7E070008F887 = { isa = PBXGroup; children = ( @@ -149,6 +162,7 @@ 4E86605D2BA095CC0035530D /* Constants */, 4E630F352B9F91C20008F887 /* Enums */, 4E630F252B9F7E500008F887 /* Entities */, + 145F2C7E2BA2039700457549 /* Events */, 4E630EF52B9F7E070008F887 /* AppDelegate.swift */, 4E630EF72B9F7E070008F887 /* SceneDelegate.swift */, 4E630EF92B9F7E070008F887 /* ViewController.swift */, @@ -177,35 +191,6 @@ path = "star-dashUITests"; sourceTree = ""; }; - E6A745102BA057040080C1BE /* Rendering */ = { - isa = PBXGroup; - children = ( - E6B5509F2BA15D2000DC7396 /* MTKRenderer */, - E6A745132BA057040080C1BE /* Renderer.swift */, - ); - path = Rendering; - sourceTree = ""; - }; - E6A745142BA057040080C1BE /* GameScene */ = { - isa = PBXGroup; - children = ( - E6A745152BA057040080C1BE /* GameScene.swift */, - ); - path = GameScene; - sourceTree = ""; - }; - E6B5509F2BA15D2000DC7396 /* MTKRenderer */ = { - isa = PBXGroup; - children = ( - E6A745112BA057040080C1BE /* MTKRenderer.swift */, - E6A7451A2BA0C1890080C1BE /* PlayerView.swift */, - E6A7451C2BA0CAD90080C1BE /* JoystickView.swift */, - E6A745122BA057040080C1BE /* ControlView.swift */, - E6B550A02BA15E9C00DC7396 /* OverlayView.swift */, - ); - path = MTKRenderer; - sourceTree = ""; - }; 4E630F252B9F7E500008F887 /* Entities */ = { isa = PBXGroup; children = ( @@ -257,6 +242,35 @@ path = GameEntities; sourceTree = ""; }; + E6A745102BA057040080C1BE /* Rendering */ = { + isa = PBXGroup; + children = ( + E6B5509F2BA15D2000DC7396 /* MTKRenderer */, + E6A745132BA057040080C1BE /* Renderer.swift */, + ); + path = Rendering; + sourceTree = ""; + }; + E6A745142BA057040080C1BE /* GameScene */ = { + isa = PBXGroup; + children = ( + E6A745152BA057040080C1BE /* GameScene.swift */, + ); + path = GameScene; + sourceTree = ""; + }; + E6B5509F2BA15D2000DC7396 /* MTKRenderer */ = { + isa = PBXGroup; + children = ( + E6A745112BA057040080C1BE /* MTKRenderer.swift */, + E6A7451A2BA0C1890080C1BE /* PlayerView.swift */, + E6A7451C2BA0CAD90080C1BE /* JoystickView.swift */, + E6A745122BA057040080C1BE /* ControlView.swift */, + E6B550A02BA15E9C00DC7396 /* OverlayView.swift */, + ); + path = MTKRenderer; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -419,6 +433,7 @@ 4E630F302B9F83DE0008F887 /* SpriteComponent.swift in Sources */, 4E86605F2BA095E30035530D /* Collectible.swift in Sources */, 4E8660662BA097D40035530D /* PhysicsConstants.swift in Sources */, + 145F2C842BA22CA300457549 /* EventModifiable.swift in Sources */, 4E630EFA2B9F7E070008F887 /* ViewController.swift in Sources */, 4E630F322B9F887C0008F887 /* PhysicsComponent.swift in Sources */, 4E630EF62B9F7E070008F887 /* AppDelegate.swift in Sources */, @@ -435,6 +450,7 @@ 4E630F372B9F91DE0008F887 /* PlayerSprite.swift in Sources */, 4E630F2E2B9F81850008F887 /* HealthComponent.swift in Sources */, 4E86605C2BA095460035530D /* Monster.swift in Sources */, + 145F2C802BA203B400457549 /* Event.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/star-dash/star-dash/Events/Event.swift b/star-dash/star-dash/Events/Event.swift new file mode 100644 index 00000000..ae16046c --- /dev/null +++ b/star-dash/star-dash/Events/Event.swift @@ -0,0 +1,15 @@ +// +// Event.swift +// star-dash +// +// Created by Jason Qiu on 13/3/24. +// + +import Foundation + +protocol Event: Comparable { + var timestamp: TimeInterval { get } + var entityId: EntityId { get } + + func execute(on target: EventModifiable) +} diff --git a/star-dash/star-dash/Events/EventModifiable.swift b/star-dash/star-dash/Events/EventModifiable.swift new file mode 100644 index 00000000..844297e0 --- /dev/null +++ b/star-dash/star-dash/Events/EventModifiable.swift @@ -0,0 +1,11 @@ +// +// EventModifiable.swift +// star-dash +// +// Created by Jason Qiu on 14/3/24. +// + +import Foundation + +/// EventModifiable represents objects that can be modified by events. +protocol EventModifiable { } From 99f9ab9fa0737b7204dac330e23df8d6b2880f1d Mon Sep 17 00:00:00 2001 From: jasonqiu212 Date: Thu, 14 Mar 2024 13:12:10 +0800 Subject: [PATCH 2/6] fix: make event not conform to comparable to support usage of queue --- star-dash/star-dash/Events/Event.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/star-dash/star-dash/Events/Event.swift b/star-dash/star-dash/Events/Event.swift index ae16046c..6bef48df 100644 --- a/star-dash/star-dash/Events/Event.swift +++ b/star-dash/star-dash/Events/Event.swift @@ -7,7 +7,7 @@ import Foundation -protocol Event: Comparable { +protocol Event { var timestamp: TimeInterval { get } var entityId: EntityId { get } From a0e1e4e36dc2efb4ab4756acc35f257aa496211d Mon Sep 17 00:00:00 2001 From: jasonqiu212 Date: Thu, 14 Mar 2024 14:01:14 +0800 Subject: [PATCH 3/6] feat: add mock event --- star-dash/star-dash.xcodeproj/project.pbxproj | 4 +++ star-dash/star-dash/Events/Event.swift | 2 +- star-dash/star-dash/Events/MoveEvent.swift | 25 +++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 star-dash/star-dash/Events/MoveEvent.swift diff --git a/star-dash/star-dash.xcodeproj/project.pbxproj b/star-dash/star-dash.xcodeproj/project.pbxproj index 91986176..ff10b2c0 100644 --- a/star-dash/star-dash.xcodeproj/project.pbxproj +++ b/star-dash/star-dash.xcodeproj/project.pbxproj @@ -10,6 +10,7 @@ 142D9F8F2BA15FBB005FE9E0 /* .swiftlint.yml in Resources */ = {isa = PBXBuildFile; fileRef = 142D9F8E2BA15FBB005FE9E0 /* .swiftlint.yml */; }; 145F2C802BA203B400457549 /* Event.swift in Sources */ = {isa = PBXBuildFile; fileRef = 145F2C7F2BA203B400457549 /* Event.swift */; }; 145F2C842BA22CA300457549 /* EventModifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 145F2C832BA22CA300457549 /* EventModifiable.swift */; }; + 14E2478E2BA22FCE0071FFC0 /* MoveEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14E2478D2BA22FCE0071FFC0 /* MoveEvent.swift */; }; 4E630EF62B9F7E070008F887 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630EF52B9F7E070008F887 /* AppDelegate.swift */; }; 4E630EF82B9F7E070008F887 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630EF72B9F7E070008F887 /* SceneDelegate.swift */; }; 4E630EFA2B9F7E070008F887 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630EF92B9F7E070008F887 /* ViewController.swift */; }; @@ -63,6 +64,7 @@ 142D9F8E2BA15FBB005FE9E0 /* .swiftlint.yml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.yaml; path = .swiftlint.yml; sourceTree = ""; }; 145F2C7F2BA203B400457549 /* Event.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Event.swift; sourceTree = ""; }; 145F2C832BA22CA300457549 /* EventModifiable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventModifiable.swift; sourceTree = ""; }; + 14E2478D2BA22FCE0071FFC0 /* MoveEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoveEvent.swift; sourceTree = ""; }; 4E630EF22B9F7E070008F887 /* star-dash.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "star-dash.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 4E630EF52B9F7E070008F887 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 4E630EF72B9F7E070008F887 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -129,6 +131,7 @@ children = ( 145F2C7F2BA203B400457549 /* Event.swift */, 145F2C832BA22CA300457549 /* EventModifiable.swift */, + 14E2478D2BA22FCE0071FFC0 /* MoveEvent.swift */, ); path = Events; sourceTree = ""; @@ -427,6 +430,7 @@ files = ( 4E630F272B9F7E770008F887 /* Entity.swift in Sources */, 4E630F2C2B9F7F460008F887 /* Component.swift in Sources */, + 14E2478E2BA22FCE0071FFC0 /* MoveEvent.swift in Sources */, 4E8660622BA0964A0035530D /* Obstacle.swift in Sources */, 4E8660642BA096600035530D /* Tool.swift in Sources */, 4E630F392B9F943B0008F887 /* EntityManager.swift in Sources */, diff --git a/star-dash/star-dash/Events/Event.swift b/star-dash/star-dash/Events/Event.swift index 6bef48df..a4150334 100644 --- a/star-dash/star-dash/Events/Event.swift +++ b/star-dash/star-dash/Events/Event.swift @@ -8,7 +8,7 @@ import Foundation protocol Event { - var timestamp: TimeInterval { get } + var timestamp: Date { get } var entityId: EntityId { get } func execute(on target: EventModifiable) diff --git a/star-dash/star-dash/Events/MoveEvent.swift b/star-dash/star-dash/Events/MoveEvent.swift new file mode 100644 index 00000000..ce174072 --- /dev/null +++ b/star-dash/star-dash/Events/MoveEvent.swift @@ -0,0 +1,25 @@ +// +// MoveEvent.swift +// star-dash +// +// Created by Jason Qiu on 14/3/24. +// + +import Foundation + +class MoveEvent: Event { + var entityId: EntityId + var timestamp: Date + + var displacement: CGVector + + init(entityId: EntityId, displacement: CGVector, timestamp: Date = Date.now) { + self.entityId = entityId + self.timestamp = timestamp + self.displacement = displacement + } + + func execute(on target: EventModifiable) { + // TODO: Use PositionSystem from target to modify entity of entityId + } +} From 399920386943ad62d159e73ea842231e1de31359 Mon Sep 17 00:00:00 2001 From: jasonqiu212 Date: Thu, 14 Mar 2024 14:05:30 +0800 Subject: [PATCH 4/6] feat: add collections package dependency --- star-dash/star-dash.xcodeproj/project.pbxproj | 27 +++++++++++++++++++ .../xcshareddata/swiftpm/Package.resolved | 15 +++++++++++ 2 files changed, 42 insertions(+) create mode 100644 star-dash/star-dash.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/star-dash/star-dash.xcodeproj/project.pbxproj b/star-dash/star-dash.xcodeproj/project.pbxproj index ff10b2c0..8f3d2295 100644 --- a/star-dash/star-dash.xcodeproj/project.pbxproj +++ b/star-dash/star-dash.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ 145F2C802BA203B400457549 /* Event.swift in Sources */ = {isa = PBXBuildFile; fileRef = 145F2C7F2BA203B400457549 /* Event.swift */; }; 145F2C842BA22CA300457549 /* EventModifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 145F2C832BA22CA300457549 /* EventModifiable.swift */; }; 14E2478E2BA22FCE0071FFC0 /* MoveEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14E2478D2BA22FCE0071FFC0 /* MoveEvent.swift */; }; + 14E247932BA2CA920071FFC0 /* DequeModule in Frameworks */ = {isa = PBXBuildFile; productRef = 14E247922BA2CA920071FFC0 /* DequeModule */; }; 4E630EF62B9F7E070008F887 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630EF52B9F7E070008F887 /* AppDelegate.swift */; }; 4E630EF82B9F7E070008F887 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630EF72B9F7E070008F887 /* SceneDelegate.swift */; }; 4E630EFA2B9F7E070008F887 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630EF92B9F7E070008F887 /* ViewController.swift */; }; @@ -106,6 +107,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 14E247932BA2CA920071FFC0 /* DequeModule in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -291,6 +293,9 @@ dependencies = ( ); name = "star-dash"; + packageProductDependencies = ( + 14E247922BA2CA920071FFC0 /* DequeModule */, + ); productName = "star-dash"; productReference = 4E630EF22B9F7E070008F887 /* star-dash.app */; productType = "com.apple.product-type.application"; @@ -363,6 +368,9 @@ Base, ); mainGroup = 4E630EE92B9F7E070008F887; + packageReferences = ( + 14E247912BA2CA920071FFC0 /* XCRemoteSwiftPackageReference "swift-collections" */, + ); productRefGroup = 4E630EF32B9F7E070008F887 /* Products */; projectDirPath = ""; projectRoot = ""; @@ -813,6 +821,25 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 14E247912BA2CA920071FFC0 /* XCRemoteSwiftPackageReference "swift-collections" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/apple/swift-collections.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 1.1.0; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 14E247922BA2CA920071FFC0 /* DequeModule */ = { + isa = XCSwiftPackageProductDependency; + package = 14E247912BA2CA920071FFC0 /* XCRemoteSwiftPackageReference "swift-collections" */; + productName = DequeModule; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 4E630EEA2B9F7E070008F887 /* Project object */; } diff --git a/star-dash/star-dash.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/star-dash/star-dash.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000..eb481772 --- /dev/null +++ b/star-dash/star-dash.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,15 @@ +{ + "originHash" : "51f90653b2c9f9f7064c0d52159b40bf7d222e5f314be23e62fe28520fec03db", + "pins" : [ + { + "identity" : "swift-collections", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-collections.git", + "state" : { + "revision" : "94cf62b3ba8d4bed62680a282d4c25f9c63c2efb", + "version" : "1.1.0" + } + } + ], + "version" : 3 +} From 33b9c2653712268f9cf31bce1b4f885b2eb9b25b Mon Sep 17 00:00:00 2001 From: jasonqiu212 Date: Thu, 14 Mar 2024 14:15:18 +0800 Subject: [PATCH 5/6] feat: add EventManager --- star-dash/star-dash.xcodeproj/project.pbxproj | 4 +++ star-dash/star-dash/Events/EventManager.swift | 29 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 star-dash/star-dash/Events/EventManager.swift diff --git a/star-dash/star-dash.xcodeproj/project.pbxproj b/star-dash/star-dash.xcodeproj/project.pbxproj index 8f3d2295..3916da70 100644 --- a/star-dash/star-dash.xcodeproj/project.pbxproj +++ b/star-dash/star-dash.xcodeproj/project.pbxproj @@ -12,6 +12,7 @@ 145F2C842BA22CA300457549 /* EventModifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 145F2C832BA22CA300457549 /* EventModifiable.swift */; }; 14E2478E2BA22FCE0071FFC0 /* MoveEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14E2478D2BA22FCE0071FFC0 /* MoveEvent.swift */; }; 14E247932BA2CA920071FFC0 /* DequeModule in Frameworks */ = {isa = PBXBuildFile; productRef = 14E247922BA2CA920071FFC0 /* DequeModule */; }; + 14E247952BA2CB480071FFC0 /* EventManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14E247942BA2CB480071FFC0 /* EventManager.swift */; }; 4E630EF62B9F7E070008F887 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630EF52B9F7E070008F887 /* AppDelegate.swift */; }; 4E630EF82B9F7E070008F887 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630EF72B9F7E070008F887 /* SceneDelegate.swift */; }; 4E630EFA2B9F7E070008F887 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630EF92B9F7E070008F887 /* ViewController.swift */; }; @@ -66,6 +67,7 @@ 145F2C7F2BA203B400457549 /* Event.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Event.swift; sourceTree = ""; }; 145F2C832BA22CA300457549 /* EventModifiable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventModifiable.swift; sourceTree = ""; }; 14E2478D2BA22FCE0071FFC0 /* MoveEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoveEvent.swift; sourceTree = ""; }; + 14E247942BA2CB480071FFC0 /* EventManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventManager.swift; sourceTree = ""; }; 4E630EF22B9F7E070008F887 /* star-dash.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "star-dash.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 4E630EF52B9F7E070008F887 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 4E630EF72B9F7E070008F887 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -132,6 +134,7 @@ isa = PBXGroup; children = ( 145F2C7F2BA203B400457549 /* Event.swift */, + 14E247942BA2CB480071FFC0 /* EventManager.swift */, 145F2C832BA22CA300457549 /* EventModifiable.swift */, 14E2478D2BA22FCE0071FFC0 /* MoveEvent.swift */, ); @@ -450,6 +453,7 @@ 4E630F322B9F887C0008F887 /* PhysicsComponent.swift in Sources */, 4E630EF62B9F7E070008F887 /* AppDelegate.swift in Sources */, 4E630F2A2B9F7EF60008F887 /* PositionComponent.swift in Sources */, + 14E247952BA2CB480071FFC0 /* EventManager.swift in Sources */, 4E630EF82B9F7E070008F887 /* SceneDelegate.swift in Sources */, E6A7451B2BA0C1890080C1BE /* PlayerView.swift in Sources */, E6A745162BA057040080C1BE /* MTKRenderer.swift in Sources */, diff --git a/star-dash/star-dash/Events/EventManager.swift b/star-dash/star-dash/Events/EventManager.swift new file mode 100644 index 00000000..b2242f3c --- /dev/null +++ b/star-dash/star-dash/Events/EventManager.swift @@ -0,0 +1,29 @@ +// +// EventManager.swift +// star-dash +// +// Created by Jason Qiu on 14/3/24. +// + +import DequeModule +import Foundation + +typealias EventQueue = Deque + +class EventManager { + private var events: EventQueue + + init() { + events = EventQueue() + } + + func add(event: Event) { + events.append(event) + } + + func executeAll(on target: EventModifiable) { + while let event = events.popFirst() { + event.execute(on: target) + } + } +} From 524c75ff0db97d752700a0ab11e9d206530fd09f Mon Sep 17 00:00:00 2001 From: jasonqiu212 Date: Thu, 14 Mar 2024 14:21:20 +0800 Subject: [PATCH 6/6] style: lint --- star-dash/star-dash.xcodeproj/project.pbxproj | 86 +++++++++---------- star-dash/star-dash/Events/EventManager.swift | 6 +- star-dash/star-dash/Events/MoveEvent.swift | 8 +- 3 files changed, 50 insertions(+), 50 deletions(-) diff --git a/star-dash/star-dash.xcodeproj/project.pbxproj b/star-dash/star-dash.xcodeproj/project.pbxproj index 3916da70..e4756257 100644 --- a/star-dash/star-dash.xcodeproj/project.pbxproj +++ b/star-dash/star-dash.xcodeproj/project.pbxproj @@ -22,6 +22,13 @@ 4E630F0D2B9F7E090008F887 /* star_dashTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630F0C2B9F7E090008F887 /* star_dashTests.swift */; }; 4E630F172B9F7E090008F887 /* star_dashUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630F162B9F7E090008F887 /* star_dashUITests.swift */; }; 4E630F192B9F7E090008F887 /* star_dashUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630F182B9F7E090008F887 /* star_dashUITestsLaunchTests.swift */; }; + E6A745162BA057040080C1BE /* MTKRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A745112BA057040080C1BE /* MTKRenderer.swift */; }; + E6A745172BA057040080C1BE /* ControlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A745122BA057040080C1BE /* ControlView.swift */; }; + E6A745182BA057040080C1BE /* Renderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A745132BA057040080C1BE /* Renderer.swift */; }; + E6A745192BA057040080C1BE /* GameScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A745152BA057040080C1BE /* GameScene.swift */; }; + E6A7451B2BA0C1890080C1BE /* PlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A7451A2BA0C1890080C1BE /* PlayerView.swift */; }; + E6A7451D2BA0CAD90080C1BE /* JoystickView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A7451C2BA0CAD90080C1BE /* JoystickView.swift */; }; + E6B550A12BA15E9C00DC7396 /* OverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6B550A02BA15E9C00DC7396 /* OverlayView.swift */; }; 4E630F272B9F7E770008F887 /* Entity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630F262B9F7E770008F887 /* Entity.swift */; }; 4E630F2A2B9F7EF60008F887 /* PositionComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630F292B9F7EF60008F887 /* PositionComponent.swift */; }; 4E630F2C2B9F7F460008F887 /* Component.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E630F2B2B9F7F460008F887 /* Component.swift */; }; @@ -36,13 +43,6 @@ 4E8660622BA0964A0035530D /* Obstacle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E8660612BA0964A0035530D /* Obstacle.swift */; }; 4E8660642BA096600035530D /* Tool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E8660632BA096600035530D /* Tool.swift */; }; 4E8660662BA097D40035530D /* PhysicsConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E8660652BA097D40035530D /* PhysicsConstants.swift */; }; - E6A745162BA057040080C1BE /* MTKRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A745112BA057040080C1BE /* MTKRenderer.swift */; }; - E6A745172BA057040080C1BE /* ControlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A745122BA057040080C1BE /* ControlView.swift */; }; - E6A745182BA057040080C1BE /* Renderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A745132BA057040080C1BE /* Renderer.swift */; }; - E6A745192BA057040080C1BE /* GameScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A745152BA057040080C1BE /* GameScene.swift */; }; - E6A7451B2BA0C1890080C1BE /* PlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A7451A2BA0C1890080C1BE /* PlayerView.swift */; }; - E6A7451D2BA0CAD90080C1BE /* JoystickView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A7451C2BA0CAD90080C1BE /* JoystickView.swift */; }; - E6B550A12BA15E9C00DC7396 /* OverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6B550A02BA15E9C00DC7396 /* OverlayView.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -81,6 +81,13 @@ 4E630F122B9F7E090008F887 /* star-dashUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "star-dashUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 4E630F162B9F7E090008F887 /* star_dashUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = star_dashUITests.swift; sourceTree = ""; }; 4E630F182B9F7E090008F887 /* star_dashUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = star_dashUITestsLaunchTests.swift; sourceTree = ""; }; + E6A745112BA057040080C1BE /* MTKRenderer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MTKRenderer.swift; sourceTree = ""; }; + E6A745122BA057040080C1BE /* ControlView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlView.swift; sourceTree = ""; }; + E6A745132BA057040080C1BE /* Renderer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Renderer.swift; sourceTree = ""; }; + E6A745152BA057040080C1BE /* GameScene.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GameScene.swift; sourceTree = ""; }; + E6A7451A2BA0C1890080C1BE /* PlayerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlayerView.swift; sourceTree = ""; }; + E6A7451C2BA0CAD90080C1BE /* JoystickView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JoystickView.swift; sourceTree = ""; }; + E6B550A02BA15E9C00DC7396 /* OverlayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverlayView.swift; sourceTree = ""; }; 4E630F262B9F7E770008F887 /* Entity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Entity.swift; sourceTree = ""; }; 4E630F292B9F7EF60008F887 /* PositionComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PositionComponent.swift; sourceTree = ""; }; 4E630F2B2B9F7F460008F887 /* Component.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Component.swift; sourceTree = ""; }; @@ -95,13 +102,6 @@ 4E8660612BA0964A0035530D /* Obstacle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Obstacle.swift; sourceTree = ""; }; 4E8660632BA096600035530D /* Tool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tool.swift; sourceTree = ""; }; 4E8660652BA097D40035530D /* PhysicsConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhysicsConstants.swift; sourceTree = ""; }; - E6A745112BA057040080C1BE /* MTKRenderer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MTKRenderer.swift; sourceTree = ""; }; - E6A745122BA057040080C1BE /* ControlView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlView.swift; sourceTree = ""; }; - E6A745132BA057040080C1BE /* Renderer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Renderer.swift; sourceTree = ""; }; - E6A745152BA057040080C1BE /* GameScene.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GameScene.swift; sourceTree = ""; }; - E6A7451A2BA0C1890080C1BE /* PlayerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlayerView.swift; sourceTree = ""; }; - E6A7451C2BA0CAD90080C1BE /* JoystickView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JoystickView.swift; sourceTree = ""; }; - E6B550A02BA15E9C00DC7396 /* OverlayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverlayView.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -199,6 +199,35 @@ path = "star-dashUITests"; sourceTree = ""; }; + E6A745102BA057040080C1BE /* Rendering */ = { + isa = PBXGroup; + children = ( + E6B5509F2BA15D2000DC7396 /* MTKRenderer */, + E6A745132BA057040080C1BE /* Renderer.swift */, + ); + path = Rendering; + sourceTree = ""; + }; + E6A745142BA057040080C1BE /* GameScene */ = { + isa = PBXGroup; + children = ( + E6A745152BA057040080C1BE /* GameScene.swift */, + ); + path = GameScene; + sourceTree = ""; + }; + E6B5509F2BA15D2000DC7396 /* MTKRenderer */ = { + isa = PBXGroup; + children = ( + E6A745112BA057040080C1BE /* MTKRenderer.swift */, + E6A7451A2BA0C1890080C1BE /* PlayerView.swift */, + E6A7451C2BA0CAD90080C1BE /* JoystickView.swift */, + E6A745122BA057040080C1BE /* ControlView.swift */, + E6B550A02BA15E9C00DC7396 /* OverlayView.swift */, + ); + path = MTKRenderer; + sourceTree = ""; + }; 4E630F252B9F7E500008F887 /* Entities */ = { isa = PBXGroup; children = ( @@ -250,35 +279,6 @@ path = GameEntities; sourceTree = ""; }; - E6A745102BA057040080C1BE /* Rendering */ = { - isa = PBXGroup; - children = ( - E6B5509F2BA15D2000DC7396 /* MTKRenderer */, - E6A745132BA057040080C1BE /* Renderer.swift */, - ); - path = Rendering; - sourceTree = ""; - }; - E6A745142BA057040080C1BE /* GameScene */ = { - isa = PBXGroup; - children = ( - E6A745152BA057040080C1BE /* GameScene.swift */, - ); - path = GameScene; - sourceTree = ""; - }; - E6B5509F2BA15D2000DC7396 /* MTKRenderer */ = { - isa = PBXGroup; - children = ( - E6A745112BA057040080C1BE /* MTKRenderer.swift */, - E6A7451A2BA0C1890080C1BE /* PlayerView.swift */, - E6A7451C2BA0CAD90080C1BE /* JoystickView.swift */, - E6A745122BA057040080C1BE /* ControlView.swift */, - E6B550A02BA15E9C00DC7396 /* OverlayView.swift */, - ); - path = MTKRenderer; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ diff --git a/star-dash/star-dash/Events/EventManager.swift b/star-dash/star-dash/Events/EventManager.swift index b2242f3c..4ab6e198 100644 --- a/star-dash/star-dash/Events/EventManager.swift +++ b/star-dash/star-dash/Events/EventManager.swift @@ -12,15 +12,15 @@ typealias EventQueue = Deque class EventManager { private var events: EventQueue - + init() { events = EventQueue() } - + func add(event: Event) { events.append(event) } - + func executeAll(on target: EventModifiable) { while let event = events.popFirst() { event.execute(on: target) diff --git a/star-dash/star-dash/Events/MoveEvent.swift b/star-dash/star-dash/Events/MoveEvent.swift index ce174072..475009e8 100644 --- a/star-dash/star-dash/Events/MoveEvent.swift +++ b/star-dash/star-dash/Events/MoveEvent.swift @@ -10,16 +10,16 @@ import Foundation class MoveEvent: Event { var entityId: EntityId var timestamp: Date - + var displacement: CGVector - + init(entityId: EntityId, displacement: CGVector, timestamp: Date = Date.now) { self.entityId = entityId self.timestamp = timestamp self.displacement = displacement } - - func execute(on target: EventModifiable) { + + func execute(on target: EventModifiable) { // TODO: Use PositionSystem from target to modify entity of entityId } }