示例#1
0
    /// Set system state to idle. return false if not possible
    public bool Idle()
    {
        generator = GetNode <Generator>("../Generator");
        switch (state)
        {
        case MainSystemState.Broken:
        case MainSystemState.Idle:
            return(false);

        case MainSystemState.Active:
            lastState = state;
            state     = MainSystemState.Idle;
            EmitSignal(nameof(StateChanged), state);
            generator.CalculateRemainingPower();
            return(true);

        case MainSystemState.Disabled:
            if (idlePowerConsumption <= generator.remainingPower)
            {
                lastState = state;
                state     = MainSystemState.Idle;
                EmitSignal(nameof(StateChanged), state);
                generator.CalculateRemainingPower();
                return(true);
            }
            else
            {
                return(false);
            }
        }

        return(false);
    }
示例#2
0
    ///Sets the system state to broken, returns false if not possible;
    public bool Broken()
    {
        generator = GetNode <Generator>("../Generator");
        switch (state)
        {
        case MainSystemState.Active:
        case MainSystemState.Idle:
        case MainSystemState.Disabled:
            lastState = state;
            state     = MainSystemState.Broken;
            EmitSignal(nameof(StateChanged), state);
            generator.CalculateRemainingPower();
            return(true);

        case MainSystemState.Broken:
            return(false);
        }
        return(false);
    }
示例#3
0
 public void Repair()
 {
     state = MainSystemState.Disabled;
     EmitSignal(nameof(StateChanged), state);
 }
示例#4
0
 private void OnStateChanged(MainSystemState state)
 {
     statusLabel.Text = state.ToString();
 }