Esempio n. 1
0
 public void RemoveNpcInteraction(NPC npc)
 {
     if (NpcInteraction.Contains(npc.whoAmI))
     {
         NpcInteraction.Remove(npc.whoAmI);
     }
 }
Esempio n. 2
0
    private void UpdateNpcInteraction()
    {
        if (targetInteractionNpc == null)
        {
            return;
        }

        if (!targetInteractionNpc.TryGetAction(
                out var distance,
                out var action,
                out var interactionRange))
        {
            return;
        }

        if (distance <= interactionRange)
        {
            try
            {
                // ignore examinations
                if (action.Id == 0)
                {
                    uiManager.ChatPanel.OnExamine(targetInteractionNpc.NpcData.Description);
                    return;
                }

                networkClient.SendNpcAction(targetInteractionNpc.ServerId, action.Id, 0);
            }
            finally
            {
                targetInteractionNpc = null;
            }
        }
    }
Esempio n. 3
0
 public void ApplyNpcInteraction(NPC npc)
 {
     if (!NpcInteraction.Contains(npc.whoAmI))
     {
         NpcInteraction.Add(npc.whoAmI);
     }
 }
Esempio n. 4
0
 public void Interact()
 {
     playerMovement = GameObject.Find("sherry_b1(Clone)").GetComponent <SherryMovement>();
     npcInteraction = GameObject.Find("ginny").GetComponent <NpcInteraction>();
     if (!open)
     {
         npcInteraction.enabled = false;
         playerMovement.enabled = false;
         Focus(focusLeft[currentLine]);
         StartCoroutine("Write");
     }
 }
 private void OnTriggerExit2D(Collider2D col)
 {
     //If the gameobject is an interactable, don't be able to pick it up.
     if (col.gameObject.CompareTag("Grabbable"))
     {
         objectInRange = null;
     }
     else if (col.gameObject.CompareTag("NPC"))
     {
         NPC.StopInteraction();
         NPC = null;
     }
 }
 private void OnTriggerStay2D(Collider2D col)
 {
     //If the player is within the range of an NPC and wants to interact with them.
     if (col.gameObject.CompareTag("NPC") && !NPC)
     {
         NPC = col.gameObject.GetComponent <NpcInteraction>();
         NPC.HandleInteraction();
     }
     //If the gameobject is a box, be able to pick it up.
     else if (col.gameObject.CompareTag("Grabbable") && !objectGrabbed)
     {
         //print("Object in range! " + col.transform.parent.name);
         objectInRange = col.transform.parent.gameObject;
     }
 }
Esempio n. 7
0
    private void HandleLeftClick(NetworkPlayer me, MouseClickEventArgs e)
    {
        uiManager.ContextMenu.Hide();

        // ignore other players for now since we don't have
        // a left button action on players yet. Going to be for selecting/targeting players.
        var player = e.GetNetworkPlayer();

        if (player)
        {
            UnityEngine.Debug.Log("We left clicked on a player.");
            return;
        }

        var npc = e.GetNetworkNpc();

        if (npc)
        {
            me.MoveToAndInteractWith(NpcInteraction.Create(me, npc, -1), CheckIfRunning());
            return;
        }

        var worldObject = e.GetNetworkObject();

        //var worldObject = e.Object.transform.GetComponentInParent<NetworkObject>();
        if (worldObject)
        {
            me.MoveToAndInteractWith(ObjectInteraction.Create(me, worldObject), CheckIfRunning());
            return;
        }


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

        var terrainHit = e.GetTerrain();

        //var terrain = e.Object.transform.GetComponent<Terrain>();
        if (terrainHit.Terrain)
        {
            HandleTerrainInteraction(e, terrainHit.Terrain, terrainHit.Point);
            return;
        }

        WalkTo(me, terrainHit.Point);
    }
Esempio n. 8
0
    private void HandleNpcInteraction(NetworkNpc targetNpc, int actionId)
    {
        var myPlayer = playerManager.Me;

        if (!myPlayer)
        {
            return;
        }

        var npc = targetNpc;

        if (npc)
        {
            myPlayer.MoveToAndInteractWith(NpcInteraction.Create(myPlayer, npc, actionId), CheckIfRunning());
        }
    }
Esempio n. 9
0
    internal void MoveToAndInteractWith(NpcInteraction obj, bool running)
    {
        if (!networkClient.Auth.Authenticated)
        {
            return;
        }
        targetInteractionNpc = obj;

        if (!obj.TryGetAction(
                out var distance,
                out var action,
                out var interactionRange))
        {
            return;
        }

        if (distance > interactionRange)
        {
            var direction            = (transform.position - obj.Position).normalized;
            var targetMoveToPosition = obj.Position + ((interactionRange / 2.1f) * direction);
            //var targetMoveToPosition = obj.transform.position;
            networkClient.MoveTo(targetMoveToPosition, running);
        }
    }
Esempio n. 10
0
        public void UseSkill(Player player)
        {
            if (Active || Cooldown > 0)
            {
                return;
            }
            if (player.GetModPlayer <PlayerMod>().UsingPrivilegedSkill)
            {
                return;
            }
            if (MainMod.SaySkillNameOnUse && player.whoAmI == Main.myPlayer)
            {
                player.chatOverhead.NewMessage(GetBase.Name + "!!", 300);
            }
            Time     = 0;
            Step     = 0;
            CastTime = 0;
            Active   = true;
            Cooldown = GetBase.Cooldown;
            PlayerDamageCooldown.Clear();
            NpcDamageCooldown.Clear();
            ExtraTargetDamageCooldown.Clear();
            PlayerInteraction.Clear();
            NpcInteraction.Clear();
            OtherInteraction.Clear();
            switch (GetBase.PositionToTake)
            {
            case SkillBase.PositionToTakeOnCastEnum.Mouse:
                CastPosition = SkillBase.GetMousePositionInTheWorld;
                break;

            case SkillBase.PositionToTakeOnCastEnum.Player:
                CastPosition = player.Center;
                break;
            }
        }
Esempio n. 11
0
 internal void ClearInteractionTargets()
 {
     targetInteractionObject = null;
     targetInteractionNpc    = null;
 }
Esempio n. 12
0
    // Use this for initialization
    void Start()
    {
        if (instance != null) {
            return;
        }
        instance = this;

        NetworkAPI.RegisterExtensionMessageHandler ("npc_interactions", _HandleNpcInteractionOptionsResponse);
        NetworkAPI.RegisterExtensionMessageHandler ("npc_dialogue", _HandleNpcDialogue);
        NetworkAPI.RegisterExtensionMessageHandler ("MerchantList", _HandleMerchantList);
        NetworkAPI.RegisterExtensionMessageHandler ("item_purchase_result", HandlePurchaseResponse);
    }
Esempio n. 13
0
 public bool ContainsNpcInteraction(NPC npc)
 {
     return(NpcInteraction.Contains(npc.whoAmI));
 }