Ejemplo n.º 1
0
 /// <summary>
 /// A Flag was grabbed or dropped
 /// </summary>
 /// <param name="flag"></param>
 public override void FlagStatusChangedCallback(IGrabable flag)
 {
     if (flag.GetTeam() != soldier.GetTeam())
     {   // Enemy flag
         if (flag.Grabbed())
         {
             foreach (TeamRoleBase b in sneakerTeam1)
             {
                 b.CreateRouteToHomeBase();
             }
             foreach (TeamRoleBase b in sneakerTeam2)
             {
                 b.CreateRouteToHomeBase();
             }
         }
         else
         {   // Lost
             sneakerTeam1.EnemyFlagPosition = flag.GetLocation().ToCell();
             sneakerTeam2.EnemyFlagPosition = flag.GetLocation().ToCell();
             MyRole.CreateRouteToEnemyFlag(); // Everyone
         }
     }
     else
     {   // Own flag
         foreach (TeamRoleBase b in sniperTeam1)
         {
             b.CreateRouteToHomeBase();
         }
         foreach (TeamRoleBase b in sniperTeam2)
         {
             b.CreateRouteToHomeBase();
         }
     }
 }
Ejemplo n.º 2
0
 public void OnTriggerExit(Collider other)
 {
     if (collidingGrabable != null && other.GetComponent <IGrabable>() == collidingGrabable)
     {
         collidingGrabable = null;
     }
 }
Ejemplo n.º 3
0
    private void OnTriggerStay(Collider other)
    {
        if (!_isFire1Pressed)
        {
            return;
        }

        IGrabable grabable = other.GetComponentInParent <IGrabable>();

        if (grabable != null)
        {
            anim.SetBool("Grabbing", true);
            grabable.GetTransform().SetParent(grabedTransform);
            Rigidbody rb = grabable.GetTransform().GetComponent <Rigidbody>();

            rb.useGravity              = false;
            rb.isKinematic             = true;
            rb.velocity                = Vector3.zero;
            rb.angularVelocity         = Vector3.zero;
            rb.transform.localPosition = Vector3.zero;
            rb.transform.localRotation = Quaternion.Euler(Vector3.zero);

            grabable.IsGrabbed = true;
            _grabbing          = true;

            _itemsGrabbed.Add(grabable);
            _isFire1Pressed = false;
        }
    }
Ejemplo n.º 4
0
 private void SetCollidingGrabable(Collider col)
 {
     if (collidingGrabable == null && col.GetComponent <IGrabable>() != null)
     {
         collidingGrabable = col.GetComponent <IGrabable>();
     }
 }
