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; } }
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(); } }
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(); } }