예제 #1
0
 public TurnScope(Player player,
                  Supply supply,
                  IEventAggregator eventAggregator = null,
                  TrashPile trash = null)
     : this(player, supply, 1, eventAggregator, trash)
 {
 }
예제 #2
0
 protected AbstractActionScope(Supply supply, IEventAggregator eventAggregator, TrashPile trashPile, int turnNumber)
 {
     Supply           = supply ?? new Supply();
     _eventAggregator = eventAggregator ?? new EventAggregator();
     eventAggregator.Register(this);
     _trashPile = trashPile ?? new TrashPile();
     TurnNumber = turnNumber;
 }
예제 #3
0
 public TurnScope(Player player,
                  Supply supply,
                  int turnNumber,
                  IEventAggregator eventAggregator,
                  IEnumerable <Player> reactingPlayers,
                  TrashPile trash,
                  IContainer container)
     : this(player, supply, turnNumber, eventAggregator, trash)
 {
     container.Configure(cfg => cfg.For <ITurnScope>().Use(this));
     _container = container;
     reactingPlayers.ForEach(p => _reactionScopes.Add(new ReactionScope(eventAggregator, player, p, this, trash, supply)));
 }
예제 #4
0
 public ReactionScope(IEventAggregator eventAggregator,
                      Player actingPlayer,
                      Player reactingPlayer,
                      ITurnScope originatingTurnScope,
                      TrashPile trashPile,
                      Supply supply) : base(supply, eventAggregator, trashPile, 1)
 {
     _player               = reactingPlayer;
     _actingPlayer         = actingPlayer;
     _reactingPlayer       = reactingPlayer;
     _originatingTurnScope = originatingTurnScope;
     _trashPile            = trashPile;
     _eventPipeline        = new EventFilterPipeline(_reactingPlayer);
 }
예제 #5
0
        public TurnScope(Player player,
                         Supply supply,
                         int turnNumber,
                         IEventAggregator eventAggregator,
                         TrashPile trashPile) : base(supply, eventAggregator, trashPile, turnNumber)
        {
            _turnState = TurnState.NewTurn();
            if (supply == null)
            {
                throw new ArgumentNullException("Supply cannot be null.");
            }

            _player     = player;
            Deck        = _player.Deck;
            DiscardPile = _player.DiscardPile;
            _eventAggregator.Register(this);
        }
예제 #6
0
 public void TrashCard(Card card, TrashPile trash, TurnScope turnScope)
 {
     MoveCardIntoSet(card, trash, turnScope);
 }
예제 #7
0
 public void SetTrashPile(TrashPile trashPile)
 {
     mTrashPile = trashPile;
 }
예제 #8
0
파일: RummageEx.cs 프로젝트: yakoder/NRaas
        public override bool Run()
        {
            try
            {
                if (!Target.RouteToCan(Actor, true))
                {
                    return(false);
                }
                StateMachineClient stateMachine = Target.GetStateMachine(Actor, false);
                stateMachine.AddOneShotScriptEventHandler(0x65, Target.EventCallbackRemoveLid);
                stateMachine.AddOneShotScriptEventHandler(0x66, Target.EventCallbackAddLid);

                Trashcan target = Target as Trashcan;
                if (target != null)
                {
                    mLidGuid = target.SetupLidProp(stateMachine);
                }

                IFairyBoobyTrap trap = Target as IFairyBoobyTrap;
                if (((trap != null) && ((trap.BoobyTrapComponent != null) ? trap.BoobyTrapComponent.CanTriggerTrap(Actor.SimDescription) : false)) && trap.TriggerTrap(Actor))
                {
                    TrashcanOutside outsideCan = Target as TrashcanOutside;
                    if (outsideCan != null)
                    {
                        TrashPile.CreateFairyTrapTrashPiles(outsideCan);
                    }
                    return(false);
                }

                StandardEntry();
                BeginCommodityUpdates();

                try
                {
                    if (!Autonomous)
                    {
                        Target.HasBeenRummagedByPlayer = true;
                    }
                    Target.SetRummagingSim(Actor);
                    Target.RummageBroadcasterCreate();
                    stateMachine.RequestState("x", "LoopRummage");
                    if ((!Autonomous && (HudController.InfoState != InfoState.Inventory)) && Actor.IsActiveSim)
                    {
                        HudController.SetInfoState(InfoState.Inventory);
                    }
                    mNetWorth = Target.LotCurrent.Household.NetWorth();
                    DoLoop(~(ExitReason.Replan | ExitReason.MidRoutePushRequested | ExitReason.ObjectStateChanged | ExitReason.PlayIdle | ExitReason.MaxSkillPointsReached), LoopDel, stateMachine);
                    Target.RummageBroadcasterDestroy();
                    stateMachine.RequestState("x", "Exit");
                    if (!Autonomous)
                    {
                        HudModel.OpenObjectInventoryForOwner(null);
                    }
                }
                finally
                {
                    EndCommodityUpdates(true);
                }

                BuffInstance element = Actor.BuffManager.GetElement(BuffNames.Smelly);
                if (element != null)
                {
                    element.mBuffOrigin = Origin.FromDumpsterDiving;
                }
                StandardExit();
                return(true);
            }
            catch (ResetException)
            {
                throw;
            }
            catch (Exception e)
            {
                Common.Exception(Actor, Target, e);
                return(false);
            }
        }