当前位置: 首页>>代码示例>>C#>>正文


C# EventContext.Commit方法代码示例

本文整理汇总了C#中EventContext.Commit方法的典型用法代码示例。如果您正苦于以下问题:C# EventContext.Commit方法的具体用法?C# EventContext.Commit怎么用?C# EventContext.Commit使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在EventContext的用法示例。


在下文中一共展示了EventContext.Commit方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: ExecuteAction

        private bool ExecuteAction(Character character, ActionDescriptor actionDescriptor, ISet<Character> finishedCharacters, Dictionary<Room, List<ObservableInformation>> informations)
        {
            //Find a matching event to execute.
            Event eventToPlay = eventManager.FindEventForAction(actionDescriptor, this);

            if (eventToPlay != null)
            {
                //We pass in an event results instead of accepting a return value because we want all
                //the event logic along the way to touch the same instance instead of having to worry
                //about merging a number of different instances.
                EventResults results = new EventResults();
                EventContext context = new EventContext(actionDescriptor);
                eventToPlay.Execute(results, this, context);

                //We need to commit any changes that occurred.
                context.Commit();

                //Did the target get their turn consumed?
                if (!results.TargetGetsTurn && actionDescriptor.Target != null)
                {
                    //Remove the target from the room (since they are busy) and make sure they don't
                    //get their normal action.
                    finishedCharacters.Add(actionDescriptor.Target);
                    actionDescriptor.Target.MarkBusy();
                }

                if(results.HasInformation)
                {
                    //Add any information to the list of things that characters in the room might observe.
                    List<ObservableInformation> infos = null;
                    if (!informations.TryGetValue(character.CurrentRoom, out infos))
                    {
                        infos = new List<ObservableInformation>();
                        informations.Add(character.CurrentRoom, infos);
                    }
                    infos.AddRange(results.ObservableInformation);
                }

                if (results.ContinueTurn)
                {
                    //The turn is incomplete.  The character isn't busy or finished yet.
                    return false;
                }
            }

            //This character is now done.
            finishedCharacters.Add(character);

            // The initiator always gets their turn consumed so remove them from the room.
            character.MarkBusy();

            //The turn completed successfully.
            return true;
        }
开发者ID:jenn0108,项目名称:CourtIntrigue,代码行数:54,代码来源:Game.cs

示例2: ExecuteOnTold

 public void ExecuteOnTold(Character currentCharacter, Game game, Room room)
 {
     //The current character is the root of the new context so that they will be the
     //default scope in the on_told we are about to run.
     // We might need tellingCharacter here but removing it for now since it's never used.
     EventContext observeContext = new EventContext(currentCharacter, parameters);
     information.OnTold.Execute(new EventResults(), game, observeContext);
     observeContext.Commit();
 }
开发者ID:jenn0108,项目名称:CourtIntrigue,代码行数:9,代码来源:InformationInstance.cs

示例3: ExecuteOnObserve

        public void ExecuteOnObserve(Character currentCharacter, Game game, Room room)
        {
            foreach(var param in information.Parameters)
            {
                if(param.Type == typeof(Character) && param.Inform)
                {
                    Character curr = parameters[param.Name] as Character;
                    curr.AddHistory(this);
                }
            }

            //The current character is the root of the new context so that they will be the
            //default scope in the on_observe we are about to run.
            EventContext observeContext = new EventContext(currentCharacter, parameters);
            information.OnObserve.Execute(new EventResults(), game, observeContext);
            observeContext.Commit();
        }
开发者ID:jenn0108,项目名称:CourtIntrigue,代码行数:17,代码来源:InformationInstance.cs

示例4: GiveJobTo

        public void GiveJobTo(Job job, Character newHolder, Game game)
        {
            if(job.Unique)
            {
                Character oldHolder = uniqueJobs[job];

                if(oldHolder != null)
                {
                    if (job.Permanent)
                        throw new InvalidOperationException("You tried to fire the king!! He chops your head off instead.");

                    oldHolder.FireFromJob(job);

                    Event fireEvent = game.GetEventById(job.OnFire);
                    if (fireEvent != null)
                    {
                        EventContext context = new EventContext(oldHolder);
                        fireEvent.Execute(new EventResults(), game, context);
                        //We need to commit any changes.
                        context.Commit();
                    }
                }

                if(newHolder != null)
                {
                    newHolder.GiveJob(job);

                    Event hireEvent = game.GetEventById(job.OnHire);
                    if (hireEvent != null)
                    {
                        EventContext context = new EventContext(newHolder);
                        hireEvent.Execute(new EventResults(), game, context);
                        //We need to commit any changes.
                        context.Commit();
                    }
                }

                uniqueJobs[job] = newHolder;
            }
            else
            {
                if(newHolder != null)
                {
                    newHolder.GiveJob(job);

                    Event hireEvent = game.GetEventById(job.OnHire);
                    if (hireEvent != null)
                    {
                        EventContext context = new EventContext(newHolder);
                        hireEvent.Execute(new EventResults(), game, context);
                        //We need to commit any changes.
                        context.Commit();
                    }
                }
            }
        }
开发者ID:jenn0108,项目名称:CourtIntrigue,代码行数:56,代码来源:Job.cs


注:本文中的EventContext.Commit方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。