Beispiel #1
0
        public bool BuyAndEatConcessionsFood(Sim sim, bool autonomous)
        {
            bool result = true;

            //Find the counter the cash register is on
            bool    registerFound = false;
            int     cupLevel      = 1;
            Vector3 cupPosition   = sim.Position;

            if (base.Target.SimDescription.HasActiveRole && base.Target.SimDescription.AssignedRole != null && base.Target.SimDescription.AssignedRole.RoleGivingObject != null)
            {
                if (base.Target.SimDescription.AssignedRole.RoleGivingObject.Parent != null)
                {
                    registerFound = true;
                }
            }

            if (registerFound)
            {
                cupLevel    = base.Target.SimDescription.AssignedRole.RoleGivingObject.Level + 100;
                cupPosition = base.Target.SimDescription.AssignedRole.RoleGivingObject.Position;
            }

            HotBeverageMachine.Cup cup = GlobalFunctions.CreateObject("CoffeeCup", cupPosition, cupLevel, Vector3.UnitZ) as HotBeverageMachine.Cup;

            if (cup != null)
            {
                cup.Contents = new HotBeverageMachine.CustomDrinkRecipe();
                if (sim.ParentToRightHand(cup))
                {
                    CarrySystem.EnterWhileHolding(sim, cup);
                    cup.PushDrinkAsContinuation(sim);
                    cup.StartEffects();
                    result = true;
                }
                else
                {
                    cup.Destroy();
                    result = false;
                }
            }

            //HotBeverageMachine.Cup cup = GlobalFunctions.CreateObject("CoffeeCup", cupPosition, cupLevel, Vector3.UnitZ) as HotBeverageMachine.Cup;
            //cup.Contents = new HotBeverageMachine.CustomDrinkRecipe();
            //CarrySystem.PickUp(sim, cup);
            ////   CarrySystem.EnterWhileHolding(sim, cup);
            //cup.PushDrinkAsContinuation(sim);


            return(result);
        }
Beispiel #2
0
            public override bool Run()
            {
                Counter parent = base.Target.Parent as Counter;

                if (parent == null)
                {
                    return(false);
                }
                if (!SurfaceUtil.RouteToObjectOnSurface(parent, base.Actor, base.Target))
                {
                    return(false);
                }
                base.StandardEntry();
                HotBeverageMachine.Cup actor = GlobalFunctions.CreateObject("CoffeeCup", base.Target.Parent.Position, base.Target.Level, Vector3.UnitZ) as HotBeverageMachine.Cup;
                try
                {
                    actor.AddToUseList(base.Actor);
                    actor.Contents = (base.InteractionDefinition as Definition).Drink;
                    actor.SetHiddenFlags(HiddenFlags.Model);
                    HotBeverageMachine.EnterStateMachine(this);
                    base.SetActor("coffeeCup", actor);
                    base.BeginCommodityUpdates();
                    base.AnimateSim("Make One Drink");
                    base.EndCommodityUpdates(true);
                    CarrySystem.VerifyAnimationParent(actor, base.Actor);
                }
                finally
                {
                    actor.RemoveFromUseList(base.Actor);
                }

                //pay for drink
                CommonMethods.PayForCoffee(base.Actor, base.Target.LotCurrent);

                CarrySystem.EnterWhileHolding(base.Actor, actor);
                actor.PushDrinkAsContinuation(base.Actor);
                if (parent.IsCleanable)
                {
                    parent.Cleanable.DirtyInc(base.Actor);
                }
                base.mCurrentStateMachine.Dispose();
                actor.StartEffects();
                base.StandardExit();
                return(true);
            }