Пример #1
0
    private void AccessPoint_AccessPointAvailable(object sender, AccessPointAvailableEventArgs e)
    {
        if (e != null && e.removedNpc != null)
        {
            foreach (var npc in npcs)
            {
                if (npc.Type == e.removedNpc)
                {
                    npc.Count--;
                    break;
                }
            }
        }

        NpcAccessPoint accessPoint = sender as NpcAccessPoint;

        if (accessPoint != null)
        {
            if (!_availableAccessPoints.Contains(accessPoint))
            {
                _availableAccessPoints.Add(accessPoint);
            }

            SpawnNpc(_availableAccessPoints[Random.Range(0, _availableAccessPoints.Count - 1)]);
        }
    }
Пример #2
0
 private void OnAccessPointAvailable(AccessPointAvailableEventArgs args)
 {
     System.EventHandler <AccessPointAvailableEventArgs> handler = AccessPointAvailable;
     if (handler != null)
     {
         handler(this, args);
     }
 }
Пример #3
0
    //private void OtherNav_DestinationReached(object sender, System.EventArgs e)
    //{
    //    AINavigator senderNav = sender as AINavigator;
    //    if (senderNav == _dockingNpcNav)
    //    {
    //        _dockingNpcNav.DestinationReached -= OtherNav_DestinationReached;
    //    }

    //    if (senderNav != null)
    //    {
    //        NpcType senderType = senderNav.GetComponent<NpcType>();
    //        if (senderType != null)
    //        {
    //            senderType.Dock(type);
    //        }
    //    }
    //}

    void OnTriggerExit(Collider other)
    {
        if (other.CompareTag("NPC"))
        {
            var args = new AccessPointAvailableEventArgs();
            args.removedNpc = other.GetComponent <NpcType>();
            OnAccessPointAvailable(args);
        }
    }