protected void SubscribeAllEvent <T>(
     EntityEventHandler <T> handler,
     Type[]?before = null, Type[]?after = null)
     where T : notnull
 {
     SubEvent(EventSource.All, handler, before, after);
 }
Esempio n. 2
0
        public virtual bool Delete(T obj, EntityEventHandler <T> deletingHandler = null, EntityEventHandler <T> deletedHandler = null)
        {
            obj = this.HandleEvents(events, es => es.DeletingHandler, DataOperation.Delete, obj, null);
            obj = this.HandleEvent(deletingHandler, DataOperation.Delete, obj, null);

            U entity = new U();

            entity = mapper.Map <T, U>(obj, () => entity);

            var tbl = db.Set <U>();

            if (!tbl.Local.Contains(entity))
            {
                db.Entry(entity).State = EntityState.Deleted;
            }
            else
            {
                db.Set <U>().Remove(entity);
            }

            int ret = db.SaveChanges();

            if (ret > 0)
            {
                this.HandleEvent(deletedHandler, DataOperation.Delete, obj, null);
                this.HandleEvents(events, es => es.DeletedHandler, DataOperation.Delete, obj, null);
            }

            return(ret > 0);
        }
Esempio n. 3
0
        public virtual bool Update(T obj, EntityEventHandler <T> updatingHandler = null, EntityEventHandler <T> updatedHandler = null)
        {
            obj = this.HandleEvents(events, es => es.UpdatingHandler, DataOperation.Update, obj, obj);
            obj = this.HandleEvent(updatingHandler, DataOperation.Update, obj, obj);

            U entity = new U();

            entity = mapper.Map <T, U>(obj, () => entity);

            var tbl = db.Set <U>();

            if (!tbl.Local.Contains(entity))
            {
                db.Entry <U>(entity).State = EntityState.Modified;
            }
            else
            {
                db.Entry <U>(entity).CurrentValues.SetValues(entity);
            }

            int ret = db.SaveChanges();

            if (ret > 0)
            {
                this.HandleEvent(updatedHandler, DataOperation.Update, obj, obj);
                this.HandleEvents(events, es => es.UpdatedHandler, DataOperation.Update, obj, obj);
            }

            return(ret > 0);
        }
Esempio n. 4
0
 private void On_SocketDeath()
 {
     if (gameObject != null)
     {
         EntityEventHandler entityHandler = GetComponent <EntityEventHandler>();
         entityHandler.ChangeHealth.Try(new HealthEventData(-Mathf.Infinity));
     }
 }
        protected void SubscribeNetworkEvent <T>(EntityEventHandler <T> handler)
            where T : notnull
        {
            EntityManager.EventBus.SubscribeEvent(EventSource.Network, this, handler);

            _subscriptions ??= new();
            _subscriptions.Add(new SubBroadcast <T>(EventSource.Network));
        }
Esempio n. 6
0
            // Intended for helper methods, so minimal API.

            public void SubEvent <T>(
                EventSource src,
                EntityEventHandler <T> handler,
                Type[]?before = null, Type[]?after = null)
                where T : notnull
            {
                System.SubEvent(src, handler, before, after);
            }
Esempio n. 7
0
 public void RegisterEvent(int eventID, EntityEventHandler handler)
 {
     if (!eventHandlerDic.TryGetValue(eventID, out var handlers))
     {
         handlers = new List <EntityEventHandler>();
         eventHandlerDic.Add(eventID, handlers);
     }
     handlers.Add(handler);
 }
Esempio n. 8
0
        /// <summary>
        /// Wraps the EntityEvent invocation inside a protected virtual method to let derived classes override it.
        /// This method guards against the possibility of a race condition if the last subscriber unsubscribes immediately
        /// after the null check and before the event is raised. So please don't simplify the invocation even if Visual Studio
        /// tells you to.
        /// </summary>
        /// <param name="e">Event arguments</param>
        protected virtual void OnEntityEvent(EntityEventArgs e)
        {
            EntityEventHandler handler = EntityEvent;

            // Event will be null if there are no subscribers
            if (handler != null)
            {
                // Use the () operator to raise the event.
                handler(this, e);
            }
        }
        private void SubEvent <T>(
            EventSource src,
            EntityEventHandler <T> handler,
            Type[]?before, Type[]?after)
            where T : notnull
        {
            EntityManager.EventBus.SubscribeEvent(src, this, handler, GetType(), before, after);

            _subscriptions ??= new();
            _subscriptions.Add(new SubBroadcast <T>(src));
        }
