Esempio n. 1
0
        public void Interact()
        {
            if (_dialog != null) return;

            var eventArgs = new InteractEventArgs() {Character = Avatar, Scene = this};

            var scanBox = GetScanBox();

            foreach(InteractiveObject obj in Zone.Objects)
            {
                if (obj.Location.Intersects(scanBox))
                {
                    obj.Interact.Invoke(this, eventArgs);
                }
            }

            foreach(var character in Zone.Characters.Values)
            {
                if(scanBox.Intersects(character.GetFeet()))
                {
                    character.Interact.Invoke(this, eventArgs);
                }
            }

            // scan the area in front of the player
            // if there is a valid interaction object
            //    execute the interact callback for that object

            // dialog would need to pause the controls and create a dialog layer, which will unpause when done
            // doors would need to change the zone
            // chests would need to pause the controls, create a dialog layer, give the player a new item, and unpause when done
            // levers would need to update some part of the zone (i have zero ways to do this!)
        }
Esempio n. 2
0
 public override NotInteractableReason GetNotInteractableReason(InteractEventArgs eventArgs)
 {
     if (!isInteractable)
     {
         return(new NotInteractableReason("button disabled"));
     }
     return(base.GetNotInteractableReason(eventArgs));
 }
Esempio n. 3
0
    private void OnInteract(InteractEventArgs eventArgs)
    {
        anim.SetBool("doorOpen", true);

        var am = FindObjectOfType <AudioManager>();

        if (am)
        {
            am.PlaySound("labdoorOpen");
        }
    }
Esempio n. 4
0
 public override NotInteractableReason GetNotInteractableReason(InteractEventArgs eventArgs)
 {
     if (holder)
     {
         return(new NotInteractableReason("item is being held"));
     }
     else
     {
         return(base.GetNotInteractableReason(eventArgs));
     }
 }
Esempio n. 5
0
    protected override void OnInteract(InteractEventArgs eventArgs)
    {
        pad.OnNumPadKeyPressed(type);

        var am = FindObjectOfType <AudioManager>();

        if (am)
        {
            am.PlaySound("buttonClick");
        }
    }
Esempio n. 6
0
        private void Merchant(object sender, InteractEventArgs e)
        {
            var dialog = Dialog.Fetch("village", "merchant");

            dialog.Nodes[2].OnExit += (s, a) =>
            {
                ((OverworldScene)sender).EndDialog();
                ((SRPGGame)Game).LaunchShop("village", "merchant");
            };
            ((OverworldScene)sender).StartDialog(dialog);
        }
Esempio n. 7
0
    public void Interact(InteractEventArgs eventArgs)
    {
#if UNITY_EDITOR
        var nir = GetNotInteractableReason(eventArgs);
        if (nir != null)
        {
            Debug.LogError("Interactable is being interacted with in an invalid situation. Reason: " + nir.reason, this);
        }
#endif // UNITY_EDITOR

        OnInteract(eventArgs);
        interactEventComponent.onInteract.Invoke(eventArgs);
    }
Esempio n. 8
0
    private void OnInteract(InteractEventArgs eventArgs)
    {
        if (hasBeenInteracted)
        {
            return;
        }

        hasBeenInteracted = true;

        interactive.hoverDescription = descriptionWhenOpened;

        doubleDoor.OpenDoors();
    }
Esempio n. 9
0
    private void OnInteract(InteractEventArgs eventArgs)
    {
        groundhogDay.enabled = false;

        if (ps)
        {
            ps.Play();
        }

        var am = FindObjectOfType <AudioManager>();

        if (am)
        {
            am.PlaySound("kcrBeep");
        }
    }
