Exemple #1
0
        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);
        }