// Update is called once per frame
 void Update()
 {
     playerDistX = Mathf.Abs(transform.position.x - playerTransform.position.x);
     playerYDist = Mathf.Abs(transform.position.y - playerTransform.position.y);
     rangeState  = GetState();
     if (rangeState == RangeState.PointBlank)
     {
         dir = Vector2.zero;
     }
     else if (rangeState != RangeState.Out)
     {
         npcm.UpdateWeights(playerTransform.position);
         dir = npcm.GetDir();
     }
     else
     {
         npcm.UpdateWeights(startPos);
         dir = npcm.GetDir();
     }
     //approachTime += Time.deltaTime;
     //if (approachTime % 10 < 5)
     //{
     //    ApproachPlayer();
     //}
 }
Exemple #2
0
        private void EnterArmedState(FlightStatus triggerStatus)
        {
            FlightLogger.eventLog.Add(string.Format("[{0}]: Range safety entered ARM state: {1}", KSPUtil.PrintTimeCompact((int)Math.Floor(FlightGlobals.ActiveVessel.missionTime), false), FlightCorridorBase.GetFlightStatusText(triggerStatus)));
            State = RangeState.Armed;

            if (rangeSafetyInstance.settings.terminateThrustOnArm)
            {
                actionQueue.Enqueue(RangeActions.TerminateThrust);
            }
            if (rangeSafetyInstance.settings.destroySolids)
            {
                actionQueue.Enqueue(RangeActions.DestroySolids);
            }
            if (rangeSafetyInstance.settings.coastToApogeeBeforeAbort)
            {
                actionQueue.Enqueue(RangeActions.CoastToApogee);
            }
            if (rangeSafetyInstance.settings.abortOnArm)
            {
                actionQueue.Enqueue(RangeActions.ExecuteAbort);
            }
            if (rangeSafetyInstance.settings.delay3secAfterAbort)
            {
                actionQueue.Enqueue(RangeActions.WaitForAbortToClear);
            }
            if (rangeSafetyInstance.settings.destroyLaunchVehicle)
            {
                actionQueue.Enqueue(RangeActions.TerminateFlight);
            }
        }
Exemple #3
0
        internal static string GetRangeStateText(RangeState rangeState, FlightStatus corridorState)
        {
            string state       = "DISARM";
            string description = string.Empty;

            switch (rangeState)
            {
            case RangeState.Nominal:
                state = "NOMINAL";
                break;

            case RangeState.Armed:
                state = "ARM";
                break;

            case RangeState.Destroyed:
                state = "DESTROYED";
                break;

            case RangeState.Safe:
                state = "SAFE";
                break;
            }
            description = FlightCorridorBase.GetFlightStatusText(corridorState);
            return(string.Format("{0}: {1}", state, description));
        }
Exemple #4
0
    private void Start()
    {
        _closeRangeState = gameObject.GetComponent <CloseRangeState>();
        _outOfRangeState = gameObject.GetComponent <OutOfRangeState>();

        _currentState = _closeRangeState;

        ChangeState(RangeStates.CloseRange);
    }
Exemple #5
0
        internal void Initialize(RangeSafety instance)
        {
            rangeSafetyInstance = instance;

            CheckIfRunwayOrLaunchPad();
            if (State != RangeState.Exempt)
            {
                State = rangeSafetyInstance.settings.enableRangeSafety ? RangeState.Nominal : RangeState.Disarmed;
            }
        }
 public MonthCellDescriptor(DateTime date, bool isCurrentMonth, bool isSelectable, bool isSelected,
     bool isToday, int value, RangeState rangeState)
 {
     DateTime = date;
     Value = value;
     IsCurrentMonth = isCurrentMonth;
     IsSelected = isSelected;
     IsToday = isToday;
     IsSelectable = isSelectable;
     RangeState = rangeState;
 }
        public StepConfiguration FixFrequency(double frequency, RangeState range, SubFrequencyState sub)
        {
            FixFrequencyParameter verify = new FixFrequencyParameter()
            {
                Frequency    = frequency,
                Range        = range,
                SubFrequency = sub
            };

            return(LoadContext(new SetFixFrequencyContext(radio, verify)));
        }
