Inheritance: InteractableOnClick
Beispiel #1
0
 public void AddToMap(string mapName, InteractableObject.Parameters item)
 {
     if (!paramSet.ContainsKey(mapName))
     {
         paramSet.Add(mapName, new List<InteractableObject.Parameters>());
     }
     paramSet[mapName].Add(item);
 }
Beispiel #2
0
    private void HandleCollisionEnter(GameObject _other) {
        if (_other.gameObject.GetComponent<InteractableObject>())
		{
            //save the script of _other, in the variable
            interactableObject = _other.gameObject.GetComponent<InteractableObject>();

			if (interactableObject.IsEnabled) {
				if (interactableObject.transform.CompareTag(Tags.shieldPowerUp)) {
					powerUpHandler.AddShield ();
                    if(optionMusic)
                    {
                        audioSource.PlayOneShot(pickupClip);
                    }
					
				} else if (interactableObject.transform.CompareTag(Tags.magnetPowerUp)) {
					powerUpHandler.AddMagnet ();
                    if (optionMusic)
                    {
                        audioSource.PlayOneShot(pickupClip);
                    }
				}

				//save the healthvalue of other
				float healthValue = interactableObject.HealthValue;

				//add the value to the healthbar
				if (healthValue < 0) 
				{
					if(hurtable)
					{
					    healthBar.addValue (healthValue);
                        GetHitEffect();
					}
				} else if (healthValue > 0) { //if the value is positive, increment score
					pickups.IncrementScore ();
					healthBar.addValue (healthValue);

                    //only play water pickup sound when supermodeIsOn is false
                    if (!healthBar.SuperModeIsOn && optionMusic)
                    {
                        audioSource.pitch = Random.Range(0.75F, 1.25F);
                        audioSource.PlayOneShot(pickupClip);
                    }
				}
				//let the _other object know that it has been touched so it can play its animation
				interactableObject.Touched ();
			}
        }

    }
Beispiel #3
0
 public override void Use(PlayerCharacter by, InteractableObject target = null)
 {
     photonView.RPC("TurnOn", RpcTarget.All, !light.gameObject.activeSelf);
 }
Beispiel #4
0
        private void Item_OnInteract(object sender, InteractEventArgs e)
        {
            switch (e.interactionType)
            {
            case InteractionType.DoNothing:
                break;

            case InteractionType.GoTo:
                /// Check if object has a requirement to intereact with
                if (e.inventoryItem != null)
                {
                    /// Check if the item selected by the player is equal to the requierement
                    if (e.inventoryItem.Length == 0 || e.inventoryItem[0] == normalInventory.UseItem)
                    {
                        //inventory.RemoveFromInventory(inventory.UseItem);
                        Transform room;
                        if (TryFindRoom(e.nextDoor, out room))
                        {
                            ChangeRoom(room);
                        }
                        else
                        {
                            Debug.LogError($"There's no room index as {e.nextDoor}, please check name or add it on GameController");
                            return;
                        }
                    }
                }
                /// Go to different Room if the object has no requirements
                else
                {
                    Transform room;

                    if (TryFindRoom(e.nextDoor, out room))
                    {
                        Debug.Log("CHANGE SCENE TO " + e.nextDoor);
                        ChangeRoom(room);
                    }
                    else
                    {
                        Debug.LogError($"There's no room index as {e.nextDoor}, please check name or add it on GameController");
                        return;
                    }
                }
                normalInventory.UseItem = null;
                break;

            case InteractionType.InventoryItem:

                ///HAZLO MEJOR PARA LA OTRA
                for (int i = 0; i < e.inventoryItem.Length; i++)
                {
                    switch (e.inventoryItem[i].type)
                    {
                    case InventoryType.Item:
                        if (normalInventory.AddToInventory(e.inventoryItem[i]))
                        {
                            InteractableObject interactable = (InteractableObject)sender;
                            //Debug.Log($"THE ITEM {e.inventoryItem} has been added to you inventory");
                            Destroy(interactable.gameObject);
                        }
                        break;

                    case InventoryType.ItemWithAudio:
                        if (normalInventory.AddToInventory(e.inventoryItem[i]))
                        {
                            InteractableObject interactable = (InteractableObject)sender;
                            SoundManager.Instance.VoiceController.Play(e.Audio);
                            //Debug.Log($"THE ITEM {e.inventoryItem} has been added to you inventory");
                            Destroy(interactable.gameObject);
                        }
                        break;

                    case InventoryType.Document:
                        if (documentInventory.AddToInventory(e.inventoryItem[i]))
                        {
                            InteractableObject interactable = (InteractableObject)sender;
                            //Debug.Log($"THE ITEM {e.inventoryItem} has been added to you inventory");
                            Destroy(interactable.gameObject);
                        }
                        break;

                    case InventoryType.DocumentWithAudio:
                        if (documentInventory.AddToInventory(e.inventoryItem[i]))
                        {
                            InteractableObject interactable = (InteractableObject)sender;
                            SoundManager.Instance.VoiceController.Play(e.Audio);
                            //Debug.Log($"THE ITEM {e.inventoryItem} has been added to you inventory");
                            Destroy(interactable.gameObject);
                        }
                        break;
                    }
                }

                break;

            case InteractionType.Puzzle:
                /// We have only 1 puzzle so, no checking values here.
                PaddlePuzleController puzzle = (PaddlePuzleController)sender;
                if (puzzle == null)
                {
                    return;
                }

                currentPuzzle = puzzle;
                // Check if the inventory contain the puzzle requirements
                // if so, delete requirements from puzzle and objects from inventory
                if (currentPuzzle.requirements != null && currentPuzzle.requirements.Length > 0)
                {
                    InventoryItemModel[] requirements = new InventoryItemModel[puzzle.requirements.Length];
                    for (int i = 0; i < puzzle.requirements.Length; i++)
                    {
                        requirements[i] = normalInventory.FindByItemName(puzzle.requirements[i].itemName);
                        if (requirements[i] == null)
                        {
                            DisplayText("No Cumples con los Requisitos");
                            return;
                        }
                    }

                    puzzle.requirements = null;
                    //for(int i = 0; i < requirements.Length; i++)
                    //{
                    //    inventory.RemoveFromInventory(requirements[i]);
                    //}
                    requirements = null;
                }

                /// Open the puzzle
                currentPuzzle.GetComponent <Collider2D>().enabled = false;
                currentPuzzle.OnPuzzleConfirm += Puzzle_OnPuzzleConfirm;
                currentPuzzle.OnPuzzleClose   += Puzzle_OnPuzzleClose;
                currentPuzzle.Display();
                break;

            case InteractionType.Victory:
                Victory();
                break;
            }
        }
