From 4eee92e17e8d55c9ba1b1e4b21a470bdad29ce89 Mon Sep 17 00:00:00 2001 From: Joshua Reason Date: Mon, 26 Aug 2019 22:25:45 +1000 Subject: [PATCH] Started making htings more OO --- .../Sprites.meta => Animations.meta} | 2 +- .../Animations/CharacterController.controller | 12 ++++ .../CharacterController.controller.meta | 8 +++ Assets/Scripts/Character.cs | 4 ++ Assets/Scripts/GameMode/GameMode.cs | 12 +++- Assets/Scripts/LevelBlocks.meta | 8 +++ Assets/Scripts/LevelBlocks/ActiveBlock.cs | 58 +++++++++++++++++++ .../Scripts/LevelBlocks/ActiveBlock.cs.meta | 11 ++++ Assets/Scripts/{ => LevelBlocks}/Block.cs | 32 +--------- .../Scripts/{ => LevelBlocks}/Block.cs.meta | 0 Assets/Scripts/Managers/GameManager.cs | 10 +++- Assets/Scripts/Traps/ShootingCannon.cs | 2 +- 12 files changed, 126 insertions(+), 33 deletions(-) rename Assets/{Plugins/IngameDebugConsole/Sprites.meta => Animations.meta} (77%) create mode 100644 Assets/Animations/CharacterController.controller create mode 100644 Assets/Animations/CharacterController.controller.meta create mode 100644 Assets/Scripts/LevelBlocks.meta create mode 100644 Assets/Scripts/LevelBlocks/ActiveBlock.cs create mode 100644 Assets/Scripts/LevelBlocks/ActiveBlock.cs.meta rename Assets/Scripts/{ => LevelBlocks}/Block.cs (87%) rename Assets/Scripts/{ => LevelBlocks}/Block.cs.meta (100%) diff --git a/Assets/Plugins/IngameDebugConsole/Sprites.meta b/Assets/Animations.meta similarity index 77% rename from Assets/Plugins/IngameDebugConsole/Sprites.meta rename to Assets/Animations.meta index 504a23d..9ba7b94 100644 --- a/Assets/Plugins/IngameDebugConsole/Sprites.meta +++ b/Assets/Animations.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: cb5d7b23a9e684a41a6a5d4f300eb1e6 +guid: 452f251b75e8b1542a101f1ab882a3ba folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Animations/CharacterController.controller b/Assets/Animations/CharacterController.controller new file mode 100644 index 0000000..826609e --- /dev/null +++ b/Assets/Animations/CharacterController.controller @@ -0,0 +1,12 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: CharacterController + serializedVersion: 5 + m_AnimatorParameters: [] + m_AnimatorLayers: [] diff --git a/Assets/Animations/CharacterController.controller.meta b/Assets/Animations/CharacterController.controller.meta new file mode 100644 index 0000000..8a53883 --- /dev/null +++ b/Assets/Animations/CharacterController.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ed2a73208a872914f8187d96fb1f35e0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Character.cs b/Assets/Scripts/Character.cs index 9beb1d1..ca5ff5d 100644 --- a/Assets/Scripts/Character.cs +++ b/Assets/Scripts/Character.cs @@ -7,6 +7,8 @@ using Networking.Server; public class Character : MonoBehaviour { + public enum Animation {Walk,Jump,Slide} + public string nextScene; Animator characterAnimator; public bool isTuteLevel = false; @@ -104,6 +106,8 @@ public class Character : MonoBehaviour return new Vector3(0, y, 0); } + public IEnumerator MoveToBlock(Block Target, Animation animation, float time) + IEnumerator JumpCoroutine(Block Target, Transform Current, float time, float heightMax) { float elapsedTime = 0; diff --git a/Assets/Scripts/GameMode/GameMode.cs b/Assets/Scripts/GameMode/GameMode.cs index 519a0e4..899eb40 100644 --- a/Assets/Scripts/GameMode/GameMode.cs +++ b/Assets/Scripts/GameMode/GameMode.cs @@ -73,6 +73,12 @@ public abstract class GameMode : ScriptableObject /// List of all player Info protected virtual void OnAllPlayersMoved(PlayerData[] allPlayers) { } + /// + /// Called after all environmentblocks have taken their turn + /// + /// All players in scene + protected virtual void OnEnvironmentTurn(PlayerData[] allPlayers) { } + /// /// Called after one round has finished /// @@ -93,7 +99,6 @@ public abstract class GameMode : ScriptableObject public abstract bool isGameOver(PlayerData[] allPlayers); - public float GetRoundTime() { float retVal = gameTimes[0]; @@ -156,6 +161,11 @@ public abstract class GameMode : ScriptableObject AllPlayersMovedEvent?.Invoke(); } + public void EnvironmentTurn(PlayerData[] allPlayers) + { + OnEnvironmentTurn(allPlayers); + } + public void RoundEnd(PlayerData[] allPlayers) { OnRoundEnd(allPlayers); diff --git a/Assets/Scripts/LevelBlocks.meta b/Assets/Scripts/LevelBlocks.meta new file mode 100644 index 0000000..72a3c9c --- /dev/null +++ b/Assets/Scripts/LevelBlocks.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8884be0c8b5416f4ca24595d0f32dacb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LevelBlocks/ActiveBlock.cs b/Assets/Scripts/LevelBlocks/ActiveBlock.cs new file mode 100644 index 0000000..dc10796 --- /dev/null +++ b/Assets/Scripts/LevelBlocks/ActiveBlock.cs @@ -0,0 +1,58 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ActiveBlock : Block +{ + + protected List currentPlayers = new List(); + + + #region Class Functions + + /// + /// Is called after all players have taken one move + /// + /// Should be implemented by a derived class + /// + public virtual void OnEnvironmentTurn(PlayerData[] allPlayers) + { + + } + + /// + /// Is called when a player moves onto this block + /// + /// Should be implemented by a derived class + /// + /// Player which moved on to block + public virtual void OnWalkedOnByPlayer(PlayerData player) + { + currentPlayers.Add(player); + } + + /// + /// Is called when a player moves off of block + /// + /// Should be implemented by a derived class + /// + /// Player which moved on to block + public virtual void OnLeftByPlayer(PlayerData player) + { + currentPlayers.Remove(player); + } + + /// + /// Called after all players have finished all their moves + /// + /// Should be implemented by a derived class + /// + public virtual void OnRoundEnd(PlayerData[] allPlayers) + { + + } + + #endregion Class Functions + + +} diff --git a/Assets/Scripts/LevelBlocks/ActiveBlock.cs.meta b/Assets/Scripts/LevelBlocks/ActiveBlock.cs.meta new file mode 100644 index 0000000..22caf0e --- /dev/null +++ b/Assets/Scripts/LevelBlocks/ActiveBlock.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c4346bd3c1435c747921b58965edffd3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Block.cs b/Assets/Scripts/LevelBlocks/Block.cs similarity index 87% rename from Assets/Scripts/Block.cs rename to Assets/Scripts/LevelBlocks/Block.cs index 2729cc0..36b8025 100644 --- a/Assets/Scripts/Block.cs +++ b/Assets/Scripts/LevelBlocks/Block.cs @@ -24,6 +24,7 @@ public class Block : MonoBehaviour [Tooltip("Is this block at the bottom of a pit?")] public bool isPit = false; + [Header("Spawn Settings")] [Tooltip("Can this block be spawned on")] public bool isSpawnable = false; @@ -58,36 +59,9 @@ public class Block : MonoBehaviour } - /// - /// Is called after all players have taken one move - /// - /// Should be implemented by a derived class - /// - public virtual void OnPlayersMoved() - { - - } - - /// - /// Is called when a player moves onto this block - /// - /// Should be implemented by a derived class - /// - /// Player which moved on to block - public virtual void OnWalkedOnByPlayer(PlayerData player) - { - - } - - /// - /// Called after all players have finished all their moves - /// - /// Should be implemented by a derived class - /// - public virtual void OnRoundEnd() - { + - } + #endregion Public Functions diff --git a/Assets/Scripts/Block.cs.meta b/Assets/Scripts/LevelBlocks/Block.cs.meta similarity index 100% rename from Assets/Scripts/Block.cs.meta rename to Assets/Scripts/LevelBlocks/Block.cs.meta diff --git a/Assets/Scripts/Managers/GameManager.cs b/Assets/Scripts/Managers/GameManager.cs index 0fd86d9..7dc512a 100644 --- a/Assets/Scripts/Managers/GameManager.cs +++ b/Assets/Scripts/Managers/GameManager.cs @@ -33,6 +33,7 @@ public class GameManager : MonoBehaviour #region Private Variables private Dictionary playerData; + private List activeBlocks; #endregion Private Variables #region Read Only @@ -51,7 +52,9 @@ public class GameManager : MonoBehaviour private void Start() { - //Start Game + //Find all active blocks + //#TODO don't use the find function + activeBlocks = FindObjectsOfType().ToList(); StartCoroutine(GameRoutine()); } @@ -119,6 +122,11 @@ public class GameManager : MonoBehaviour //Let Gamemode know all players have moved gameMode.AllPlayersMoved(playerDataAsArray.ToArray()); + + //Tell each environment block to take a move + activeBlocks.ForEach(p => p.OnEnvironmentTurn(playerDataAsArray)); + gameMode.EnvironmentTurn(playerDataAsArray); + playerDataAsArray.ForEach(p => p.client.SendScore()); //Update the players score //if Game is over break out of loop diff --git a/Assets/Scripts/Traps/ShootingCannon.cs b/Assets/Scripts/Traps/ShootingCannon.cs index f04aca9..50679b1 100644 --- a/Assets/Scripts/Traps/ShootingCannon.cs +++ b/Assets/Scripts/Traps/ShootingCannon.cs @@ -1,4 +1,4 @@ -using System.Collections; + using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine;