示例#1
0
        // Function from file: communications.dm
        public bool post_signal(Obj source = null, Signal signal = null, string filter = null, int?range = null)
        {
            ByTable filter_list    = null;
            dynamic start_point    = null;
            dynamic current_filter = null;
            Obj     device         = null;
            dynamic end_point      = null;


            if (Lang13.Bool(filter))
            {
                filter_list = new ByTable(new object [] { filter, "_default" });
            }
            else
            {
                filter_list = this.devices;
            }

            if (Lang13.Bool(range))
            {
                start_point = GlobalFuncs.get_turf(source);

                if (!Lang13.Bool(start_point))
                {
                    return(false);
                }
            }

            foreach (dynamic _b in Lang13.Enumerate(filter_list))
            {
                current_filter = _b;


                foreach (dynamic _a in Lang13.Enumerate(this.devices[current_filter], typeof(Obj)))
                {
                    device = _a;


                    if (device == source)
                    {
                        continue;
                    }

                    if (Lang13.Bool(range))
                    {
                        end_point = GlobalFuncs.get_turf(device);

                        if (!Lang13.Bool(end_point))
                        {
                            continue;
                        }

                        if (start_point.z != end_point.z || (range ?? 0) > 0 && Map13.GetDistance(start_point, end_point) > (range ?? 0))
                        {
                            continue;
                        }
                    }
                    device.receive_signal(signal, true, this.frequency);
                }
            }
            return(false);
        }