Example #1
0
        }                               // constructor with 0 arguments

        // for creating an entry via clicked target
        public TargetData(Transform transform, MF_AbstractStatus script, bool clickedPriority, bool targetPersists, float?sqrMagnitude)
        {
            this.transform       = transform;
            this.script          = script;
            this.clickedPriority = clickedPriority;
            this.targetPersists  = targetPersists;
            this.lastDetected    = Time.time;
            this.lastAnalyzed    = Time.time;
            this.sqrMagnitude    = sqrMagnitude;
        }
Example #2
0
    public void DoDamage(Transform trans)
    {
        // do stuff to the target object when it gets hit
        MF_AbstractStatus _script = null;

        _script = FindStatusScript(trans);                                           // look for script in parents
        if (_script && !Mathf.Approximately(_script.damageID, damageID + Time.time)) // don't apply damage if alread damaged by this source, this frame - so explosions don't damage more than once
        // apply damage to target
        {
            _script.damageID = damageID + Time.time;             // mark as damaged by this source, this frame
            _script.health  -= damage;
            //_script.shieldDamage(damage);

//			Debug.Log( trans+" > "+_script+" : "+damage );
        }
    }
Example #3
0
 private MF_AbstractStatus FindStatusScript(Transform thisTransform)
 {
     // move up tree looking for status script
     while (thisTransform != null)
     {
         MF_AbstractStatus _script = thisTransform.GetComponent <MF_AbstractStatus>();
         if (_script)
         {
             return(_script);
         }
         else
         {
             thisTransform = thisTransform.parent;
         }
     }
     return(null);
 }
Example #4
0
    void Spawn(int num)
    {
        if (spawnsPoints.Length > 0)             // at least 1 spawn point defined
        // find total chance number
        {
            float _spawnRollMax = 0;
            for (int t = 0; t < spawnTypes.Length; t++)
            {
                _spawnRollMax += spawnTypes[t].chance;
            }
            for (int s = 0; s < num; s++)             // for every spawn requested
            {
                float     _spawnRoll  = Random.Range(0f, _spawnRollMax);
                SpawnType _spawnEntry = null;
                // find which unit spawn roll picked
                float _count = 0;
                for (int t = 0; t < spawnTypes.Length; t++)
                {
                    if (_spawnRoll > _count && _spawnRoll < _count + spawnTypes[t].chance)
                    {
                        _spawnEntry = spawnTypes[t];
                        break;
                    }
                    _count += spawnTypes[t].chance;
                }

                Vector3 _locRand = Random.insideUnitSphere * spawnRandomRadius;
                // if spawn point provided, use it. Else pick random from default list
                Vector3 _spawnCenter;
                if (_spawnEntry.spawn)
                {
                    _spawnCenter = _spawnEntry.spawn.position;
                }
                else
                {
                    _spawnCenter = spawnsPoints[Random.Range(0, spawnsPoints.Length)].position;
                }
                Vector3 _spawnLoc = _spawnCenter + _locRand;
                if (sameHeight == true)
                {
                    _spawnLoc = new Vector3(_spawnLoc.x, _spawnCenter.y, _spawnLoc.z);
                }
                // if waypoint group provided, use it. Else pick random from default list
                Transform _wptGroup;
                if (_spawnEntry.wpt)
                {
                    _wptGroup = _spawnEntry.wpt;
                }
                else
                {
                    _wptGroup = waypointGroups[Random.Range(0, waypointGroups.Length)];
                }

                GameObject _unit  = (GameObject)Instantiate(_spawnEntry.unit, _spawnLoc, Quaternion.identity);
                float      _angle = MFmath.AngleSigned(Vector3.forward, _spawnLoc - _spawnCenter, Vector3.up);
                _unit.transform.rotation = Quaternion.Euler(new Vector3(0f, _angle, 0f));
                if (_spawnEntry.overrideFaction == true && _spawnEntry.faction != MFnum.FactionType.None)
                {
                    _unit.tag = _spawnEntry.faction.ToString();
                    MF_AbstractStatus _unitStatusScript = _unit.GetComponent <MF_AbstractStatus>();
                    if (_unitStatusScript && _unitStatusScript.layerColliderLocation)
                    {
                        _unitStatusScript.layerColliderLocation.gameObject.layer = LayerMask.NameToLayer(_spawnEntry.faction.ToString());
                    }
                }

                //shipsCounter.addShip(_unit);

                MF_AbstractNavigation _unitNavScript = _unit.GetComponent <MF_AbstractNavigation>();
                if (_unitNavScript)
                {
                    _unitNavScript.waypointGroup = _wptGroup;
                    _unitNavScript.randomWpt     = _spawnEntry.randomWpt;
                }
            }
        }
    }
 public virtual void ClickAdd(int key, Transform transform, MF_AbstractStatus script, bool clickedPriority, bool targetPersists, float?sqrMagnitude)
 {
 }
Example #6
0
 public override void ClickAdd(int key, Transform transform, MF_AbstractStatus script, bool clickedPriority, bool targetPersists, float?sqrMagnitude)
 {
     targetList.Add(key, new TargetData(transform, script, clickedPriority, targetPersists, sqrMagnitude));
 }