diff --git a/.vs/Shoot'em up/v14/.suo b/.vs/Shoot'em up/v14/.suo new file mode 100644 index 0000000000000000000000000000000000000000..edcdda0a807d2e4a6717919b68a5ab505c4c5a4e Binary files /dev/null and b/.vs/Shoot'em up/v14/.suo differ diff --git a/Assets/Scripts/Game/EnemyDeathManager.cs b/Assets/Scripts/Game/EnemyDeathManager.cs new file mode 100644 index 0000000000000000000000000000000000000000..1ff8e6644dee475046dbb60702668a3d6bee17e8 --- /dev/null +++ b/Assets/Scripts/Game/EnemyDeathManager.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class EnemyDeathManager : DeathManager +{ + public EnemyFactory enemyFactory; + + [SerializeField] + int enemyDeathScore; + + public override void Die() + { + base.Die(); + ScoreManager.Instance.IncreaseScore(enemyDeathScore); + enemyFactory.Release(this.gameObject); + } +} diff --git a/Assets/Scripts/Game/EnemyDeathManager.cs.meta b/Assets/Scripts/Game/EnemyDeathManager.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..2770f4f7539b26ca6d5f02c68ed8b8ca3787ba42 --- /dev/null +++ b/Assets/Scripts/Game/EnemyDeathManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7913e1dd17c5cfc4bad3f69ca7ef9303 +timeCreated: 1506697926 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Game/EnemyFactory.cs b/Assets/Scripts/Game/EnemyFactory.cs new file mode 100644 index 0000000000000000000000000000000000000000..fa285f2f062a886257df4560ae788472c6d910a5 --- /dev/null +++ b/Assets/Scripts/Game/EnemyFactory.cs @@ -0,0 +1,65 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class EnemyFactory : MonoBehaviour +{ + public enum EnemyType + { + normalEnemy = 0, + zigzagEnemy = 1 + } + + [SerializeField] + GameObject[] enemyPrefabs = new GameObject[2]; + + List<GameObject>[] enemyStock = new List<GameObject>[2]; + + private void Start() + { + enemyStock[0] = new List<GameObject>(); + enemyStock[1] = new List<GameObject>(); + } + + public GameObject GetEnemy(EnemyType enemyType) + { + GameObject newEnemy; + if (enemyStock[(int)enemyType].Count == 0) + { + newEnemy = Instantiate(enemyPrefabs[(int)enemyType]); + BaseEnemyManager enemyManager = newEnemy.GetComponent<BaseEnemyManager>(); + if(enemyManager) + { + enemyManager.enemyType = enemyType; + enemyManager.enemyFactory = this; + } + EnemyDeathManager enemyDeathManager = newEnemy.GetComponent<EnemyDeathManager>(); + if(enemyDeathManager) + { + enemyDeathManager.enemyFactory = this; + } + } + else + { + newEnemy = enemyStock[(int)enemyType][0]; + enemyStock[(int)enemyType].RemoveAt(0); + newEnemy.SetActive(true); + } + return newEnemy; + } + + public void Release(GameObject enemy) + { + enemy.SetActive(false); + HealthManager healthManager = enemy.GetComponent<HealthManager>(); + if (healthManager) + { + healthManager.currentHealth = healthManager.maxHealth; + } + BaseEnemyManager enemyManager = enemy.GetComponent<BaseEnemyManager>(); + if (enemyManager) + { + enemyStock[(int)enemyManager.enemyType].Add(enemy); + } + } +} diff --git a/Assets/Scripts/Game/EnemyFactory.cs.meta b/Assets/Scripts/Game/EnemyFactory.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..0e13c522b119635f90e5465b5db915534b16af7f --- /dev/null +++ b/Assets/Scripts/Game/EnemyFactory.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 14909d483ee1e8d429bfb870b7febd68 +timeCreated: 1506695515 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Game/ImmunityManager.cs b/Assets/Scripts/Game/ImmunityManager.cs new file mode 100644 index 0000000000000000000000000000000000000000..0ccf9ce89c7029e08d9413ac813508d08edae19c --- /dev/null +++ b/Assets/Scripts/Game/ImmunityManager.cs @@ -0,0 +1,59 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ImmunityManager : MonoBehaviour +{ + static public ImmunityManager Instance { get; private set; } + + public bool isImmune { get; private set; } + + [SerializeField] + SpriteRenderer spriteRenderer; + + [SerializeField] + float immunityTime = 0.5f; + + Color standardColor; + + [SerializeField] + Color immunityColor; + + float immunityStart = float.NegativeInfinity; + + // Use this for initialization + void Start () + { + Instance = this; + if(spriteRenderer) + { + standardColor = spriteRenderer.color; + } + } + + public void BecomeImmune() + { + if(!isImmune) + { + isImmune = true; + immunityStart = Time.time; + if(spriteRenderer) + { + spriteRenderer.color = immunityColor; + } + } + } + + // Update is called once per frame + void Update () + { + if(isImmune && Time.time - immunityStart > immunityTime) + { + isImmune = false; + if(spriteRenderer) + { + spriteRenderer.color = standardColor; + } + } + } +} diff --git a/Assets/Scripts/Game/ImmunityManager.cs.meta b/Assets/Scripts/Game/ImmunityManager.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..61539a5017fb96825abeb0c3b938d3850e49ed92 --- /dev/null +++ b/Assets/Scripts/Game/ImmunityManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e44532f6e72b5cf44bb0679c315aecdc +timeCreated: 1506849147 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Game/ScoreManager.cs b/Assets/Scripts/Game/ScoreManager.cs new file mode 100644 index 0000000000000000000000000000000000000000..e1194014740e7415f09e7995c25cd72b5696f9cf --- /dev/null +++ b/Assets/Scripts/Game/ScoreManager.cs @@ -0,0 +1,31 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ScoreManager : MonoBehaviour +{ + static public ScoreManager Instance { get; private set; } + + int score = 0; + + public int GetScore() + { + return score; + } + + void Start () + { + Instance = this; + score = 0; + } + + public void IncreaseScore(int i) + { + score += i; + } + + public override string ToString() + { + return score.ToString(); + } +} diff --git a/Assets/Scripts/Game/ScoreManager.cs.meta b/Assets/Scripts/Game/ScoreManager.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..ea0a9552193f76ade726d71eddf5297a693a2e2e --- /dev/null +++ b/Assets/Scripts/Game/ScoreManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b91979c541b86ac4eb4449822adb4066 +timeCreated: 1506699747 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Game/ScoreMemory.cs b/Assets/Scripts/Game/ScoreMemory.cs new file mode 100644 index 0000000000000000000000000000000000000000..4c6076881dd82d93ca9a481208dbf09464f6eb2e --- /dev/null +++ b/Assets/Scripts/Game/ScoreMemory.cs @@ -0,0 +1,22 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ScoreMemory : MonoBehaviour +{ + public static ScoreMemory Instance { get; private set; } + + public int savedScore = 0; + + // Use this for initialization + void Start () + { + if(Instance) + { + Destroy(this.gameObject); + return; + } + Instance = this; + DontDestroyOnLoad(this.gameObject); + } +} diff --git a/Assets/Scripts/Game/ScoreMemory.cs.meta b/Assets/Scripts/Game/ScoreMemory.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..3e0faf7afc3d2be889458e32c1390680f5b90e52 --- /dev/null +++ b/Assets/Scripts/Game/ScoreMemory.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5f705cd2e636cd74fa6ec347d53f9c03 +timeCreated: 1506853422 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Game/ScorePrinter.cs b/Assets/Scripts/Game/ScorePrinter.cs new file mode 100644 index 0000000000000000000000000000000000000000..aec933070b2fa8a71fd1418b58a872ddb347610b --- /dev/null +++ b/Assets/Scripts/Game/ScorePrinter.cs @@ -0,0 +1,15 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ScorePrinter : MonoBehaviour +{ + [SerializeField] + UnityEngine.UI.Text scoreText; + + // Update is called once per frame + void Update () + { + scoreText.text = "Score : " + ScoreManager.Instance; + } +} diff --git a/Assets/Scripts/Game/ScorePrinter.cs.meta b/Assets/Scripts/Game/ScorePrinter.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..5d6b968a488d774d2b7a35da29ff0eabcbc41b96 --- /dev/null +++ b/Assets/Scripts/Game/ScorePrinter.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6de4dc28e17febb48a153a50eb97b18a +timeCreated: 1506848776 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Menus/GameOverScorePrinter.cs b/Assets/Scripts/Menus/GameOverScorePrinter.cs new file mode 100644 index 0000000000000000000000000000000000000000..c354f7419df0ea28c70f2286b44c4bb67258339d --- /dev/null +++ b/Assets/Scripts/Menus/GameOverScorePrinter.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class GameOverScorePrinter : MonoBehaviour +{ + [SerializeField] + UnityEngine.UI.Text scoreText; + + // Use this for initialization + void Start () + { + if(ScoreMemory.Instance) + { + scoreText.text = "Score : " + ScoreMemory.Instance.savedScore; + } + } +} diff --git a/Assets/Scripts/Menus/GameOverScorePrinter.cs.meta b/Assets/Scripts/Menus/GameOverScorePrinter.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..6f7f2b74b452ee11a8cd2ada0573105e65549d04 --- /dev/null +++ b/Assets/Scripts/Menus/GameOverScorePrinter.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cab4c7344649eee47925c411aa5a56b9 +timeCreated: 1506854568 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: