示例#1
0
        private void UpdateStatus()
        {
            // Not called UpdateAppearance just because it messes with the load
            var status = GetStatus();

            if (_status == status ||
                !Owner.TryGetComponent(out PowerReceiverComponent? receiver))
            {
                return;
            }

            _status = status;
            Owner.TryGetComponent(out AppearanceComponent? appearance);

            switch (_status)
            {
            // Update load just in case
            case CellChargerStatus.Off:
                receiver.Load = 0;
                appearance?.SetData(CellVisual.Light, CellChargerStatus.Off);
                break;

            case CellChargerStatus.Empty:
                receiver.Load = 0;
                appearance?.SetData(CellVisual.Light, CellChargerStatus.Empty);
                break;

            case CellChargerStatus.Charging:
                receiver.Load = (int)(_chargeRate / _transferEfficiency);
                appearance?.SetData(CellVisual.Light, CellChargerStatus.Charging);
                break;

            case CellChargerStatus.Charged:
                receiver.Load = 0;
                appearance?.SetData(CellVisual.Light, CellChargerStatus.Charged);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            appearance?.SetData(CellVisual.Occupied, _container.ContainedEntity != null);
        }
        protected void UpdateStatus()
        {
            // Not called UpdateAppearance just because it messes with the load
            var status = GetStatus();

            if (_status == status)
            {
                return;
            }

            _status = status;

            switch (_status)
            {
            // Update load just in case
            case CellChargerStatus.Off:
                _powerDevice.Load = 0;
                _appearanceComponent?.SetData(CellVisual.Light, CellChargerStatus.Off);
                break;

            case CellChargerStatus.Empty:
                _powerDevice.Load = 0;
                _appearanceComponent?.SetData(CellVisual.Light, CellChargerStatus.Empty);;
                break;

            case CellChargerStatus.Charging:
                _appearanceComponent?.SetData(CellVisual.Light, CellChargerStatus.Charging);
                break;

            case CellChargerStatus.Charged:
                _powerDevice.Load = 0;
                _appearanceComponent?.SetData(CellVisual.Light, CellChargerStatus.Charged);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            _appearanceComponent?.SetData(CellVisual.Occupied, _container.ContainedEntity != null);

            _status = status;
        }