Beispiel #5
0
 public void AddInteractableObjectListener(InteractableObject item)
 {
     item.OnInteract += Item_OnInteract;
 }
Beispiel #6
0
 public EquipSlots(InteractableObject equipObject, string equipSlotName)
 {
     this.EquipObject   = equipObject;
     this.EquipSlotName = equipSlotName;
 }
 void OnTriggerStay(Collider other)
 {
     if(other.isTrigger == false)
     {
         if (other.tag == Tags.interactable)
         {
             targetedInteractible = other.GetComponent<InteractableObject>();
             //TODO: Trigger a graphical effect for the highlighted object
         }
     }
 }
 //Setup before going into this state. Called by another state
 public void Setup(PlayerState state, InteractableObject interactable)
 {
     this.dialogue = interactable.GetCorrespondingDialogue();
     Debug.Log("Setup: " + this.dialogue.sentences[0]);
     this.prevState = state;
 }
Beispiel #9
0
    // Determines the event upon gameobject selection
    public void PerformEvent(GameObject gameObject)
    {
        Debug.Log("Event Manager Logic");

        // Check if object is interactable
        InteractableObject obj = gameObject.GetComponent(typeof(InteractableObject)) as InteractableObject;

        if (obj != null)   // Object is interactable

        {
            if (obj.canPickUp)   // Object is pickupable

            {
                if (!player.HasItem(obj))   // Player does not have the item

                // Pick up the item and add to inventory
                {
                    player.PickUpItem(obj);

                    // Make gameobject disappear from scene
                    UnityEngine.Object.Destroy(gameObject);
                }
                else     // Player already has the item

                {
                    Debug.Log("Player already has an item of this type. Something went wrong!");
                }
            }
            else     // Cannot pick up object

            // Object types are enumerated in InteractableScript.cs
            {
                switch (obj.type)
                {
                case ObjectType.TeddyBear:

                    OpenableObject teddy = gameObject.GetComponent(typeof(OpenableObject)) as OpenableObject;

                    if (!teddy.isOpen)
                    {
                        if (!ReferenceEquals(player.itemHeld, null))         // Player is holding an item

                        {
                            if (player.itemHeld.type == ObjectType.Scissors)
                            {
                                Debug.Log("Teddy RIPPED APART");

                                // TODO!!
                                // Change teddy sprite with teddy.openSprite

                                // Unlock vent and open it
                                teddy.isOpen = true;

                                // Remove scissors from player inventory
                                player.RemoveItem(player.itemHeld);

                                // FIND ITEM IN TEDDY BEAR? Add USB to scene??
                            }
                            else
                            {
                                Debug.Log("Incorrect item used on teddy bear");
                                // TODO -- Popup telling user that he or she is a dumbass using the wrong item
                            }
                        }
                        else         // Player is not holding an item
                        {
                            Debug.Log("Teddy Bear clicked with no item");
                            // TODO -- popup telling user that it needs something to open or something
                        }
                    }

                    break;

                case ObjectType.Bed:
                    Debug.Log("Bed Clicked");

                    // Bed itself is uninteresting; nothing happens

                    break;

                // EXAMPLE!!!
                case ObjectType.Vent:

                    Debug.Log("Vent Clicked");

                    // Vent is an openable object and should have the the openable object script; if not TODO!! (throw error)
                    OpenableObject vent = gameObject.GetComponent(typeof(OpenableObject)) as OpenableObject;

                    if (!vent.isOpen)
                    {
                        if (!ReferenceEquals(player.itemHeld, null))         // Player is holding an item

                        {
                            if (player.itemHeld.type == ObjectType.Screwdriver)
                            {
                                Debug.Log("Vent Unhinged");

                                // Change vent sprite
                                vent.ChangeSprite(vent.openedSprite);

                                // Unlock vent and open it
                                vent.isOpen = true;

                                // Remove screwdriver from player inventory
                                player.RemoveItem(player.itemHeld);

                                // Make matches visible
                                GameObject matches = ObjectDB.Instance.GetObject(ObjectType.Matches);
                                if (matches == null)
                                {
                                    Debug.Log("Error; matches not on scene");
                                    return;
                                }
                                matches.SetActive(true);
                            }
                            else
                            {
                                Debug.Log("Incorrect item used on vent");
                                // TODO -- Popup telling user that he or she is a dumbass using the wrong item
                            }
                        }
                        else         // Player is not holding an item
                        {
                            Debug.Log("Vent clicked with no item");
                            // TODO -- popup telling user that it needs something to open or something
                        }
                    }
                    else         // Vent is already unlocked
                    {
                        Debug.Log("Vent already open");
                        // If item is in the vent... it should be able to handle itself being clicked
                        // DO NOTHING
                    }

                    break;

                case ObjectType.DeskDrawer:
                    Debug.Log("DeskDrawer Clicked");

                    OpenableObject deskDrawer = gameObject.GetComponent(typeof(OpenableObject)) as OpenableObject;

                    if (!deskDrawer.isOpen)
                    {
                        Debug.Log("Drawer opened");

                        deskDrawer.isOpen = true;
                        // TODO change sprite
                    }
                    else
                    {
                        Debug.Log("Drawer closed");

                        deskDrawer.isOpen = false;
                        // TODO change sprite
                    }

                    break;

                case ObjectType.Computer:
                    Debug.Log("Computer Clicked");

                    // todo

                    break;

                case ObjectType.DeskDrawer1:
                    Debug.Log("DeskDrawer1 Clicked");

                    OpenableObject deskDrawer1 = gameObject.GetComponent(typeof(OpenableObject)) as OpenableObject;

                    if (!deskDrawer1.isOpen)
                    {
                        Debug.Log("Drawer1 opened");

                        deskDrawer1.isOpen = true;
                        // TODO change sprite
                    }
                    else
                    {
                        Debug.Log("Drawer1 closed");

                        deskDrawer1.isOpen = false;
                        // TODO change sprite
                    }
                    break;

                case ObjectType.DeskDrawer2:
                    Debug.Log("DeskDrawer2 Clicked");

                    OpenableObject deskDrawer2 = gameObject.GetComponent(typeof(OpenableObject)) as OpenableObject;

                    if (!deskDrawer2.isOpen)
                    {
                        Debug.Log("Drawer2 opened");

                        deskDrawer2.isOpen = true;
                        // TODO change sprite
                    }
                    else
                    {
                        Debug.Log("Drawer2 closed");

                        deskDrawer2.isOpen = false;
                        // TODO change sprite
                    }

                    break;

                case ObjectType.DeskDrawer3:
                    Debug.Log("DeskDrawer3 Clicked");

                    // TODO --- lock on the deskdrawer itself

                    break;

                case ObjectType.Trunk:
                    Debug.Log("Trunk Clicked");

                    LockableObject trunk = gameObject.GetComponent(typeof(LockableObject)) as LockableObject;

                    if (trunk.isLocked)
                    {
                        if (!ReferenceEquals(player.itemHeld, null))         // Player is holding an item

                        {
                            if (player.itemHeld.type == ObjectType.TrunkKey)
                            {
                                Debug.Log("Trunk unlocked");

                                // TODO!! Potentially change sprite

                                // Unlock trunk
                                trunk.isLocked = false;

                                // Remove trunk key from inventory
                                player.RemoveItem(player.itemHeld);
                            }
                            else
                            {
                                Debug.Log("Incorrect item used on trunk");
                                // TODO -- Popup telling user that he or she is a dumbass using the wrong item
                            }
                        }
                        else         // Player is not holding an item
                        {
                            Debug.Log("Trunk clicked with no item");
                            // TODO -- popup telling user that it needs something to open or something
                        }
                    }
                    else
                    {
                        // Normal drawer opening stuff
                        if (!trunk.isOpen)
                        {
                            Debug.Log("Trunk opened");

                            trunk.isOpen = true;
                            // TODO change sprite
                        }
                        else
                        {
                            Debug.Log("Trunk closed");

                            trunk.isOpen = false;
                            // TODO change sprite
                        }
                    }

                    break;

                case ObjectType.ExitDoor:
                    Debug.Log("Exit Door Clicked");

                    LockableObject exitDoor = gameObject.GetComponent(typeof(LockableObject)) as LockableObject;

                    if (player.itemHeld.type == ObjectType.KeyCard)
                    {
                        Debug.Log("Unlocked exit door");

                        // WIN GAME LMAO
                    }
                    else
                    {
                        Debug.Log("Exit Door clicked (not correct item or no item at all)");
                    }

                    break;

                case ObjectType.Nightstand:
                    Debug.Log("NightStand Clicked");

                    LockableObject nightstand = gameObject.GetComponent(typeof(LockableObject)) as LockableObject;

                    if (nightstand.isLocked)
                    {
                        if (!ReferenceEquals(player.itemHeld, null))         // Player is holding an item

                        {
                            if (player.itemHeld.type == ObjectType.NightstandKey)
                            {
                                Debug.Log("Nightstand unlocked");

                                // TODO!! Potentially change sprite

                                // Unlock nightstand
                                nightstand.isLocked = false;

                                // Remove nightstand key from inventory
                                player.RemoveItem(player.itemHeld);
                            }
                            else
                            {
                                Debug.Log("Incorrect item used on nightstand");
                                // TODO -- Popup telling user that he or she is a dumbass using the wrong item
                            }
                        }
                        else         // Player is not holding an item
                        {
                            Debug.Log("Nightstand clicked with no item");
                            // TODO -- popup telling user that it needs something to open or something
                        }
                    }
                    else
                    {
                        // Normal nightstand opening stuff
                        if (!nightstand.isOpen)
                        {
                            Debug.Log("Drawer3 opened");

                            nightstand.isOpen = true;
                            // TODO change sprite
                        }
                        else
                        {
                            Debug.Log("Drawer3 closed");

                            nightstand.isOpen = false;
                            // TODO change sprite
                        }
                    }

                    break;

                case ObjectType.Plant:
                    Debug.Log("Plant Clicked");

                    // TODO

                    break;

                case ObjectType.Candle:
                    Debug.Log("Candle Clicked");

                    MeltableObject candle = gameObject.GetComponent(typeof(MeltableObject)) as MeltableObject;

                    if (!candle.isMelted)
                    {
                        if (!ReferenceEquals(player.itemHeld, null))          // Player is holding an item

                        {
                            if (player.itemHeld.type == ObjectType.Matches)
                            {
                                Debug.Log("Candle melted");

                                // TODO!! change sprite

                                // Unlock deskDrawer
                                candle.isMelted = true;

                                // Remove matches from inventory
                                player.RemoveItem(player.itemHeld);
                            }
                            else
                            {
                                Debug.Log("Incorrect item used on candle");
                                // TODO -- Popup telling user that he or she is a dumbass using the wrong item
                            }
                        }
                        else         // Player is not holding an item
                        {
                            Debug.Log("Candle clicked with no item");
                            // TODO -- popup telling user that it needs something to open or something
                        }
                    }
                    else
                    {
                        Debug.Log("Candle already melted");
                        // DO NOTHING
                    }

                    break;

                default:
                    Debug.Log("No code for item clicked. Ensure that if the item is clickable, its bool for clickable is TRUE");
                    break;
                }
            }
        }
        else
        {
            Debug.Log("Non-interactable game object clicked.");
        }
    }
