HelloWorld.Unit.CreateUnit C# (CSharp) Method

CreateUnit() public static method

public static CreateUnit ( IGameDataService dataService, UnitDescriptor descriptor, System.Guid owner, Coordinate coordinate, System.Guid id, string name ) : Unit
dataService IGameDataService
descriptor UnitDescriptor
owner System.Guid
coordinate Coordinate
id System.Guid
name string
return Unit
        public static Unit CreateUnit( IGameDataService dataService, UnitDescriptor descriptor, Guid owner, Coordinate coordinate, Guid id, string name )
        {
            var data = new JObject() as dynamic;

              data.ID = id;
              data.Name = name;
              data.Owner = owner;
              data.Descriptor = descriptor.Guid;
              data.Coordinate = coordinate.ToString();
              data.State = UnitActionState.Idle;
              data.Mobility = 0m;
              data.LastActTime = DateTime.UtcNow;

              var type = descriptor.InstanceType;
              var unit = (Unit) Activator.CreateInstance( type );

              unit.InitializeData( dataService, data );
              return unit;
        }

Usage Example

示例#1
0
        public static Unit NewUnit(this Place place, Guid descriptorId, Guid?playerId = null)
        {
            var descriptor = GameHost.GameRules.GetDataItem <UnitDescriptor>(descriptorId);
            var owner      = playerId ?? place.Owner ?? Guid.Empty;

            if (owner == Guid.Empty)
            {
                throw new ArgumentNullException("playerId", "无法从地块找到单位所有者,必须指定单位所有玩家");
            }


            return(Unit.CreateUnit(place.DataService, descriptor, owner, place.Coordinate, Guid.NewGuid(), place.DataService.NameService.AllocateName()));
        }