From e0546e04ff45e207b35dd6b7e09fba6aec772711 Mon Sep 17 00:00:00 2001 From: Rubesh Date: Mon, 25 Mar 2024 02:41:46 +0800 Subject: [PATCH 1/3] Restructure project --- .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/Contents.json | 0 .../Assets.xcassets/Contents.json | 0 .../Bullet.imageset/Bullet.png | Bin .../Bullet.imageset/Contents.json | 0 .../Sprites.spriteatlas/Contents.json | 0 .../LightHouse-1.imageset/Contents.json | 0 .../LightHouse-1.imageset/LightHouse-1.png | Bin .../Shooter-1.imageset/Contents.json | 0 .../Shooter-1.imageset/Shooter-1.png | Bin .../Shooter-2.imageset/Contents.json | 0 .../Shooter-2.imageset/Shooter-2.png | Bin .../coin.imageset/Contents.json | 0 .../coin.imageset/coin.png | Bin .../life.imageset/Contents.json | 0 .../life.imageset/life.png | Bin .../melee-1.imageset/Contents.json | 0 .../melee-1.imageset/image-1.png.png | Bin .../melee-2.imageset/Contents.json | 0 .../melee-2.imageset/image-2.png.png | Bin .../arrowTower.imageset/Contents.json | 0 .../arrowTower.imageset/arrowTower.png | Bin .../background.imageset/Contents.json | 0 .../background.imageset/background.png | Bin .../logo.imageset/Contents.json | 0 .../Assets.xcassets/logo.imageset/logo.png | Bin .../melee.imageset/Contents.json | 0 .../melee.imageset/melee-frame.png | Bin .../road-tile.imageset/Contents.json | 0 .../road-tile.imageset/road-tile.png | Bin .../soldier.imageset/Contents.json | 0 .../soldier.imageset/soldier-frame.png | Bin .../start-button.imageset/Contents.json | 0 .../start-button.imageset/start-button.png | Bin .../TowerForge.xcodeproj/project.pbxproj | 322 +++++++++++++----- .../{ => Application}/AppDelegate.swift | 0 .../Base.lproj/Launch Screen.storyboard} | 0 .../Base.lproj/Main.storyboard | 0 .../Storyboards/LaunchScreen.storyboard} | 0 .../Commons/Constants/Constants.swift | 14 + .../{ => Commons}/Fonts/Nosifer-Regular.ttf | Bin .../{ => Commons}/Protocols/Animatable.swift | 2 + .../Protocols/PlayerSpawnable.swift | 0 .../{ => Commons}/Protocols/Spawnable.swift | 0 .../Protocols}/TeamController.swift | 0 .../BaseComponents/LabelComponent.swift | 0 .../BaseComponents/MovableComponent.swift | 0 .../BaseComponents/PositionComponent.swift | 0 .../BaseComponents/SpriteComponent.swift | 0 .../GameComponents/CostComponent.swift | 0 .../GameComponents/DamageComponent.swift | 0 .../GameComponents/HealthComponent.swift | 0 .../GameComponents/ShootingComponent.swift | 0 .../LevelComponents}/AiComponent.swift | 0 .../LevelComponents}/HomeComponent.swift | 0 .../LevelComponents}/PlayerComponent.swift | 16 +- .../Components}/TFComponent.swift | 0 .../BaseEntities}/BaseProjectile.swift | 0 .../Entities/BaseEntities}/BaseTower.swift | 0 .../Entities/BaseEntities}/BaseUnit.swift | 0 .../Entities}/EntityManager.swift | 0 .../Entities/GameEntities}/Bullet.swift | 0 .../Entities/GameEntities}/Life.swift | 0 .../Entities/GameEntities}/Point.swift | 0 .../Entities/GameEntities}/Team.swift | 0 .../SpawnableEntities}/ArrowTower.swift | 0 .../SpawnableEntities}/MeleeUnit.swift | 0 .../SpawnableEntities}/SoldierUnit.swift | 0 .../SpawnableEntities.swift | 0 .../Entities}/TFEntity.swift | 0 .../Events}/ConcurrentEvent.swift | 0 .../Events/EventManager.swift | 0 .../Events/EventOutput.swift | 0 .../Events/EventTarget.swift | 0 .../Events/GameEvents}/DamageEvent.swift | 0 .../Events/GameEvents}/MoveEvent.swift | 0 .../Events/GameEvents}/RemoveEvent.swift | 0 .../Events/GameEvents}/SpawnEvent.swift | 0 .../PlayerEvents}/RequestSpawnEvent.swift | 0 .../Events/TFEvent.swift | 0 .../{ => GameModule}/GameWorld.swift | 0 .../Systems/BaseSystems}/ContactSystem.swift | 0 .../Systems/BaseSystems}/MovementSystem.swift | 0 .../Systems/BaseSystems}/SpawnSystem.swift | 0 .../Systems/GameSystems}/HealthSystem.swift | 0 .../Systems/GameSystems}/RemoveSystem.swift | 0 .../Systems/GameSystems}/ShootingSystem.swift | 0 .../Systems/LevelSystems}/AiSystem.swift | 0 .../Systems/LevelSystems}/HomeSystem.swift | 0 .../Systems}/SystemManager.swift | 0 .../Systems/TFSystem.swift | 0 .../Collision/Collidable.swift | 0 .../Collision/TFContact.swift | 0 .../Generators/UnitGenerator.swift | 0 .../Grid/Grid.swift | 0 .../Grid/GridDelegate.swift | 0 .../Nodes/SelectionNodeDelegate.swift | 3 +- TowerForge/TowerForge/Nodes/UnitNode.swift | 1 + TowerForge/TowerForge/Scenes/Actions.sks | Bin 1892 -> 0 bytes .../{ => Scenes}/Rendering/Renderable.swift | 0 .../{ => Scenes}/Rendering/Renderer.swift | 0 .../SceneManagerDelegate.swift | 0 .../SceneDelegates}/SceneUpdateDelegate.swift | 0 .../Scenes/SpriteKitScenes/Actions.sks | Bin 0 -> 1638 bytes .../{ => SpriteKitScenes}/GameScene.sks | Bin .../MainMenuViewController.swift | 0 .../TFTexturesTests.swift | 0 107 files changed, 258 insertions(+), 100 deletions(-) rename TowerForge/{TowerForge => }/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/Sprites.spriteatlas/Bullet.imageset/Bullet.png (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/Sprites.spriteatlas/Bullet.imageset/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/Sprites.spriteatlas/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/Sprites.spriteatlas/LightHouse-1.imageset/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/Sprites.spriteatlas/LightHouse-1.imageset/LightHouse-1.png (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/Sprites.spriteatlas/Shooter-1.imageset/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/Sprites.spriteatlas/Shooter-1.imageset/Shooter-1.png (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/Sprites.spriteatlas/Shooter-2.imageset/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/Sprites.spriteatlas/Shooter-2.imageset/Shooter-2.png (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/Sprites.spriteatlas/coin.imageset/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/Sprites.spriteatlas/coin.imageset/coin.png (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/Sprites.spriteatlas/life.imageset/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/Sprites.spriteatlas/life.imageset/life.png (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/Sprites.spriteatlas/melee-1.imageset/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/Sprites.spriteatlas/melee-1.imageset/image-1.png.png (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/Sprites.spriteatlas/melee-2.imageset/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/Sprites.spriteatlas/melee-2.imageset/image-2.png.png (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/arrowTower.imageset/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/arrowTower.imageset/arrowTower.png (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/background.imageset/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/background.imageset/background.png (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/logo.imageset/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/logo.imageset/logo.png (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/melee.imageset/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/melee.imageset/melee-frame.png (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/road-tile.imageset/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/road-tile.imageset/road-tile.png (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/soldier.imageset/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/soldier.imageset/soldier-frame.png (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/start-button.imageset/Contents.json (100%) rename TowerForge/{TowerForge => }/Assets.xcassets/start-button.imageset/start-button.png (100%) rename TowerForge/TowerForge/AppMain/{ => Application}/AppDelegate.swift (100%) rename TowerForge/TowerForge/AppMain/{Base.lproj/LaunchScreen.storyboard => Storyboards/Base.lproj/Launch Screen.storyboard} (100%) rename TowerForge/TowerForge/AppMain/{ => Storyboards}/Base.lproj/Main.storyboard (100%) rename TowerForge/{Launch Screen.storyboard => TowerForge/AppMain/Storyboards/LaunchScreen.storyboard} (100%) create mode 100644 TowerForge/TowerForge/Commons/Constants/Constants.swift rename TowerForge/TowerForge/{ => Commons}/Fonts/Nosifer-Regular.ttf (100%) rename TowerForge/TowerForge/{ => Commons}/Protocols/Animatable.swift (71%) rename TowerForge/TowerForge/{ => Commons}/Protocols/PlayerSpawnable.swift (100%) rename TowerForge/TowerForge/{ => Commons}/Protocols/Spawnable.swift (100%) rename TowerForge/TowerForge/{Controllers => Commons/Protocols}/TeamController.swift (100%) rename TowerForge/TowerForge/{LevelManager => GameModule}/Components/BaseComponents/LabelComponent.swift (100%) rename TowerForge/TowerForge/{LevelManager => GameModule}/Components/BaseComponents/MovableComponent.swift (100%) rename TowerForge/TowerForge/{LevelManager => GameModule}/Components/BaseComponents/PositionComponent.swift (100%) rename TowerForge/TowerForge/{LevelManager => GameModule}/Components/BaseComponents/SpriteComponent.swift (100%) rename TowerForge/TowerForge/{LevelManager => GameModule}/Components/GameComponents/CostComponent.swift (100%) rename TowerForge/TowerForge/{LevelManager => GameModule}/Components/GameComponents/DamageComponent.swift (100%) rename TowerForge/TowerForge/{LevelManager => GameModule}/Components/GameComponents/HealthComponent.swift (100%) rename TowerForge/TowerForge/{LevelManager => GameModule}/Components/GameComponents/ShootingComponent.swift (100%) rename TowerForge/TowerForge/{LevelManager/Components => GameModule/Components/LevelComponents}/AiComponent.swift (100%) rename TowerForge/TowerForge/{LevelManager/Components => GameModule/Components/LevelComponents}/HomeComponent.swift (100%) rename TowerForge/TowerForge/{LevelManager/Components => GameModule/Components/LevelComponents}/PlayerComponent.swift (100%) rename TowerForge/TowerForge/{LevelManager => GameModule/Components}/TFComponent.swift (100%) rename TowerForge/TowerForge/{LevelManager/Entities/Base Entities => GameModule/Entities/BaseEntities}/BaseProjectile.swift (100%) rename TowerForge/TowerForge/{LevelManager/Entities/Base Entities => GameModule/Entities/BaseEntities}/BaseTower.swift (100%) rename TowerForge/TowerForge/{LevelManager/Entities/Base Entities => GameModule/Entities/BaseEntities}/BaseUnit.swift (100%) rename TowerForge/TowerForge/{LevelManager => GameModule/Entities}/EntityManager.swift (100%) rename TowerForge/TowerForge/{LevelManager/Entities => GameModule/Entities/GameEntities}/Bullet.swift (100%) rename TowerForge/TowerForge/{LevelManager/Entities => GameModule/Entities/GameEntities}/Life.swift (100%) rename TowerForge/TowerForge/{LevelManager/Entities => GameModule/Entities/GameEntities}/Point.swift (100%) rename TowerForge/TowerForge/{LevelManager/Entities => GameModule/Entities/GameEntities}/Team.swift (100%) rename TowerForge/TowerForge/{LevelManager/Entities => GameModule/Entities/SpawnableEntities}/ArrowTower.swift (100%) rename TowerForge/TowerForge/{LevelManager/Entities => GameModule/Entities/SpawnableEntities}/MeleeUnit.swift (100%) rename TowerForge/TowerForge/{LevelManager/Entities => GameModule/Entities/SpawnableEntities}/SoldierUnit.swift (100%) rename TowerForge/TowerForge/{LevelManager/Entities => GameModule/Entities/SpawnableEntities}/SpawnableEntities.swift (100%) rename TowerForge/TowerForge/{LevelManager => GameModule/Entities}/TFEntity.swift (100%) rename TowerForge/TowerForge/{LevelManager/Events/Implemented Events => GameModule/Events}/ConcurrentEvent.swift (100%) rename TowerForge/TowerForge/{LevelManager => GameModule}/Events/EventManager.swift (100%) rename TowerForge/TowerForge/{LevelManager => GameModule}/Events/EventOutput.swift (100%) rename TowerForge/TowerForge/{LevelManager => GameModule}/Events/EventTarget.swift (100%) rename TowerForge/TowerForge/{LevelManager/Events/Implemented Events => GameModule/Events/GameEvents}/DamageEvent.swift (100%) rename TowerForge/TowerForge/{LevelManager/Events/Implemented Events => GameModule/Events/GameEvents}/MoveEvent.swift (100%) rename TowerForge/TowerForge/{LevelManager/Events/Implemented Events => GameModule/Events/GameEvents}/RemoveEvent.swift (100%) rename TowerForge/TowerForge/{LevelManager/Events/Implemented Events => GameModule/Events/GameEvents}/SpawnEvent.swift (100%) rename TowerForge/TowerForge/{LevelManager/Events/Implemented Events => GameModule/Events/PlayerEvents}/RequestSpawnEvent.swift (100%) rename TowerForge/TowerForge/{LevelManager => GameModule}/Events/TFEvent.swift (100%) rename TowerForge/TowerForge/{ => GameModule}/GameWorld.swift (100%) rename TowerForge/TowerForge/{LevelManager/Systems => GameModule/Systems/BaseSystems}/ContactSystem.swift (100%) rename TowerForge/TowerForge/{LevelManager/Systems => GameModule/Systems/BaseSystems}/MovementSystem.swift (100%) rename TowerForge/TowerForge/{LevelManager/Systems => GameModule/Systems/BaseSystems}/SpawnSystem.swift (100%) rename TowerForge/TowerForge/{LevelManager/Systems => GameModule/Systems/GameSystems}/HealthSystem.swift (100%) rename TowerForge/TowerForge/{LevelManager/Systems => GameModule/Systems/GameSystems}/RemoveSystem.swift (100%) rename TowerForge/TowerForge/{LevelManager/Systems => GameModule/Systems/GameSystems}/ShootingSystem.swift (100%) rename TowerForge/TowerForge/{LevelManager/Systems => GameModule/Systems/LevelSystems}/AiSystem.swift (100%) rename TowerForge/TowerForge/{LevelManager/Systems => GameModule/Systems/LevelSystems}/HomeSystem.swift (100%) rename TowerForge/TowerForge/{LevelManager => GameModule/Systems}/SystemManager.swift (100%) rename TowerForge/TowerForge/{LevelManager => GameModule}/Systems/TFSystem.swift (100%) rename TowerForge/TowerForge/{LevelManager => LevelModule}/Collision/Collidable.swift (100%) rename TowerForge/TowerForge/{LevelManager => LevelModule}/Collision/TFContact.swift (100%) rename TowerForge/TowerForge/{LevelManager => LevelModule}/Generators/UnitGenerator.swift (100%) rename TowerForge/TowerForge/{LevelManager => LevelModule}/Grid/Grid.swift (100%) rename TowerForge/TowerForge/{LevelManager => LevelModule}/Grid/GridDelegate.swift (100%) delete mode 100644 TowerForge/TowerForge/Scenes/Actions.sks rename TowerForge/TowerForge/{ => Scenes}/Rendering/Renderable.swift (100%) rename TowerForge/TowerForge/{ => Scenes}/Rendering/Renderer.swift (100%) rename TowerForge/TowerForge/{ => Scenes/SceneDelegates}/SceneManagerDelegate.swift (100%) rename TowerForge/TowerForge/{ => Scenes/SceneDelegates}/SceneUpdateDelegate.swift (100%) create mode 100644 TowerForge/TowerForge/Scenes/SpriteKitScenes/Actions.sks rename TowerForge/TowerForge/Scenes/{ => SpriteKitScenes}/GameScene.sks (100%) rename TowerForge/TowerForge/{Controllers => ViewControllers}/MainMenuViewController.swift (100%) rename TowerForge/TowerForgeTests/{TFCoreTests => CoreUITests}/TFTexturesTests.swift (100%) diff --git a/TowerForge/TowerForge/Assets.xcassets/AccentColor.colorset/Contents.json b/TowerForge/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/AccentColor.colorset/Contents.json rename to TowerForge/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/AppIcon.appiconset/Contents.json b/TowerForge/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/AppIcon.appiconset/Contents.json rename to TowerForge/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/Contents.json b/TowerForge/Assets.xcassets/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/Contents.json rename to TowerForge/Assets.xcassets/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/Bullet.imageset/Bullet.png b/TowerForge/Assets.xcassets/Sprites.spriteatlas/Bullet.imageset/Bullet.png similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/Bullet.imageset/Bullet.png rename to TowerForge/Assets.xcassets/Sprites.spriteatlas/Bullet.imageset/Bullet.png diff --git a/TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/Bullet.imageset/Contents.json b/TowerForge/Assets.xcassets/Sprites.spriteatlas/Bullet.imageset/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/Bullet.imageset/Contents.json rename to TowerForge/Assets.xcassets/Sprites.spriteatlas/Bullet.imageset/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/Contents.json b/TowerForge/Assets.xcassets/Sprites.spriteatlas/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/Contents.json rename to TowerForge/Assets.xcassets/Sprites.spriteatlas/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/LightHouse-1.imageset/Contents.json b/TowerForge/Assets.xcassets/Sprites.spriteatlas/LightHouse-1.imageset/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/LightHouse-1.imageset/Contents.json rename to TowerForge/Assets.xcassets/Sprites.spriteatlas/LightHouse-1.imageset/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/LightHouse-1.imageset/LightHouse-1.png b/TowerForge/Assets.xcassets/Sprites.spriteatlas/LightHouse-1.imageset/LightHouse-1.png similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/LightHouse-1.imageset/LightHouse-1.png rename to TowerForge/Assets.xcassets/Sprites.spriteatlas/LightHouse-1.imageset/LightHouse-1.png diff --git a/TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/Shooter-1.imageset/Contents.json b/TowerForge/Assets.xcassets/Sprites.spriteatlas/Shooter-1.imageset/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/Shooter-1.imageset/Contents.json rename to TowerForge/Assets.xcassets/Sprites.spriteatlas/Shooter-1.imageset/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/Shooter-1.imageset/Shooter-1.png b/TowerForge/Assets.xcassets/Sprites.spriteatlas/Shooter-1.imageset/Shooter-1.png similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/Shooter-1.imageset/Shooter-1.png rename to TowerForge/Assets.xcassets/Sprites.spriteatlas/Shooter-1.imageset/Shooter-1.png diff --git a/TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/Shooter-2.imageset/Contents.json b/TowerForge/Assets.xcassets/Sprites.spriteatlas/Shooter-2.imageset/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/Shooter-2.imageset/Contents.json rename to TowerForge/Assets.xcassets/Sprites.spriteatlas/Shooter-2.imageset/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/Shooter-2.imageset/Shooter-2.png b/TowerForge/Assets.xcassets/Sprites.spriteatlas/Shooter-2.imageset/Shooter-2.png similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/Shooter-2.imageset/Shooter-2.png rename to TowerForge/Assets.xcassets/Sprites.spriteatlas/Shooter-2.imageset/Shooter-2.png diff --git a/TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/coin.imageset/Contents.json b/TowerForge/Assets.xcassets/Sprites.spriteatlas/coin.imageset/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/coin.imageset/Contents.json rename to TowerForge/Assets.xcassets/Sprites.spriteatlas/coin.imageset/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/coin.imageset/coin.png b/TowerForge/Assets.xcassets/Sprites.spriteatlas/coin.imageset/coin.png similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/coin.imageset/coin.png rename to TowerForge/Assets.xcassets/Sprites.spriteatlas/coin.imageset/coin.png diff --git a/TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/life.imageset/Contents.json b/TowerForge/Assets.xcassets/Sprites.spriteatlas/life.imageset/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/life.imageset/Contents.json rename to TowerForge/Assets.xcassets/Sprites.spriteatlas/life.imageset/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/life.imageset/life.png b/TowerForge/Assets.xcassets/Sprites.spriteatlas/life.imageset/life.png similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/life.imageset/life.png rename to TowerForge/Assets.xcassets/Sprites.spriteatlas/life.imageset/life.png diff --git a/TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/melee-1.imageset/Contents.json b/TowerForge/Assets.xcassets/Sprites.spriteatlas/melee-1.imageset/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/melee-1.imageset/Contents.json rename to TowerForge/Assets.xcassets/Sprites.spriteatlas/melee-1.imageset/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/melee-1.imageset/image-1.png.png b/TowerForge/Assets.xcassets/Sprites.spriteatlas/melee-1.imageset/image-1.png.png similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/melee-1.imageset/image-1.png.png rename to TowerForge/Assets.xcassets/Sprites.spriteatlas/melee-1.imageset/image-1.png.png diff --git a/TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/melee-2.imageset/Contents.json b/TowerForge/Assets.xcassets/Sprites.spriteatlas/melee-2.imageset/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/melee-2.imageset/Contents.json rename to TowerForge/Assets.xcassets/Sprites.spriteatlas/melee-2.imageset/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/melee-2.imageset/image-2.png.png b/TowerForge/Assets.xcassets/Sprites.spriteatlas/melee-2.imageset/image-2.png.png similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/Sprites.spriteatlas/melee-2.imageset/image-2.png.png rename to TowerForge/Assets.xcassets/Sprites.spriteatlas/melee-2.imageset/image-2.png.png diff --git a/TowerForge/TowerForge/Assets.xcassets/arrowTower.imageset/Contents.json b/TowerForge/Assets.xcassets/arrowTower.imageset/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/arrowTower.imageset/Contents.json rename to TowerForge/Assets.xcassets/arrowTower.imageset/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/arrowTower.imageset/arrowTower.png b/TowerForge/Assets.xcassets/arrowTower.imageset/arrowTower.png similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/arrowTower.imageset/arrowTower.png rename to TowerForge/Assets.xcassets/arrowTower.imageset/arrowTower.png diff --git a/TowerForge/TowerForge/Assets.xcassets/background.imageset/Contents.json b/TowerForge/Assets.xcassets/background.imageset/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/background.imageset/Contents.json rename to TowerForge/Assets.xcassets/background.imageset/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/background.imageset/background.png b/TowerForge/Assets.xcassets/background.imageset/background.png similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/background.imageset/background.png rename to TowerForge/Assets.xcassets/background.imageset/background.png diff --git a/TowerForge/TowerForge/Assets.xcassets/logo.imageset/Contents.json b/TowerForge/Assets.xcassets/logo.imageset/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/logo.imageset/Contents.json rename to TowerForge/Assets.xcassets/logo.imageset/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/logo.imageset/logo.png b/TowerForge/Assets.xcassets/logo.imageset/logo.png similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/logo.imageset/logo.png rename to TowerForge/Assets.xcassets/logo.imageset/logo.png diff --git a/TowerForge/TowerForge/Assets.xcassets/melee.imageset/Contents.json b/TowerForge/Assets.xcassets/melee.imageset/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/melee.imageset/Contents.json rename to TowerForge/Assets.xcassets/melee.imageset/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/melee.imageset/melee-frame.png b/TowerForge/Assets.xcassets/melee.imageset/melee-frame.png similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/melee.imageset/melee-frame.png rename to TowerForge/Assets.xcassets/melee.imageset/melee-frame.png diff --git a/TowerForge/TowerForge/Assets.xcassets/road-tile.imageset/Contents.json b/TowerForge/Assets.xcassets/road-tile.imageset/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/road-tile.imageset/Contents.json rename to TowerForge/Assets.xcassets/road-tile.imageset/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/road-tile.imageset/road-tile.png b/TowerForge/Assets.xcassets/road-tile.imageset/road-tile.png similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/road-tile.imageset/road-tile.png rename to TowerForge/Assets.xcassets/road-tile.imageset/road-tile.png diff --git a/TowerForge/TowerForge/Assets.xcassets/soldier.imageset/Contents.json b/TowerForge/Assets.xcassets/soldier.imageset/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/soldier.imageset/Contents.json rename to TowerForge/Assets.xcassets/soldier.imageset/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/soldier.imageset/soldier-frame.png b/TowerForge/Assets.xcassets/soldier.imageset/soldier-frame.png similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/soldier.imageset/soldier-frame.png rename to TowerForge/Assets.xcassets/soldier.imageset/soldier-frame.png diff --git a/TowerForge/TowerForge/Assets.xcassets/start-button.imageset/Contents.json b/TowerForge/Assets.xcassets/start-button.imageset/Contents.json similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/start-button.imageset/Contents.json rename to TowerForge/Assets.xcassets/start-button.imageset/Contents.json diff --git a/TowerForge/TowerForge/Assets.xcassets/start-button.imageset/start-button.png b/TowerForge/Assets.xcassets/start-button.imageset/start-button.png similarity index 100% rename from TowerForge/TowerForge/Assets.xcassets/start-button.imageset/start-button.png rename to TowerForge/Assets.xcassets/start-button.imageset/start-button.png diff --git a/TowerForge/TowerForge.xcodeproj/project.pbxproj b/TowerForge/TowerForge.xcodeproj/project.pbxproj index 1db62c69..5ee00c03 100644 --- a/TowerForge/TowerForge.xcodeproj/project.pbxproj +++ b/TowerForge/TowerForge.xcodeproj/project.pbxproj @@ -44,7 +44,7 @@ 520062522BA8DA09000DBA30 /* UnitGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 520062512BA8DA09000DBA30 /* UnitGenerator.swift */; }; 520062562BA8E026000DBA30 /* PlayerSpawnable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 520062552BA8E026000DBA30 /* PlayerSpawnable.swift */; }; 520062582BA8ED73000DBA30 /* HomeComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 520062572BA8ED73000DBA30 /* HomeComponent.swift */; }; - 523923E72BADC8530044BA61 /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 523923E62BADC8530044BA61 /* Launch Screen.storyboard */; }; + 523923E72BADC8530044BA61 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 523923E62BADC8530044BA61 /* LaunchScreen.storyboard */; }; 5240D08F2BAE6D0A004F1486 /* Point.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5240D08E2BAE6D0A004F1486 /* Point.swift */; }; 5240D0912BAF3453004F1486 /* Life.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5240D0902BAF3453004F1486 /* Life.swift */; }; 5240D0962BB04E57004F1486 /* Nosifer-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5240D0952BB04E57004F1486 /* Nosifer-Regular.ttf */; }; @@ -67,7 +67,7 @@ 52DF5FB02BA32B2300135367 /* GameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52DF5FAF2BA32B2300135367 /* GameViewController.swift */; }; 52DF5FB32BA32B2300135367 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 52DF5FB12BA32B2300135367 /* Main.storyboard */; }; 52DF5FB52BA32B2600135367 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 52DF5FB42BA32B2600135367 /* Assets.xcassets */; }; - 52DF5FB82BA32B2600135367 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 52DF5FB62BA32B2600135367 /* LaunchScreen.storyboard */; }; + 52DF5FB82BA32B2600135367 /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 52DF5FB62BA32B2600135367 /* Launch Screen.storyboard */; }; 52DF5FC22BA32B2600135367 /* TowerForgeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52DF5FC12BA32B2600135367 /* TowerForgeTests.swift */; }; 52DF5FCC2BA32B2600135367 /* TowerForgeUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52DF5FCB2BA32B2600135367 /* TowerForgeUITests.swift */; }; 52DF5FCE2BA32B2600135367 /* TowerForgeUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52DF5FCD2BA32B2600135367 /* TowerForgeUITestsLaunchTests.swift */; }; @@ -93,6 +93,7 @@ BA443D472BB05C6E009F0FFB /* MoveEventTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA443D462BB05C6E009F0FFB /* MoveEventTests.swift */; }; BA443D492BB05EF0009F0FFB /* RemoveEventTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA443D482BB05EF0009F0FFB /* RemoveEventTests.swift */; }; BA443D4B2BB05F73009F0FFB /* RequestSpawnEventTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA443D4A2BB05F73009F0FFB /* RequestSpawnEventTests.swift */; }; + BAFFB9452BB0A8C800D8301F /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAFFB9442BB0A8C800D8301F /* Constants.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -150,11 +151,11 @@ 520062512BA8DA09000DBA30 /* UnitGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnitGenerator.swift; sourceTree = ""; }; 520062552BA8E026000DBA30 /* PlayerSpawnable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerSpawnable.swift; sourceTree = ""; }; 520062572BA8ED73000DBA30 /* HomeComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeComponent.swift; sourceTree = ""; }; - 523923E62BADC8530044BA61 /* Launch Screen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = ""; }; + 523923E62BADC8530044BA61 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; 5240D08E2BAE6D0A004F1486 /* Point.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Point.swift; sourceTree = ""; }; 5240D0902BAF3453004F1486 /* Life.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Life.swift; sourceTree = ""; }; 5240D0952BB04E57004F1486 /* Nosifer-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Nosifer-Regular.ttf"; sourceTree = ""; }; - 5240D0972BB0522A004F1486 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + 5240D0972BB0522A004F1486 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 5250B42E2BAE0DB000F16CF6 /* LabelComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelComponent.swift; sourceTree = ""; }; 52578B812BA61AAF00B4D76C /* PositionComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PositionComponent.swift; sourceTree = ""; }; 52578B862BA6209700B4D76C /* DamageComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DamageComponent.swift; sourceTree = ""; }; @@ -175,7 +176,7 @@ 52DF5FAF2BA32B2300135367 /* GameViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = GameViewController.swift; path = ../GameViewController.swift; sourceTree = ""; }; 52DF5FB22BA32B2300135367 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 52DF5FB42BA32B2600135367 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 52DF5FB72BA32B2600135367 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 52DF5FB72BA32B2600135367 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = "Base.lproj/Launch Screen.storyboard"; sourceTree = ""; }; 52DF5FBD2BA32B2600135367 /* TowerForgeTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TowerForgeTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 52DF5FC12BA32B2600135367 /* TowerForgeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TowerForgeTests.swift; sourceTree = ""; }; 52DF5FC72BA32B2600135367 /* TowerForgeUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TowerForgeUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -204,6 +205,7 @@ BA443D482BB05EF0009F0FFB /* RemoveEventTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoveEventTests.swift; sourceTree = ""; }; BA443D4A2BB05F73009F0FFB /* RequestSpawnEventTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestSpawnEventTests.swift; sourceTree = ""; }; BABB7C052BA9A41000D54DAE /* TowerForceTestPlan.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = TowerForceTestPlan.xctestplan; sourceTree = ""; }; + BAFFB9442BB0A8C800D8301F /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -234,15 +236,11 @@ 3C99559F2BA47D3E00D33FA5 /* Entities */ = { isa = PBXGroup; children = ( - 3CE9514C2BAC8668008B2785 /* Base Entities */, - 3C9955AE2BA48FD200D33FA5 /* MeleeUnit.swift */, - 3C9955B02BA4ACA100D33FA5 /* Bullet.swift */, - 3C9955B32BA4B12000D33FA5 /* ArrowTower.swift */, - 52578B8B2BA627B200B4D76C /* Team.swift */, - 529F91872BA6D7A7009551D9 /* SoldierUnit.swift */, - 3CE9514A2BAC83FA008B2785 /* SpawnableEntities.swift */, - 5240D08E2BAE6D0A004F1486 /* Point.swift */, - 5240D0902BAF3453004F1486 /* Life.swift */, + 52DF5FEE2BA34EA000135367 /* TFEntity.swift */, + 52DF5FDD2BA32D7E00135367 /* EntityManager.swift */, + 3CE9514C2BAC8668008B2785 /* BaseEntities */, + BAFFB9362BB0A2FA00D8301F /* SpawnableEntities */, + BAFFB9372BB0A30700D8301F /* GameEntities */, ); path = Entities; sourceTree = ""; @@ -250,11 +248,13 @@ 3C9955B82BA5620A00D33FA5 /* Events */ = { isa = PBXGroup; children = ( - 3C9955C62BA585FD00D33FA5 /* Implemented Events */, 3C9955BB2BA563A800D33FA5 /* TFEvent.swift */, - 3C9955BF2BA57E5500D33FA5 /* EventTarget.swift */, - 3C9955C12BA5838900D33FA5 /* EventOutput.swift */, 3C9955BD2BA57E4B00D33FA5 /* EventManager.swift */, + 3C9955C12BA5838900D33FA5 /* EventOutput.swift */, + 3C9955BF2BA57E5500D33FA5 /* EventTarget.swift */, + 3C9955C72BA5865C00D33FA5 /* ConcurrentEvent.swift */, + BAFFB93C2BB0A5B200D8301F /* GameEvents */, + BAFFB93B2BB0A5AD00D8301F /* PlayerEvents */, ); path = Events; sourceTree = ""; @@ -263,39 +263,22 @@ isa = PBXGroup; children = ( 3C9955AC2BA483B100D33FA5 /* TFSystem.swift */, - 3C9955C42BA585DD00D33FA5 /* HealthSystem.swift */, - 3C769A712BA58DE700F454F9 /* MovementSystem.swift */, - 3C769A732BA591BD00F454F9 /* SpawnSystem.swift */, - BA443D3C2BAD9557009F0FFB /* RemoveSystem.swift */, - 3CE9515E2BADE2C5008B2785 /* ShootingSystem.swift */, - 3CE951622BAE037C008B2785 /* AiSystem.swift */, - 3CE951662BAEAB0E008B2785 /* ContactSystem.swift */, - 3CE951642BAE0A04008B2785 /* HomeSystem.swift */, + 3CCF9CB22BAB1F42004D170E /* SystemManager.swift */, + BAFFB93A2BB0A4F800D8301F /* BaseSystems */, + BAFFB9392BB0A4E100D8301F /* GameSystems */, + BAFFB9382BB0A4CB00D8301F /* LevelSystems */, ); path = Systems; sourceTree = ""; }; - 3C9955C62BA585FD00D33FA5 /* Implemented Events */ = { - isa = PBXGroup; - children = ( - 3C9955B92BA5637200D33FA5 /* DamageEvent.swift */, - 3C9955C92BA5888F00D33FA5 /* SpawnEvent.swift */, - 3C9955CB2BA5889800D33FA5 /* MoveEvent.swift */, - 3C9955C72BA5865C00D33FA5 /* ConcurrentEvent.swift */, - BA443D3E2BAD9774009F0FFB /* RemoveEvent.swift */, - 3CE951682BAEB719008B2785 /* RequestSpawnEvent.swift */, - ); - path = "Implemented Events"; - sourceTree = ""; - }; - 3CE9514C2BAC8668008B2785 /* Base Entities */ = { + 3CE9514C2BAC8668008B2785 /* BaseEntities */ = { isa = PBXGroup; children = ( 3C9955A02BA47DA500D33FA5 /* BaseTower.swift */, 3C9955A22BA47DBB00D33FA5 /* BaseUnit.swift */, 3C9955A42BA47DC600D33FA5 /* BaseProjectile.swift */, ); - path = "Base Entities"; + path = BaseEntities; sourceTree = ""; }; 3CE9514D2BAC8925008B2785 /* Rendering */ = { @@ -310,8 +293,8 @@ 3CE951542BACA079008B2785 /* Collision */ = { isa = PBXGroup; children = ( - 3CE951552BACA0CF008B2785 /* Collidable.swift */, 3CE951572BAD724D008B2785 /* TFContact.swift */, + 3CE951552BACA0CF008B2785 /* Collidable.swift */, ); path = Collision; sourceTree = ""; @@ -356,10 +339,11 @@ 5295A2002BA9FB97005018A8 /* Scenes */ = { isa = PBXGroup; children = ( - 52DF5FAB2BA32B2300135367 /* Actions.sks */, - 52DF5FA92BA32B2300135367 /* GameScene.sks */, 52DF5FAD2BA32B2300135367 /* GameScene.swift */, 5295A2032BA9FED4005018A8 /* MenuScene.swift */, + BAFFB9422BB0A79B00D8301F /* SpriteKitScenes */, + BAFFB9322BB0A10C00D8301F /* SceneDelegates */, + 3CE9514D2BAC8925008B2785 /* Rendering */, ); path = Scenes; sourceTree = ""; @@ -374,21 +358,20 @@ path = Nodes; sourceTree = ""; }; - 5295A2082BAAE14B005018A8 /* Controllers */ = { + 5295A2082BAAE14B005018A8 /* ViewControllers */ = { isa = PBXGroup; children = ( - 5295A20E2BAAE7CF005018A8 /* TeamController.swift */, 52DF5FAF2BA32B2300135367 /* GameViewController.swift */, 3CCF9CB62BAB2877004D170E /* MainMenuViewController.swift */, ); - path = Controllers; + path = ViewControllers; sourceTree = ""; }; 52DF5F9B2BA32B2200135367 = { isa = PBXGroup; children = ( - 523923E62BADC8530044BA61 /* Launch Screen.storyboard */, BABB7C052BA9A41000D54DAE /* TowerForceTestPlan.xctestplan */, + 52DF5FB42BA32B2600135367 /* Assets.xcassets */, 52DF5FA62BA32B2300135367 /* TowerForge */, 52DF5FC02BA32B2600135367 /* TowerForgeTests */, 52DF5FCA2BA32B2600135367 /* TowerForgeUITests */, @@ -410,19 +393,14 @@ isa = PBXGroup; children = ( 5240D0972BB0522A004F1486 /* Info.plist */, - 5240D0942BB04E2B004F1486 /* Fonts */, - 52DF5FB42BA32B2600135367 /* Assets.xcassets */, BA443D432BAD98CD009F0FFB /* AppMain */, - 3CE9514D2BAC8925008B2785 /* Rendering */, - 5295A2082BAAE14B005018A8 /* Controllers */, + BAFFB92F2BB0A01700D8301F /* Commons */, 5295A2052BAA0208005018A8 /* Nodes */, + BAFFB9462BB0AABF00D8301F /* TFCore */, 5295A2002BA9FB97005018A8 /* Scenes */, - 52DF5FE72BA33F8800135367 /* Protocols */, - 52DF5FDF2BA3347C00135367 /* TFCore */, - 3CCF9CAE2BAB1A96004D170E /* SceneUpdateDelegate.swift */, - 5295A2012BA9FBD9005018A8 /* SceneManagerDelegate.swift */, - 52DF5FDB2BA32CEF00135367 /* LevelManager */, - 3CCF9CB02BAB1BCE004D170E /* GameWorld.swift */, + 5295A2082BAAE14B005018A8 /* ViewControllers */, + 52DF5FDB2BA32CEF00135367 /* LevelModule */, + BAFFB9332BB0A24400D8301F /* GameModule */, ); path = TowerForge; sourceTree = ""; @@ -431,7 +409,7 @@ isa = PBXGroup; children = ( BA443D402BAD9872009F0FFB /* EventTests */, - 52DF5FE22BA3386400135367 /* TFCoreTests */, + 52DF5FE22BA3386400135367 /* CoreUITests */, 52DF5FC12BA32B2600135367 /* TowerForgeTests.swift */, ); path = TowerForgeTests; @@ -446,49 +424,31 @@ path = TowerForgeUITests; sourceTree = ""; }; - 52DF5FDB2BA32CEF00135367 /* LevelManager */ = { + 52DF5FDB2BA32CEF00135367 /* LevelModule */ = { isa = PBXGroup; children = ( 9BD669662BAFDCCA00DC8C4C /* Grid */, 3CE951542BACA079008B2785 /* Collision */, 5200624F2BA8D9E4000DBA30 /* Generators */, - 3C9955C32BA585CD00D33FA5 /* Systems */, - 3C9955B82BA5620A00D33FA5 /* Events */, - 3C99559F2BA47D3E00D33FA5 /* Entities */, - 52DF5FF02BA3519D00135367 /* Components */, - 52DF5FDD2BA32D7E00135367 /* EntityManager.swift */, - 3CCF9CB22BAB1F42004D170E /* SystemManager.swift */, - 52DF5FEC2BA34D0300135367 /* TFComponent.swift */, - 52DF5FEE2BA34EA000135367 /* TFEntity.swift */, - ); - path = LevelManager; - sourceTree = ""; - }; - 52DF5FDF2BA3347C00135367 /* TFCore */ = { - isa = PBXGroup; - children = ( - 5295A2062BAA02FD005018A8 /* TFButton.swift */, - 52DF5FE02BA3349600135367 /* TFTextures.swift */, - 52DF5FE52BA33AF300135367 /* TFSpriteNode.swift */, - 52DF5FEA2BA3400C00135367 /* TFAnimatableNode.swift */, ); - path = TFCore; + path = LevelModule; sourceTree = ""; }; - 52DF5FE22BA3386400135367 /* TFCoreTests */ = { + 52DF5FE22BA3386400135367 /* CoreUITests */ = { isa = PBXGroup; children = ( 52DF5FE32BA3391200135367 /* TFTexturesTests.swift */, ); - path = TFCoreTests; + path = CoreUITests; sourceTree = ""; }; 52DF5FE72BA33F8800135367 /* Protocols */ = { isa = PBXGroup; children = ( 52DF5FE82BA33F9700135367 /* Animatable.swift */, - 520062552BA8E026000DBA30 /* PlayerSpawnable.swift */, 3CE951602BADE881008B2785 /* Spawnable.swift */, + 520062552BA8E026000DBA30 /* PlayerSpawnable.swift */, + 5295A20E2BAAE7CF005018A8 /* TeamController.swift */, ); path = Protocols; sourceTree = ""; @@ -496,11 +456,10 @@ 52DF5FF02BA3519D00135367 /* Components */ = { isa = PBXGroup; children = ( + 52DF5FEC2BA34D0300135367 /* TFComponent.swift */, + BAFFB9352BB0A2C000D8301F /* LevelComponents */, 5200624C2BA8D574000DBA30 /* GameComponents */, 52578B882BA620A900B4D76C /* BaseComponents */, - 527E3A232BA613EF00FE1628 /* PlayerComponent.swift */, - 5200624D2BA8D597000DBA30 /* AiComponent.swift */, - 520062572BA8ED73000DBA30 /* HomeComponent.swift */, ); path = Components; sourceTree = ""; @@ -527,13 +486,193 @@ sourceTree = ""; }; BA443D432BAD98CD009F0FFB /* AppMain */ = { + isa = PBXGroup; + children = ( + BAFFB9282BB09E5400D8301F /* Application */, + BAFFB9272BB09E0E00D8301F /* Storyboards */, + ); + path = AppMain; + sourceTree = ""; + }; + BAFFB9272BB09E0E00D8301F /* Storyboards */ = { isa = PBXGroup; children = ( 52DF5FB12BA32B2300135367 /* Main.storyboard */, - 52DF5FB62BA32B2600135367 /* LaunchScreen.storyboard */, + 52DF5FB62BA32B2600135367 /* Launch Screen.storyboard */, + 523923E62BADC8530044BA61 /* LaunchScreen.storyboard */, + ); + path = Storyboards; + sourceTree = ""; + }; + BAFFB9282BB09E5400D8301F /* Application */ = { + isa = PBXGroup; + children = ( 52DF5FA72BA32B2300135367 /* AppDelegate.swift */, ); - path = AppMain; + path = Application; + sourceTree = ""; + }; + BAFFB92F2BB0A01700D8301F /* Commons */ = { + isa = PBXGroup; + children = ( + BAFFB9432BB0A8B800D8301F /* Constants */, + 52DF5FE72BA33F8800135367 /* Protocols */, + BAFFB9402BB0A68600D8301F /* Enums */, + BAFFB93E2BB0A67000D8301F /* Extensions */, + BAFFB9302BB0A02500D8301F /* Sounds */, + 5240D0942BB04E2B004F1486 /* Fonts */, + ); + path = Commons; + sourceTree = ""; + }; + BAFFB9302BB0A02500D8301F /* Sounds */ = { + isa = PBXGroup; + children = ( + ); + path = Sounds; + sourceTree = ""; + }; + BAFFB9322BB0A10C00D8301F /* SceneDelegates */ = { + isa = PBXGroup; + children = ( + 3CCF9CAE2BAB1A96004D170E /* SceneUpdateDelegate.swift */, + 5295A2012BA9FBD9005018A8 /* SceneManagerDelegate.swift */, + ); + path = SceneDelegates; + sourceTree = ""; + }; + BAFFB9332BB0A24400D8301F /* GameModule */ = { + isa = PBXGroup; + children = ( + 3CCF9CB02BAB1BCE004D170E /* GameWorld.swift */, + 3C99559F2BA47D3E00D33FA5 /* Entities */, + 52DF5FF02BA3519D00135367 /* Components */, + 3C9955C32BA585CD00D33FA5 /* Systems */, + 3C9955B82BA5620A00D33FA5 /* Events */, + ); + path = GameModule; + sourceTree = ""; + }; + BAFFB9352BB0A2C000D8301F /* LevelComponents */ = { + isa = PBXGroup; + children = ( + 527E3A232BA613EF00FE1628 /* PlayerComponent.swift */, + 5200624D2BA8D597000DBA30 /* AiComponent.swift */, + 520062572BA8ED73000DBA30 /* HomeComponent.swift */, + ); + path = LevelComponents; + sourceTree = ""; + }; + BAFFB9362BB0A2FA00D8301F /* SpawnableEntities */ = { + isa = PBXGroup; + children = ( + 3CE9514A2BAC83FA008B2785 /* SpawnableEntities.swift */, + 3C9955AE2BA48FD200D33FA5 /* MeleeUnit.swift */, + 529F91872BA6D7A7009551D9 /* SoldierUnit.swift */, + 3C9955B32BA4B12000D33FA5 /* ArrowTower.swift */, + ); + path = SpawnableEntities; + sourceTree = ""; + }; + BAFFB9372BB0A30700D8301F /* GameEntities */ = { + isa = PBXGroup; + children = ( + 52578B8B2BA627B200B4D76C /* Team.swift */, + 3C9955B02BA4ACA100D33FA5 /* Bullet.swift */, + 5240D08E2BAE6D0A004F1486 /* Point.swift */, + 5240D0902BAF3453004F1486 /* Life.swift */, + ); + path = GameEntities; + sourceTree = ""; + }; + BAFFB9382BB0A4CB00D8301F /* LevelSystems */ = { + isa = PBXGroup; + children = ( + 3CE951622BAE037C008B2785 /* AiSystem.swift */, + 3CE951642BAE0A04008B2785 /* HomeSystem.swift */, + ); + path = LevelSystems; + sourceTree = ""; + }; + BAFFB9392BB0A4E100D8301F /* GameSystems */ = { + isa = PBXGroup; + children = ( + 3C9955C42BA585DD00D33FA5 /* HealthSystem.swift */, + 3CE9515E2BADE2C5008B2785 /* ShootingSystem.swift */, + BA443D3C2BAD9557009F0FFB /* RemoveSystem.swift */, + ); + path = GameSystems; + sourceTree = ""; + }; + BAFFB93A2BB0A4F800D8301F /* BaseSystems */ = { + isa = PBXGroup; + children = ( + 3C769A712BA58DE700F454F9 /* MovementSystem.swift */, + 3C769A732BA591BD00F454F9 /* SpawnSystem.swift */, + 3CE951662BAEAB0E008B2785 /* ContactSystem.swift */, + ); + path = BaseSystems; + sourceTree = ""; + }; + BAFFB93B2BB0A5AD00D8301F /* PlayerEvents */ = { + isa = PBXGroup; + children = ( + 3CE951682BAEB719008B2785 /* RequestSpawnEvent.swift */, + ); + path = PlayerEvents; + sourceTree = ""; + }; + BAFFB93C2BB0A5B200D8301F /* GameEvents */ = { + isa = PBXGroup; + children = ( + 3C9955B92BA5637200D33FA5 /* DamageEvent.swift */, + 3C9955CB2BA5889800D33FA5 /* MoveEvent.swift */, + 3C9955C92BA5888F00D33FA5 /* SpawnEvent.swift */, + BA443D3E2BAD9774009F0FFB /* RemoveEvent.swift */, + ); + path = GameEvents; + sourceTree = ""; + }; + BAFFB93E2BB0A67000D8301F /* Extensions */ = { + isa = PBXGroup; + children = ( + ); + path = Extensions; + sourceTree = ""; + }; + BAFFB9402BB0A68600D8301F /* Enums */ = { + isa = PBXGroup; + children = ( + ); + path = Enums; + sourceTree = ""; + }; + BAFFB9422BB0A79B00D8301F /* SpriteKitScenes */ = { + isa = PBXGroup; + children = ( + 52DF5FAB2BA32B2300135367 /* Actions.sks */, + 52DF5FA92BA32B2300135367 /* GameScene.sks */, + ); + path = SpriteKitScenes; + sourceTree = ""; + }; + BAFFB9432BB0A8B800D8301F /* Constants */ = { + isa = PBXGroup; + children = ( + BAFFB9442BB0A8C800D8301F /* Constants.swift */, + ); + path = Constants; + sourceTree = ""; + }; + BAFFB9462BB0AABF00D8301F /* TFCore */ = { + isa = PBXGroup; + children = ( + 52DF5FE52BA33AF300135367 /* TFSpriteNode.swift */, + 52DF5FEA2BA3400C00135367 /* TFAnimatableNode.swift */, + 5295A2062BAA02FD005018A8 /* TFButton.swift */, + 52DF5FE02BA3349600135367 /* TFTextures.swift */, + ); + path = TFCore; sourceTree = ""; }; /* End PBXGroup section */ @@ -644,9 +783,9 @@ 52DF5FB32BA32B2300135367 /* Main.storyboard in Resources */, 52DF5FAA2BA32B2300135367 /* GameScene.sks in Resources */, 52DF5FB52BA32B2600135367 /* Assets.xcassets in Resources */, - 52DF5FB82BA32B2600135367 /* LaunchScreen.storyboard in Resources */, + 52DF5FB82BA32B2600135367 /* Launch Screen.storyboard in Resources */, 52DF5FAC2BA32B2300135367 /* Actions.sks in Resources */, - 523923E72BADC8530044BA61 /* Launch Screen.storyboard in Resources */, + 523923E72BADC8530044BA61 /* LaunchScreen.storyboard in Resources */, 5240D0962BB04E57004F1486 /* Nosifer-Regular.ttf in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -704,6 +843,7 @@ 52DF5FFF2BA3656500135367 /* ShootingComponent.swift in Sources */, BA443D3D2BAD9557009F0FFB /* RemoveSystem.swift in Sources */, 3C9955CC2BA5889800D33FA5 /* MoveEvent.swift in Sources */, + BAFFB9452BB0A8C800D8301F /* Constants.swift in Sources */, 5200624E2BA8D597000DBA30 /* AiComponent.swift in Sources */, 3C9955C22BA5838900D33FA5 /* EventOutput.swift in Sources */, 5240D0912BAF3453004F1486 /* Life.swift in Sources */, @@ -813,12 +953,12 @@ name = Main.storyboard; sourceTree = ""; }; - 52DF5FB62BA32B2600135367 /* LaunchScreen.storyboard */ = { + 52DF5FB62BA32B2600135367 /* Launch Screen.storyboard */ = { isa = PBXVariantGroup; children = ( 52DF5FB72BA32B2600135367 /* Base */, ); - name = LaunchScreen.storyboard; + name = "Launch Screen.storyboard"; sourceTree = ""; }; /* End PBXVariantGroup section */ diff --git a/TowerForge/TowerForge/AppMain/AppDelegate.swift b/TowerForge/TowerForge/AppMain/Application/AppDelegate.swift similarity index 100% rename from TowerForge/TowerForge/AppMain/AppDelegate.swift rename to TowerForge/TowerForge/AppMain/Application/AppDelegate.swift diff --git a/TowerForge/TowerForge/AppMain/Base.lproj/LaunchScreen.storyboard b/TowerForge/TowerForge/AppMain/Storyboards/Base.lproj/Launch Screen.storyboard similarity index 100% rename from TowerForge/TowerForge/AppMain/Base.lproj/LaunchScreen.storyboard rename to TowerForge/TowerForge/AppMain/Storyboards/Base.lproj/Launch Screen.storyboard diff --git a/TowerForge/TowerForge/AppMain/Base.lproj/Main.storyboard b/TowerForge/TowerForge/AppMain/Storyboards/Base.lproj/Main.storyboard similarity index 100% rename from TowerForge/TowerForge/AppMain/Base.lproj/Main.storyboard rename to TowerForge/TowerForge/AppMain/Storyboards/Base.lproj/Main.storyboard diff --git a/TowerForge/Launch Screen.storyboard b/TowerForge/TowerForge/AppMain/Storyboards/LaunchScreen.storyboard similarity index 100% rename from TowerForge/Launch Screen.storyboard rename to TowerForge/TowerForge/AppMain/Storyboards/LaunchScreen.storyboard diff --git a/TowerForge/TowerForge/Commons/Constants/Constants.swift b/TowerForge/TowerForge/Commons/Constants/Constants.swift new file mode 100644 index 00000000..5ab90b00 --- /dev/null +++ b/TowerForge/TowerForge/Commons/Constants/Constants.swift @@ -0,0 +1,14 @@ +// +// Constants.swift +// TowerForge +// +// Created by Rubesh on 25/3/24. +// + +import Foundation + +/// A class to encapsulate application wide constants to ensure a single source of truth +/// across the entire application. +class Constants { + +} diff --git a/TowerForge/TowerForge/Fonts/Nosifer-Regular.ttf b/TowerForge/TowerForge/Commons/Fonts/Nosifer-Regular.ttf similarity index 100% rename from TowerForge/TowerForge/Fonts/Nosifer-Regular.ttf rename to TowerForge/TowerForge/Commons/Fonts/Nosifer-Regular.ttf diff --git a/TowerForge/TowerForge/Protocols/Animatable.swift b/TowerForge/TowerForge/Commons/Protocols/Animatable.swift similarity index 71% rename from TowerForge/TowerForge/Protocols/Animatable.swift rename to TowerForge/TowerForge/Commons/Protocols/Animatable.swift index 0489e514..2f6b4094 100644 --- a/TowerForge/TowerForge/Protocols/Animatable.swift +++ b/TowerForge/TowerForge/Commons/Protocols/Animatable.swift @@ -8,6 +8,8 @@ import Foundation import SpriteKit +/// A protocol whose conformants must encapsulate an SKAction and the means +/// to control their own animations. protocol Animatable { var animatableAction: SKAction? { get set } var animatableKey: String { get set } diff --git a/TowerForge/TowerForge/Protocols/PlayerSpawnable.swift b/TowerForge/TowerForge/Commons/Protocols/PlayerSpawnable.swift similarity index 100% rename from TowerForge/TowerForge/Protocols/PlayerSpawnable.swift rename to TowerForge/TowerForge/Commons/Protocols/PlayerSpawnable.swift diff --git a/TowerForge/TowerForge/Protocols/Spawnable.swift b/TowerForge/TowerForge/Commons/Protocols/Spawnable.swift similarity index 100% rename from TowerForge/TowerForge/Protocols/Spawnable.swift rename to TowerForge/TowerForge/Commons/Protocols/Spawnable.swift diff --git a/TowerForge/TowerForge/Controllers/TeamController.swift b/TowerForge/TowerForge/Commons/Protocols/TeamController.swift similarity index 100% rename from TowerForge/TowerForge/Controllers/TeamController.swift rename to TowerForge/TowerForge/Commons/Protocols/TeamController.swift diff --git a/TowerForge/TowerForge/LevelManager/Components/BaseComponents/LabelComponent.swift b/TowerForge/TowerForge/GameModule/Components/BaseComponents/LabelComponent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Components/BaseComponents/LabelComponent.swift rename to TowerForge/TowerForge/GameModule/Components/BaseComponents/LabelComponent.swift diff --git a/TowerForge/TowerForge/LevelManager/Components/BaseComponents/MovableComponent.swift b/TowerForge/TowerForge/GameModule/Components/BaseComponents/MovableComponent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Components/BaseComponents/MovableComponent.swift rename to TowerForge/TowerForge/GameModule/Components/BaseComponents/MovableComponent.swift diff --git a/TowerForge/TowerForge/LevelManager/Components/BaseComponents/PositionComponent.swift b/TowerForge/TowerForge/GameModule/Components/BaseComponents/PositionComponent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Components/BaseComponents/PositionComponent.swift rename to TowerForge/TowerForge/GameModule/Components/BaseComponents/PositionComponent.swift diff --git a/TowerForge/TowerForge/LevelManager/Components/BaseComponents/SpriteComponent.swift b/TowerForge/TowerForge/GameModule/Components/BaseComponents/SpriteComponent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Components/BaseComponents/SpriteComponent.swift rename to TowerForge/TowerForge/GameModule/Components/BaseComponents/SpriteComponent.swift diff --git a/TowerForge/TowerForge/LevelManager/Components/GameComponents/CostComponent.swift b/TowerForge/TowerForge/GameModule/Components/GameComponents/CostComponent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Components/GameComponents/CostComponent.swift rename to TowerForge/TowerForge/GameModule/Components/GameComponents/CostComponent.swift diff --git a/TowerForge/TowerForge/LevelManager/Components/GameComponents/DamageComponent.swift b/TowerForge/TowerForge/GameModule/Components/GameComponents/DamageComponent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Components/GameComponents/DamageComponent.swift rename to TowerForge/TowerForge/GameModule/Components/GameComponents/DamageComponent.swift diff --git a/TowerForge/TowerForge/LevelManager/Components/GameComponents/HealthComponent.swift b/TowerForge/TowerForge/GameModule/Components/GameComponents/HealthComponent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Components/GameComponents/HealthComponent.swift rename to TowerForge/TowerForge/GameModule/Components/GameComponents/HealthComponent.swift diff --git a/TowerForge/TowerForge/LevelManager/Components/GameComponents/ShootingComponent.swift b/TowerForge/TowerForge/GameModule/Components/GameComponents/ShootingComponent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Components/GameComponents/ShootingComponent.swift rename to TowerForge/TowerForge/GameModule/Components/GameComponents/ShootingComponent.swift diff --git a/TowerForge/TowerForge/LevelManager/Components/AiComponent.swift b/TowerForge/TowerForge/GameModule/Components/LevelComponents/AiComponent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Components/AiComponent.swift rename to TowerForge/TowerForge/GameModule/Components/LevelComponents/AiComponent.swift diff --git a/TowerForge/TowerForge/LevelManager/Components/HomeComponent.swift b/TowerForge/TowerForge/GameModule/Components/LevelComponents/HomeComponent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Components/HomeComponent.swift rename to TowerForge/TowerForge/GameModule/Components/LevelComponents/HomeComponent.swift diff --git a/TowerForge/TowerForge/LevelManager/Components/PlayerComponent.swift b/TowerForge/TowerForge/GameModule/Components/LevelComponents/PlayerComponent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Components/PlayerComponent.swift rename to TowerForge/TowerForge/GameModule/Components/LevelComponents/PlayerComponent.swift index 081c40ba..f6510bdb 100644 --- a/TowerForge/TowerForge/LevelManager/Components/PlayerComponent.swift +++ b/TowerForge/TowerForge/GameModule/Components/LevelComponents/PlayerComponent.swift @@ -8,6 +8,14 @@ import Foundation import SpriteKit +class PlayerComponent: TFComponent { + var player: Player + init(player: Player) { + self.player = player + super.init() + } +} + public enum Player: Int { case ownPlayer = 1 case oppositePlayer = 2 @@ -30,11 +38,3 @@ public enum Player: Int { } } } - -class PlayerComponent: TFComponent { - var player: Player - init(player: Player) { - self.player = player - super.init() - } -} diff --git a/TowerForge/TowerForge/LevelManager/TFComponent.swift b/TowerForge/TowerForge/GameModule/Components/TFComponent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/TFComponent.swift rename to TowerForge/TowerForge/GameModule/Components/TFComponent.swift diff --git a/TowerForge/TowerForge/LevelManager/Entities/Base Entities/BaseProjectile.swift b/TowerForge/TowerForge/GameModule/Entities/BaseEntities/BaseProjectile.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Entities/Base Entities/BaseProjectile.swift rename to TowerForge/TowerForge/GameModule/Entities/BaseEntities/BaseProjectile.swift diff --git a/TowerForge/TowerForge/LevelManager/Entities/Base Entities/BaseTower.swift b/TowerForge/TowerForge/GameModule/Entities/BaseEntities/BaseTower.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Entities/Base Entities/BaseTower.swift rename to TowerForge/TowerForge/GameModule/Entities/BaseEntities/BaseTower.swift diff --git a/TowerForge/TowerForge/LevelManager/Entities/Base Entities/BaseUnit.swift b/TowerForge/TowerForge/GameModule/Entities/BaseEntities/BaseUnit.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Entities/Base Entities/BaseUnit.swift rename to TowerForge/TowerForge/GameModule/Entities/BaseEntities/BaseUnit.swift diff --git a/TowerForge/TowerForge/LevelManager/EntityManager.swift b/TowerForge/TowerForge/GameModule/Entities/EntityManager.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/EntityManager.swift rename to TowerForge/TowerForge/GameModule/Entities/EntityManager.swift diff --git a/TowerForge/TowerForge/LevelManager/Entities/Bullet.swift b/TowerForge/TowerForge/GameModule/Entities/GameEntities/Bullet.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Entities/Bullet.swift rename to TowerForge/TowerForge/GameModule/Entities/GameEntities/Bullet.swift diff --git a/TowerForge/TowerForge/LevelManager/Entities/Life.swift b/TowerForge/TowerForge/GameModule/Entities/GameEntities/Life.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Entities/Life.swift rename to TowerForge/TowerForge/GameModule/Entities/GameEntities/Life.swift diff --git a/TowerForge/TowerForge/LevelManager/Entities/Point.swift b/TowerForge/TowerForge/GameModule/Entities/GameEntities/Point.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Entities/Point.swift rename to TowerForge/TowerForge/GameModule/Entities/GameEntities/Point.swift diff --git a/TowerForge/TowerForge/LevelManager/Entities/Team.swift b/TowerForge/TowerForge/GameModule/Entities/GameEntities/Team.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Entities/Team.swift rename to TowerForge/TowerForge/GameModule/Entities/GameEntities/Team.swift diff --git a/TowerForge/TowerForge/LevelManager/Entities/ArrowTower.swift b/TowerForge/TowerForge/GameModule/Entities/SpawnableEntities/ArrowTower.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Entities/ArrowTower.swift rename to TowerForge/TowerForge/GameModule/Entities/SpawnableEntities/ArrowTower.swift diff --git a/TowerForge/TowerForge/LevelManager/Entities/MeleeUnit.swift b/TowerForge/TowerForge/GameModule/Entities/SpawnableEntities/MeleeUnit.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Entities/MeleeUnit.swift rename to TowerForge/TowerForge/GameModule/Entities/SpawnableEntities/MeleeUnit.swift diff --git a/TowerForge/TowerForge/LevelManager/Entities/SoldierUnit.swift b/TowerForge/TowerForge/GameModule/Entities/SpawnableEntities/SoldierUnit.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Entities/SoldierUnit.swift rename to TowerForge/TowerForge/GameModule/Entities/SpawnableEntities/SoldierUnit.swift diff --git a/TowerForge/TowerForge/LevelManager/Entities/SpawnableEntities.swift b/TowerForge/TowerForge/GameModule/Entities/SpawnableEntities/SpawnableEntities.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Entities/SpawnableEntities.swift rename to TowerForge/TowerForge/GameModule/Entities/SpawnableEntities/SpawnableEntities.swift diff --git a/TowerForge/TowerForge/LevelManager/TFEntity.swift b/TowerForge/TowerForge/GameModule/Entities/TFEntity.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/TFEntity.swift rename to TowerForge/TowerForge/GameModule/Entities/TFEntity.swift diff --git a/TowerForge/TowerForge/LevelManager/Events/Implemented Events/ConcurrentEvent.swift b/TowerForge/TowerForge/GameModule/Events/ConcurrentEvent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Events/Implemented Events/ConcurrentEvent.swift rename to TowerForge/TowerForge/GameModule/Events/ConcurrentEvent.swift diff --git a/TowerForge/TowerForge/LevelManager/Events/EventManager.swift b/TowerForge/TowerForge/GameModule/Events/EventManager.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Events/EventManager.swift rename to TowerForge/TowerForge/GameModule/Events/EventManager.swift diff --git a/TowerForge/TowerForge/LevelManager/Events/EventOutput.swift b/TowerForge/TowerForge/GameModule/Events/EventOutput.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Events/EventOutput.swift rename to TowerForge/TowerForge/GameModule/Events/EventOutput.swift diff --git a/TowerForge/TowerForge/LevelManager/Events/EventTarget.swift b/TowerForge/TowerForge/GameModule/Events/EventTarget.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Events/EventTarget.swift rename to TowerForge/TowerForge/GameModule/Events/EventTarget.swift diff --git a/TowerForge/TowerForge/LevelManager/Events/Implemented Events/DamageEvent.swift b/TowerForge/TowerForge/GameModule/Events/GameEvents/DamageEvent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Events/Implemented Events/DamageEvent.swift rename to TowerForge/TowerForge/GameModule/Events/GameEvents/DamageEvent.swift diff --git a/TowerForge/TowerForge/LevelManager/Events/Implemented Events/MoveEvent.swift b/TowerForge/TowerForge/GameModule/Events/GameEvents/MoveEvent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Events/Implemented Events/MoveEvent.swift rename to TowerForge/TowerForge/GameModule/Events/GameEvents/MoveEvent.swift diff --git a/TowerForge/TowerForge/LevelManager/Events/Implemented Events/RemoveEvent.swift b/TowerForge/TowerForge/GameModule/Events/GameEvents/RemoveEvent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Events/Implemented Events/RemoveEvent.swift rename to TowerForge/TowerForge/GameModule/Events/GameEvents/RemoveEvent.swift diff --git a/TowerForge/TowerForge/LevelManager/Events/Implemented Events/SpawnEvent.swift b/TowerForge/TowerForge/GameModule/Events/GameEvents/SpawnEvent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Events/Implemented Events/SpawnEvent.swift rename to TowerForge/TowerForge/GameModule/Events/GameEvents/SpawnEvent.swift diff --git a/TowerForge/TowerForge/LevelManager/Events/Implemented Events/RequestSpawnEvent.swift b/TowerForge/TowerForge/GameModule/Events/PlayerEvents/RequestSpawnEvent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Events/Implemented Events/RequestSpawnEvent.swift rename to TowerForge/TowerForge/GameModule/Events/PlayerEvents/RequestSpawnEvent.swift diff --git a/TowerForge/TowerForge/LevelManager/Events/TFEvent.swift b/TowerForge/TowerForge/GameModule/Events/TFEvent.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Events/TFEvent.swift rename to TowerForge/TowerForge/GameModule/Events/TFEvent.swift diff --git a/TowerForge/TowerForge/GameWorld.swift b/TowerForge/TowerForge/GameModule/GameWorld.swift similarity index 100% rename from TowerForge/TowerForge/GameWorld.swift rename to TowerForge/TowerForge/GameModule/GameWorld.swift diff --git a/TowerForge/TowerForge/LevelManager/Systems/ContactSystem.swift b/TowerForge/TowerForge/GameModule/Systems/BaseSystems/ContactSystem.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Systems/ContactSystem.swift rename to TowerForge/TowerForge/GameModule/Systems/BaseSystems/ContactSystem.swift diff --git a/TowerForge/TowerForge/LevelManager/Systems/MovementSystem.swift b/TowerForge/TowerForge/GameModule/Systems/BaseSystems/MovementSystem.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Systems/MovementSystem.swift rename to TowerForge/TowerForge/GameModule/Systems/BaseSystems/MovementSystem.swift diff --git a/TowerForge/TowerForge/LevelManager/Systems/SpawnSystem.swift b/TowerForge/TowerForge/GameModule/Systems/BaseSystems/SpawnSystem.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Systems/SpawnSystem.swift rename to TowerForge/TowerForge/GameModule/Systems/BaseSystems/SpawnSystem.swift diff --git a/TowerForge/TowerForge/LevelManager/Systems/HealthSystem.swift b/TowerForge/TowerForge/GameModule/Systems/GameSystems/HealthSystem.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Systems/HealthSystem.swift rename to TowerForge/TowerForge/GameModule/Systems/GameSystems/HealthSystem.swift diff --git a/TowerForge/TowerForge/LevelManager/Systems/RemoveSystem.swift b/TowerForge/TowerForge/GameModule/Systems/GameSystems/RemoveSystem.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Systems/RemoveSystem.swift rename to TowerForge/TowerForge/GameModule/Systems/GameSystems/RemoveSystem.swift diff --git a/TowerForge/TowerForge/LevelManager/Systems/ShootingSystem.swift b/TowerForge/TowerForge/GameModule/Systems/GameSystems/ShootingSystem.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Systems/ShootingSystem.swift rename to TowerForge/TowerForge/GameModule/Systems/GameSystems/ShootingSystem.swift diff --git a/TowerForge/TowerForge/LevelManager/Systems/AiSystem.swift b/TowerForge/TowerForge/GameModule/Systems/LevelSystems/AiSystem.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Systems/AiSystem.swift rename to TowerForge/TowerForge/GameModule/Systems/LevelSystems/AiSystem.swift diff --git a/TowerForge/TowerForge/LevelManager/Systems/HomeSystem.swift b/TowerForge/TowerForge/GameModule/Systems/LevelSystems/HomeSystem.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Systems/HomeSystem.swift rename to TowerForge/TowerForge/GameModule/Systems/LevelSystems/HomeSystem.swift diff --git a/TowerForge/TowerForge/LevelManager/SystemManager.swift b/TowerForge/TowerForge/GameModule/Systems/SystemManager.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/SystemManager.swift rename to TowerForge/TowerForge/GameModule/Systems/SystemManager.swift diff --git a/TowerForge/TowerForge/LevelManager/Systems/TFSystem.swift b/TowerForge/TowerForge/GameModule/Systems/TFSystem.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Systems/TFSystem.swift rename to TowerForge/TowerForge/GameModule/Systems/TFSystem.swift diff --git a/TowerForge/TowerForge/LevelManager/Collision/Collidable.swift b/TowerForge/TowerForge/LevelModule/Collision/Collidable.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Collision/Collidable.swift rename to TowerForge/TowerForge/LevelModule/Collision/Collidable.swift diff --git a/TowerForge/TowerForge/LevelManager/Collision/TFContact.swift b/TowerForge/TowerForge/LevelModule/Collision/TFContact.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Collision/TFContact.swift rename to TowerForge/TowerForge/LevelModule/Collision/TFContact.swift diff --git a/TowerForge/TowerForge/LevelManager/Generators/UnitGenerator.swift b/TowerForge/TowerForge/LevelModule/Generators/UnitGenerator.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Generators/UnitGenerator.swift rename to TowerForge/TowerForge/LevelModule/Generators/UnitGenerator.swift diff --git a/TowerForge/TowerForge/LevelManager/Grid/Grid.swift b/TowerForge/TowerForge/LevelModule/Grid/Grid.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Grid/Grid.swift rename to TowerForge/TowerForge/LevelModule/Grid/Grid.swift diff --git a/TowerForge/TowerForge/LevelManager/Grid/GridDelegate.swift b/TowerForge/TowerForge/LevelModule/Grid/GridDelegate.swift similarity index 100% rename from TowerForge/TowerForge/LevelManager/Grid/GridDelegate.swift rename to TowerForge/TowerForge/LevelModule/Grid/GridDelegate.swift diff --git a/TowerForge/TowerForge/Nodes/SelectionNodeDelegate.swift b/TowerForge/TowerForge/Nodes/SelectionNodeDelegate.swift index ce3bad5f..d542c654 100644 --- a/TowerForge/TowerForge/Nodes/SelectionNodeDelegate.swift +++ b/TowerForge/TowerForge/Nodes/SelectionNodeDelegate.swift @@ -21,6 +21,7 @@ class SelectionNodeDelegate: UnitSelectionNodeDelegate { return } let snapPosition = CGPoint(x: position.x, y: gridDelegate.snapYPosition(yPosition: position.y)) - eventManager.add(RequestSpawnEvent(ofType: type, timestamp: CACurrentMediaTime(), position: snapPosition, player: .ownPlayer)) + eventManager.add(RequestSpawnEvent(ofType: type, timestamp: CACurrentMediaTime(), + position: snapPosition, player: .ownPlayer)) } } diff --git a/TowerForge/TowerForge/Nodes/UnitNode.swift b/TowerForge/TowerForge/Nodes/UnitNode.swift index 33121fee..0bbb5132 100644 --- a/TowerForge/TowerForge/Nodes/UnitNode.swift +++ b/TowerForge/TowerForge/Nodes/UnitNode.swift @@ -7,6 +7,7 @@ import SpriteKit +/// TODO: Add documentation for this protocol UnitNodeDelegate: AnyObject { func unitNodeDidSelect(_ unitNode: UnitNode) func unitNodeDidSpawn(_ position: CGPoint) diff --git a/TowerForge/TowerForge/Scenes/Actions.sks b/TowerForge/TowerForge/Scenes/Actions.sks deleted file mode 100644 index 053052001e4f4fd4d597c1c74f1ab1919ec27642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1892 zcmZ`)Yj6`)6uz&eFQ92@dGy_G5(=enKp96$L5ff*(6lru;IeI&c1yYm*-fOibnb+L ziXbnkh*;Vbc~r*AOL@vLhztS(Eh-2K3jT3q#^DDlI*vCFpjFt+-Fx=z-gC}(zVF^t zIc&13<>Xv}2or9=_dl5RZpo?2cEzl>SJg??nrhLD&gxp3xy$sL-4PAo%Jy#ExRB7O z=;0$qjm{X8nUz1WVA9l@TDfkqtzNM^URk~7t+ngczrESpxqbJc!$*#v{qo#bm#=+y z{YJT7aoKFWVc`)22kRh)+mNN=`{lyd%r-RrS+&|N#FSadQUV85ii(Z)Lojir=Xgp25sf#I^mi%JG^u!s( zDK90>ESWVseojKEiRVofW{c67zTjnHp|OhRCDS|~Hp#}|yCp#v&7R6cXN{zpHl6qjc~w zO^^60c+l0=&Y0pK8ex^M=H}##Nny8TJxiRbRvFNpBGyahfGMdJrec2&I#rk3Y$`7F z3(;I+n&saXPvL;~aj>kJao}0*@fbZkzslsVHh?CDCI!(X(?pugej#l5uqHea4dM%e z66;^_hK+3V6gr(^gLi|QA=uPf$*Pr>xFn@o>U_uL?(_Iqi|;ZmzHivZr&D84a(X5? z1Iyk=+z&g+B=nU9kANsdi(Vlc;w};)px&M>h$e%Kt=8c|UIN$CZ z!@_0y!zDj4-1!TP&S_4&%h7q>Ck6S(A!oZEoOf^keleoobaeyEEu6&wVy4H$NJL0wCxjOH9R5gJdlX z9-cinZ~gdFxgaZx>}5{7U86Y^vM-}R96L}lK^}Mp*ntZ)ffle9w1UlG3)l+UKs(q4 zy1`zs9~=aqg2UhhxCE|&+u$zv6A~B+<6$C9hN+N;1~?Lqf*Eiud>$6TX>d9$fpee< zmct5I2baSY@HO}bd=svLYvFph5pIHQa3|aYyWw8AA0C9a;I9ax5Htj(pbRtx%|SA9 zqZYIdwW7^v3)+g>P&@LX?Pv$ug}Trl^bz_P?L!C9C+HA5f{vlj&>3_I^`PtM4!Vo( zqu(*YAvhYxV;+yhId}rL;zhU?*I^r0umd}>hTV86Zp2Nv8B^@REqEn<9k0Tx@h04c z+wpFE03XID@#pv~zJjmf+xR~I13$oj<9`Ssh!8S>gpw!{N0Lbz(Gw#{Ck12%5s5+^ z#7Q*bCQC^pX(G*p5)Wx1Ye*}3k9f%ra-5tXC&?*tnw%kL$vJX?TqKuCFS$W}Cclt- zP%{{=8& BT4?|P diff --git a/TowerForge/TowerForge/Rendering/Renderable.swift b/TowerForge/TowerForge/Scenes/Rendering/Renderable.swift similarity index 100% rename from TowerForge/TowerForge/Rendering/Renderable.swift rename to TowerForge/TowerForge/Scenes/Rendering/Renderable.swift diff --git a/TowerForge/TowerForge/Rendering/Renderer.swift b/TowerForge/TowerForge/Scenes/Rendering/Renderer.swift similarity index 100% rename from TowerForge/TowerForge/Rendering/Renderer.swift rename to TowerForge/TowerForge/Scenes/Rendering/Renderer.swift diff --git a/TowerForge/TowerForge/SceneManagerDelegate.swift b/TowerForge/TowerForge/Scenes/SceneDelegates/SceneManagerDelegate.swift similarity index 100% rename from TowerForge/TowerForge/SceneManagerDelegate.swift rename to TowerForge/TowerForge/Scenes/SceneDelegates/SceneManagerDelegate.swift diff --git a/TowerForge/TowerForge/SceneUpdateDelegate.swift b/TowerForge/TowerForge/Scenes/SceneDelegates/SceneUpdateDelegate.swift similarity index 100% rename from TowerForge/TowerForge/SceneUpdateDelegate.swift rename to TowerForge/TowerForge/Scenes/SceneDelegates/SceneUpdateDelegate.swift diff --git a/TowerForge/TowerForge/Scenes/SpriteKitScenes/Actions.sks b/TowerForge/TowerForge/Scenes/SpriteKitScenes/Actions.sks new file mode 100644 index 0000000000000000000000000000000000000000..ce451be9e72a53d04fd79469bf0c563e09081381 GIT binary patch literal 1638 zcmZ`(Yiv|S6rPzgKq;lYTgpr039`YOqSQSiN$p-7WLWGcp#*SU4zYtb$M;EwoVo>^jw5@_bO73 z+v8$AELfE`8q64*Ij&LBqV2JUcr0e{3Xac6&hgok@{6ZTE3cTf;E~6C{^pj}^~wgd zEzr67*)7j)-M;(z{RfX6?R)#gJ7+Inxq9uxPa18}?r`{4j%3QsGdH^aN6Pj-`qk)gsl=AbXmR*_rXH8rxVNV$rpH>mLrW_Yw`*m6~8!DgYVXNktJ zpdw9F^ne;>DVx95zDA{6XI{S|%45_g@@pM#<`u~fVU9TQ{STlw3Fu3O4hz6dtVId3 zu%UVq(Y?brKAtDu349{Y;S$g0WfXwh$m80Ez3#zmLydRFW`lIGPel&2~FNe`ovoKdy4)@Vtktz)~a}1?dj*5 zAi86xUyx!OyIC~A26lzCVcXOw?b$0viI?({e^1N{j{X-9@G@@aMc=$^dZn~%^{evX z$ZK|4PPMlx+!az4DNj)o!pJ#j8LkxEZ6XV+2r;|~g5R;;bspDhHOK~zg|vTy$j9w+ zBr(u{Sf|4ggWu7%l(Skz!qLr-Rvgj*HVj95Hv z4_>IEr7wZ{qX#3w#5AhwtMD1c-%{5(imK){tuAA~LBZb;Ls& zNfYsrX3|O&qLKh%q=R&kIN3~glKtcmIYxR(A2~(Nk*nl0@+G-R?vQ&h8ZsagvLG8I z$b~#GLp~HhArwOilz|PV!fcoWi(wT!3H8tjeqf-10b5}k?0{Xc2ll~1I1I1D8*mhQ z;S5}coA5o{g&*N3_!)kIU*R`+01qjqqi7yA(|lS$3u!Sep=ERib<#z239X`TT1UOK tg|4R?Xd7*(A=*j9G)lMA1N1F=mR_J2=_Pt4bt4E)t?1MAnqKHfe*rvX^y2^k literal 0 HcmV?d00001 diff --git a/TowerForge/TowerForge/Scenes/GameScene.sks b/TowerForge/TowerForge/Scenes/SpriteKitScenes/GameScene.sks similarity index 100% rename from TowerForge/TowerForge/Scenes/GameScene.sks rename to TowerForge/TowerForge/Scenes/SpriteKitScenes/GameScene.sks diff --git a/TowerForge/TowerForge/Controllers/MainMenuViewController.swift b/TowerForge/TowerForge/ViewControllers/MainMenuViewController.swift similarity index 100% rename from TowerForge/TowerForge/Controllers/MainMenuViewController.swift rename to TowerForge/TowerForge/ViewControllers/MainMenuViewController.swift diff --git a/TowerForge/TowerForgeTests/TFCoreTests/TFTexturesTests.swift b/TowerForge/TowerForgeTests/CoreUITests/TFTexturesTests.swift similarity index 100% rename from TowerForge/TowerForgeTests/TFCoreTests/TFTexturesTests.swift rename to TowerForge/TowerForgeTests/CoreUITests/TFTexturesTests.swift From 16d07de76601ffe7979344dbf741bfd2a3b49af7 Mon Sep 17 00:00:00 2001 From: Rubesh Date: Mon, 25 Mar 2024 02:48:06 +0800 Subject: [PATCH 2/3] Add Logger functionality --- .../TowerForge.xcodeproj/project.pbxproj | 12 +++++++++ .../Commons/Constants/Constants.swift | 9 ++----- .../TowerForge/Commons/Utilities/Logger.swift | 26 +++++++++++++++++++ 3 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 TowerForge/TowerForge/Commons/Utilities/Logger.swift diff --git a/TowerForge/TowerForge.xcodeproj/project.pbxproj b/TowerForge/TowerForge.xcodeproj/project.pbxproj index 5ee00c03..b6020778 100644 --- a/TowerForge/TowerForge.xcodeproj/project.pbxproj +++ b/TowerForge/TowerForge.xcodeproj/project.pbxproj @@ -94,6 +94,7 @@ BA443D492BB05EF0009F0FFB /* RemoveEventTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA443D482BB05EF0009F0FFB /* RemoveEventTests.swift */; }; BA443D4B2BB05F73009F0FFB /* RequestSpawnEventTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA443D4A2BB05F73009F0FFB /* RequestSpawnEventTests.swift */; }; BAFFB9452BB0A8C800D8301F /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAFFB9442BB0A8C800D8301F /* Constants.swift */; }; + BAFFB9492BB0ABC400D8301F /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAFFB9482BB0ABC400D8301F /* Logger.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -206,6 +207,7 @@ BA443D4A2BB05F73009F0FFB /* RequestSpawnEventTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestSpawnEventTests.swift; sourceTree = ""; }; BABB7C052BA9A41000D54DAE /* TowerForceTestPlan.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = TowerForceTestPlan.xctestplan; sourceTree = ""; }; BAFFB9442BB0A8C800D8301F /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; + BAFFB9482BB0ABC400D8301F /* Logger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -515,6 +517,7 @@ BAFFB92F2BB0A01700D8301F /* Commons */ = { isa = PBXGroup; children = ( + BAFFB9472BB0ABB400D8301F /* Utilities */, BAFFB9432BB0A8B800D8301F /* Constants */, 52DF5FE72BA33F8800135367 /* Protocols */, BAFFB9402BB0A68600D8301F /* Enums */, @@ -675,6 +678,14 @@ path = TFCore; sourceTree = ""; }; + BAFFB9472BB0ABB400D8301F /* Utilities */ = { + isa = PBXGroup; + children = ( + BAFFB9482BB0ABC400D8301F /* Logger.swift */, + ); + path = Utilities; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -863,6 +874,7 @@ 52DF5FB02BA32B2300135367 /* GameViewController.swift in Sources */, 3CE951512BAC8955008B2785 /* Renderable.swift in Sources */, 529F91882BA6D7A7009551D9 /* SoldierUnit.swift in Sources */, + BAFFB9492BB0ABC400D8301F /* Logger.swift in Sources */, 520062522BA8DA09000DBA30 /* UnitGenerator.swift in Sources */, 3C9955C02BA57E5500D33FA5 /* EventTarget.swift in Sources */, 3CCF9CB12BAB1BCE004D170E /* GameWorld.swift in Sources */, diff --git a/TowerForge/TowerForge/Commons/Constants/Constants.swift b/TowerForge/TowerForge/Commons/Constants/Constants.swift index 5ab90b00..b38f05f2 100644 --- a/TowerForge/TowerForge/Commons/Constants/Constants.swift +++ b/TowerForge/TowerForge/Commons/Constants/Constants.swift @@ -1,14 +1,9 @@ -// -// Constants.swift -// TowerForge -// -// Created by Rubesh on 25/3/24. -// - import Foundation /// A class to encapsulate application wide constants to ensure a single source of truth /// across the entire application. class Constants { + /// Universally declaring logging + static let LOGGING_IS_ACTIVE = true } diff --git a/TowerForge/TowerForge/Commons/Utilities/Logger.swift b/TowerForge/TowerForge/Commons/Utilities/Logger.swift new file mode 100644 index 00000000..d90fd2e9 --- /dev/null +++ b/TowerForge/TowerForge/Commons/Utilities/Logger.swift @@ -0,0 +1,26 @@ +import Foundation + +/// A utility class to provide for a universal logging function. The logger class +/// can be set to be active if logging is required, within the Constants class. +/// +/// Use case: +/// Standard - print("Value is \(variable)") +/// Alternative - Logger.log("Value is \(variable)", self) +/// +/// Benefits: +/// - Can universally turn off logging, so the console output can be turned off before publication +/// - "self" argument will output the class name where the log function was invoked = easier debugging. +class Logger { + static var isActive = Constants.LOGGING_IS_ACTIVE + + private init() { } + + static func log(_ string: String, _ caller: Any? = nil) { + if isActive { + let callerType = caller == nil ? "Unknown" : String(describing: type(of: caller!)) + let date = Date.now.formatted(date: .omitted, time: .standard) + print("[\(date)] -- [\(callerType)] \(string)") + } + + } +} From 414b9b24dd931df18f74ee926f3e8973fbfef449 Mon Sep 17 00:00:00 2001 From: Rubesh Date: Mon, 25 Mar 2024 02:59:47 +0800 Subject: [PATCH 3/3] Add changes from earliest PR --- .../TowerForge.xcodeproj/project.pbxproj | 4 --- .../TowerForge/GameModule/GameWorld.swift | 26 +++++++++----- .../Systems/LevelSystems/HomeSystem.swift | 14 ++++---- .../Nodes/SelectionNodeDelegate.swift | 27 --------------- .../TowerForge/Nodes/UnitSelectionNode.swift | 34 +++++++++++++++---- 5 files changed, 52 insertions(+), 53 deletions(-) delete mode 100644 TowerForge/TowerForge/Nodes/SelectionNodeDelegate.swift diff --git a/TowerForge/TowerForge.xcodeproj/project.pbxproj b/TowerForge/TowerForge.xcodeproj/project.pbxproj index b6020778..b64429fb 100644 --- a/TowerForge/TowerForge.xcodeproj/project.pbxproj +++ b/TowerForge/TowerForge.xcodeproj/project.pbxproj @@ -84,7 +84,6 @@ 52DF5FFB2BA3601400135367 /* HealthComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52DF5FFA2BA3601400135367 /* HealthComponent.swift */; }; 52DF5FFF2BA3656500135367 /* ShootingComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52DF5FFE2BA3656500135367 /* ShootingComponent.swift */; }; 9B8696552BAD759F0002377C /* Grid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B8696542BAD759F0002377C /* Grid.swift */; }; - 9BD669652BAFDB8600DC8C4C /* SelectionNodeDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BD669642BAFDB8600DC8C4C /* SelectionNodeDelegate.swift */; }; 9BD669682BAFDE5E00DC8C4C /* GridDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BD669672BAFDE5E00DC8C4C /* GridDelegate.swift */; }; BA443D3D2BAD9557009F0FFB /* RemoveSystem.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA443D3C2BAD9557009F0FFB /* RemoveSystem.swift */; }; BA443D3F2BAD9774009F0FFB /* RemoveEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA443D3E2BAD9774009F0FFB /* RemoveEvent.swift */; }; @@ -196,7 +195,6 @@ 52DF5FFA2BA3601400135367 /* HealthComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HealthComponent.swift; sourceTree = ""; }; 52DF5FFE2BA3656500135367 /* ShootingComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShootingComponent.swift; sourceTree = ""; }; 9B8696542BAD759F0002377C /* Grid.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Grid.swift; sourceTree = ""; }; - 9BD669642BAFDB8600DC8C4C /* SelectionNodeDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectionNodeDelegate.swift; sourceTree = ""; }; 9BD669672BAFDE5E00DC8C4C /* GridDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridDelegate.swift; sourceTree = ""; }; BA443D3C2BAD9557009F0FFB /* RemoveSystem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoveSystem.swift; sourceTree = ""; }; BA443D3E2BAD9774009F0FFB /* RemoveEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoveEvent.swift; sourceTree = ""; }; @@ -355,7 +353,6 @@ children = ( 5295A2122BAAEA16005018A8 /* UnitNode.swift */, 5295A2142BAAF335005018A8 /* UnitSelectionNode.swift */, - 9BD669642BAFDB8600DC8C4C /* SelectionNodeDelegate.swift */, ); path = Nodes; sourceTree = ""; @@ -907,7 +904,6 @@ 527E3A242BA613F000FE1628 /* PlayerComponent.swift in Sources */, 3C9955C52BA585DD00D33FA5 /* HealthSystem.swift in Sources */, 520062562BA8E026000DBA30 /* PlayerSpawnable.swift in Sources */, - 9BD669652BAFDB8600DC8C4C /* SelectionNodeDelegate.swift in Sources */, 3CE951652BAE0A04008B2785 /* HomeSystem.swift in Sources */, 52DF5FFB2BA3601400135367 /* HealthComponent.swift in Sources */, 3C9955BC2BA563A800D33FA5 /* TFEvent.swift in Sources */, diff --git a/TowerForge/TowerForge/GameModule/GameWorld.swift b/TowerForge/TowerForge/GameModule/GameWorld.swift index 72264ec0..81df3e0d 100644 --- a/TowerForge/TowerForge/GameModule/GameWorld.swift +++ b/TowerForge/TowerForge/GameModule/GameWorld.swift @@ -5,7 +5,6 @@ // Created by Zheng Ze on 20/3/24. // -import Foundation import SpriteKit class GameWorld { @@ -14,7 +13,6 @@ class GameWorld { private var systemManager: SystemManager private var eventManager: EventManager private var selectionNode: UnitSelectionNode - private var selectionNodeDelegate: SelectionNodeDelegate private var grid: Grid private var renderer: Renderer? @@ -29,7 +27,7 @@ class GameWorld { if let scene = self.scene { grid.generateTileMap(scene: scene) } - self.selectionNodeDelegate = SelectionNodeDelegate(eventManager: eventManager, gridDelegate: grid) + renderer = Renderer(target: self, scene: scene) renderer?.renderMessage("Game Starts") self.setUpSystems() @@ -41,6 +39,7 @@ class GameWorld { func update(deltaTime: TimeInterval) { systemManager.update(deltaTime) eventManager.executeEvents(in: self) + selectionNode.update() renderer?.render() } func spawnUnit(at location: CGPoint) { @@ -74,20 +73,21 @@ class GameWorld { systemManager.add(system: RemoveSystem(entityManager: entityManager, eventManager: eventManager)) systemManager.add(system: SpawnSystem(entityManager: entityManager, eventManager: eventManager)) systemManager.add(system: ShootingSystem(entityManager: entityManager, eventManager: eventManager)) - systemManager.add(system: HomeSystem(entityManager: entityManager, eventManager: eventManager, gridDelegate: grid)) systemManager.add(system: AiSystem(entityManager: entityManager, eventManager: eventManager)) systemManager.add(system: ContactSystem(entityManager: entityManager, eventManager: eventManager)) + systemManager.add(system: HomeSystem(entityManager: entityManager, eventManager: eventManager, + gridDelegate: grid)) // Temporary until we have different gamemodes systemManager.system(ofType: AiSystem.self)?.aiPlayers.append(.oppositePlayer) } private func setUpSelectionNode() { - selectionNode.delegate = selectionNodeDelegate - scene?.addChild(selectionNode) - // Position unit selection node on the left side of the screen - selectionNode.position = CGPoint(x: 500, y: selectionNode.height / 2) - + selectionNode.delegate = self +// scene?.addChild(selectionNode) +// // Position unit selection node on the left side of the screen +// selectionNode.position = CGPoint(x: 500, y: selectionNode.height / 2) +// // Calculate vertical spacing between unit nodes var horizontalX = 10.0 // Position unit nodes vertically aligned @@ -97,6 +97,7 @@ class GameWorld { y: 0) horizontalX += horizontalSpacing } + entityManager.add(selectionNode) } } @@ -111,3 +112,10 @@ extension GameWorld: Renderable { entityManager.entities } } + +extension GameWorld: UnitSelectionNodeDelegate { + func unitSelectionNodeDidSpawn(ofType type: T.Type, position: CGPoint) { + eventManager.add(RequestSpawnEvent(ofType: type, timestamp: CACurrentMediaTime(), + position: position, player: .ownPlayer)) + } +} diff --git a/TowerForge/TowerForge/GameModule/Systems/LevelSystems/HomeSystem.swift b/TowerForge/TowerForge/GameModule/Systems/LevelSystems/HomeSystem.swift index af0afb9f..9ff3d52e 100644 --- a/TowerForge/TowerForge/GameModule/Systems/LevelSystems/HomeSystem.swift +++ b/TowerForge/TowerForge/GameModule/Systems/LevelSystems/HomeSystem.swift @@ -40,19 +40,21 @@ class HomeSystem: TFSystem { let playerHomeComponentArr = entityManager.components(ofType: HomeComponent.self).filter(({ $0.entity?.component(ofType: PlayerComponent.self)?.player == player })) - guard !playerHomeComponentArr.isEmpty else { + guard !playerHomeComponentArr.isEmpty, position.y >= gridDelegate.UNIT_SELECTION_NODE_HEIGHT else { return } - let playerHomeComponent = playerHomeComponentArr[0] // Check if they have enough points to spawn - guard playerHomeComponent.points >= type.cost else { - return + for playerHomeComponent in playerHomeComponentArr { + guard playerHomeComponent.points >= type.cost else { + return + } + playerHomeComponent.decreasePoints(type.cost) } - playerHomeComponent.decreasePoints(type.cost) let snapPosition = CGPoint(x: position.x, y: gridDelegate.snapYPosition(yPosition: position.y)) - let spawnEvent = SpawnEvent(ofType: type, timestamp: CACurrentMediaTime(), position: snapPosition, player: player) + let spawnEvent = SpawnEvent(ofType: type, timestamp: CACurrentMediaTime(), + position: snapPosition, player: player) eventManager?.add(spawnEvent) } } diff --git a/TowerForge/TowerForge/Nodes/SelectionNodeDelegate.swift b/TowerForge/TowerForge/Nodes/SelectionNodeDelegate.swift deleted file mode 100644 index d542c654..00000000 --- a/TowerForge/TowerForge/Nodes/SelectionNodeDelegate.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// UnitSelectionNodeDelegate.swift -// TowerForge -// -// Created by Keith Gan on 24/3/24. -// - -import SpriteKit - -class SelectionNodeDelegate: UnitSelectionNodeDelegate { - private var eventManager: EventManager - private var gridDelegate: GridDelegate - - init(eventManager: EventManager, gridDelegate: GridDelegate) { - self.eventManager = eventManager - self.gridDelegate = gridDelegate - } - - func unitSelectionNodeDidSpawn(ofType type: T.Type, position: CGPoint) { - if position.y < gridDelegate.UNIT_SELECTION_NODE_HEIGHT { - return - } - let snapPosition = CGPoint(x: position.x, y: gridDelegate.snapYPosition(yPosition: position.y)) - eventManager.add(RequestSpawnEvent(ofType: type, timestamp: CACurrentMediaTime(), - position: snapPosition, player: .ownPlayer)) - } -} diff --git a/TowerForge/TowerForge/Nodes/UnitSelectionNode.swift b/TowerForge/TowerForge/Nodes/UnitSelectionNode.swift index e8959859..8ab04829 100644 --- a/TowerForge/TowerForge/Nodes/UnitSelectionNode.swift +++ b/TowerForge/TowerForge/Nodes/UnitSelectionNode.swift @@ -12,9 +12,9 @@ protocol UnitSelectionNodeDelegate: AnyObject { func unitSelectionNodeDidSpawn(ofType type: T.Type, position: CGPoint) } -class UnitSelectionNode: TFSpriteNode, UnitNodeDelegate { +class UnitSelectionNode: TFEntity, UnitNodeDelegate { weak var delegate: UnitSelectionNodeDelegate? - var availablePoints: Int = 100 { + var availablePoints: Int = 0 { didSet { updateUnitAlphas() } @@ -22,10 +22,16 @@ class UnitSelectionNode: TFSpriteNode, UnitNodeDelegate { var unitNodes: [UnitNode] = [] var selectedNode: UnitNode? - init() { - super.init(textures: nil, height: 200.0, width: 100.0) + override init() { + super.init() + + // Temporary until render pipeline is up + // Initialised with dummy texture so that it doesn't crash + let spriteComponent = SpriteComponent(textureNames: ["life"], height: 0, width: 0, + position: CGPoint(x: 0, y: 0), animatableKey: "selectionNode") + let node = spriteComponent.node + node.isUserInteractionEnabled = true - isUserInteractionEnabled = true let possibleUnits: [(TFEntity & PlayerSpawnable).Type] = SpawnableEntities.playerSpawnableEntities var startingPoint = CGPoint(x: 400, y: 0) for type in possibleUnits { @@ -33,10 +39,18 @@ class UnitSelectionNode: TFSpriteNode, UnitNodeDelegate { unitNode.position = startingPoint unitNodes.append(unitNode) unitNode.delegate = self - addChild(unitNode) + node.addChild(unitNode) startingPoint.x += 140 } + + // Position unit selection node on the left side of the screen + node.position = CGPoint(x: 500, y: 100) + + self.addComponent(spriteComponent) + self.addComponent(HomeComponent(initialLifeCount: Team.lifeCount, pointInterval: Team.pointsInterval)) + self.addComponent(PositionComponent(position: node.position)) + self.addComponent(PlayerComponent(player: .ownPlayer)) } @available(*, unavailable) @@ -56,6 +70,13 @@ class UnitSelectionNode: TFSpriteNode, UnitNodeDelegate { } } + func update() { + guard let homeComponent = self.component(ofType: HomeComponent.self) else { + return + } + self.availablePoints = homeComponent.points + } + func unitNodeDidSelect(_ unitNode: UnitNode) { if unitNode.purchasable { selectedNode = unitNode @@ -66,7 +87,6 @@ class UnitSelectionNode: TFSpriteNode, UnitNodeDelegate { guard let selectedType = self.selectedNode?.type else { return } - self.availablePoints -= selectedType.cost delegate?.unitSelectionNodeDidSpawn(ofType: selectedType, position: position) } }