示例#1
0
    public void CheckResources(CompWideBoy compWB)
    {
        if (!compWB.parent.IsHashIntervalTick(75))
        {
            return;
        }

        compWB.MiningResources = !NoMiningResources(compWB);
        if (compWB.MiningResources)
        {
            return;
        }

        var compPower = compWB.parent.TryGetComp <CompPowerTrader>();

        if (compPower == null || !compPower.PowerOn)
        {
            return;
        }

        var compFlick = compWB.parent.TryGetComp <CompFlickable>();

        if (compFlick == null || !compFlick.SwitchIsOn)
        {
            return;
        }

        compFlick.SwitchIsOn = false;
        AccessTools.Field(typeof(CompFlickable), "wantSwitchOn").SetValue(compFlick, false);
        Messages.Message("Prospecting.WideBoyZeroLeft".Translate(), parent,
                         MessageTypeDefOf.NeutralEvent, false);
    }
示例#2
0
    public void SetSpanValue(CompWideBoy cwb, int spanValue)
    {
        if (spanValue <= 0)
        {
            return;
        }

        if (cwb.parent.TryGetComp <CompForbiddable>() != null)
        {
            cwb.parent.SetForbidden(true);
        }

        var newSpan = 49;

        switch (spanValue)
        {
        case 1:
            newSpan = 9;
            break;

        case 2:
            newSpan = 25;
            break;

        case 3:
            newSpan = 49;
            break;
        }

        cwb.span = newSpan;
    }
示例#3
0
    public void SetSpanWB(CompWideBoy cwb)
    {
        var    list = new List <FloatMenuOption>();
        string text = "Prospecting.SpanDoNothing".Translate();

        list.Add(new FloatMenuOption(text, delegate { SetSpanValue(cwb, 0); }, MenuOptionPriority.Default, null,
                                     null, 29f));
        for (var i = 0; i < 3; i++)
        {
            var spanWidth = i + 1;
            text = "Prospecting.SpanOption".Translate(spanWidth.ToString());
            list.Add(new FloatMenuOption(text, delegate { SetSpanValue(cwb, spanWidth); },
                                         MenuOptionPriority.Default, null, null, 29f));
        }

        Find.WindowStack.Add(new FloatMenu(list));
    }
示例#4
0
    public void CheckBoost(CompWideBoy compWB, bool boost)
    {
        Thing drill = compWB?.parent;

        if (drill == null || !drill.Spawned || drill.Map == null || drill.IsBrokenDown())
        {
            return;
        }

        var compPow = drill.TryGetComp <CompPowerTrader>();

        if (compPow == null || !compPow.PowerOn)
        {
            return;
        }

        var powUse = compPow.Props.basePowerConsumption;

        if (boost)
        {
            powUse *= 1.33f;
        }

        var newPowUse = -1f * powUse;

        if (compPow.PowerOutput != newPowUse)
        {
            compPow.PowerOutput = newPowUse;
        }

        if (!boost || !IsDrillActive(drill))
        {
            return;
        }

        DoSparks(drill);
        CheckBreakdown(drill);
    }
示例#5
0
 public void ToggleBoost(bool flag, CompWideBoy cwb)
 {
     cwb.WBBoost = !flag;
 }
示例#6
0
 public void ToggleMineRock(bool flag, CompWideBoy cwb)
 {
     cwb.mineRock = !flag;
 }