From 2645aad5f41875b594635432ce9f75c314d24ee8 Mon Sep 17 00:00:00 2001 From: Maciekxdabu <40292375+Maciekxdabu@users.noreply.github.com> Date: Mon, 23 May 2022 12:48:43 +0200 Subject: [PATCH 1/2] merloj: added Soldier onDeath UnityEvent --- theProject/Assets/Scripts/Soldier.cs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/theProject/Assets/Scripts/Soldier.cs b/theProject/Assets/Scripts/Soldier.cs index d611ae63..dbeba977 100644 --- a/theProject/Assets/Scripts/Soldier.cs +++ b/theProject/Assets/Scripts/Soldier.cs @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; +using UnityEngine.Events; public class Soldier : MonoBehaviour { @@ -43,10 +44,8 @@ public class Soldier : MonoBehaviour { Ally, Enemy - } - [SerializeField] private Soldier target; - [SerializeField] private SoldierType enemyType; - [SerializeField] private SoldierType ourType; + } + [Header("Values")] [SerializeField] private float maxHealthPoints = 10; [SerializeField] private float healthPoints = 1; [SerializeField] private float rangeAttack = 100; @@ -54,12 +53,20 @@ public class Soldier : MonoBehaviour [SerializeField] private float damageAttack = 1; [SerializeField] private int speedAttack = 1; // ticks between attacks [SerializeField] private int lastAttackTick = -1; - + [Header("References")] [SerializeField] private TMP_Text nameText = null; [SerializeField] private TMP_Text healthPointsText = null; + [Header("Do-not-change-in-game values")] + [SerializeField] private Soldier target; + [SerializeField] private SoldierType enemyType; + [SerializeField] private SoldierType ourType; [SerializeField] private Vector2Int movementDestination = Vector2Int.zero; + // variables not visible in inspector + + [HideInInspector] public UnityEvent onDeath = new UnityEvent(); + public SoldierType TempGetOwnType() { return ourType; @@ -109,6 +116,7 @@ public class Soldier : MonoBehaviour private void OnDestroy() { TickSystem.OnTick -= HandleTick; + onDeath.Invoke(); Debug.Log("Soldier: " + ourType.ToString() + " has died", gameObject); } From 16365477b013fd73fe45323a469d3dfb21b9bfe1 Mon Sep 17 00:00:00 2001 From: Maciekxdabu <40292375+Maciekxdabu@users.noreply.github.com> Date: Mon, 23 May 2022 12:55:42 +0200 Subject: [PATCH 2/2] merloj: spawn bases --- .../Assets/Scripts/Managers/TilemapManager.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/theProject/Assets/Scripts/Managers/TilemapManager.cs b/theProject/Assets/Scripts/Managers/TilemapManager.cs index a4d97f09..bdd22ae9 100644 --- a/theProject/Assets/Scripts/Managers/TilemapManager.cs +++ b/theProject/Assets/Scripts/Managers/TilemapManager.cs @@ -24,16 +24,19 @@ public class TilemapManager : MonoBehaviour [Header("Soldiers values")] + [SerializeField] private Vector2Int allyBaseCoord = Vector2Int.zero; [SerializeField] private Vector2Int[] soldierStartingPositions = null; [Header("Enemies values")] + [SerializeField] private Vector2Int enemyBaseCoord = Vector2Int.zero; [SerializeField] private Vector2Int[] enemyStartingPositions = null; [Header("References")] [SerializeField] private Tilemap tilemap = null; [SerializeField] private GameObject soldierPrefab = null; + [SerializeField] private GameObject basePrefab = null; // private (do not edit) variables @@ -50,6 +53,11 @@ public class TilemapManager : MonoBehaviour private void Start() { + //spawn bases + SpawnSoldier(allyBaseCoord.x, allyBaseCoord.y, true, true); + SpawnSoldier(enemyBaseCoord.x, enemyBaseCoord.y, false, true); + + //spawn soldiers foreach (Vector2Int vec in soldierStartingPositions) SpawnSoldier(vec.x, vec.y, true); foreach (Vector2Int vec in enemyStartingPositions) @@ -85,12 +93,15 @@ public class TilemapManager : MonoBehaviour // ---------- public functions - public bool SpawnSoldier(int x, int y, bool isAlly) + public bool SpawnSoldier(int x, int y, bool isAlly, bool isBase=false) { if (GetTileState(x, y) != TileState.free) return false; - tiles[x, y].standingSoldier = Instantiate(soldierPrefab, tilemap.CellToWorld(new Vector3Int(x, y, 0)) + WORLD_SPACE_OFFSET, Quaternion.identity).GetComponent(); + if (isBase) + tiles[x, y].standingSoldier = Instantiate(basePrefab, tilemap.CellToWorld(new Vector3Int(x, y, 0)) + WORLD_SPACE_OFFSET, Quaternion.identity).GetComponent(); + if (isBase) + tiles[x, y].standingSoldier = Instantiate(soldierPrefab, tilemap.CellToWorld(new Vector3Int(x, y, 0)) + WORLD_SPACE_OFFSET, Quaternion.identity).GetComponent(); if (isAlly) tiles[x, y].standingSoldier.setOwnTag(Soldier.SoldierType.Ally);