Beispiel #10
0
    /*
    public void AddQuest(Quest q)
    {
        AddQuest(q.NPC_ID, q.dialogue_in_progress, q.dialogue_change, q.requirement, q.changeBool, q.required_item, q.questName);
        PlayerData pl = GameManager.instance.playerData;
        pl.RegisterQuest(q.questName);
    }
    */
    public void CheckQuest(InteractableObject obj)
    {
        //Debug.Log(Qlist.Count);
        // Iterate thorugh all the quests in the quest list
        for (int i = 0; i < Qlist.Count; i++)
        {
            QClass temp = (QClass)Qlist[i];
            bool correctTime = false;
            for (int j = 0; j < temp.timeBlocks.Count; j++ )
            {
                if(temp.timeBlocks[j] == 0)
                {
                    correctTime=true;
                }
                if(temp.timeBlocks[j] == GameManager.instance.GetTimeAsInt())
                {
                    correctTime=true;
                }
            }

                if (obj.iD == temp.NPC && correctTime)
                {
                    PlayerData pl = GameManager.instance.playerData;
                    if (temp.completed)
                    {
                        // IF the quest is already finished in a scene
                        // This should be redundant

                    }

                    else if (pl.CheckQuest(temp.questName))
                    {
                        // If the player data says the quest is finished, do nothing
                    }
                    else
                    {
                        InteractableObject io = obj.GetComponent<InteractableObject>();

                        DayData dd = GameManager.instance.dayData;

                        //If the requirement is not yet registered
                        pl.RegisterData(temp.requirement);

                        // If requirements are met
                        if (pl.GetBool(temp.requirement))
                        {
                            // Trigger the quest
                            if (temp.triggered == false)
                            {
                                temp.triggered = true;
                                break;
                            }
                            else
                            {
                                Debug.Log("Dialogue in progress");
                               // io.dialogueIDSingle = temp.dialogue_in_progress;
                            }
                            if (temp.itemTurnedIn == false)
                            {
                                for (int j = 0; j < GameManager.instance.dayData.ItemAmount; j++)
                                {
                                    if (GameManager.instance.dayData.Inventory[j] == null)
                                    {
                                    }
                                    else if (GameManager.instance.dayData.Inventory[j].Name == temp.requiredItem)
                                    {
                                        Debug.Log("Have Item");
                                        GameManager.instance.dayData.Inventory[j] = null;
                                        GameManager.instance.dayData.ItemAmount--;
                                        temp.itemTurnedIn = true;
                                        break;
                                    }
                                }
                            }
                        }

                        if (temp.itemTurnedIn)
                        {
                            io.dialogueIDSingle = temp.dialogue_change;
                            pl.SetBool(temp.changeBool);
                            pl.FinishQuest(temp.questName);
                            temp.completed = true;
                            Debug.Log("QuestCompleted");
                            if (temp.questName == "ReturnDogToRae")
                            {
                                Application.LoadLevel("Outcome_Screen");
                            }
                        }

                    }
                }
        }
    }
