Esempio n. 1
0
        /// <summary>
        ///     tries to accept a new thing into this chamber
        /// </summary>
        /// <param name="thing"></param>
        /// <param name="allowSpecialEffects"></param>
        /// <returns></returns>
        public override bool TryAcceptThing(Thing thing, bool allowSpecialEffects = true)
        {
            if (base.TryAcceptThing(thing, allowSpecialEffects))
            {
                // ReSharper disable once SwitchStatementMissingSomeCases
                switch (_innerState)
                {
                case ChamberState.WaitingForPawn:
                    _innerState          = ChamberState.Idle;
                    SelectorComp.Enabled = true;
                    break;

                case ChamberState.WaitingForPawnMerging:
                    _innerState = ChamberState.Active;
                    StartMerging();
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(_innerState), _innerState.ToString());
                }

                return(true);
            }

            return(false);
        }
Esempio n. 2
0
        /// <summary>
        ///     tries to accept a new thing into this chamber
        /// </summary>
        /// <param name="thing"></param>
        /// <param name="allowSpecialEffects"></param>
        /// <returns></returns>
        public override bool TryAcceptThing(Thing thing, bool allowSpecialEffects = true)
        {
            if (base.TryAcceptThing(thing, allowSpecialEffects))
            {
                var p = thing as Pawn;
                if (p == null)
                {
                    Log.Error($"{ThingID} accepted non pawn {p.ThingID}/{p.GetType().Name}! this should never happen");
                    return(true);
                }

                var food = p.needs?.food;
                if (food != null)
                {
                    food.CurLevel = food.MaxLevel;
                }

                // ReSharper disable once SwitchStatementMissingSomeCases
                switch (_innerState)
                {
                case ChamberState.WaitingForPawn:
                    _innerState          = ChamberState.Idle;
                    SelectorComp.Enabled = true;
                    break;

                case ChamberState.WaitingForPawnMerging:
                    _innerState = ChamberState.Active;
                    SetActive();
                    StartMerging();
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(_innerState), _innerState.ToString());
                }

                return(true);
            }

            return(false);
        }
Esempio n. 3
0
        /// <summary>
        ///     Gets the inspect string.
        /// </summary>
        /// <returns></returns>
        public override string GetInspectString()
        {
            base.GetInspectString();
            var    stringBuilder = new StringBuilder();
            string inspectString = base.GetInspectString();

            stringBuilder.Append(_innerState.ToString());
            stringBuilder.AppendLine(inspectString);

            if (_innerState == ChamberState.Active)
            {
                float  pDone     = 1f - (float)_timer / _lastTotal;
                var    pawn      = (Pawn)innerContainer.First();
                string insString = "MutagenChamberProgress".Translate() + ": " + pDone.ToStringPercent() + " ";

                switch (_currentUse)
                {
                case ChamberUse.Mutation:
                    insString += "PMChamberAddingMutations".Translate();
                    break;

                case ChamberUse.Merge:
                case ChamberUse.Tf:
                    insString += "PMChamberTransforming".Translate(pawn, _targetAnimal);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }


                stringBuilder.AppendLine(insString);
            }


            return(stringBuilder.ToString().TrimEndNewlines());
        }