Exemplo n.º 1
0
        public override void SpawnSetup(Map map, bool respawningAfterLoad)
        {
            base.SpawnSetup(map, respawningAfterLoad);

            Power    = GetComp <CompPowerTrader>();
            Wireless = GetComp <CompWirelessPower>();
        }
Exemplo n.º 2
0
        public void Register(CompWirelessPower pylon)
        {
            if (pylon == null)
            {
                return;
            }
            if (pylon.Type == WirelessType.None)
            {
                return;
            }

            if (pylon.Type == WirelessType.Receiver)
            {
                if (_transmitters.Contains(pylon))
                {
                    _transmitters.Remove(pylon);
                }
                if (!_receivers.Contains(pylon))
                {
                    _receivers.Add(pylon);
                }
            }
            else
            {
                if (_receivers.Contains(pylon))
                {
                    _receivers.Remove(pylon);
                }
                if (!_transmitters.Contains(pylon))
                {
                    _transmitters.Add(pylon);
                }
            }
        }
Exemplo n.º 3
0
            public CopyPasteData(CompWirelessPower comp)
            {
                ChannelId   = comp?.Channel?.Id ?? -1;
                TargetPower = comp?.TargetWatts ?? 0;
                Type        = comp?.Type ?? WirelessType.None;

                channel = ChannelId == -1 ? null : comp?.Manager?.TryGetChannel(ChannelId);
            }
Exemplo n.º 4
0
 public ConfigWindow(CompWirelessPower comp)
 {
     Comp                  = comp;
     optionalTitle         = "RF.Pylon.ConfigureTitle".Translate(Comp.Props.buildingName);
     drawShadow            = true;
     draggable             = true;
     preventCameraMotion   = false;
     resizeable            = false;
     doCloseButton         = false;
     doCloseX              = true;
     closeOnClickedOutside = true;
 }
Exemplo n.º 5
0
        public void UnRegister(CompWirelessPower pylon)
        {
            if (pylon == null)
            {
                return;
            }

            if (_receivers.Contains(pylon))
            {
                _receivers.Remove(pylon);
            }
            if (_transmitters.Contains(pylon))
            {
                _transmitters.Remove(pylon);
            }
        }
Exemplo n.º 6
0
        public IEnumerable <PowerChannel> GetAvailableChannels(CompWirelessPower pylon)
        {
            if (pylon == null)
            {
                yield break;
            }

            var current = pylon.Channel;

            foreach (var pair in channels)
            {
                if (pair.Value != current)
                {
                    yield return(pair.Value);
                }
            }
        }
Exemplo n.º 7
0
            public bool TryApply(CompWirelessPower comp)
            {
                if (ChannelId == -1)
                {
                    Core.Error("Tried to apply using an invalid CopyPasteData");
                    return(false);
                }
                if (comp == null)
                {
                    Core.Error("Tried to apply CopyPasteData to a null wireless component.");
                    return(false);
                }
                if (channel == null || channel.Destroyed)
                {
                    Core.Error("Tried to apply CopyPasteData that has a null or invalid channel. Check data.IsValid() first.");
                    return(false);
                }

                if (!comp.Props.canSendPower && Type == WirelessType.Transmitter)
                {
                    Core.Warn($"Did not paste wireless settings on to {comp.parent?.LabelCap}, because it is not allowed to send power.");
                    return(false);
                }

                if (comp.Props.fixedPowerLevel != null)
                {
                    Core.Warn($"Pasting wireless settings, even though this {comp.parent?.LabelCap} has a fixed power level.");
                }


                // Already has these settings?
                if (comp.Type == Type && (comp.Channel?.Id ?? -1) == ChannelId && comp.TargetWatts == TargetPower)
                {
                    return(true);
                }

                comp.SwitchToChannel(channel);
                comp.SwitchType(Type);
                if (comp.Props.fixedPowerLevel == null)
                {
                    comp.TargetWatts = TargetPower;
                }
                return(true);
            }