Example #1
0
        public void spawnMembers(PlayerType owner, UnitDefinition unit, int numMembers)
        {
            this.owner = owner;
            playerFlagVisual.SetActive(this.owner == PlayerType.Player);
            enemyFlagVisual.SetActive(this.owner == PlayerType.Enemy1);
            influence.setColorToOwner(this.owner);
            UnitControlFlag unitFlag = controlSurface as UnitControlFlag;

            if (!!unitFlag)
            {
            }
            controlSurface.gameObject.SetActive(this.owner == PlayerType.Player);
            unitType = unit;
            influence.transform.localScale = new Vector3(unitType.InfluenceRange, unitType.InfluenceRange, 1f);

            CombatSceneManager combatManager = Toolbox.Get <InputManager>().CombatSceneManager;

            squadMembers = new List <SquadMember>();

            for (int i = 0; i < numMembers; i++)
            {
                SquadMember newMember = Instantiate(unitType.PrefabOfUnit, combatManager.squadMemberContainer.transform);
                squadMembers.Add(newMember);
                newMember.OnUnitDied.AddListener(OnSquadMemberDied);

                newMember.setOwner(this.owner);
                newMember.TeleportTo(getRandomPositionInBounds(transform.position, influence.Zone.radius));
                newMember.name =
                    (owner == PlayerType.Player ? "PM-" : "EM-") +
                    (unitType.PrefabOfUnit.name);
            }
        }
Example #2
0
        public void TakeDamage(int rawDamage)
        {
            if (_alreadyStarted == false)
            {
                return;
            }

            if (gameObject.activeSelf == false)
            {
                Debug.Log("Unit cannot take damage as it is already dead");
                return;
            }

            var objectName = transform.parent.name;
            // reduce raw damage by Defense value.
            // Take a minimum of 1 damage.

            var finalDamage = Math.Max(rawDamage - unitDefinition.Defense, 1);

            _health -= finalDamage;

            _healthBar.SetHealth(_health / (float)unitDefinition.MaxHealth);
            if (_health <= 0)
            {
                transform.parent.gameObject.SetActive(false);

                CombatSceneManager combatManager = Toolbox.Get <InputManager>().CombatSceneManager;
                GameObject         freshCorpse   = Instantiate(unitDefinition.PrefabOfCorpse, combatManager.squadMemberContainer.transform);
                freshCorpse.transform.position = transform.position;


                OnUnitDied?.Invoke(this);
            }
        }
 //Method: Awake
 //Purpose -- This called before Start, and allows the script
 //to order some of the members to be initialized (if needed);
 void Awake()
 {
     //isAtStart = true;
     //Initializing _instance to our current instance of
     //the GameManager object
     if (_instance == null)
     {
         _instance = this;
     }
     else
     {
         Destroy(gameObject);
     }
 }