Example #1
0
        public override bool Run()
        {
            try
            {
                if (!Target.StartComputing(this, SurfaceHeight.Table, true))
                {
                    return(false);
                }

                if (!UIUtils.IsOkayToStartModalDialog())
                {
                    return(false);
                }

                Target.StartVideo(Computer.VideoType.Browse);
                AnimateSim("GenericTyping");

                string failReason = null;
                if (((Actor.Household == Household.ActiveHousehold) && !MovingSituation.MovingInProgress) && InWorldSubState.IsEditTownValid(Actor.LotHome, ref failReason))
                {
                    Definition interactionDefinition = InteractionDefinition as Definition;
                    if (interactionDefinition.LocalMove)
                    {
                        if (!Household.ActiveHousehold.LotHome.IsApartmentLot && (Household.ActiveHousehold.GetNumberOfRoommates() > 0))
                        {
                            if (!TwoButtonDialog.Show(Localization.LocalizeString("Ui/Caption/Roommates:MovingDismissConfirmation", new object[0]), LocalizationHelper.Yes, LocalizationHelper.No))
                            {
                                Target.StopComputing(this, Computer.StopComputingAction.TurnOff, false);
                                return(true);
                            }

                            Household.RoommateManager.StopAcceptingRoommates(true);
                        }

                        MovingDialogEx.Show(new GameplayMovingModelEx(Actor));
                    }
                    else
                    {
                        MovingWorldsModel model = new MovingWorldsModel(Actor);
                        MovingWorldDialog.Show(model);
                        if ((model.WorldName != null) && MovingWorldUtil.VerifyWorldMove())
                        {
                            Common.FunctionTask.Perform(model.TriggerSaveAndTravel);
                        }
                    }
                }

                Target.StopComputing(this, Computer.StopComputingAction.TurnOff, false);
                return(true);
            }
            catch (ResetException)
            {
                throw;
            }
            catch (Exception e)
            {
                Common.Exception(Actor, Target, e);
                return(false);
            }
        }
Example #2
0
        public override bool Run()
        {
            try
            {
                bool success = false;
                Actor.SynchronizationLevel  = Sim.SyncLevel.NotStarted;
                Target.SynchronizationLevel = Sim.SyncLevel.NotStarted;

                if (BeginSocialInteraction(new SocialInteractionB.Definition(null, Localization.LocalizeString(Actor.IsFemale, "Gameplay/Excel/Socializing/Action:BeAskedToMoveIn", new object[0x0]), false), false, true))
                {
                    BeginCommodityUpdates();
                    mCurrentStateMachine = StateMachineClient.Acquire(Simulator.CurrentTask, "social_AskFor");
                    mCurrentStateMachine.SetActor("x", Actor);
                    mCurrentStateMachine.SetActor("y", Target);
                    mCurrentStateMachine.EnterState("x", "Enter");
                    mCurrentStateMachine.EnterState("y", "Enter");
                    if (AcceptCancelDialog.Show(Localization.LocalizeString("Gameplay/Moving:MoveInPrompt", new object[] { Target, Actor })))
                    {
                        mCurrentStateMachine.RequestState(false, "y", "Friendly");
                        mCurrentStateMachine.RequestState(true, "x", "Friendly");
                        if (!MovingSituation.MovingInProgress)
                        {
                            // Custom
                            using (GameplayMovingModelEx.ProtectFunds protect = new GameplayMovingModelEx.ProtectFunds(Target.Household))
                            {
                                MovingDialogEx.Show(new GameplayMovingModelEx(Target, Actor.Household));
                            }
                        }
                    }
                    else
                    {
                        mCurrentStateMachine.RequestState(false, "y", "Neutral");
                        mCurrentStateMachine.RequestState(true, "x", "Neutral");
                        Actor.SocialComponent.OnMoveInRequestRejected();
                    }

                    if (Actor.Household != Target.Household)
                    {
                        Actor.SocialComponent.OnMoveInRequestRejected();
                    }

                    success = true;
                    EndCommodityUpdates(true);
                }

                Actor.ClearSynchronizationData();
                return(success);
            }
            catch (ResetException)
            {
                throw;
            }
            catch (Exception e)
            {
                Common.Exception(Actor, Target, e);
                return(false);
            }
        }
Example #3
0
        public override Phone.Call.ConversationBehavior OnCallConnected()
        {
            try
            {
                if (UIUtils.IsOkayToStartModalDialog())
                {
                    string failReason = null;
                    if (((Actor.Household == Household.ActiveHousehold) && !MovingSituation.MovingInProgress) && InWorldSubState.IsEditTownValid(Actor.LotHome, ref failReason))
                    {
                        Definition interactionDefinition = InteractionDefinition as Definition;
                        if (interactionDefinition.LocalMove)
                        {
                            if (!Household.ActiveHousehold.LotHome.IsApartmentLot && (Household.ActiveHousehold.GetNumberOfRoommates() > 0))
                            {
                                if (!TwoButtonDialog.Show(Localization.LocalizeString("Ui/Caption/Roommates:MovingDismissConfirmation", new object[0]), LocalizationHelper.Yes, LocalizationHelper.No))
                                {
                                    return(Phone.Call.ConversationBehavior.JustHangUp);
                                }

                                Household.RoommateManager.StopAcceptingRoommates(true);
                            }

                            MovingDialogEx.Show(new GameplayMovingModelEx(Actor));
                        }
                        else
                        {
                            MovingWorldsModel model = new MovingWorldsModel(Actor);
                            MovingWorldDialog.Show(model);
                            if ((model.WorldName != null) && MovingWorldUtil.VerifyWorldMove())
                            {
                                Common.FunctionTask.Perform(model.TriggerSaveAndTravel);
                            }
                        }
                    }
                }
            }
            catch (ResetException)
            {
                throw;
            }
            catch (Exception e)
            {
                Common.Exception(Actor, Target, e);
            }
            return(Phone.Call.ConversationBehavior.JustHangUp);
        }