Codebreak.Service.World.Game.Entity.AbstractEntity.CanGameAction C# (CSharp) Метод

CanGameAction() публичный Метод

public CanGameAction ( GameActionTypeEnum actionType ) : bool
actionType GameActionTypeEnum
Результат bool
        public bool CanGameAction(GameActionTypeEnum actionType)
        {
            if (CurrentAction != null && CurrentAction.Type == GameActionTypeEnum.MAP_MOVEMENT)
                CurrentAction = null;

            switch (actionType)
            {
                case GameActionTypeEnum.FIGHT_AGGRESSION:
                    return ((CurrentAction == null || CurrentAction.IsFinished)
                        || CurrentAction.Type == GameActionTypeEnum.MAP_MOVEMENT)
                        && !HasPlayerRestriction(PlayerRestrictionEnum.RESTRICTION_CANT_ASSAULT)
                        && !HasEntityRestriction(EntityRestrictionEnum.RESTRICTION_CANT_BE_ASSAULT);

                case GameActionTypeEnum.SKILL_USE:
                    return ((CurrentAction == null || CurrentAction.IsFinished)
                        || CurrentAction.Type == GameActionTypeEnum.MAP_MOVEMENT)
                        && !HasPlayerRestriction(PlayerRestrictionEnum.RESTRICTION_CANT_USE_IO)
                        && !HasEntityRestriction(EntityRestrictionEnum.RESTRICTION_IS_TOMBESTONE);

                case GameActionTypeEnum.CHALLENGE_REQUEST:
                    return (CurrentAction == null || CurrentAction.IsFinished)
                        && HasGameAction(GameActionTypeEnum.MAP)
                        && !HasEntityRestriction(EntityRestrictionEnum.RESTRICTION_CANT_BE_CHALLENGE)
                        && !HasPlayerRestriction(PlayerRestrictionEnum.RESTRICTION_CANT_CHALLENGE)
                        && !HasEntityRestriction(EntityRestrictionEnum.RESTRICTION_IS_TOMBESTONE);

                case GameActionTypeEnum.CHALLENGE_ACCEPT:
                    return CurrentAction != null
                        && CurrentAction.Type == GameActionTypeEnum.CHALLENGE_REQUEST
                        && ((GameChallengeRequestAction)CurrentAction).Entity.Id != Id;

                case GameActionTypeEnum.CHALLENGE_DECLINE:
                    return CurrentAction != null
                        && CurrentAction.Type == GameActionTypeEnum.CHALLENGE_REQUEST;

                case GameActionTypeEnum.EXCHANGE:
                    return (CurrentAction == null || CurrentAction.IsFinished)
                        && !HasEntityRestriction(EntityRestrictionEnum.RESTRICTION_CANT_EXCHANGE)
                        && !HasPlayerRestriction(PlayerRestrictionEnum.RESTRICTION_CANT_EXCHANGE)
                        && !HasEntityRestriction(EntityRestrictionEnum.RESTRICTION_IS_TOMBESTONE);

                case GameActionTypeEnum.MAP_MOVEMENT:
                    return (CurrentAction == null || CurrentAction.IsFinished)
                        && !HasEntityRestriction(EntityRestrictionEnum.RESTRICTION_IS_TOMBESTONE);

                case GameActionTypeEnum.FIGHT_WEAPON_USE:
                case GameActionTypeEnum.FIGHT_SPELL_LAUNCH:
                    return (CurrentAction == null || CurrentAction.IsFinished)
                        && HasGameAction(GameActionTypeEnum.FIGHT);

                case GameActionTypeEnum.MAP_TELEPORT:
                    return (CurrentAction == null || CurrentAction.IsFinished);

                case GameActionTypeEnum.NPC_DIALOG:
                    return (CurrentAction == null || CurrentAction.IsFinished)
                        && !HasPlayerRestriction(PlayerRestrictionEnum.RESTRICTION_CANT_SPEAK_NPC);

                case GameActionTypeEnum.FIGHT_JOIN:
                case GameActionTypeEnum.FIGHT:
                    return (CurrentAction == null || CurrentAction.IsFinished)
                         && !HasEntityRestriction(EntityRestrictionEnum.RESTRICTION_IS_TOMBESTONE)
                         && !HasPlayerRestriction(PlayerRestrictionEnum.RESTRICTION_CANT_ASSAULT);

                case GameActionTypeEnum.TAXCOLLECTOR_AGGRESSION:
                    return (CurrentAction == null || CurrentAction.IsFinished)
                        && !HasPlayerRestriction(PlayerRestrictionEnum.RESTRICTION_CANT_INTERACT_WITH_TAX_COLLECTOR);
            }

            return CurrentAction == null || CurrentAction.IsFinished;
        }