HelloWorld.ActionDescriptor.TryComplete C# (CSharp) Method

TryComplete() public method

检查活动是否已经完成,若已经完成则获取相应的收益
public TryComplete ( PlaceActing acting, System.DateTime now ) : bool
acting PlaceActing 正在进行的活动
now System.DateTime
return bool
        public override bool TryComplete( PlaceActing acting, DateTime now )
        {
            var completedOn = acting.StartOn + Requirement.Time;

              if ( completedOn > now )
            return false;

              var place = acting.Place;
              var player = acting.GetPlayer();

              if ( Returns.Items != null && player != null )
            player.Resources.AddItems( Returns.Items );

              if ( Returns.Building != null )
            place.SetBuilding( Returns.Building.Guid );

              place.CheckPoint = completedOn;

              if ( player != null )
              {
            var message = new GameMessageEntry( completedOn, string.Format( "通过不懈的努力,在位置 {0} 的活动 {1} 已经完成 {2}", place.Coordinate.ToRelative( player ), Name, Returns.DescriptiveMessage ) );
            GameHost.MessageService.AddMessage( player.Guid, message );
              }
              return true;
        }

Usage Example

示例#1
0
        /// <summary>
        /// 检查活动状态
        /// </summary>
        public void Check(DateTime now)
        {
            lock ( SyncRoot )
            {
                if (Place == null)
                {
                    throw new InvalidOperationException();
                }


                if (this.Equals(Place.Acting) == false)
                {
                    throw new InvalidOperationException();
                }

                if (ActionDescriptor.TryComplete(this, now))
                {
                    Place.SetActing(null);
                }
            }
        }