Exemplo n.º 1
0
        /// <summary>
        ///     nRunPacket packet
        /// </summary>
        /// <param name="nRunPacket"></param>
        public void NRun(NrunPacket nRunPacket)
        {
            IAliveEntity aliveEntity;

            switch (nRunPacket.VisualType)
            {
            case VisualType.Player:
                aliveEntity = Broadcaster.Instance.GetCharacter(s => s.VisualId == nRunPacket.VisualId);
                break;

            case VisualType.Npc:
                aliveEntity = Session.Character.MapInstance.Npcs.Find(s => s.VisualId == nRunPacket.VisualId);
                break;

            default:
                _logger.Error(LogLanguage.Instance.GetMessageFromKey(LogLanguageKey.VISUALTYPE_UNKNOWN),
                              nRunPacket.Type);
                return;
            }

            if (aliveEntity == null)
            {
                _logger.Error(LogLanguage.Instance.GetMessageFromKey(LogLanguageKey.VISUALENTITY_DOES_NOT_EXIST));
                return;
            }

            _nRunProvider.NRunLaunch(Session, new Tuple <IAliveEntity, NrunPacket>(aliveEntity, nRunPacket));
        }
Exemplo n.º 2
0
        public override Task ExecuteAsync(NrunPacket nRunPacket, ClientSession clientSession)
        {
            var          forceNull = false;
            IAliveEntity?aliveEntity;

            switch (nRunPacket.VisualType)
            {
            case VisualType.Player:
                aliveEntity = Broadcaster.Instance.GetCharacter(s => s.VisualId == nRunPacket.VisualId);
                break;

            case VisualType.Npc:
                aliveEntity = clientSession.Character.MapInstance.Npcs.Find(s => s.VisualId == nRunPacket.VisualId);
                break;

            case null:
                aliveEntity = null;
                forceNull   = true;
                break;

            default:
                _logger.Error(LogLanguage.Instance.GetMessageFromKey(LogLanguageKey.VISUALTYPE_UNKNOWN),
                              nRunPacket.Type);
                return(Task.CompletedTask);
            }

            if ((aliveEntity == null) && !forceNull)
            {
                _logger.Error(LogLanguage.Instance.GetMessageFromKey(LogLanguageKey.VISUALENTITY_DOES_NOT_EXIST));
                return(Task.CompletedTask);
            }

            _nRunProvider.NRunLaunch(clientSession, new Tuple <IAliveEntity, NrunPacket>(aliveEntity !, nRunPacket));
            return(Task.CompletedTask);
        }