예제 #1
0
        public virtual void SetSolution(T solution)
        {
            T lastSolution = Solution;

            Solution = solution;
            SolutionChangedEvent?.Invoke(this, new SolutionChangedEventArgs <T> {
                PreviousSolution = lastSolution, CurrentSolution = solution
            });
        }
예제 #2
0
    private void OnSolutionChange(EntityUid uid, PowerCellComponent component, SolutionChangedEvent args)
    {
        component.IsRigged = _solutionsSystem.TryGetSolution(uid, PowerCellComponent.SolutionName, out var solution) &&
                             solution.ContainsReagent("Plasma", out var plasma) &&
                             plasma >= 5;

        if (component.IsRigged)
        {
            _logSystem.Add(LogType.Explosion, LogImpact.Medium, $"Power cell {ToPrettyString(uid)} has been rigged up to explode when used.");
        }
    }
예제 #3
0
        private void OnSolutionChange(EntityUid owner, TransformableContainerComponent component,
                                      SolutionChangedEvent args)
        {
            if (!_solutionsSystem.TryGetFitsInDispenser(owner, out var solution))
            {
                return;
            }
            //Transform container into initial state when emptied
            if (component.CurrentReagent != null && solution.Contents.Count == 0)
            {
                CancelTransformation(component);
            }

            //the biggest reagent in the solution decides the appearance
            var reagentId = solution.GetPrimaryReagentId();

            //If biggest reagent didn't changed - don't change anything at all
            if (component.CurrentReagent != null && component.CurrentReagent.ID == reagentId)
            {
                return;
            }

            //Only reagents with spritePath property can change appearance of transformable containers!
            if (!string.IsNullOrWhiteSpace(reagentId) &&
                _prototypeManager.TryIndex(reagentId, out ReagentPrototype? proto) &&
                !string.IsNullOrWhiteSpace(proto.SpriteReplacementPath))
            {
                var spriteSpec =
                    new SpriteSpecifier.Rsi(
                        new ResourcePath("Objects/Consumable/Drinks/" + proto.SpriteReplacementPath), "icon");
                if (EntityManager.TryGetComponent(owner, out SpriteComponent? sprite))
                {
                    sprite?.LayerSetSprite(0, spriteSpec);
                }

                string val = proto.Name + " glass";
                EntityManager.GetComponent <MetaDataComponent>(owner).EntityName        = val;
                EntityManager.GetComponent <MetaDataComponent>(owner).EntityDescription = proto.Description;
                component.CurrentReagent = proto;
                component.Transformed    = true;
            }
        }
 private void OnSolutionChange(EntityUid uid, HyposprayComponent component, SolutionChangedEvent args)
 {
     component.Dirty();
 }
예제 #5
0
 private void OnSolutionChange(EntityUid uid, PowerCellComponent component, SolutionChangedEvent args)
 {
     component.IsRigged = _solutionsSystem.TryGetSolution(uid, PowerCellComponent.SolutionName, out var solution) &&
                          solution.ContainsReagent("Plasma", out var plasma) &&
                          plasma >= 5;
 }
예제 #6
0
 private void OnSolutionChange(EntityUid uid, DrinkComponent component, SolutionChangedEvent args)
 {
     UpdateAppearance(component);
 }
 private void OnSolutionChange(EntityUid uid, RehydratableComponent component, SolutionChangedEvent args)
 {
     if (_solutionsSystem.GetReagentQuantity(uid, component.CatalystPrototype) > ReagentUnit.Zero)
     {
         Expand(component, component.Owner);
     }
 }
 private void OnUpdate(EntityUid uid, PuddleComponent component, SolutionChangedEvent args)
 {
     UpdateSlip(uid, component);
     UpdateVisuals(uid, component);
 }
 private void OnSolutionChange(EntityUid uid, MicrowaveComponent component, SolutionChangedEvent args)
 {
     component.DirtyUi();
 }
 private void OnSolutionChange(EntityUid uid, InjectorComponent component, SolutionChangedEvent args)
 {
     Dirty(component);
 }
예제 #11
0
 private void OnSolutionChange(EntityUid uid, ReagentDispenserComponent component, SolutionChangedEvent args)
 {
     component.UpdateUserInterface();
 }
 private void OnSolutionChange(EntityUid uid, ChemMasterComponent component,
                               SolutionChangedEvent solutionChanged)
 {
     component.UpdateUserInterface();
 }