private void OnEntityCreatedHandler(EntityCreatedEventArgs args)
        {
            if (!LinqToDBForEFTools.EnableChangeTracker ||
                !Tracking ||
                Context.ChangeTracker.QueryTrackingBehavior == QueryTrackingBehavior.NoTracking)
            {
                return;
            }

            var type = args.Entity.GetType();

            if (_lastType != type)
            {
                _lastType       = type;
                _lastEntityType = Context.Model.FindEntityType(type);
            }

            if (_lastEntityType == null)
            {
                return;
            }

            if (_stateManager == null)
            {
                _stateManager = Context.GetService <IStateManager>();
            }

            var entry = _stateManager.StartTrackingFromQuery(_lastEntityType, args.Entity, ValueBuffer.Empty);

            args.Entity = entry.Entity;
        }
示例#2
0
        private void OnEntityCreatedHandler(EntityCreatedEventArgs args)
        {
            if (!LinqToDBForEFTools.EnableChangeTracker ||
                !Tracking ||
                Context !.ChangeTracker.QueryTrackingBehavior == QueryTrackingBehavior.NoTracking)
            {
                return;
            }

            var type = args.Entity.GetType();

            if (_lastType != type)
            {
                _lastType       = type;
                _lastEntityType = Context.Model.FindEntityType(type);
            }

            if (_lastEntityType == null)
            {
                return;
            }

            if (_stateManager == null)
            {
                _stateManager = Context.GetService <IStateManager>();
            }


            // It is a real pain to register entity in change tracker
            //
            InternalEntityEntry?entry = null;

            foreach (var key in _lastEntityType.GetKeys())
            {
                //TODO: Find faster way
                var keyArray = key.Properties.Where(p => p.PropertyInfo != null || p.FieldInfo != null).Select(p =>
                                                                                                               p.PropertyInfo != null
                                                ? p.PropertyInfo.GetValue(args.Entity)
                                                : p.FieldInfo.GetValue(args.Entity)).ToArray();

                if (keyArray.Length == key.Properties.Count)
                {
                    entry = _stateManager.TryGetEntry(key, keyArray);

                    if (entry != null)
                    {
                        break;
                    }
                }
            }

            if (entry == null)
            {
                entry = _stateManager.StartTrackingFromQuery(_lastEntityType, args.Entity, ValueBuffer.Empty);
            }

            args.Entity = entry.Entity;
        }
示例#3
0
        public void EntityCreated(EntityCreatedEventArgs args)
        {
            var entity = args.Entity;
            var type   = entity.GetType();

            if (!_entityDic.TryGetValue(type, out var store))
            {
                store = (IObjectStore)Activator.CreateInstance(typeof(ObjectStore <>).MakeGenericType(type));
                _entityDic.Add(type, store);
            }

            store.StoreEntity(args);
        }
示例#4
0
            public void StoreEntity(EntityCreatedEventArgs args)
            {
                var entity = (T)args.Entity;

                if (_dic.TryGetValue(entity, out var e))
                {
                    args.Entity = e;
                }
                else
                {
                    _dic.Add(entity, entity);
                }
            }
示例#5
0
        void IEntityMap.MapEntity(EntityCreatedEventArgs args)
        {
            var entity = (T)args.Entity;
            var entry  = _entities.GetOrAdd(entity, key => new EntityMapEntry <T> {
                Entity = key
            });

            if (ReferenceEquals(args.Entity, entry.Entity) == false)
            {
                args.Entity = entry.Entity;
            }

            entry.IncrementDBCount();
        }
示例#6
0
        void EntityCreated(EntityCreatedEventArgs args)
        {
            if (_checkEntityIdentity && args.Entity is Parent p)
            {
                if (_parents.TryGetValue(p.ParentID, out var pr))
                {
                    args.Entity = pr;
                    return;
                }

                _parents[p.ParentID] = p;
            }

            _entitiesCreated++;
        }
示例#7
0
        void EntityCreated(EntityCreatedEventArgs args)
        {
            if (_checkEntityIdentity && args.Entity is Parent p)
            {
                args.TableOptions.Should().Be(TableOptions.NotSet);
                args.TableName.Should().Be(nameof(Parent));

                if (_parents.TryGetValue(p.ParentID, out var pr))
                {
                    args.Entity = pr;
                    return;
                }

                _parents[p.ParentID] = p;
            }

            _entitiesCreated++;
        }
