Exemple #1
0
    public static bool IsTargetValid(this TargetingOptions targetOptions, Player playerOwner, GameObject targetObject)
    {
        if (targetObject == null)
        {
            return(false);
        }

        var targetIsEnemy = targetObject.tag.IsEnemy(playerOwner.gameObject);

        switch (targetOptions)
        {
        case TargetingOptions.AllCharacters:
            return(true);

        case TargetingOptions.AllCreatures:
            return(targetObject.tag.IsCreature());

        case TargetingOptions.EnemyCharacters:
            return(targetIsEnemy && (targetObject.tag.IsCreature() || targetObject.tag.IsPlayer()));

        case TargetingOptions.EnemyCreatures:
            return(targetIsEnemy && targetObject.tag.IsCreature());

        case TargetingOptions.YourCharacters:
            return(!targetIsEnemy && (targetObject.tag.IsCreature() || targetObject.tag.IsPlayer()));

        case TargetingOptions.YourCreatures:
            return(!targetIsEnemy && targetObject.tag.IsCreature());

        default:
            return(false);
        }
    }
Exemple #2
0
        /// <summary>
        /// Creates a missile with homing and target finding capabilities.
        /// </summary>
        public GuidedMissile(IMyEntity missile, IMyCubeBlock firedBy, TargetingOptions opt, Ammo ammo, LastSeen initialTarget = null, bool isSlave = false)
            : base(missile, firedBy)
        {
            myLogger = new Logger("GuidedMissile", () => missile.getBestName(), () => m_stage.ToString());
            myAmmo = ammo;
            myDescr = ammo.Description;
            if (ammo.Description.HasAntenna)
                myAntenna = new MissileAntenna(missile);
            TryHard = true;

            AllGuidedMissiles.Add(this);
            missile.OnClose += missile_OnClose;

            if (myAmmo.IsCluster && !isSlave)
                myCluster = new Cluster(myAmmo.MagazineDefinition.Capacity - 1);
            accelerationPerUpdate = (myDescr.Acceleration + myAmmo.MissileDefinition.MissileAcceleration) / 60f;
            addSpeedPerUpdate = myDescr.Acceleration / 60f;

            Options = opt;
            Options.TargetingRange = ammo.Description.TargetRange;
            myTargetSeen = initialTarget;

            myLogger.debugLog("Options: " + Options, "GuidedMissile()");
            //myLogger.debugLog("AmmoDescription: \n" + MyAPIGateway.Utilities.SerializeToXML<Ammo.AmmoDescription>(myDescr), "GuidedMissile()");
        }
Exemple #3
0
 public virtual void Spawn(TowerStats tr, TargetingOptions option)
 {
     if (MoneyContoller.Instance.Money >= tr.InitialPrice)
     {
         MoneyContoller.Instance.RemoveMoney(tr.InitialPrice);
         IsOccupied = true;
         GameObject obj = ObjectPooler.Instance.GetPooledObject(tr.TowerTag);
         tower = obj.GetComponent <Tower>();
         tower.TargetPriority   = option;
         obj.transform.position = transform.position;
         obj.SetActive(true);
     }
 }
Exemple #4
0
    void Awake()
    {
        sr = GetComponent <SpriteRenderer>();
        lr = GetComponentInChildren <LineRenderer>();
        lr.sortingLayerName = "AboveEverything";
        triangle            = transform.Find("PointerTriangle");
        triangleSR          = triangle.GetComponent <SpriteRenderer>();

        whereIsThisCard = GetComponentInParent <WhereIsTheCardOrCreature>();

        targets          = GetComponentInParent <CardAsset>().Targets;
        originalPosition = this.transform.parent.localPosition;
    }
Exemple #5
0
    private void Start()
    {
        ca          = card.GetComponent <OneCardManager>().cardAsset;
        spellDamage = ca.specialSpellAmount;

        targetionOptions = ca.Targets;

        if (targetionOptions == TargetingOptions.EnemyCharacters)
        {
            GroupOfTargets = GameObject.FindGameObjectsWithTag("Enemy");
        }
        else if (targetionOptions == TargetingOptions.YourCharacters)
        {
            GroupOfTargets = GameObject.FindGameObjectsWithTag("Ally");
        }
        Debug.Log(GroupOfTargets.Length);

        chosenEffect = ca.TargetEffect;
    }
    private void Start()
    {
        ca = card.GetComponent <OneCardManager>().cardAsset;

        spellDamage = ca.specialSpellAmount;
        targets     = ca.Targets;

        /*string effect = ca.SpellEffectName.ToString();
         * Debug.Log(effect);
         * if (card != null)
         * {
         *  Debug.Log("yes");
         *      }
         * else
         * {
         *  Debug.Log("no");
         * }*/
        chosenEffect = ca.TargetEffect;
    }
Exemple #7
0
		public GuidedMissile(Cluster missiles, IMyCubeBlock firedBy, TargetingOptions opt, Ammo ammo, LastSeen initialTarget = null)
			: this (missiles.Master, firedBy, opt, ammo, initialTarget)
		{
			myCluster = missiles;
		}
Exemple #8
0
		/// <summary>
		/// Creates a missile with homing and target finding capabilities.
		/// </summary>
		public GuidedMissile(IMyEntity missile, IMyCubeBlock firedBy, TargetingOptions opt, Ammo ammo, LastSeen initialTarget = null)
			: base(missile, firedBy)
		{
			myLogger = new Logger("GuidedMissile", () => missile.getBestName(), () => m_stage.ToString());
			myAmmo = ammo;
			myDescr = ammo.Description;
			if (ammo.Description.HasAntenna)
				myAntenna = new MissileAntenna(missile);
			TryHard = true;

			AllGuidedMissiles.Add(this);
			AddMissileOwner(MyEntity, CubeBlock.OwnerId);
			MyEntity.OnClose += MyEntity_OnClose;

			accelerationPerUpdate = (myDescr.Acceleration + myAmmo.MissileDefinition.MissileAcceleration) / 60f;
			addSpeedPerUpdate = myDescr.Acceleration / 60f;

			Options = opt;
			Options.TargetingRange = ammo.Description.TargetRange;
			myTargetSeen = initialTarget;

			myLogger.debugLog("Options: " + Options + ", initial target: " + (initialTarget == null ? "null" : initialTarget.Entity.getBestName()), "GuidedMissile()");
			//myLogger.debugLog("AmmoDescription: \n" + MyAPIGateway.Utilities.SerializeToXML<Ammo.AmmoDescription>(myDescr), "GuidedMissile()");
		}