Beispiel #11
0
 public void SetInteractionObject(InteractableObject interactionObject)
 {
     InteractionObject = interactionObject;
     CanInteract       = InteractionObject != null;
 }
Beispiel #12
0
 // Start is called before the first frame update
 void Start()
 {
     _target = null;
 }
Beispiel #13
0
    protected override void OnUpdate()
    {
        if (slashDuration > 0)
        {
            slashDuration -= Time.deltaTime;
        }
        else
        {
            if (slashDuration < 0)
            {
                ManagesPlayer.instance.getAnimator().SetBool("slash", false);
                walkDelay = ManagesPlayer.instance.settings.afterAttackFreeze;
            }

            slashDuration = 0;
        }

        if (slashDuration > 0 && attackCheckDelay == 0)
        {
            int count = ManagesPlayer.instance.getHitBox().Cast(Vector2.zero, attackContactFilter, attackHitBuffer);

            for (int i = 0; i < count; i++)
            {
                if (attackHitBuffer[i].transform.gameObject.layer == 14)
                {
                    InteractableObject interaction = attackHitBuffer[i].transform.gameObject.GetComponent <InteractableObject>();

                    if (interaction != null)
                    {
                        interaction.hit();
                    }
                }
            }
        }

        if (attackCheckDelay > 0)
        {
            attackCheckDelay -= Time.deltaTime;
        }
        else
        {
            attackCheckDelay = 0;
        }


        if (walkDelay > 0)
        {
            walkDelay -= Time.deltaTime;
        }
        else
        {
            walkDelay = 0;
        }

        if (ManagesPlayer.instance.transformed() && ManagesPlayer.instance.isAlive())
        {
            if (slashDuration == 0 && Input.GetAxis("Attack") > 0)
            {
                ParticleSystem.ShapeModule shape = ManagesPlayer.instance.getIllness().shape;

                if (ManagesPlayer.instance.values.illness == 1)
                {
                    shape.randomPositionAmount = 1;
                }
                else if (ManagesPlayer.instance.values.illness == 2)
                {
                    shape.randomPositionAmount = 1.2f;
                }
                else if (ManagesPlayer.instance.values.illness == 3)
                {
                    shape.randomPositionAmount = 1.5f;
                }
                else if (ManagesPlayer.instance.values.illness == 4)
                {
                    shape.randomPositionAmount = 2;
                }

                walkDelay = 0;
                ManagesPlayer.instance.getHitBox().transform.position = this.transform.position;

                int currentSlash = ManagesPlayer.instance.settings.currentSlash;

                ManagesPlayer.instance.getAnimator().SetBool("slash", true);
                ManagesPlayer.instance.getAnimator().SetInteger("slashType",
                                                                currentSlash);

                if (currentSlash == 0)
                {
                    ManagesGame.instance.playSound(ManagesGame.instance.slash_2, 0.4f);
                }
                else
                {
                    ManagesGame.instance.playSound(ManagesGame.instance.slash_3, 0.4f);
                }

                slashDuration  = 0;
                slashDuration += ManagesPlayer.instance.settings.slashDuration[currentSlash];

                attackCheckDelay = slashDuration / 4;

                if (currentSlash + 1 < ManagesPlayer.instance.settings.slashDuration.Length)
                {
                    ManagesPlayer.instance.settings.currentSlash++;
                }
                else
                {
                    ManagesPlayer.instance.settings.currentSlash = 0;
                }
            }
        }
    }
