예제 #1
0
    //*******************************************
    //BEGIN INTERFACE METHODS
    //*******************************************


    public bool CheckForFollowAllyCommand(GameObject hitObject)
    {
        WorldObject hitWorldObject = hitObject.GetComponentInParent <WorldObject> ();

        if (hitWorldObject && WorkManager.AreWorldObjectsOnSameTeam(hitWorldObject, worldObject) == true)
        {
            SecondaryInteractGameObjectAtDistance(hitObject, 1.2f);
            return(true);
        }
        return(false);
    }
예제 #2
0
    protected virtual void OnTriggerEnter(Collider encounteredCollider)
    {
        // if (encounteredCollider.gameObject.tag == "Barrier"){
        //  Debug.Log("bounce!!");
        //  MoveTowardsBarrierCenter(encounteredCollider.transform.position);
        //  return;
        // }
        Target tar = encounteredCollider.gameObject.GetComponent <Target> ();

        if (tar)
        {
            WorldObject colliderWO = encounteredCollider.gameObject.GetComponentInParent <WorldObject> ();
            if (colliderWO && WorkManager.AreWorldObjectsOnSameTeam(worldObject, colliderWO) == false)
            {
                ImpactEffect();
                InflictDamage(colliderWO, paramManager.AttackDamage);
                Spawn colliderSpawn = colliderWO.GetComponent <Spawn> ();
                if (colliderSpawn == null)
                {
                    InflictDamage(this.worldObject, this.paramManager.MaxHitPoints);
                }
            }
        }
    }
예제 #3
0
    public virtual void MouseClickRight(GameObject hitObject, Vector3 hitPoint)
    {
        unit.mover.EnableMoveInput();
        WorldObject hitWorldObject = hitObject.GetComponentInParent <WorldObject> ();

        if (unit.hatcheryInteracter)
        {
            if (unit.hatcheryInteracter.IssueInteractCommand(hitWorldObject))
            {
                AudioManager.Instance.Play("AllyInteractCommand");
                unit.SetUnitState(new HatcheryInteractState(unit, true));
                if (hitWorldObject)
                {
                    hitWorldObject.TargetedByPlayer();
                }
                return;
            }
        }

        if (unit.builder)
        {
            if (unit.builder.CheckToCancelBuildingPlacement())
            {
                return;
            }
            if (unit.builder.CheckToGiveResumeBuildOrder(hitObject))
            {
                unit.SetUnitState(new BuildState(unit, true));
                if (hitWorldObject)
                {
                    hitWorldObject.TargetedByPlayer();
                }
                return;
            }
        }

        if (unit.attacker)
        {
            Collider attackCol = WorkManager.FindEnemyTargetCollider(hitObject, unit.worldObject);
            if (attackCol)
            {
                AudioManager.Instance.Play("AttackCommand", unit.audioSource);
                if (hitWorldObject)
                {
                    hitWorldObject.TargetedByPlayer();
                }
                unit.SetUnitState(new AttackState(unit, true));
                unit.SetColliderFocus(attackCol);
                return;
            }
        }

        if (unit.reviver)
        {
            if (unit.reviver.IssueReviveCommand(hitObject))
            {
                AudioManager.Instance.Play("AllyInteractCommand");
                if (hitWorldObject)
                {
                    hitWorldObject.TargetedByPlayer();
                }
                unit.SetUnitState(new ReviveState(unit, true));
                return;
            }
        }

        if (unit.mover)
        {
            if (hitWorldObject && WorkManager.AreWorldObjectsOnSameTeam(hitWorldObject, unit.worldObject) == true)
            {
                AudioManager.Instance.Play("AllyInteractCommand");
                unit.mover.ClearMovement();
                //unit.mover.SecondaryInteractGameObjectAtDistance (hitObject, 1.2f);
                unit.mover.PrimaryInteractGameObjectAtDistance(hitObject, 1.2f);
                unit.SetUnitState(new MoveState(unit, true));
                return;
            }
            if (hitWorldObject == null)
            {
                //AudioManager.Instance.Play("MoveCommand");
                unit.mover.ClearMovement();
                unit.player.groupFormationManager.DetermineFormationGroup(null, hitPoint);
                unit.SetUnitState(new MoveState(unit, true));
                return;
            }
        }
    }