Esempio n. 10
0
        public virtual bool Insert(T obj, EntityEventHandler <T> insertingHandler = null, EntityEventHandler <T> insertedHandler = null)
        {
            obj = this.HandleEvents(events, es => es.InsertingHandler, DataOperation.Insert, null, obj);
            obj = this.HandleEvent(insertingHandler, DataOperation.Insert, null, obj);

            int ret = db.Insert <T>(obj);

            if (ret > 0)
            {
                this.HandleEvent(insertedHandler, DataOperation.Insert, null, obj);
                this.HandleEvents(events, es => es.InsertedHandler, DataOperation.Insert, null, obj);
            }

            return(ret > 0);
        }
Esempio n. 11
0
        public virtual bool Delete(T obj, EntityEventHandler <T> deletingHandler = null, EntityEventHandler <T> deletedHandler = null)
        {
            obj = this.HandleEvents(events, es => es.DeletingHandler, DataOperation.Delete, obj, null);
            obj = this.HandleEvent(deletingHandler, DataOperation.Delete, obj, null);

            var ret = repository.Remove(GetKeyQuery(obj));

            if (ret.DocumentsAffected > 0)
            {
                this.HandleEvent(deletedHandler, DataOperation.Delete, obj, null);
                this.HandleEvents(events, es => es.DeletedHandler, DataOperation.Delete, obj, null);
            }

            return(ret.DocumentsAffected > 0);
        }
Esempio n. 12
0
        public virtual bool Delete(T obj, EntityEventHandler <T> deletingHandler = null, EntityEventHandler <T> deletedHandler = null)
        {
            obj = this.HandleEvents(events, es => es.DeletingHandler, DataOperation.Delete, obj, null);
            obj = this.HandleEvent(deletingHandler, DataOperation.Delete, obj, null);

            int ret = db.Delete <T>(obj);

            if (ret > 0)
            {
                this.HandleEvent(deletedHandler, DataOperation.Delete, obj, null);
                this.HandleEvents(events, es => es.DeletedHandler, DataOperation.Delete, obj, null);
            }

            return(ret > 0);
        }
Esempio n. 13
0
        public virtual bool Insert(T obj, EntityEventHandler <T> insertingHandler = null, EntityEventHandler <T> insertedHandler = null)
        {
            obj = this.HandleEvents(events, es => es.InsertingHandler, DataOperation.Insert, null, obj);
            obj = this.HandleEvent(insertingHandler, DataOperation.Insert, null, obj);

            var ret = repository.Insert <T>(obj);

            if (ret.DocumentsAffected > 0)
            {
                this.HandleEvent(insertedHandler, DataOperation.Insert, null, obj);
                this.HandleEvents(events, es => es.InsertedHandler, DataOperation.Insert, null, obj);
            }

            return(ret.DocumentsAffected > 0);
        }
Esempio n. 14
0
        public static T HandleEvent <T>(this IRepository <T> repository, EntityEventHandler <T> handler, DataOperation action, T original, T obj)
            where T : class
        {
            if (handler == null)
            {
                return(obj == null ? original : obj);
            }
            var args = new EntityEventArgs <T>()
            {
                Action = action, OriginalEntity = original, Entity = obj, Repository = repository
            };

            handler(args);
            return(args.Entity);
        }
Esempio n. 15
0
        public virtual bool Update(T obj, EntityEventHandler <T> updatingHandler = null, EntityEventHandler <T> updatedHandler = null)
        {
            obj = this.HandleEvents(events, es => es.UpdatingHandler, DataOperation.Update, obj, obj);
            obj = this.HandleEvent(updatingHandler, DataOperation.Update, obj, obj);

            var ret = repository.Save(obj);

            if (ret.DocumentsAffected > 0)
            {
                this.HandleEvent(updatedHandler, DataOperation.Update, obj, obj);
                this.HandleEvents(events, es => es.UpdatedHandler, DataOperation.Update, obj, obj);
            }

            return(ret.DocumentsAffected > 0);
        }
Esempio n. 16
0
        public virtual bool Insert(T obj, EntityEventHandler <T> insertingHandler = null, EntityEventHandler <T> insertedHandler = null)
        {
            U entity = new U();

            entity = mapper.Map <T, U>(obj, () => entity);

            obj = this.HandleEvents(events, es => es.InsertingHandler, DataOperation.Insert, null, obj);
            obj = this.HandleEvent(insertingHandler, DataOperation.Insert, null, obj);

            int ret = db.Insert <U>(entity);

            if (ret > 0)
            {
                this.HandleEvent(insertedHandler, DataOperation.Insert, null, obj);
                this.HandleEvents(events, es => es.InsertedHandler, DataOperation.Insert, null, obj);
            }

            return(ret > 0);
        }
