public DataService(IModelSerializer serializer, FSO.Content.GameContent content) { _serializer = serializer; _dataDefinition = content.DataDefinition; //Build Struct => Field[] maps for quicker serialization foreach (var derived in _dataDefinition.DerivedStructs) { var type = MaskedStructUtils.FromID(derived.ID); var fields = new List <StructField>(); var parent = _dataDefinition.Structs.First(x => x.ID == derived.Parent); foreach (var field in parent.Fields) { var mask = derived.FieldMasks.FirstOrDefault(x => x.ID == field.ID); if (mask == null) { continue; } /* * var action = DerivedStructFieldMaskType.KEEP; * if (mask != null){ * action = mask.Type; * } * if (action == DerivedStructFieldMaskType.REMOVE){ * //These seems wrong, ServerMyAvatar and MyAvatar both exclude bookmarks by this logic * //continue; * } */ fields.Add(field); } _maskedStructToActualFields.Add(type, fields.ToArray()); } foreach (var _struct in _dataDefinition.Structs) { _structToActualFields.Add(_struct.ID, _struct.Fields.ToArray()); } var assembly = Assembly.GetAssembly(typeof(DataService)); foreach (var type in assembly.GetTypes()) { var attributes = Attribute.GetCustomAttributes(type); foreach (var attribute in attributes) { if (attribute is DataServiceModel) { var _struct = _dataDefinition.GetStruct(type.Name); if (_struct != null) { _modelTypeById.Add(_struct.ID, type); _modelIdByType.Add(type, _struct.ID); } } } } }
public RealestateDomain(IShardsDomain shards, FSO.Content.GameContent content) { _Shards = shards; _Content = content; _ByShard = new Dictionary <int, ShardRealestateDomain>(); foreach (var item in shards.All) { GetByShard(item.Id); } }
public ClientDataService(IModelSerializer serializer, FSO.Content.GameContent content, IKernel kernel) : base(serializer, content) { AddProvider(kernel.Get <ClientAvatarProvider>()); AddProvider(kernel.Get <ClientLotProvider>()); AddProvider(kernel.Get <ClientCityProvider>()); CityClient = kernel.Get <AriesClient>("City"); CityClient.AddSubscriber(this); //When a new object is made, this data will be requested automatically SetDefaultDataStruct(typeof(Avatar), MaskedStruct.SimPage_Main); PollInterval = GameThread.SetInterval(PollTopics, 5000); }