Пример #1
0
        public override void Initialize()
        {
            base.Initialize();

            _mapManager.TileChanged += OnTileChanged;
            EntityQuery              = new MultipleTypeEntityQuery(new List <Type>()
            {
                typeof(GridAtmosphereComponent)
            });
        }
        public void Execute(IConsoleShell shell, IPlayerSession?player, string[] args)
        {
            if (args.Length == 0)
            {
                shell.SendText(player, $"Invalid amount of arguments: {args.Length}.\n{Help}");
                return;
            }

            var components       = new List <Type>();
            var componentFactory = IoCManager.Resolve <IComponentFactory>();
            var invalidArgs      = new List <string>();

            foreach (var arg in args)
            {
                if (!componentFactory.TryGetRegistration(arg, out var registration))
                {
                    invalidArgs.Add(arg);
                    continue;
                }

                components.Add(registration.Type);
            }

            if (invalidArgs.Count > 0)
            {
                shell.SendText(player, $"No component found for component names: {string.Join(", ", invalidArgs)}");
                return;
            }

            var entityManager = IoCManager.Resolve <IEntityManager>();
            var query         = new MultipleTypeEntityQuery(components);
            var entityIds     = new HashSet <string>();

            foreach (var entity in entityManager.GetEntities(query))
            {
                if (entity.Prototype == null)
                {
                    continue;
                }

                entityIds.Add(entity.Prototype.ID);
            }

            if (entityIds.Count == 0)
            {
                shell.SendText(player, $"No entities found with components {string.Join(", ", args)}.");
                return;
            }

            shell.SendText(player, $"{entityIds.Count} entities found:\n{string.Join("\n", entityIds)}");
        }