Esempio n. 17
0
        public virtual bool Update(T obj, EntityEventHandler <T> updatingHandler = null, EntityEventHandler <T> updatedHandler = null)
        {
            U entity = new U();

            entity = mapper.Map <T, U>(obj, () => entity);

            obj = this.HandleEvents(events, es => es.UpdatingHandler, DataOperation.Update, obj, obj);
            obj = this.HandleEvent(updatingHandler, DataOperation.Update, obj, obj);

            int ret = db.Update <U>(entity);

            if (ret > 0)
            {
                this.HandleEvent(updatedHandler, DataOperation.Update, obj, obj);
                this.HandleEvents(events, es => es.UpdatedHandler, DataOperation.Update, obj, obj);
            }

            return(ret > 0);
        }
Esempio n. 18
0
    private bool _longHitReady; // tells whether LongHitStart has ended and animation should proceed

    private void Awake()
    {
        _chars               = this.gameObject.GetComponent <EntityCharacteristics>();
        _eventHandler        = this.gameObject.GetComponent <EntityEventHandler>();
        _movementController  = this.gameObject.GetComponent <PlayerMovement>();
        _animationController = this.gameObject.GetComponent <PlayerAnimation>();
        _combatController    = this.gameObject.GetComponent <EntityCombat>();
        _UI = this.gameObject.GetComponent <PlayerUI>();

        _isAllowedToMove = true;

        _longHitLastFrame = false;
        _longHitReady     = false;

        FindAllWeaponManagers();
        _activeWeaponIndex = 0;

        DisableActiveHitManager("Awake");
    }
Esempio n. 19
0
 public static bool SaveAll <T>(this IRepository <T> repository, ITransactionManager trans, IEnumerable <T> original, IEnumerable <T> current, Func <T, T, bool> exists
                                , bool deleteIfNoFound = true, bool notUpdateIfFound = false
                                , EntityEventHandler <T> insertingHandler = null, EntityEventHandler <T> insertedHandler = null
                                , EntityEventHandler <T> updatingHandler  = null, EntityEventHandler <T> updatedHandler  = null
                                , EntityEventHandler <T> deletingHandler  = null, EntityEventHandler <T> deletedHandler  = null)
     where T : class
 {
     if (deleteIfNoFound)
     {
         if (notUpdateIfFound)
         {
             return(SaveAll(repository, trans, original, current, exists,
                            (repo, o) => { repo.Insert(o, insertingHandler, insertedHandler); },
                            null,
                            (repo, o) => { repo.Delete(o, deletingHandler, deletedHandler); }));
         }
         else
         {
             return(SaveAll(repository, trans, original, current, exists,
                            (repo, o) => { repo.Insert(o, insertingHandler, insertedHandler); },
                            (repo, o, c) => { repo.Update(c, updatingHandler, updatedHandler); },
                            (repo, o) => { repo.Delete(o, deletingHandler, deletedHandler); }));
         }
     }
     else
     {
         if (notUpdateIfFound)
         {
             return(SaveAll(repository, trans, original, current, exists,
                            (repo, o) => { repo.Insert(o, insertingHandler, insertedHandler); },
                            null,
                            null));
         }
         else
         {
             return(SaveAll(repository, trans, original, current, exists,
                            (repo, o) => { repo.Insert(o, insertingHandler, insertedHandler); },
                            (repo, o, c) => { repo.Update(c, updatingHandler, updatedHandler); },
                            null));
         }
     }
 }
Esempio n. 20
0
 public static bool SaveAll <T>(this IRepository <T> repository, ITransactionManager trans, IEnumerable <T> newItems, IEnumerable <T> modifiedItems, IEnumerable <T> deletedItems
                                , EntityEventHandler <T> insertingHandler = null, EntityEventHandler <T> insertedHandler = null
                                , EntityEventHandler <T> updatingHandler  = null, EntityEventHandler <T> updatedHandler  = null
                                , EntityEventHandler <T> deletingHandler  = null, EntityEventHandler <T> deletedHandler  = null)
     where T : class
 {
     try
     {
         trans.BeginTransaction();
         newItems.ForEach(o => repository.Insert(o, insertingHandler, insertedHandler));
         modifiedItems.ForEach(o => repository.Update(o, updatingHandler, updatedHandler));
         deletedItems.ForEach(o => repository.Delete(o, deletingHandler, deletedHandler));
         trans.Commit();
         return(true);
     }
     catch (Exception ex)
     {
         trans.Rollback();
         throw ex;
     }
 }
Esempio n. 21
0
        public void UnregisterEvent(int eventID, EntityEventHandler handler)
        {
            if (eventHandlerDic.TryGetValue(eventID, out var handlers))
            {
                for (int i = 0; i < handlers.Count;)
                {
                    if (handlers[i] == null || handlers[i] == handler)
                    {
                        handlers.RemoveAt(i);
                    }
                    else
                    {
                        ++i;
                    }
                }

                if (handlers.Count == 0)
                {
                    eventHandlerDic.Remove(eventID);
                }
            }
        }
