Exemple #1
0
        public override void Process()
        {
            if (GameManager.Instance.World == null)
            {
                SendOutput("The world isn't loaded");

                return;
            }

            //if (_options.ContainsKey("filters"))
            //{
            //  //todo: filters for derived objects
            //  return;
            //}
            //if (_options.ContainsKey("index"))
            //{
            //  //todo: index for derived objects
            //  return;
            //}
            string type;

            switch (Params.Count)
            {
            case 0:
                //LIST OBJECT TYPES
                var o = typeof(BCMGameObject.GOTypes);
                SendJson(
                    o.GetFields()
                    .AsQueryable()
                    .Where(f => f.Name != "Players" && f.Name != "Entities")
                    .ToDictionary(field => field.Name, field => field.GetValue(o).ToString()));
                return;

            case 1:
                //ALL OBJECTS OF A TYPE
                type = Params[0].ToLower();
                GetObjects(type, out List <object> objects);
                ProcessObjects(type, objects, out List <object> data, GetFilters(type));
                SendJson(data);
                return;

            case 2:
                //SPECIFIC OBJECT
                type = Params[0].ToLower();
                if (!GetObject(type, out object obj))
                {
                    return;
                }
                var gameObject = new BCMGameObject(obj, type, Options, GetFilters(type));
                SendObject(gameObject);
                return;

            default:
                SendOutput("Wrong number of arguments");
                SendOutput(Config.GetHelp(GetType().Name));
                return;
            }
        }
Exemple #2
0
        private static void ProcessObjects(string type, IEnumerable <object> objects, out List <object> data, List <string> filter)
        {
            data = new List <object>();

            foreach (var obj in objects)
            {
                var go = new BCMGameObject(obj, type, Options, filter);
                if (Options.ContainsKey("min"))
                {
                    data.Add(go.Data().Select(d => d.Value).ToList());
                }
                else
                {
                    data.Add(go.Data());
                }
            }
        }
        //todo: count sub command that returns a count of each object type

        protected override void Process()
        {
            if (!BCUtils.CheckWorld())
            {
                return;
            }

            string type;

            switch (Params.Count)
            {
            case 0:
                //LIST OBJECT TYPES
                var o = typeof(BCMGameObject.GOTypes);
                SendJson(
                    o.GetFields()
                    .AsQueryable()
                    .Where(f => f.Name != "Players" && f.Name != "Entities")
                    .ToDictionary(field => field.Name, field => field.GetValue(o).ToString()));
                return;

            case 1:
                //ALL OBJECTS OF A TYPE
                type = Params[0].ToLower();

                if (Options.ContainsKey("filters"))
                {
                    DisplayFilters(type);

                    return;
                }

                if (Options.ContainsKey("index"))
                {
                    DisplayIndex(type);

                    return;
                }

                //if (type == "count")
                //{
                //  CountObjects();
                //  return;
                //}
                GetObjects(type, out var objects);
                ProcessObjects(type, objects, out var data, GetFilters(type));
                SendJson(type == BCMGameObject.GOTypes.Rwg ? data[0] : data);
                return;

            case 2:
                //SPECIFIC OBJECT
                type = Params[0].ToLower();
                if (!GetObject(type, out var obj))
                {
                    return;
                }
                var gameObject = new BCMGameObject(obj, type, Options, GetFilters(type));
                SendObject(gameObject);
                return;

            default:
                SendOutput("Wrong number of arguments");
                SendOutput(Config.GetHelp(GetType().Name));
                return;
            }
        }