コード例 #1
0
        public override void switchNetwork(Network from, Network to, bool silently)
        {
            String conflict = to.nameConflictExists(this, LabelString);
            String new_name = "";
            bool name_change_required = false;
            if (conflict != null)
            {
                new_name = String.Format("wireless_{0}", InstanceNumber);
                name_change_required = true;
            }

            List<Node> rnl = to.makeClassifiedNodeList(typeof(TransmitterNode), false);
            String cp = (name_change_required ? new_name : LabelString);
            if (rnl != null)
            {
                foreach (Node n in rnl)
                {
                    ReceiverNode rn = (ReceiverNode)n;
                    if (!rn.IsTransmitterConnected &&
                        rn.LabelString == cp)
                    {
                        if (to.checkForCycle(this, rn))
                        {
                            new_name = String.Format("cyclic_connection_{0}", InstanceNumber);
                            name_change_required = true;
                            break;
                        }
                    }
                }
            }

            if (name_change_required)
            {
                if (!silently)
                {
                    InfoDialog id = new InfoDialog();
                    id.post("Transmitter {0} has been relabled {1}", LabelString, new_name);
                }
                setLabelString(new_name);
            }
            rnl = to.makeClassifiedNodeList(typeof(ReceiverNode), false);
            if (rnl != null)
            {
                foreach (Node n in rnl)
                {
                    ReceiverNode rn = (ReceiverNode)n;
                    if (!rn.IsTransmitterConnected &&
                        rn.LabelString == LabelString)
                    {
                        new Ark(this, 0, rn, 0);
                    }
                }
            }
            base.switchNetwork(from, to, silently);
        }