Beispiel #14
0
 private void LoadParameters(InteractableObject IO, InteractableObject.Parameters parameter)
 {
     //InteractableObject io = npc.interactableObject.GetComponent<InteractableObject>();
     IO.dialogueIDType = parameter.dialogueIDType;
     IO.dialogueIDSingle = parameter.dialogueIDSingle;
     IO.dialogueIDMin = parameter.dialogueIDMin;
     IO.dialogueIDMax = parameter.dialogueIDMax;
     IO.dialogueIDMulti = parameter.dialogueIDMulti;
     NPC npc = IO.transform.GetComponent<NPC>();
     if (npc != null)
     {
         npc.characterAnimations.AnimationState = parameter.startingAnimationState;
         npc.characterAnimations.animationSpeed = parameter.animationSpeed;
         npc.wanderDistanceX = parameter.wanderDistanceX;
         npc.wanderDirectionX = parameter.wanderDirectionX;
         npc.wanderDistanceY = parameter.wanderDistanceY;
         npc.wanderDirectionY = parameter.wanderDirectionY;
         npc.speed = parameter.speed;
         if (!parameter.turnOnInteract)
         {
             npc.characterAnimations.facePlayerOnInteraction = false;
         }
     }
 }
 // Use this for initialization
 void Start()
 {
     myInteraction = GetComponent <InteractableObject> ();
 }
Beispiel #16
0
 void OnTriggerExit(Collider other)
 {
     interactableObject = null;
 }
    void InteractWithObj(GameObject _targetObj, InteractableObject _targetType)
    {
        switch (_targetType)
        {
            case InteractableObject.Door:
                // This gets the Door Trigger, who is a child of the actual door.
                avatarNetBhvr.CmdDoor(_targetObj.transform.parent.gameObject);
                break;

            case InteractableObject.Player:
                if (GetComponent<AvatarController>().isHidden) break;
                if (_targetObj.GetComponent<AvatarController>().Disabled)
                {
                    Debug.Log("Revive!");
                    // If player is disabled revive. Amount is rounded down
                    int ReviveAmount = Mathf.FloorToInt(_targetObj.GetComponent<Health>().BaseHealth * ReviveHealPrcnt);
                    avatarNetBhvr.CmdAssignDamage(_targetObj, -ReviveAmount);
                }
                break;

            case InteractableObject.Light:
                if (GetComponent<AvatarController>().isHidden) break;

                // Get light component
                var lightScr = _targetObj.GetComponent<LightController>();

                if (lightScr == null)
                {
                    Debug.Log("Light does no have LightController script");
                    break;
                }

                // Change light status acordingly
                if (lightScr.CurrentStatus == LightController.LightStatus.On)
                {
                    avatarNetBhvr.CmdChangeLightStatus(lightScr.gameObject, LightController.LightStatus.Dimmed);
                }
                else if ((lightScr.CurrentStatus == LightController.LightStatus.Dimmed) || lightScr.CurrentStatus == LightController.LightStatus.Off)
                {
                    avatarNetBhvr.CmdChangeLightStatus(lightScr.gameObject, LightController.LightStatus.On);
                }
                break;

            case InteractableObject.HidingSpot:
                Debug.Log("Interacting with a HidingSpot!");

                var hideObj = Physics2D.OverlapCircle(transform.position, 3, 1 << LayerMask.NameToLayer("HideSpot"));

                if (hideObj != null && !hideObj.GetComponentInParent<HidingSpot>().isOccupied && !isHiding)
                {
                    isHiding = true;
                    //hideObj.GetComponentInParent<HidingSpot>().CmdSetOccupiedStatus(true);
                    //hide the explorer in all views
                    avatarNetBhvr.CmdHideExplorer(gameObject, hideObj.transform.parent.gameObject);
                    break;

                }
                if (isHiding)
                {
                    isHiding = false;
                    //hideObj.GetComponentInParent<HidingSpot>().CmdSetOccupiedStatus(false);
                    //show the explorer in all views
                    avatarNetBhvr.CmdShowExplorer(gameObject, hideObj.transform.parent.gameObject);

                }
                break;

            case InteractableObject.Goal:
                if (GetComponent<AvatarController>().isHidden) break;
                Debug.Log("Interacting with a Goal!");
                break;

            default:
                break;
        }
    }
Beispiel #18
0
 public override void SetParent(InteractableObject _parent)
 {
     base.SetParent(_parent);
 }
 public void SetObj(InteractableObject obj)
 {
     this.obj = obj;
 }
