コード例 #1
0
        T IReferences.GetOrCreateObject <T>(JObject parent, string name, Func <ModelDataAccessor, T> factory, bool createIfNull)
        {
            if (_objects.TryGet(parent, name, out T obj))
            {
                return(obj);
            }

            var property = Get(parent, name);

            if (property == null)
            {
                if (createIfNull)
                {
                    var jObj = _refs.Create();
                    if (parent.ContainsKey(name))
                    {
                        parent[name] = jObj;
                    }
                    else
                    {
                        parent.Add(name, jObj);
                    }
                    property = new ModelDataAccessor(jObj, this);
                }
                else
                {
                    return(default(T));
                }
            }
            obj = (factory ?? Mappings.GetFactory <T>()).Invoke(property);
            _objects.Add(parent, name, obj);
            return(obj);
        }
コード例 #2
0
        public object CreateObject(JObject jObj, Func <ModelDataAccessor, object> factory)
        {
            var accessor = new ModelDataAccessor(jObj, this);
            var obj      = factory.Invoke(accessor);
            var id       = jObj.Property("$id").Value.Value <string>();

            _objects.Add(id, obj);
            return(obj);
        }
コード例 #3
0
 public ListAccessor(JArray array, IReferences refs, Func <ModelDataAccessor, T> factory)
 {
     _array   = array;
     _refs    = refs;
     _factory = factory;
     _items   = array
                .Select(t => {
         var obj      = refs.GetReferred((JObject)t);
         var accessor = new ModelDataAccessor(obj, _refs);
         return(factory.Invoke(accessor));
     })
                .ToList() ?? new List <T>();
 }
コード例 #4
0
        public T GetRoot <T>(Func <ModelDataAccessor, T> factory = null)
            where T : Model
        {
            if (_root != null)
            {
                return((T)_root);
            }

            var accessor = new ModelDataAccessor(_json, _refs);
            var root     = (factory ?? Mappings.GetFactory <T>()).Invoke(accessor);

            _root = root;
            return(root);
        }
コード例 #5
0
        public T Add(Action <IReferences, JObject> init = null)
        {
            JObject obj;

            if (typeof(T).IsSubclassOf(typeof(RefModel)))
            {
                obj = _refs.Create();
            }
            else
            {
                obj = new JObject();
            }
            init?.Invoke(_refs, obj);
            var accessor = new ModelDataAccessor(obj, _refs);
            var item     = _factory.Invoke(accessor);

            _array.Add(obj);
            _items.Add(item);
            CollectionChanged?.Invoke(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, item));
            return(item);
        }
コード例 #6
0
 public PlayerModel(ModelDataAccessor accessor) : base(accessor)
 {
     N.On(Kingdom, nameof(Kingdom.Disabled), nameof(IsKingdomEnabled));
 }
コード例 #7
0
 public FeaturesModel(ModelDataAccessor accessor) : base(accessor)
 {
 }
コード例 #8
0
 public PlayerKingdomChangeModel(ModelDataAccessor accessor) : base(accessor)
 {
 }
コード例 #9
0
 public UISettingsModel(ModelDataAccessor accessor, string characterBlueprint) : base(accessor)
 {
     _characterBlueprint = characterBlueprint;
 }
コード例 #10
0
 public WeaponItemModel(ModelDataAccessor accessor) : base(accessor)
 {
 }
コード例 #11
0
 public StatsModel(ModelDataAccessor accessor) : base(accessor)
 {
 }
コード例 #12
0
 public PlayerKingdomLeaderModel(ModelDataAccessor accessor) : base(accessor)
 {
 }
 public PlayerKingdomStatsModel(ModelDataAccessor accessor) : base(accessor)
 {
 }
コード例 #14
0
 public ProgressionModel(ModelDataAccessor accessor) : base(accessor)
 {
 }
コード例 #15
0
 public RefModel(ModelDataAccessor accessor) : base(accessor)
 {
 }
コード例 #16
0
 public ClassModel(ModelDataAccessor accessor) : base(accessor)
 {
 }
コード例 #17
0
 public CharacterModel(ModelDataAccessor accessor) : base(accessor)
 {
     N.On(nameof(CustomName), nameof(Name));
 }
コード例 #18
0
 public InventoryModel(ModelDataAccessor accessor) : base(accessor)
 {
     //N.On(nameof(Items), nameof(UnequipedItems));
 }
コード例 #19
0
 public PartyModel(ModelDataAccessor accessor) : base(accessor)
 {
 }
コード例 #20
0
 public CharacterAttributeModel(ModelDataAccessor accessor) : base(accessor)
 {
 }
コード例 #21
0
 public PlayerKingdomEventHistoryModel(ModelDataAccessor accessor) : base(accessor)
 {
 }
コード例 #22
0
 public Model(ModelDataAccessor accessor)
 {
     A = accessor;
     N = new NotifyChangeTracker(this, () => _propertyChanged);
     A.SetChangeTracker(N);
 }
コード例 #23
0
 public BodyModel(ModelDataAccessor accessor) : base(accessor)
 {
 }
コード例 #24
0
 public FactContextModel(ModelDataAccessor accessor) : base(accessor)
 {
 }