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!) }
public override NotInteractableReason GetNotInteractableReason(InteractEventArgs eventArgs) { if (!isInteractable) { return(new NotInteractableReason("button disabled")); } return(base.GetNotInteractableReason(eventArgs)); }
private void OnInteract(InteractEventArgs eventArgs) { anim.SetBool("doorOpen", true); var am = FindObjectOfType <AudioManager>(); if (am) { am.PlaySound("labdoorOpen"); } }
public override NotInteractableReason GetNotInteractableReason(InteractEventArgs eventArgs) { if (holder) { return(new NotInteractableReason("item is being held")); } else { return(base.GetNotInteractableReason(eventArgs)); } }
protected override void OnInteract(InteractEventArgs eventArgs) { pad.OnNumPadKeyPressed(type); var am = FindObjectOfType <AudioManager>(); if (am) { am.PlaySound("buttonClick"); } }
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); }
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); }
private void OnInteract(InteractEventArgs eventArgs) { if (hasBeenInteracted) { return; } hasBeenInteracted = true; interactive.hoverDescription = descriptionWhenOpened; doubleDoor.OpenDoors(); }
private void OnInteract(InteractEventArgs eventArgs) { groundhogDay.enabled = false; if (ps) { ps.Play(); } var am = FindObjectOfType <AudioManager>(); if (am) { am.PlaySound("kcrBeep"); } }
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); } }
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)); }
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); }
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(); } }
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; } }
private void OnDestroy() { eventArgs = null; }
private void Awake() { eventArgs = new InteractEventArgs(this); }
private void OnEnterPortal(InteractEventArgs e) { if (EnterPortal != null) EnterPortal(e); }
protected virtual void OnInteract(InteractEventArgs eventArgs) { }
public override NotInteractableReason GetNotInteractableReason(InteractEventArgs eventArgs) { return(null); }
private void ShowSaveGame(object sender, InteractEventArgs e) { ((SRPGGame) Game).ShowSaveScreen(Key, "save"); }
public void invokeEvent(InteractEventArgs interactEventArgs) { InteractEvent?.Invoke(this, interactEventArgs); }
private void Interactable_OnInteract(object sender, InteractEventArgs e) { anim.SetFloat("sp", 1.0f); puzleContainer.GetComponent <BoxCollider2D>().enabled = true; puzleContainer.GetComponent <SpriteRenderer>().enabled = true; }
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; } }
/// <returns><see langword="null"/> if this object can be interacted with.</returns> public virtual NotInteractableReason GetNotInteractableReason(InteractEventArgs eventArgs) { return(null); }
private void OnInteract(InteractEventArgs eventArgs) { groundhogDay.RestartTimeLoop(); }