Beispiel #20
0
    void Update()
    {
        if (controller == null)
        {
            Debug.Log("Controller not initialized");
            return;
        }
        if (Jump)
        {
            if (controller.GetPressUp(touchPad))
            {
                /*
                 * Vector2 dir = controller.GetAxis();
                 * float rotation = -head.GetComponent<Transform>().rotation.eulerAngles.y;
                 * float sin = Mathf.Sin(rotation * Mathf.Deg2Rad);
                 * float cos = Mathf.Cos(rotation * Mathf.Deg2Rad);
                 * float tx = dir.x;
                 * float ty = dir.y;
                 *
                 * dir.x = (cos * tx) - (sin * ty);
                 * dir.y = (sin * tx) + (cos * ty);
                 *
                 * if (dir.x < -0.2)
                 * {
                 *  if (dir.y < -0.2)
                 *      cam2.Move("Backward and Left");
                 *  else if (dir.y > 0.2)
                 *      cam2.Move("Forward and Left");
                 *  else
                 *      cam2.Move("Left");
                 *
                 * }
                 * else if (dir.x > 0.2)
                 * {
                 *  if (dir.y < -0.2)
                 *      cam2.Move("Backward and Right");
                 *  else if (dir.y > 0.2)
                 *      cam2.Move("Forward and Right");
                 *  else
                 *      cam2.Move("Right");
                 *
                 * }
                 * else
                 * {
                 *  if (dir.y < -0.2)
                 *      cam2.Move("Backward");
                 *  else if (dir.y > 0.2)
                 *      cam2.Move("Forward");
                 *
                 * }
                 */
            }
        }
        else
        {
            if (controller.GetTouch(touchPad))
            {
                /*
                 * Vector2 dir = controller.GetAxis();
                 * float rotation = -head.GetComponent<Transform>().rotation.eulerAngles.y;
                 * float sin = Mathf.Sin(rotation * Mathf.Deg2Rad);
                 * float cos = Mathf.Cos(rotation * Mathf.Deg2Rad);
                 * float tx = dir.x;
                 * float ty = dir.y;
                 *
                 * dir.x = (cos * tx) - (sin * ty);
                 * dir.y = (sin * tx) + (cos * ty);
                 *
                 * if (dir.x < -0.2)
                 * {
                 *  if (dir.y < -0.2)
                 *      cam.Move("Backward and Left");
                 *  else if (dir.y > 0.2)
                 *      cam.Move("Forward and Left");
                 *  else
                 *      cam.Move("Left");
                 *
                 * }
                 * else if (dir.x > 0.2)
                 * {
                 *  if (dir.y < -0.2)
                 *      cam.Move("Backward and Right");
                 *  else if (dir.y > 0.2)
                 *      cam.Move("Forward and Right");
                 *  else
                 *      cam.Move("Right");
                 *
                 * }
                 * else
                 * {
                 *  if (dir.y < -0.2)
                 *      cam.Move("Backward");
                 *  else if (dir.y > 0.2)
                 *      cam.Move("Forward");
                 *
                 * }
                 */
            }
        }

        if (controller.GetPressDown(triggerButton))
        {
            Debug.Log("trigger");

            /*
             * if (pickUp)
             * {
             *  interacting.SetActive(false);
             *  PlayerController.count++;
             * }
             */

            float minDistance = float.MaxValue;
            float distance;

            foreach (InteractableObject item in objectsHoveringOver)
            {
                distance = (item.transform.position - transform.position).sqrMagnitude;

                if (distance < minDistance)
                {
                    minDistance   = distance;
                    closestObject = item;
                }
            }

            interactingObject = closestObject;
            closestObject     = null;

            if (interactingObject)
            {
                if (interactingObject.IsInteracting())
                {
                    Debug.Log("Special Dropped");
                    interactingObject.EndInteraction(this);
                }

                Debug.Log("Grabbed");
                interactingObject.BeginInteraction(this);
            }
        }

        if (controller.GetPressUp(triggerButton) && interactingObject != null)
        {
            Debug.Log("Dropped");
            interactingObject.EndInteraction(this);
        }

        if (controller.GetPressDown(gripButton) && (Data.crouched == Data.UNCROUCHED))
        {
            //player.GetComponent<Transform>().Translate(new Vector3(0, -100, 0) * Time.deltaTime);
            Vector3 temp = player.GetComponent <Transform>().position;

            temp.y = (temp.y - 50) * Time.deltaTime;

            player.GetComponent <Transform>().position = temp;
            Data.crouched = Data.CROUCHED;
        }

        if (controller.GetPressUp(gripButton) && (Data.crouched == Data.CROUCHED))
        {
            //player.GetComponent<Transform>().Translate(new Vector3(0, 100, 0) * Time.deltaTime);
            Vector3 temp = player.GetComponent <Transform>().position;

            temp.y = (temp.y + 50) * Time.deltaTime;

            player.GetComponent <Transform>().position = temp;
            Data.crouched = Data.UNCROUCHED;
        }
    }
Beispiel #21
0
 void Use(InteractableObject iObj)
 {
     iObj.Use();
 }
 public InteractableObjectMapCell(InteractableObject interactableObject)
 {
     InteractableObject = interactableObject;
 }
Beispiel #23
0
 /// <summary>
 /// Resetea las varibles del comportamiento del monje (llamar al terminar comportamientos)
 /// </summary>
 public void ResetBehaviourVars()
 {
     _currentCoroutine = null;
     _currentOrderGO = null;
     _currentOrderGOComponent = null;
 }
Beispiel #24
0
 public string Talk(InteractableObject item)
 {
     return("I can't talk with that");
 }
Beispiel #25
0
 void Start()
 {
     touchedObject = null;
 }
Beispiel #26
0
 public void InfoDetails(InteractableObject interactableFromScene)
 {
     print(interactableFromScene.interactions[0]);
 }
Beispiel #27
0
 public void RemoveInteractableObjectListener(InteractableObject item)
 {
     item.OnInteract -= Item_OnInteract;
 }
Beispiel #28
0
 public void UseItem(InteractableObject interactableFromScene)
 {
     print(interactableFromScene.interactions[1]);
 }
 public void SetObj(InteractableObject obj)
 {
     this.obj = obj;
 }
Beispiel #30
0
 public void TakeObject(InteractableObject interactableFromScene)
 {
     print(interactableFromScene.interactions[2]);
 }
Beispiel #31
0
 protected override void Interact(InteractableObject hitObject)
 {
     base.Interact(hitObject);
     PlaySound(hitObject);
     animator.SetTrigger("enemyAttack");
 }
Beispiel #32
0
 public static void AddInteractableObject(InteractableObject @object)
 {
     _interactableObjects.Add(@object);
 }
Beispiel #33
0
    protected void OnHit(RaycastHit hitInfo, InteractableObject interactable)
    {
        UpdateHighlight(interactable);

        if (IsClickDown())
        {
            interacting = interactable.OnInteract(this);

            if (interacting)
            {
                interactingObject = interactable;

                interactable.OffHighlight(this); // Dehighlight the object when it's interacted with
                highlightedObject = null;
            }
        }
    }
Beispiel #34
0
    protected void UpdateHighlight(InteractableObject interactable)
    {
        if (interactable == null) // DeHighlight when not pointing at an object
        {
            if (highlightedObject != null)
            {
                highlightedObject.OffHighlight(this);
                highlightedObject = null;
            }
        }
        else if (!interactable.Equals(highlightedObject))
        {
            if (highlightedObject != null)
            {
                highlightedObject.OffHighlight(this);
            }

            highlightedObject = interactable;
            highlightedObject.OnHighlight(this);
        }
    }
 private void OnTriggerEnter(Collider other)
 {
     interactableObject = other.GetComponent <InteractableObject>();
 }
    // Start is called before the first frame update
    void Start()
    {
        interactionHolder = this.gameObject.GetComponent <InteractableObject>(); // set the interactionHolder

        numTriggers = 0;
    }
 void Awake()
 {
     InteractPlayer.OnChange += HitEvent;
     interact = gameObject.GetComponent<InteractableObject>();
     interact.Complete += InteractableComplete;
 }