Esempio n. 22
0
        public Entity()
        {
            OnInit();

            if (EntityConfig.Difference)
            {
                if (null != Difference.Handler)
                {
                    var follow = EntityCache.__Collected
                                                ? __Table.Follow
                                                : this.GetType().GetAttribute <DiffFollow>();

                    if (null != follow)
                    {
                        BeforeModify += new EntityEventHandler(DiffBeforeModify);
                        BeforeRemove += new EntityEventHandler(DiffBeforeRemove);
                        AfterAdd     += new EntityEventHandler(DiffAfterAdd);
                        AfterModify  += new EntityEventHandler(DiffAfterModify);
                        AfterRemove  += new EntityEventHandler(DiffAfterRemove);
                    }
                }
            }
        }
Esempio n. 23
0
 public virtual void Initialise()
 {
     OnCreate = new EntityEventHandler(Event_OnCreate);
     OnDestroy = new EntityEventHandler(Event_OnDestroy);
 }
Esempio n. 24
0
 protected void SubscribeLocalEvent <T>(EntityEventHandler <T> handler)
     where T : EntitySystemMessage
 {
     EntityManager.EventBus.SubscribeEvent(EventSource.Local, this, handler);
 }
 public RegisteredEvents(MyStringHash eventType, MyComponentBase component, EntityEventHandler handler)
 {
     this[eventType] = new List <RegisteredComponent>();
     this[eventType].Add(new RegisteredComponent(component, handler));
 }
Esempio n. 26
0
 //Convenience thing.
 public void SubscribeEvent <T>(EntityEventHandler <EntityEventArgs> evh, IEntityEventSubscriber s) where T : EntityEventArgs
 {
     EntityManager.SubscribeEvent <T>(evh, s);
 }
        /// <summary>
        /// This will register the component to listen to some events on entity that is other than entity containing this component
        /// </summary>
        /// <param name="entity">Entity on which we listen to events</param>
        /// <param name="component">Component that is being registered</param>
        /// <param name="eventType">type of event</param>
        /// <param name="handler">handler to be called</param>
        public static void RegisterForEntityEvent(this MyEntityComponentBase component, MyEntity entity, MyStringHash eventType, EntityEventHandler handler)
        {
            if (ProcessingEvents)
            {
                AddPostponedRegistration(component, entity, eventType, handler);
                return;
            }

            if (component.Entity == entity)
            {
                RegisterForEntityEvent(component, eventType, handler);
                return;
            }

            if (entity == null)
            {
                System.Diagnostics.Debug.Fail("You can't register this component for events, when you don't know on which entity it should be listening to..");
                return;
            }

            component.BeforeRemovedFromContainer += RegisteredComponentBeforeRemovedFromContainer;
            entity.OnClose += RegisteredEntityOnClose;

            if (RegisteredListeners.ContainsKey(entity.EntityId))
            {
                var registeredForEntity = RegisteredListeners[entity.EntityId];
                if (registeredForEntity.ContainsKey(eventType))
                {
                    var entry = registeredForEntity[eventType].Find(x => x.Handler == handler);
                    if (entry == null)
                    {
                        registeredForEntity[eventType].Add(new RegisteredComponent(component, handler));
                    }
                }
                else
                {
                    registeredForEntity[eventType] = new List <RegisteredComponent>();
                    registeredForEntity[eventType].Add(new RegisteredComponent(component, handler));
                }
            }
            else
            {
                RegisteredListeners[entity.EntityId] = new RegisteredEvents(eventType, component, handler);
            }


            if (ExternalListeners.ContainsKey(component) && !ExternalListeners[component].Contains(entity.EntityId))
            {
                ExternalListeners[component].Add(entity.EntityId);
            }
            else
            {
                ExternalListeners[component] = new List <long>()
                {
                    entity.EntityId
                };
            }

            ExternalyListenedEntities.Add(entity.EntityId);
        }
 private static void AddPostponedRegistration(MyEntityComponentBase component, MyEntity entity, MyStringHash eventType, EntityEventHandler handler)
 {
     PostponedRegistration.Add(new Tuple <MyEntityComponentBase, MyEntity, MyStringHash, EntityEventHandler>(component, entity, eventType, handler));
     HasPostponedOperations = true;
 }
Esempio n. 29
0
 // Constructors
 protected EntityComponent()
 {
     EntityChangedHandler = new EntityEventHandler(EntityChangedListener);
 }
Esempio n. 30
0
 protected void SubscribeEvent <T>(EntityEventHandler <T> evh)
     where T : EntitySystemMessage
 {
     EntityManager.SubscribeEvent <T>(evh, this);
 }
Esempio n. 31
0
 void Awake()
 {
     eventHandler = GetComponent <EntityEventHandler>();
 }