public void TestEventField() { var entityFactory = new EntityFactory(); EntityChangedEvent entityChanged = null; entityFactory.EntityValueChanged += (s, e) => { entityChanged = e; }; var errandType = entityFactory.CreateType("Errand"); entityFactory.RegisterPlugin(new FakeErrandExtensions()); errandType.AddField(new EntityTypeFieldItem() { FieldId = "name", FieldDescription = "Название", FieldType = "string" }); var errandItem1 = entityFactory.CreateItem(errandType); errandItem1.SetValue("name", "Проект"); Assert.AreEqual("Errand", entityChanged?.Target?.EntityType?.Name); Assert.AreEqual("name", entityChanged.FieldKey); Assert.AreEqual("", entityChanged.OldValue); Assert.AreEqual("Проект", entityChanged.NewValue); }
/// <summary>Method which is called when an entity wants to notify that one of it's tags changed value.</summary> /// <param name="entity">The entity which has changed.</param> /// <param name="t">The game tag which value changed.</param> /// <param name="oldValue">The old value.</param> /// <param name="newValue">The new value.</param> protected internal virtual void OnEntityChanged(Entity entity, GameTag t, int oldValue, int newValue) { EntityChangedEvent?.Invoke(entity, t, oldValue, newValue); }