Beispiel #38
0
 public void playerTakeItem(InteractableObject item)
 {
     playerStats.AddStatBonusWhenTake(item.stats);
 }
    // Update is called once per frame
    void Update()
    {
        /*
         * Capturing of the Camera
         */
        if (_captureCursor) {
            Screen.lockCursor = true;
            for (int i = 0; i < mouseLooks.Length; i++)
                mouseLooks[i].enabled = Screen.lockCursor;
        } else {
            Screen.lockCursor = false;
            for (int i = 0; i < mouseLooks.Length; i++)
                mouseLooks[i].enabled = false;
        }

        /*
         * Sense Controls
         */
        if (Input.GetButtonDown("Toggle Slot")) {
            currentSlot = (currentSlot == 1)? 0 : 1;
            WorldAudioManager.Instance.PlaySwitchSlotSense();
        }

        if (Input.GetButtonDown("Sight")) {
            SetSenseToCurrentSlot(SenseController.SenseType.Sight);
        }

        if (Input.GetButtonDown("Hearing")) {
            SetSenseToCurrentSlot(SenseController.SenseType.Hearing);
        }

        if (Input.GetButtonDown("Scent")) {
            SetSenseToCurrentSlot(SenseController.SenseType.Scent);
        }

        if (Input.GetButtonDown("Feeling")) {
            SetSenseToCurrentSlot(SenseController.SenseType.Feeling);
        }

        if(Input.GetButtonDown("Reset Game")) {
            Application.LoadLevel(0);
        }

        if (Input.GetButtonDown("Reset Level")) {
            Application.LoadLevel(Application.loadedLevel);
        }

        if (Input.GetButtonDown("Interaction")) {
            if(IsSenseActive(SenseController.SenseType.Feeling)) {
                if (isCarrying) {
                    isCarrying = false;
                }
                RaycastHit hit;
                Transform sightCamera = transform.root.FindChild("SenseGroup").FindChild("SightCamera");
                //Debug.DrawRay(sightCamera.position, sightCamera.TransformDirection(Vector3.forward));
                if(carryingObject == null) {
                    //Debug.DrawRay(sightCamera.position, sightCamera.TransformDirection(Vector3.forward));
                    if(Physics.Raycast(sightCamera.transform.position, sightCamera.transform.TransformDirection(Vector3.forward), out hit, 2)) {
                        carryingObject = hit.transform.root.gameObject.GetComponentInChildren<InteractableObject>();
                        if (carryingObject != null) {
                            if(carryingObject.canCarry) {
                                if(carryingObject != null) {
                                    isCarrying = !isCarrying;
                                    carryingObject.transform.parent = PlayerController.Instance.transform;
                                    carryingObject.collider.enabled = false;
                                    carryingObject.rigidbody.useGravity = false;
                                    Debug.Log ("hurrdurr");
                                }
                            } else if(carryingObject.canActivate) {
                                carryingObject.activate();
                            }
                        }
                    }
                }

                else if (!isCarrying){
                    Debug.Log ("drop");
                    //carryingObject.rigidbody.useGravity = true;
                    if(carryingObject != null) {
                        carryingObject.collider.enabled = true;
                        carryingObject.rigidbody.useGravity = true;
                        carryingObject.transform.parent = null;
                        carryingObject.rigidbody.WakeUp();
                        carryingObject = null;
                    } else {
                        Debug.Log("YIURSD");
                    }
                }
            }
        }

        RaycastHit echoHit = new RaycastHit();

        if(Application.HasUserAuthorization(UserAuthorization.Microphone) || !Application.isWebPlayer) {
            if(Input.GetButtonDown("Shout")) {
                if(IsSenseActive(SenseController.SenseType.Hearing)) {
                    Transform sightCamera = transform.root.FindChild("SenseGroup").FindChild("SightCamera");

                    Physics.Raycast(sightCamera.position, sightCamera.TransformDirection(Vector3.forward), out echoHit, 100f);
                    echoDistance = echoHit.distance;

                    audio.clip = Microphone.Start("", false, 99, AudioSettings.outputSampleRate);
                }
            }

            if(Input.GetButtonUp("Shout")) {
                if(IsSenseActive(SenseController.SenseType.Hearing)) {
                    Microphone.End("");
                    Debug.Log(echoDistance);
                    voiceClip = AudioClip.Create("MyVoice", 44100, 1, 44100, true, false);
                    AudioEchoFilter echoFilter = GameObject.Find("Player").GetComponentInChildren<AudioEchoFilter>();

                    if(echoDistance >= 10f && echoDistance <= 15f) {
                        echoFilter.enabled = true;
                        echoFilter.wetMix = 0.1f;
                        echoFilter.decayRatio = 0.1f;
                    } else if(echoDistance > 15f && echoDistance <= 20f) {
                        echoFilter.enabled = true;
                        echoFilter.wetMix = 0.1f;
                        echoFilter.decayRatio = 0.4f;
                    } else if(echoDistance > 20f) {
                        echoFilter.enabled = true;
                        echoFilter.wetMix = 0.1f;
                        echoFilter.decayRatio = 0.75f;
                    } else {
                        echoFilter.enabled = false;
                    }

                    float[] samples = new float[44100];
                    audio.clip.GetData(samples, 0);

                    voiceClip.SetData(samples, 0);
                    audio.clip = voiceClip;

                    audio.PlayOneShot(voiceClip);

                    echoDistance = 0f;
                }
            }
        }

        if (!killed) {
            _checkDeath();
        }
    }
