private void Toggle(IEntity user)
        {
            if (_injectOnly)
            {
                return;
            }

            string msg;

            switch (_toggleState)
            {
            case InjectorToggleMode.Inject:
                _toggleState = InjectorToggleMode.Draw;
                msg          = "Now drawing";
                break;

            case InjectorToggleMode.Draw:
                _toggleState = InjectorToggleMode.Inject;
                msg          = "Now injecting";
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            Owner.PopupMessage(user, Loc.GetString(msg));

            Dirty();
        }
 protected override void Startup()
 {
     base.Startup();
     _internalContents = Owner.GetComponent <SolutionComponent>();
     _internalContents.Capabilities |= SolutionCaps.Injector;
     //Set _toggleState based on prototype
     _toggleState = _injectOnly ? InjectorToggleMode.Inject : InjectorToggleMode.Draw;
 }
        protected override void Startup()
        {
            base.Startup();

            var solution = Owner.EnsureComponent <SolutionContainerComponent>();

            solution.Capabilities = SolutionContainerCaps.AddTo | SolutionContainerCaps.RemoveFrom;

            // Set _toggleState based on prototype
            _toggleState = _injectOnly ? InjectorToggleMode.Inject : InjectorToggleMode.Draw;
        }
        //Handle net updates
        public override void HandleComponentState(ComponentState curState, ComponentState nextState)
        {
            var cast = (InjectorComponentState)curState;

            if (cast != null)
            {
                CurrentVolume   = cast.CurrentVolume;
                TotalVolume     = cast.TotalVolume;
                CurrentMode     = cast.CurrentMode;
                _uiUpdateNeeded = true;
            }
        }
        //Handle net updates
        public override void HandleComponentState(ComponentState?curState, ComponentState?nextState)
        {
            if (curState is not InjectorComponentState state)
            {
                return;
            }

            CurrentVolume   = state.CurrentVolume;
            TotalVolume     = state.TotalVolume;
            CurrentMode     = state.CurrentMode;
            _uiUpdateNeeded = true;
        }
        protected override void Startup()
        {
            base.Startup();

            Owner.EnsureComponent <SolutionComponent>();

            if (Owner.TryGetComponent(out SolutionComponent? solution))
            {
                solution.Capabilities |= SolutionCaps.Injector;
            }

            // Set _toggleState based on prototype
            _toggleState = _injectOnly ? InjectorToggleMode.Inject : InjectorToggleMode.Draw;
        }
예제 #7
0
        public override void Initialize()
        {
            base.Initialize();

            //Create and setup internal storage
            _internalContents = new SolutionComponent();
            _internalContents.InitializeFromPrototype();
            _internalContents.Init();
            _internalContents.MaxVolume     = _initialMaxVolume;
            _internalContents.Owner         = Owner; //Manually set owner to avoid crash when VV'ing this
            _internalContents.Capabilities |= SolutionCaps.Injector;

            //Set _toggleState based on prototype
            _toggleState = _injectOnly ? InjectorToggleMode.Inject : InjectorToggleMode.Draw;
        }
 public InjectorComponentState(FixedPoint2 currentVolume, FixedPoint2 totalVolume, SharedInjectorComponent.InjectorToggleMode currentMode)
 {
     CurrentVolume = currentVolume;
     TotalVolume   = totalVolume;
     CurrentMode   = currentMode;
 }
 public InjectorComponentState(ReagentUnit currentVolume, ReagentUnit totalVolume, InjectorToggleMode currentMode) : base(ContentNetIDs.REAGENT_INJECTOR)
 {
     CurrentVolume = currentVolume;
     TotalVolume   = totalVolume;
     CurrentMode   = currentMode;
 }
 public InjectorComponentState(ReagentUnit currentVolume, ReagentUnit totalVolume, InjectorToggleMode currentMode)
 {
     CurrentVolume = currentVolume;
     TotalVolume   = totalVolume;
     CurrentMode   = currentMode;
 }