Example #1
0
        internal void SendMessage(MessageBottle n)
        {
            switch (VarAttrs["block-type"])
            {
            case "Antenna":

                MyTransmitTarget m;
                if (n.MetaData == null)
                {
                    AppBase.Debug("wow");
                }
                switch (n.MetaData.VarAttrs["method"])
                {
                case "Public": m = MyTransmitTarget.Everyone; break;

                case "Private": m = MyTransmitTarget.Ally; break;

                case "Protected": m = MyTransmitTarget.Ally; break;

                default: m = MyTransmitTarget.Default; break;
                }

                AppBase.Debug("Sending: " + n.ToString());
                ((IMyRadioAntenna)Block).TransmitMessage(n.ToString(), m);

                break;

            case "LaserAntenna":
                AppBase.Debug("Sending: " + n.ToString());
                ((IMyLaserAntenna)Block).TransmitMessage(n.ToString());
                break;
            }
        }
Example #2
0
        public override void Tick()
        {
            if (Block == null && VarAttrs.ContainsKey("name"))
            {
                Block = AppBase.GetGemeObject <T>(VarAttrs["name"]);
                if (Block == null)
                {
                    AppBase.Debug("Block with name '" + VarAttrs["name"] + "' not exist.");
                    End();
                }
            }

            if (!VarAttrs.ContainsKey("name"))
            {
                AppBase.Debug("Tag " + Type + " no have a attribute name.");
                End();
            }
        }
Example #3
0
            public override void Tick()
            {
                var network = AppBase as Network;
                var mbottle = System as MessageBottle;
                var paths   = new List <string>(VarAttrs["path"].Split(','));

                if (network.config != null)
                {
                    if (!paths.Contains(network.config.VarAttrs["namespace"] + "/" + network.config.VarAttrs["ip"]))
                    {
                        if (network.config.VarAttrs["namespace"] == VarAttrs["namespace"])
                        {
                            VarAttrs["path"] += "," + network.config.VarAttrs["namespace"] + "/" + network.config.VarAttrs["ip"];
                            if (network.config.VarAttrs["ip"] == VarAttrs["ip-desteny"])
                            {
                                if (VarAttrs["port"] != "")
                                {
                                    network.SendPortMessage(mbottle);
                                }
                                else
                                {
                                    AppBase.Debug("Recibing: " + mbottle.MBody.ToString());
                                }
                            }
                            else
                            {
                                network.SendNetworkMessage(mbottle);
                            }
                        }
                        else
                        {
                            var  a_msg_nsp       = VarAttrs["namespace"].Split('.');
                            var  a_nsp           = network.config.VarAttrs["namespace"].Split('.');
                            bool namespace_found = false;
                            VarAttrs["path"] += "," + network.config.VarAttrs["namespace"] + "/" + network.config.VarAttrs["ip"];

                            if (a_msg_nsp.Length > a_nsp.Length)
                            {
                                int k = -1;
                                foreach (string j in a_nsp)
                                {
                                    if (a_msg_nsp[++k] != j)
                                    {
                                        mbottle.End();
                                        return;
                                    }
                                }
                                network.ports.ForChilds((Object n, int i) =>
                                {
                                    var x = n as Port;
                                    if (x != null)
                                    {
                                        if (x.VarAttrs["type"] == "namespace" && x.VarAttrs["name"] == a_msg_nsp[k + 1])
                                        {
                                            x.SendMessage(mbottle);
                                            namespace_found = true;
                                            return(-1);
                                        }
                                    }
                                    return(0);
                                });
                                if (!namespace_found)
                                {
                                    network.SendNetworkMessage(mbottle);
                                }
                            }
                            else if (a_msg_nsp.Length < a_nsp.Length)
                            {
                                int k = -1;
                                foreach (string j in a_msg_nsp)
                                {
                                    if (a_nsp[++k] != j)
                                    {
                                        mbottle.End();
                                        return;
                                    }
                                }
                                network.ports.ForChilds((Object n, int i) =>
                                {
                                    var x = n as Port;
                                    if (x != null)
                                    {
                                        if (x.VarAttrs["type"] == "namespace" && x.VarAttrs["name"] == a_msg_nsp[k])
                                        {
                                            x.SendMessage(mbottle);
                                            namespace_found = true;
                                            return(-1);
                                        }
                                    }
                                    return(0);
                                });
                            }
                        }
                    }
                    mbottle.End();
                }
            }