Beispiel #40
0
        // Update is called once per frame
        void Update()
        {
            Vector3 pos = transform.position;

            if (m_IsKO)
            {
                m_KOTimer += Time.deltaTime;
                if (m_KOTimer > 3.0f)
                {
                    GoToRespawn();
                }

                return;
            }

            //The update need to run, so we can check the health here.
            //Another method would be to add a callback in the CharacterData that get called
            //when health reach 0, and this class register to the callback in Start
            //(see CharacterData.OnDamage for an example)
            if (m_CharacterData.Stats.CurrentHealth == 0)
            {
                m_Animator.SetTrigger(m_FaintParamID);

                m_Agent.isStopped = true;
                m_Agent.ResetPath();
                m_IsKO    = true;
                m_KOTimer = 0.0f;

                Data.Death();

                m_CharacterAudio.Death(pos);

                return;
            }

            Ray screenRay = CameraController.Instance.GameplayCamera.ScreenPointToRay(Input.mousePosition);

            if (m_TargetInteractable != null)
            {
                CheckInteractableRange();
            }

            if (m_CurrentTargetCharacterData != null)
            {
                if (m_CurrentTargetCharacterData.Stats.CurrentHealth == 0)
                {
                    m_CurrentTargetCharacterData = null;
                }
                else
                {
                    CheckAttack();
                }
            }

            float mouseWheel = Input.GetAxis("Mouse ScrollWheel");

            if (!Mathf.Approximately(mouseWheel, 0.0f))
            {
                Vector3 view = m_MainCamera.ScreenToViewportPoint(Input.mousePosition);
                if (view.x > 0f && view.x < 1f && view.y > 0f && view.y < 1f)
                {
                    CameraController.Instance.Zoom(-mouseWheel * Time.deltaTime * 20.0f);
                }
            }

            if (Input.GetMouseButtonDown(0))
            { //if we click the mouse button, we clear any previously et targets
                if (m_CurrentState != State.ATTACKING)
                {
                    m_CurrentTargetCharacterData = null;
                    m_TargetInteractable         = null;
                }
                else
                {
                    m_ClearPostAttack = true;
                }
            }


            if (!EventSystem.current.IsPointerOverGameObject() && m_CurrentState != State.ATTACKING)
            {
                //Raycast to find object currently under the mouse cursor
                ObjectsRaycasts(screenRay);

                if (Input.GetMouseButton(0))
                {
                    if (m_TargetInteractable == null && m_CurrentTargetCharacterData == null)
                    {
                        InteractableObject obj = m_Highlighted as InteractableObject;
                        if (obj)
                        {
                            InteractWith(obj);
                        }
                        else
                        {
                            CharacterData data = m_Highlighted as CharacterData;
                            if (data != null)
                            {
                                m_CurrentTargetCharacterData = data;
                            }
                            else
                            {
                                MoveCheck(screenRay);
                            }
                        }
                    }
                }
            }

            m_Animator.SetFloat(m_SpeedParamID, m_Agent.velocity.magnitude / m_Agent.speed);

            //Keyboard shortcuts
            if (Input.GetKeyUp(KeyCode.I))
            {
                UISystem.Instance.ToggleInventory();
            }
        }
 void OnTriggerExit(Collider other)
 {
     if (hauntingObject == false)
     {
         if (other.tag == Tags.interactable)
         {
             targetedInteractible = null;
         }
     }
 }
Beispiel #42
0
 private void Start()
 {
     interactable             = GetComponent <InteractableObject>();
     anim                     = GetComponent <Animator>();
     interactable.OnInteract += Interactable_OnInteract;
 }
Beispiel #43
0
 public void Use(InteractableObject iObj)
 {
     iObj.Use();
     //Play Use Animation
 }
Beispiel #44
0
 public void SetOpenPanelObject(InteractableObject panelObject)
 {
     m_OpenPanelObject = panelObject;
 }
 private void ScareAgent(InteractableObject hauntedObject)
 {
     int addedFear = hauntedObject.ScareNPC(this);
     fearLevel += addedFear;
     panicLevel += addedFear;
     player.GetComponent<Interaction>().influence += addedFear;
     spooked = true;
     if(panicLevel < MaxPanicLevel)
     {
         LookAt(hauntedObject.transform.position);
     }
 }
Beispiel #46
0
 public void RemoveInteractableObject(InteractableObject objectToRemove)
 {
     objectToRemove.infoPanel.SetActive(false);
     this.interactableObjectsInRange.Remove(objectToRemove);
 }
Beispiel #47
0
    /// <summary>
    /// Avisa al monje de que se debe completar su peticion
    /// </summary>
    /// <param name="resultGO"> Objeto que se pasa al monje para la mision </param>
    public void CompleteRequest(GameObject resultGO)
    {
        // Detenemos el comportamiento actual
        StopCoroutine(_currentCoroutine);
        
        //Si estamos en el primer tunro
        if (_orderIndex == -1)
        {
            Debug.Log("[MonkRequest::MonkBehaviour] Completando peticion: CORRECTO!");
            FMODManager.SINGLETON.PlayOneShot(FMODManager.Sounds.RequestSuccess);
            GameManager.SINGLETON.OrderCompleted(true, _orderIndex);
            return;
        }

        // Comprobamos resultado
        if(_currentOrderGO!=null && _currentOrderGO == resultGO)
        {
            // Correcto
            Debug.Log("[MonkRequest::MonkBehaviour] Completando peticion: CORRECTO!");
            FMODManager.SINGLETON.PlayOneShot(FMODManager.Sounds.RequestSuccess);
            GameManager.SINGLETON.OrderCompleted(true, _orderIndex);
            bubble.DisableBubble();
            GameManager.SINGLETON.player.thinkingBubble.SetActive(false);
            ResetBehaviourVars();
            _currentOrderGOComponent = null;
        }
        else if(_currentOrderGOComponent == null)
        {
            // Incorrecto
            Debug.Log("[MonkRequest::MonkBehaviour] Completando peticion: FALLO!");
            FMODManager.SINGLETON.PlayOneShot(FMODManager.Sounds.RequestFail);
            GameManager.SINGLETON.OrderCompleted(false, _orderIndex);
            GameManager.SINGLETON.BadRequestedReceived();
            bubble.DisableBubble();
            GameManager.SINGLETON.player.thinkingBubble.SetActive(false);
            ResetBehaviourVars();
        }
    } 
Beispiel #48
0
 private void Interact(InteractableObject target)
 {
     target.Interact ();
 }