Esempio n. 10
0
    protected override void OnInteract(InteractEventArgs eventArgs)
    {
        var gd = FindObjectOfType <GroundhogDay>();

        if (gd.isGameEnding == false)
        {
            gd.isGameEnding = true;
            visuals.SetActive(true);
            if (anim)
            {
                anim.enabled = true;
            }
            FindObjectOfType <PlayerController>().isGameControlEnabled = false;
            //base.OnInteract(eventArgs);
        }
    }
 private void btnDetails_Click(object sender, EventArgs e)
 {
     try
     {
         Result            r        = results[listItems.SelectedIndices[0]];
         TreeNode          treeNode = new TreeNode(r.Link);
         InteractEventArgs args     = new InteractEventArgs();
         args.Operation       = InteractEventArgs.Operation_Type.OPEN_URL;
         args.SelectedObjects = new HashSet <TreeNode>();
         args.SelectedObjects.Add(treeNode);
         mainForm.invokeEvent(args);
         //DetailsPage page = new DetailsPage(r);
         //page.Show();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Esempio n. 12
0
    public override NotInteractableReason GetNotInteractableReason(InteractEventArgs eventArgs)
    {
        var holder = eventArgs.hand.GetComponent <PlayerItemHolder>();

        var item = holder.itemBeingHeld;

        if (!item)
        {
            return(new NotInteractableReason("player is not holding an item"));
        }

        var keyCard = item.GetComponent <KeyCard>();

        if (!keyCard)
        {
            return(new NotInteractableReason("player is not holding a KeyCard"));
        }

        return(base.GetNotInteractableReason(eventArgs));
    }
Esempio n. 13
0
        public void Interact()
        {
            if (_dialog != null)
            {
                return;
            }

            var eventArgs = new InteractEventArgs()
            {
                Character = Avatar, Scene = this
            };

            var scanBox = GetScanBox();

            foreach (InteractiveObject obj in Zone.Objects)
            {
                if (obj.Location.Intersects(scanBox))
                {
                    obj.Interact.Invoke(this, eventArgs);
                }
            }

            foreach (var character in Zone.Characters.Values)
            {
                if (scanBox.Intersects(character.GetFeet()))
                {
                    character.Interact.Invoke(this, eventArgs);
                }
            }

            // scan the area in front of the player
            // if there is a valid interaction object
            //    execute the interact callback for that object

            // dialog would need to pause the controls and create a dialog layer, which will unpause when done
            // doors would need to change the zone
            // chests would need to pause the controls, create a dialog layer, give the player a new item, and unpause when done
            // levers would need to update some part of the zone (i have zero ways to do this!)
        }
        private void button1_Click(object sender, EventArgs e)
        {
            InteractEventArgs args = new InteractEventArgs();

            args.Operation       = InteractEventArgs.Operation_Type.INSERT;
            args.SelectedObjects = new HashSet <TreeNode>();
            foreach (ListViewItem item in listItems.Items)
            {
                if (item.Checked)
                {
                    List <TreeNode> treeNodes = new List <TreeNode>();
                    String          title     = item.SubItems[0].Text;
                    String          link      = item.SubItems[1].Text;
                    treeNodes.Add(new TreeNode(link));
                    String date = DateTime.Now.ToString();
                    treeNodes.Add(new TreeNode(date));
                    TreeNode treeNode = new TreeNode(title, treeNodes.ToArray());
                    args.SelectedObjects.Add(treeNode);
                }
            }
            mainForm.invokeEvent(args);
        }
Esempio n. 15
0
        private void InteractEventTriggered(object sender, EventArgs e)
        {
            InteractEventArgs interactEventArgs = e as InteractEventArgs;

            if (interactEventArgs.Operation.Equals(InteractEventArgs.Operation_Type.INSERT))
            {
                SimpleInputForm simpleInputForm = new SimpleInputForm(interactEventArgs.SelectedObjects);
                var             result          = simpleInputForm.ShowDialog();
                if (result == DialogResult.OK)
                {
                }
                else
                {
                }
            }
            else if (interactEventArgs.Operation.Equals(InteractEventArgs.Operation_Type.OPEN_URL))
            {
                HashSet <TreeNode> selectedObjects = interactEventArgs.SelectedObjects;
                Open_Url_Form      open_Url_Form   = new Open_Url_Form(selectedObjects.FirstOrDefault().Text);
                open_Url_Form.Show();
            }
        }
Esempio n. 16
0
    protected override void OnInteract(InteractEventArgs eventArgs)
    {
        if (holder)
        {
            holder.DropItem();
        }

        holder = eventArgs.hand.GetComponent <PlayerItemHolder>();
        try
        {
            holder.PickUpItem(this);

            var am = FindObjectOfType <AudioManager>();
            if (am)
            {
                am.PlaySound("cardPickup");
            }
        }
        catch
        {
            holder = null;
            throw;
        }
    }
Esempio n. 17
0
 private void OnDestroy()
 {
     eventArgs = null;
 }
Esempio n. 18
0
 private void Awake()
 {
     eventArgs = new InteractEventArgs(this);
 }
 private void OnEnterPortal(InteractEventArgs e)
 {
     if (EnterPortal != null)
         EnterPortal(e);
 }
Esempio n. 20
0
 protected virtual void OnInteract(InteractEventArgs eventArgs)
 {
 }
Esempio n. 21
0
 public override NotInteractableReason GetNotInteractableReason(InteractEventArgs eventArgs)
 {
     return(null);
 }
Esempio n. 22
0
 private void ShowSaveGame(object sender, InteractEventArgs e)
 {
     ((SRPGGame) Game).ShowSaveScreen(Key, "save");
 }
Esempio n. 23
0
 public void invokeEvent(InteractEventArgs interactEventArgs)
 {
     InteractEvent?.Invoke(this, interactEventArgs);
 }
Esempio n. 24
0
 private void Interactable_OnInteract(object sender, InteractEventArgs e)
 {
     anim.SetFloat("sp", 1.0f);
     puzleContainer.GetComponent <BoxCollider2D>().enabled  = true;
     puzleContainer.GetComponent <SpriteRenderer>().enabled = true;
 }
Esempio n. 25
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;
            }
        }
Esempio n. 26
0
 /// <returns><see langword="null"/> if this object can be interacted with.</returns>
 public virtual NotInteractableReason GetNotInteractableReason(InteractEventArgs eventArgs)
 {
     return(null);
 }
Esempio n. 27
0
 private void OnInteract(InteractEventArgs eventArgs)
 {
     groundhogDay.RestartTimeLoop();
 }