Ejemplo n.º 5
0
    //Grab an Object (IGrabable) w/ a specific or w/ last hand used (hand=null).
    public void grab(GameObject obj, string hand = null)
    {
        //Default hand
        if (hand is null)
        {
            hand = currentHand;
        }

        //Test
        if (!hand_container.ContainsKey(hand))
        {
            Debug.LogError("Invalid key for hands :" + hand);
        }

        IGrabable grabable_obj = obj.GetComponent <IGrabable>();

        if (grabable_obj != null && hand_container[hand] is null && grabable_obj.size == 1) //Empty hand
        {
            // hit_object.transform.SetParent(transform);
            // hit_object.transform.localPosition = new Vector2(-0.2f,0.2f);

            Transform mugSlot = gameObject.transform.Find(hand + "MugSlot");
            grabable_obj.take(mugSlot);
            hand_container[hand] = obj;
        }
Ejemplo n.º 6
0
 public void GrabEvent(IGrabable handler, BaseEventData baseEvent)
 {
     animator.SetTrigger("DogPickup");
     item = handler.getItemOnPickup();
     handler.destroyItem();
     dog.GrabbedItem = item;
 }
Ejemplo n.º 7
0
    public void GrabFlag(IGrabable flag)
    {
        if (flag.GetTeam() == teamType)
        {
            return;
        }

        if ((flag.GetTransform().position - transform.position).magnitude > minFlagRange)
        {
            return;
        }

        if (flag.Grabbed())
        {
            return;
        }

        flag.GetTransform().SetParent(flagHolder);
        flag.GetTransform().localPosition = Vector3.zero;
        flag.GetTransform().localRotation = Quaternion.identity;

        flag.SetGrabbed(true);
        flag.GetTransform().GetComponent <BoxCollider>().enabled = false;

        flagTransform = flag.GetTransform();
    }
Ejemplo n.º 8
0
 private void UpdateFlagsInSight()
 {
     if (InSight(TeamManager.Instance.GetRedTeam().spawnPoint.flag.transform))
     {
         allFlagsInSight.Add(TeamManager.Instance.GetRedTeam().spawnPoint.flag);
         if (teamType == Team.Type.RED)
         {
             friendlyFlagInSight = TeamManager.Instance.GetRedTeam().spawnPoint.flag;
         }
         else
         {
             enemyFlagInSight = TeamManager.Instance.GetRedTeam().spawnPoint.flag;
         }
     }
     if (InSight(TeamManager.Instance.GetBlueTeam().spawnPoint.flag.transform))
     {
         allFlagsInSight.Add(TeamManager.Instance.GetBlueTeam().spawnPoint.flag);
         if (teamType == Team.Type.BLUE)
         {
             friendlyFlagInSight = TeamManager.Instance.GetBlueTeam().spawnPoint.flag;
         }
         else
         {
             enemyFlagInSight = TeamManager.Instance.GetBlueTeam().spawnPoint.flag;
         }
     }
 }
Ejemplo n.º 9
0
    private void GrabObject()
    {
        var go               = (collidingGrabable as MonoBehaviour).gameObject;
        var copy             = Instantiate(go, gameObject.transform.position, go.transform.rotation) as GameObject;
        var networkTransform = copy.GetComponent <NetworkTransform>();
        var networkID        = copy.GetComponent <NetworkIdentity>();

        Destroy(networkTransform);
        Destroy(networkID);

        var grabable = copy.GetComponent <IGrabable>();

        if (grabable != null && grabable.TryGrab(this))
        {
            GrabbedObject     = grabable;
            copiedGrabable    = collidingGrabable;
            collidingGrabable = null;

            copy.transform.SetParent(transform);
        }
        else
        {
            Destroy(copy);
        }
    }
Ejemplo n.º 10
0
    private void OnTriggerStay(Collider other)
    {
        if (CooldownCounter > 0)
        {
            return;
        }

        IGrabable grabable = other.GetComponentInParent <IGrabable>();

        if (grabable != null)
        {
            Debri debri = other.GetComponentInParent <Debri>();
            if (debri.IsGrabbed)
            {
                return;
            }

            GameObject particleGO = Instantiate(IncineratorDestruction, debri.transform.position, Quaternion.identity) as GameObject;
            Destroy(particleGO, 1f);

            CooldownCounter = debri.IncineratorCooldown;
            cooldown.Show(debri.IncineratorCooldown);             // Show cooldown UI
            GameManager.Instance.AddScore(debri.Score);
            GameManager.Instance.DecrementMessValue(grabable.GetMassValue());

            // TODO play with random pitch - and maybe with a particle animation
            SoundEffects.Instance.Play(SfxDestroy, true);

            Destroy(debri.gameObject);
        }
    }
Ejemplo n.º 11
0
    private void OnTriggerEnter(Collider col)
    {
        IGrabable grab = col.GetComponent <IGrabable>();

        if (grab != null && !_grabables.Contains(col.transform))
        {
            _grabables.Add(col.transform);
        }
    }
Ejemplo n.º 12
0
    private void OnTriggerExit(Collider other)
    {
        IGrabable grabable = other.GetComponentInParent <IGrabable>();

        if (grabable != null)
        {
            grabable.SetHighlighted(false);
        }
    }
Ejemplo n.º 13
0
 private void ClearLists()
 {
     enemyFlagInSight    = null;
     friendlyFlagInSight = null;
     allFlagsInSight.Clear();
     allAgentsInSight.Clear();
     friendlyAgentsInSight.Clear();
     enemyAgentsInSight.Clear();
 }
Ejemplo n.º 14
0
    private void OnTriggerExit(Collider col)
    {
        IGrabable grab = col.GetComponent <IGrabable>();

        if (grab != null && _grabables.Contains(col.transform))
        {
            _grabables.Remove(col.transform);
        }
    }
Ejemplo n.º 15
0
    private void SetCollidingGrabable(Collider col)
    {
        var grabable = col.GetComponent <IGrabable>();

        if (collidingGrabable == null && grabable != null && grabable != GrabbedObject && col.tag == "Stick")
        {
            collidingGrabable = col.GetComponent <IGrabable>();
            enteredTime       = Time.time;
        }
    }
    public override void FlagStatusChangedCallback(IGrabable flag)
    {
        // A flag was grabbed or ungrabbed.

        // the other team's flag was grabbed or dropped? Lets go back to our spawn and clear it up
        if (flag.GetTeam() != soldier.GetTeam())
        {
            navAgent.targetCell = GridManager.instance.FindClosestCell(spawnLocation);
        }
    }
Ejemplo n.º 17
0
    void RpcReleaseLocalObject()
    {
        if (_grabbedObject == null)
        {
            return;
        }

        _grabbedObject.OnRelease(_handSync.GetLastVelocity());
        _grabbedObject = null;
    }
 protected void FlagStatusChangedCallback(IGrabable flag)
 {
     if (flag.GetTeam() != agent.GetTeam())
     {
         enemyFlagTaken = !enemyFlagTaken;
     }
     else
     {
         friendlyFlagTaken = !friendlyFlagTaken;
     }
 }
Ejemplo n.º 19
0
    private void ReleaseObject()
    {
        GrabbedObject.TryRelease(this);

        var tr = (GrabbedObject as MonoBehaviour).gameObject.transform;

        tr.SetParent(null);
        tr.position = new Vector3(0, -500, 0);
        Destroy((GrabbedObject as MonoBehaviour).gameObject);
        GrabbedObject = null;
    }
Ejemplo n.º 20
0
 /**
  * Force a grabbable to be ungrabbed even when the user has not released it.
  * Normally used when a control is about to be hidden.
  */
 public void ForceUngrab(IGrabable grabable)
 {
     if (toggleGrabbing.Contains(grabable))
     {
         toggleGrabbing.Remove(grabable);
     }
     if (grabbing.Contains(grabable))
     {
         grabable.Ungrabbed(this);
         grabbing.Remove(grabable);
     }
 }
Ejemplo n.º 21
0
    private void OnTriggerEnter(Collider other)
    {
        IGrabable grabable = other.GetComponentInParent <IGrabable>();

        if (grabable != null)
        {
            grabable.SetHighlighted(true);
        }
        //else
        //{
        //    Debug.Log("not an IGrabable");
        //}
    }
Ejemplo n.º 22
0
    private void ReleaseObject()
    {
        GrabbedObject.TryRelease(this);
        GrabbedObject = null;
        Joint joint = null;

        if (GetComponent <FixedJoint>())
        {
            joint = GetComponent <FixedJoint>();
        }

        if (joint && createdRigidbody)
        {
            Destroy(joint.connectedBody);
        }

        Destroy(joint);
    }
Ejemplo n.º 23
0
    void RpcGrabLocalObject(NetworkInstanceId netId)
    {
        //GameObject localObj = NetworkServer.FindLocalObject(netId);
        GameObject localObj = ClientScene.FindLocalObject(netId);

        if (localObj == null)
        {
            return;
        }

        IGrabable grab = localObj.GetComponent <IGrabable>();

        if (grab == null)
        {
            return;
        }

        _grabbedObject = grab;
        _grabbedObject.OnGrab(this);
    }
Ejemplo n.º 24
0
    private void GrabObject()
    {
        var grabable = collidingGrabable;

        if (grabable != null && grabable.TryGrab(this))
        {
            GrabbedObject = grabable;

            Joint joint;
            joint = AddFixedJoint();

            collidingGrabable = null;

            createdRigidbody = !((GrabbedObject as MonoBehaviour).GetComponent <Rigidbody>());
            if (createdRigidbody)
            {
                (GrabbedObject as MonoBehaviour).gameObject.AddComponent <Rigidbody>();
            }
            joint.connectedBody = (GrabbedObject as MonoBehaviour).GetComponent <Rigidbody>();
        }
    }
Ejemplo n.º 25
0
    void CmdAttemptGrab()
    {
        // TODO: Check and grab
        Transform grabTransform = _grabArea.GetClosestGrabable();

        if (grabTransform == null)
        {
            return;
        }

        IGrabable grab = grabTransform.GetComponent <IGrabable>();

        if (grab == null)
        {
            return;
        }

        _grabbedObject = grab;
        _grabbedObject.OnGrab(this);

        RpcGrabLocalObject(grab.GetNetId());
    }
Ejemplo n.º 26
0
    private void pickup(IGrabable handler, BaseEventData eventData)
    {
        bool      temp;
        Inventory inventory;

        inventory = Inventory.instance;
        Item item;

        item = handler.getItemOnPickup();
        if (inventory != null)
        {
            temp = inventory.addItem(item);
            if (temp)
            {
                handler.destroyItem();
            }
        }
        else
        {
            handler.destroyItem();
        }
    }
Ejemplo n.º 27
0
        public void GiveInstruction(string grappingToolName)
        {
            Apprentice apprentice   = new Apprentice();
            IGrabable  grappingTool = null;

            switch (grappingToolName)
            {
            case "Shovel":
                grappingTool = new Shovel();
                break;

            case "Spade":
                grappingTool = new Spade();
                break;

            default:
                break;
            }

            if (grappingTool != null)
            {
                apprentice.GrabHole(grappingTool);
            }
        }
 protected void GrabFlag(IGrabable flag)
 {
     agent.GrabFlag(flag);
 }
Ejemplo n.º 29
0
 /// <summary>
 /// Grabs the provided flag if the flag is on the other team and we are within distance
 /// </summary>
 /// <param name="flag"></param>
 public void GrabFlag(IGrabable flag)
 {
     _soldier.GrabFlag(flag);
 }
Ejemplo n.º 30
0
 public virtual void FlagStatusChangedCallback(IGrabable flag)
 {
 }