Exemple #8
0
        private void CheckIfRunwayOrLaunchPad()
        {
            var vessel = FlightGlobals.ActiveVessel;

            var biome = Vessel.GetLandedAtString(vessel.landedAt);

            //var biome = FlightGlobals.currentMainBody.BiomeMap.GetAtt(Utils.DegreeToRadian(vessel.latitude), Utils.DegreeToRadian(vessel.longitude)).name;
            if (biome == "Runway")
            {
                State = RangeState.Exempt;
            }
        }
 public MonthCellDescriptor(DateTime date, bool isCurrentMonth, bool isSelectable, bool isSelected,
                            bool isToday, bool isHighlighted, int value, RangeState rangeState)
 {
     DateTime       = date;
     Value          = value;
     IsCurrentMonth = isCurrentMonth;
     IsSelected     = isSelected;
     IsHighlighted  = isHighlighted;
     IsToday        = isToday;
     IsSelectable   = isSelectable;
     RangeState     = rangeState;
 }
Exemple #10
0
    public void ChangeState(RangeStates newState)
    {
        switch (newState)
        {
        case RangeStates.CloseRange:
            _currentState = _closeRangeState;
            break;

        case RangeStates.OutOfRange:
            _currentState = _outOfRangeState;
            break;
        }
        StartCoroutine(StateMachine());
    }
 public FixedRangeContext(MainModel radio, RangeState state)
 {
     Radio      = radio;
     this.state = state;
 }
Exemple #12
0
 public void SetRangeState(RangeState rangeState)
 {
     RangeState = rangeState;
 }
Exemple #13
0
 public static bool OutOfRange(RangeState value) => value < 0 || (int)value >= numberPosiotion;
Exemple #14
0
 public void Clear()
 {
     _ranges.Clear();
     _lastRangeState = null;
 }
 public StepConfiguration FixAntenna(RangeState frequencyState, SubFrequencyState subFrequency)
 {
     return(LoadContext(new FixAntenaContext(radio, frequencyState, subFrequency)));
 }
 public StepConfiguration Range(RangeState state)
 {
     return(LoadContext(new FixedRangeContext(radio, state)));
 }
Exemple #17
0
 public FixAntenaContext(MainModel radio, RangeState frequencyState, SubFrequencyState subFrequency)
 {
     Radio             = radio;
     this.fixFrequency = frequencyState;
     this.subFrequency = subFrequency;
 }
Exemple #18
0
 private void EnterSafeState(FlightStatus triggerStatus)
 {
     FlightLogger.eventLog.Add(string.Format("[{0}]: Range safety entered SAFE state: {1}", KSPUtil.PrintTimeCompact((int)Math.Floor(FlightGlobals.ActiveVessel.missionTime), false), FlightCorridorBase.GetFlightStatusText(triggerStatus)));
     State = RangeState.Safe;
 }
Exemple #19
0
        public bool TryFind(double n, out T state)
        {
            // first we check previously requested range
            if (_lastRangeState != null)
            {
                if (_lastRangeState.IsWithin(n))
                {
                    state = _lastRangeState.Value;
                    return(true);
                }
                // if it isn't last check the next
                if (_lastRangeState.Index < (_ranges.Count - 1) && _ranges[_lastRangeState.Index + 1].IsWithin(n))
                {
                    _lastRangeState = _ranges[_lastRangeState.Index + 1];
                    state           = _lastRangeState.Value;
                    return(true);
                }
            }
            // if no ranges return NULL
            if (_ranges.Count == 0)
            {
                state = default(T);
                return(false);
            }

            var first = _ranges[0];

            // check the first - in most cases the first call will ask for the first range
            if (first.IsWithin(n))
            {
                _lastRangeState = first;
                state           = _lastRangeState.Value;
                return(true);
            }
            // if less than all return NULL
            if (n < first.From)
            {
                state = default(T);
                return(false);
            }
            // if more than all return NULL
            var last = _ranges[0];

            if (n > last.To)
            {
                state = default(T);
                return(false);
            }
            var min     = 0;
            var max     = _ranges.Count - 1;
            var index   = GetMiddleIndex(min, max);
            var current = _ranges[index];

            // binary search
            for (var i = 0; i < 512; ++i)
            {
                if (current.IsWithin(n))
                {
                    state           = current.Value;
                    _lastRangeState = current;
                    return(true);
                }
                if (n < current.From)
                {
                    max     = current.Index - 1;
                    index   = GetMiddleIndex(min, max);
                    current = _ranges[index];
                }
                else if (n > current.To)
                {
                    min     = current.Index + 1;
                    index   = GetMiddleIndex(min, max);
                    current = _ranges[index];
                }
            }
            state = default(T);
            return(false);
        }
Exemple #20
0
 public static double ToAngle(RangeState value) => (int)value * k;