示例#8
0
 void HandleEntityCreated(object sender, EntityCreatedEventArgs e)
 {
     // once created gets cached
     dragonInfo = e.EntityInfo;
 }
示例#9
0
 //entity
 public static void EntityCreated(EntityCreatedEventArgs e) => SystemEvents.InvokeEvent(null, OnEntityCreated, e, nameof(OnEntityCreated));
示例#10
0
        void HandleWeapon(object sender, EntityCreatedEventArgs e)
        {
            var equipment = weapons [e.Entity.ID];

            equipment.EntityID       = e.Entity.ID;
            equipment.Weapon         = equipmentMapping [e.Class];
            equipment.AmmoInMagazine = -1;

            e.Entity.FindProperty("m_iClip1").IntRecived += (asdasd, ammoUpdate) => {
                equipment.AmmoInMagazine = ammoUpdate.Value - 1;                 //wtf volvo y -1?
            };

            e.Entity.FindProperty("LocalWeaponData.m_iPrimaryAmmoType").IntRecived += (asdasd, typeUpdate) => {
                equipment.AmmoType = typeUpdate.Value;
            };

            if (equipment.Weapon == EquipmentElement.P2000)
            {
                e.Entity.FindProperty("m_nModelIndex").IntRecived += (sender2, e2) => {
                    equipment.OriginalString = modelprecache[e2.Value];

                    if (modelprecache[e2.Value].EndsWith("_pist_223.mdl"))
                    {
                        equipment.Weapon = EquipmentElement.USP;                         //BAM
                    }
                    else if (modelprecache[e2.Value].EndsWith("_pist_hkp2000.mdl"))
                    {
                        equipment.Weapon = EquipmentElement.P2000;
                    }
                    else
                    {
                        throw new InvalidDataException("Unknown weapon model");
                    }
                };
            }

            if (equipment.Weapon == EquipmentElement.M4A4)
            {
                e.Entity.FindProperty("m_nModelIndex").IntRecived += (sender2, e2) => {
                    equipment.OriginalString = modelprecache[e2.Value];
                    if (modelprecache[e2.Value].EndsWith("_rif_m4a1_s.mdl"))
                    {
                        equipment.Weapon = EquipmentElement.M4A1;                          //BAM
                    }
                    else if (modelprecache[e2.Value].EndsWith("_rif_m4a1.mdl"))
                    {
                        equipment.Weapon = EquipmentElement.M4A4;
                    }
                    else
                    {
                        throw new InvalidDataException("Unknown weapon model");
                    }
                };
            }

            if (equipment.Weapon == EquipmentElement.P250)
            {
                e.Entity.FindProperty("m_nModelIndex").IntRecived += (sender2, e2) => {
                    equipment.OriginalString = modelprecache[e2.Value];
                    if (modelprecache[e2.Value].EndsWith("_pist_cz_75.mdl"))
                    {
                        equipment.Weapon = EquipmentElement.CZ;                          //BAM
                    }
                    else if (modelprecache[e2.Value].EndsWith("_pist_p250.mdl"))
                    {
                        equipment.Weapon = EquipmentElement.P250;
                    }
                    else
                    {
                        throw new InvalidDataException("Unknown weapon model");
                    }
                };
            }
        }
示例#11
0
文件: Map.cs 项目: manicolosi/questar
 private void OnItemCreated(object sender, EntityCreatedEventArgs args)
 {
     Item item = (Item) args.Entity;
     item.LocationChanged += OnItemLocationChanged;
 }
示例#12
0
文件: Map.cs 项目: manicolosi/questar
        private void OnActorCreated(object sender, EntityCreatedEventArgs args)
        {
            Actor actor = (Actor) args.Entity;

            actor.LocationChanged += OnActorLocationChanged;
            actor.Destroyed += OnActorDestroyed;

            if (actor.Location.Map == this) {
                this[actor.Location.Position].Actor = actor;
            }
        }
示例#13
0
 void OnEntityCreated(EntityCreatedEventArgs args)
 {
     GetOrAddEntityMap(args.Entity.GetType()).MapEntity(args);
 }
示例#14
0
 void EventManager_EntityCreate(object sender, EntityCreatedEventArgs args)
 {
 }
示例#15
0
        private void ActorCreatedHandler(object sender, EntityCreatedEventArgs args)
        {
            Actor actor = (Actor) args.Entity;
            actor.Destroyed += ActorDestroyedHandler;

            // HACK: Get the hero in the first position.
            if (actor is Hero)
                actors.Insert (0, actor);
            else
                actors.Add (actor);
        }