public override void HideProperties(ref DynamicTypeDescriptor dt) { if (TreatMouseDownAsMouseClick) { dt.RemoveProperty("ThresholdBetweenMouseDownAndMouseUp"); } }
internal DynamicProperty(DynamicTypeDescriptor descriptor, Type type, object value, string name, Attribute[] attrs) : base(name, attrs) { _descriptor = descriptor; _type = type; Value = value; DefaultValueAttribute def = DynamicTypeDescriptor.GetAttribute <DefaultValueAttribute>(Attributes); if (def == null) { _hasDefaultValue = false; } else { _hasDefaultValue = true; _defaultValue = def.Value; } if (attrs != null) { foreach (Attribute att in attrs) { _attributes.Add(att); } } }
public InternalAssetEditor(Asset asset, ArchiveEditorFunctions archive, bool hideHelp) { InitializeComponent(); TopMost = true; this.asset = asset; this.archive = archive; DynamicTypeDescriptor dt = new DynamicTypeDescriptor(asset.GetType()); asset.SetDynamicProperties(dt); propertyGridAsset.SelectedObject = dt.FromComponent(asset); labelAssetName.Text = $"[{asset.AHDR.assetType.ToString()}] {asset.ToString()}"; propertyGridAsset.HelpVisible = !hideHelp; if (asset is AssetCAM cam) { SetupForCam(cam); } else if (asset is AssetCSN csn) { SetupForCsn(csn); } else if (asset is AssetGRUP grup) { SetupForGrup(grup); } else if (asset is AssetRenderWareModel arwm) { SetupForModel(arwm); } else if (asset is AssetSHRP shrp) { SetupForShrp(shrp); } else if (asset is AssetWIRE wire) { SetupForWire(wire); } Button buttonHelp = new Button() { Dock = DockStyle.Fill, Text = "Open Wiki Page", AutoSize = true }; buttonHelp.Click += (object sender, EventArgs e) => System.Diagnostics.Process.Start(AboutBox.WikiLink + asset.AHDR.assetType.ToString()); tableLayoutPanel1.Controls.Add(buttonHelp, 0, tableLayoutPanel1.RowCount - 1); Button buttonFindCallers = new Button() { Dock = DockStyle.Fill, Text = "Find Who Targets Me", AutoSize = true }; buttonFindCallers.Click += (object sender, EventArgs e) => Program.MainForm.FindWhoTargets(GetAssetID()); tableLayoutPanel1.Controls.Add(buttonFindCallers, 1, tableLayoutPanel1.RowCount - 1); }
public override void SetDynamicProperties(DynamicTypeDescriptor dt) { if (game == Game.Scooby) { dt.RemoveProperty("RandomRange"); } base.SetDynamicProperties(dt); }
public FlagsField_UInt_Dyna(EndianConvertibleWithData asset, int flagsLoc, DynamicTypeDescriptor dt, string[] flagNames) : base(asset, flagsLoc, dt) { for (uint i = 0; i < 32; i++) { AddPropertyAt(i, flagNames); } }
public FlagsField_Byte_Dyna(DynaBase asset, int flagsLoc, DynamicTypeDescriptor dt, string[] flagNames) : base(asset, flagsLoc, dt) { for (uint i = 0; i < 8; i++) { AddPropertyAt(i, flagNames); } }
public override void SetDynamicProperties(DynamicTypeDescriptor dt) { if (game != Game.Incredibles) { dt.RemoveProperty("UnknownIntC8"); } base.SetDynamicProperties(dt); }
public override void SetDynamicProperties(DynamicTypeDescriptor dt) { if (game == Game.Scooby) { dt.RemoveProperty("PressedModel_AssetID"); } base.SetDynamicProperties(dt); }
public override void SetDynamicProperties(DynamicTypeDescriptor dt) { if (game != Game.BFBB) { dt.RemoveProperty("PaddingC"); } base.SetDynamicProperties(dt); }
public override void SetDynamicProperties(DynamicTypeDescriptor dt) { if (game != Game.BFBB) { dt.RemoveProperty("Volume"); dt.RemoveProperty("StartFriction"); } base.SetDynamicProperties(dt); }
public override void SetDynamicProperties(DynamicTypeDescriptor dt) { if (game == Game.Scooby) { dt.RemoveProperty("CombatID"); dt.RemoveProperty("BrainID"); } base.SetDynamicProperties(dt); }
/// <summary> /// Save a DynamicTypeDescriptor for the specified values /// </summary> /// <param name="typeName"></param> /// <param name="valueDictionary"></param> /// <param name="nameSpace"></param> /// <returns></returns> protected DynamicTypeDescriptor SaveTypeDescriptor(string typeName, Dictionary <object, object> valueDictionary, string nameSpace = null) { DynamicTypeDescriptor descriptor = EnsureType(typeName, nameSpace); foreach (object key in valueDictionary.Keys) { object value = valueDictionary[key]; if (value != null) { Type childType = value.GetType(); string childTypeName = $"{typeName}.{key}"; DynamicTypePropertyDescriptor propertyDescriptor = new DynamicTypePropertyDescriptor { DynamicTypeDescriptorId = descriptor.Id, ParentTypeName = descriptor.TypeName, PropertyType = childType.Name, PropertyName = key.ToString(), }; if (childType == typeof(JObject) || childType == typeof(Dictionary <object, object>)) { propertyDescriptor.PropertyType = childTypeName; SetDynamicTypePropertyDescriptor(propertyDescriptor); Dictionary <object, object> data = value as Dictionary <object, object>; if (data is null) { data = ((JObject)value).ToObject <Dictionary <object, object> >(); } SaveTypeDescriptor(childTypeName, data); } else if (childType == typeof(JArray) || childType.IsArray) { propertyDescriptor.PropertyType = $"arrayOf({childTypeName})"; SetDynamicTypePropertyDescriptor(propertyDescriptor); foreach (object obj in (IEnumerable)value) { Dictionary <object, object> data = new Dictionary <object, object>(); if (obj is JObject jobj) { data = jobj.ToObject <Dictionary <object, object> >(); SaveTypeDescriptor(childTypeName, data); } } } else { SetDynamicTypePropertyDescriptor(propertyDescriptor); } } } return(DynamicTypeDataRepository.Retrieve <DynamicTypeDescriptor>(descriptor.Id)); }
public static DynamicTypeDescriptor GetTypeDescriptor(ISysObjectManager mgr, Type type, IEnumerable <SysObject> items) { var res = new DynamicTypeDescriptor(type); foreach (var o in items) { // разбор var attributes = GetAttributes(o, type); // описание типа var sysObjNameAttr = Attribute.GetCustomAttribute(type, typeof(SysObjectNameAttribute)) as SysObjectNameAttribute; var typename = sysObjNameAttr != null ? sysObjNameAttr.SysObjectName : type.Name; if (typename.EqIgnoreCase(o.ObjectName)) { //TODO: правильнее было бы передавать все аттрибуты res.AddAttributes( attributes.Where(p => p is DisplayNameAttribute || p is ListViewCaptionAttribute).ToArray()); continue; } var propertyType = GetObjectTrueType(mgr, o); //HACK: Добавляем атрибут CustomXmlIgnoreAttribute к свойству if (typeof(IList).IsAssignableFrom(propertyType) && propertyType.IsGenericType) { var itemType = propertyType.GetGenericArguments().FirstOrDefault(); if ( itemType != null && ( typeof(AddressBook) == itemType || typeof(IWBPosQLFDetailDesc) == itemType || typeof(GlobalParamValue).IsAssignableFrom(itemType) || typeof(EpsConfig).IsAssignableFrom(itemType)) || typeof(MotionAreaGroupTr).IsAssignableFrom(itemType) ) { var attrs = new List <Attribute>(attributes) { new XmlNotIgnoreAttribute() }; attributes = attrs.ToArray(); } } var propertyDesc = new DynamicPropertyDescriptor(o.ObjectName, attributes, type, propertyType, o.ObjectDefaultValue); res.AddProperty(propertyDesc); } return(res); }
public override void SetDynamicProperties(DynamicTypeDescriptor dt) { if (game != Game.Incredibles) { dt.RemoveProperty("Flag1"); dt.RemoveProperty("Flag2"); dt.RemoveProperty("Flag3"); dt.RemoveProperty("Flag4"); } base.SetDynamicProperties(dt); }
public void CanAddType() { DynamicTypeManager mgr = new DynamicTypeManager(new DynamicTypeDataRepository(), DataSettings.Default); string testType = "CanAddTypeTest"; DynamicTypeDescriptor typeDescriptor = mgr.GetTypeDescriptor(testType); Expect.IsNull(typeDescriptor, "typeDescriptor should have been null"); typeDescriptor = mgr.AddType(testType); Expect.IsNotNull(typeDescriptor, "typeDescriptor should NOT have been null"); typeDescriptor = mgr.GetTypeDescriptor(testType); Expect.IsNotNull(typeDescriptor, "typeDescriptor should NOT have been null"); OutLineFormat("{0}", typeDescriptor.PropertiesToString()); }
public override void SetDynamicProperties(DynamicTypeDescriptor dt) { if (game == Game.Scooby) { dt.RemoveProperty("Conditional"); dt.RemoveProperty("AssetUnderEvaluation"); } else { dt.RemoveProperty("ScoobyConditional"); } base.SetDynamicProperties(dt); }
public override void SetDynamicProperties(DynamicTypeDescriptor dt) { if (game == Game.Scooby) { dt.RemoveProperty("DestroyShrapnel_AssetID"); dt.RemoveProperty("HitShrapnel_AssetID"); dt.RemoveProperty("DestroySFX_AssetID"); dt.RemoveProperty("HitSFX_AssetID"); dt.RemoveProperty("HitModel_AssetID"); dt.RemoveProperty("DestroyModel_AssetID"); } base.SetDynamicProperties(dt); }
public override void HideProperties(ref DynamicTypeDescriptor dt) { dt.Properties.Clear(); var isSpecialScript = IsSpecialScript(Script, BaseScriptManager); if (!isSpecialScript) { AddProperty(dt, "Name"); } else { AddProperty(dt, "ReadonlyName"); } }
private void UpdateInterfaceFromRandomizer() { if (InvokeRequired) { Invoke(new Action(UpdateInterfaceFromRandomizer)); return; } programIsChangingStuff = true; comboBoxGame.SelectedIndex = randomizer.game; if (string.IsNullOrEmpty(backupDir)) { labelBackupDir.Text = "Backup Directory: None"; } else { labelBackupDir.Text = "Backup Directory: " + backupDir; } if (!string.IsNullOrEmpty(randomizer.rootDir)) { if (randomizer.isDir) { labelRootDir.Text = "Game Directory: " + randomizer.rootDir; buttonPerform.Enabled = true; } else { labelRootDir.Text = "File: " + randomizer.rootDir; buttonPerform.Enabled = true; } } else { buttonPerform.Enabled = false; } textBoxSeed.Text = randomizer.seedText; labelSeed.Text = "Seed: " + randomizer.seed.ToString(); DynamicTypeDescriptor dt = new DynamicTypeDescriptor(randomizer.settings.GetType()); randomizer.settings.SetDynamicProperties(dt, comboBoxGame.SelectedIndex); propertyGridSettings.SelectedObject = dt.FromComponent(randomizer.settings); programIsChangingStuff = false; }
public override void SetDynamicProperties(DynamicTypeDescriptor dt) { if (!inc) { dt.RemoveProperty("UnknownInt34"); dt.RemoveProperty("UnknownInt38"); dt.RemoveProperty("UnknownInt3C"); dt.RemoveProperty("UnknownInt40"); dt.RemoveProperty("UnknownInt44"); dt.RemoveProperty("UnknownInt48"); dt.RemoveProperty("UnknownInt4C"); dt.RemoveProperty("UnknownInt50"); dt.RemoveProperty("UnknownInt54"); } base.SetDynamicProperties(dt); }
private void propertyGrid_PropertyValueChanged(object sender, PropertyValueChangedEventArgs e) { DynamicTypeDescriptor dt = new DynamicTypeDescriptor(m_CurrentObjectType); m_CurrentObject.HideProperties(ref dt); if (sender != null) // If it was modified from UI, call the callback. In other cases we don't want to do that. { m_CurrentObject.OnPropertiesModified(); } propertyGrid.BeginInvokeIfCreated(new MethodInvoker(() => { propertyGrid.SelectedObject = dt.FromComponent(m_CurrentObject); })); }
public override void SetDynamicProperties(DynamicTypeDescriptor dt) { if (game == Game.Scooby) { dt.RemoveProperty("LoldHeight"); } if (game != Game.Incredibles) { dt.RemoveProperty("UnknownInt44"); dt.RemoveProperty("UnknownInt48"); dt.RemoveProperty("UnknownInt4C"); dt.RemoveProperty("UnknownInt50"); dt.RemoveProperty("UnknownInt54"); dt.RemoveProperty("UnknownInt58"); } base.SetDynamicProperties(dt); }
private static TestDynamicTypeManager GetTestDynamicTypeManager() { TestDynamicTypeManager repo; // clear existing entries if any TestDynamicTypeManager testRepo = new TestDynamicTypeManager(new DynamicTypeDataRepository(), DataSettings.Default); testRepo.DynamicTypeDataRepository.DynamicTypeDescriptorsWhere(d => d.Id > 0).Each(d => testRepo.DynamicTypeDataRepository.Delete(d)); testRepo.DynamicTypeDataRepository.DataInstancesWhere(d => d.Id > 0).Each(d => testRepo.DynamicTypeDataRepository.Delete(d)); // make sure the type isn't in the repo DynamicTypeDescriptor descriptor = testRepo.DynamicTypeDataRepository.DynamicTypeDescriptorsWhere(d => d.Id > 0).FirstOrDefault(); Expect.IsNull(descriptor); repo = testRepo; return(repo); }
protected DynamicTypeDescriptor EnsureType(string typeName, DynamicNamespaceDescriptor nspace) { lock (_typeDescriptorLock) { DynamicTypeDescriptor descriptor = DynamicTypeDataRepository.Query <DynamicTypeDescriptor>(td => td.TypeName == typeName).FirstOrDefault(); if (descriptor == null) { descriptor = new DynamicTypeDescriptor() { DynamicNamespaceDescriptorId = nspace.Id, TypeName = typeName }; descriptor = DynamicTypeDataRepository.Save(descriptor); } return(descriptor); } }
public override void SetDynamicProperties(DynamicTypeDescriptor dt) { if (game == Game.Scooby) { dt.RemoveProperty("zSurfUVFX2"); } else { dt.RemoveProperty("UnknownInt"); } if (game != Game.Incredibles) { dt.RemoveProperty("ImpactSound_AssetID"); dt.RemoveProperty("DashImpactType"); dt.RemoveProperty("DashImpactThrowBack"); dt.RemoveProperty("DashSprayMagnitude"); dt.RemoveProperty("DashCoolRate"); dt.RemoveProperty("DashCoolAmount"); dt.RemoveProperty("DashPass"); dt.RemoveProperty("DashRampMaxDistance"); dt.RemoveProperty("DashRampMinDistance"); dt.RemoveProperty("DashRampKeySpeed"); dt.RemoveProperty("DashRampMaxHeight"); dt.RemoveProperty("DashRampTarget_MovePoint_AssetID"); dt.RemoveProperty("DamageAmount"); dt.RemoveProperty("HitSourceDamageType"); dt.RemoveProperty("OffSurface"); dt.RemoveProperty("OnSurface"); dt.RemoveProperty("HitDecalData0"); dt.RemoveProperty("HitDecalData1"); dt.RemoveProperty("HitDecalData2"); dt.RemoveProperty("OffSurfaceTime"); dt.RemoveProperty("SwimmableSurface"); dt.RemoveProperty("DashFall"); dt.RemoveProperty("NeedButtonPress"); dt.RemoveProperty("DashAttack"); dt.RemoveProperty("FootstepDecals"); dt.RemoveProperty("DrivingSurfaceType"); } base.SetDynamicProperties(dt); }
public void AssociationsAreMade() { DynamicTypeManager mgr = new DynamicTypeManager(new DynamicTypeDataRepository(), DataSettings.Default); DynamicNamespaceDescriptor ns = new DynamicNamespaceDescriptor { Namespace = $"Test.Name.Space.{nameof(AssociationsAreMade)}" }; ns = mgr.DynamicTypeDataRepository.Save(ns); DynamicTypeDescriptor typeDescriptor = new DynamicTypeDescriptor { DynamicNamespaceDescriptorId = ns.Id }; Expect.IsNull(typeDescriptor.DynamicNamespaceDescriptor); typeDescriptor = mgr.DynamicTypeDataRepository.Save(typeDescriptor); Expect.IsNotNull(typeDescriptor.DynamicNamespaceDescriptor); Expect.AreEqual(ns, typeDescriptor.DynamicNamespaceDescriptor); }
public override void HideProperties(ref DynamicTypeDescriptor dt) { dt.Properties.Clear(); AddProperty(dt, "CommandType"); if (Command is CommandDown || Command is CommandRelease || Command is CommandPress) { AddProperty(dt, "X"); AddProperty(dt, "Y"); AddProperty(dt, "DontMove"); } if (Command is CommandDown || Command is CommandPress) { AddProperty(dt, "MouseButton"); } else if (Command is CommandMove) { AddProperty(dt, "X"); AddProperty(dt, "Y"); } else if (Command is CommandForImage || Command is CommandForeachImage || Command is CommandIfImageVisible) { AddProperty(dt, "Asset"); AddProperty(dt, "Timeout"); } else if (Command is CommandSleep) { AddProperty(dt, "Time"); } else if (Command is CommandRunScript) { AddProperty(dt, "Script"); } else if (Command is CommandWriteText) { AddProperty(dt, "Text"); } if (Command is CommandIfImageVisible) { AddProperty(dt, "ExpectTrue"); } }
public void CanAddPropertyToType() { DynamicTypeManager mgr = new DynamicTypeManager(new DynamicTypeDataRepository(), DataSettings.Default); mgr.DynamicTypeDataRepository.Query <DynamicTypeDescriptor>(d => d.Id > 0).Each(d => mgr.DynamicTypeDataRepository.Delete(d)); mgr.DynamicTypeDataRepository.Query <DynamicTypePropertyDescriptor>(p => p.Id > 0).Each(p => mgr.DynamicTypeDataRepository.Delete(p)); string testType = nameof(CanAddPropertyToType); string testProperty = "SomeProperty"; string testProperty2 = "BooleanProperty"; mgr.AddType(testType); DynamicTypePropertyDescriptor prop = mgr.AddProperty(testType, testProperty, "String"); DynamicTypePropertyDescriptor prop2 = mgr.AddProperty(testType, testProperty2, "Boolean"); Expect.IsNotNull(prop); DynamicTypeDescriptor typeDescriptor = mgr.GetTypeDescriptor(testType); Expect.IsNotNull(typeDescriptor); Expect.IsTrue(typeDescriptor.Properties.Count == 2); }
public void SaveDescriptorDoesntDuplicte() { TestDynamicTypeManager testRepo = new TestDynamicTypeManager(new DynamicTypeDataRepository(), DataSettings.Default); JObject jobj = (JObject)JsonConvert.DeserializeObject(new { Name = "some name", Arr = new object[] { new { Fromage = "gooey" } } }.ToJson()); Dictionary <object, object> data = jobj.ToObject <Dictionary <object, object> >(); string testTypeName = "test_typeName"; testRepo.DynamicTypeDataRepository.DeleteWhere <DynamicTypeDescriptor>(new { TypeName = testTypeName }); DynamicTypeDescriptor descriptor = testRepo.DynamicTypeDataRepository.DynamicTypeDescriptorsWhere(d => d.TypeName == testTypeName).FirstOrDefault(); Expect.IsNull(descriptor); testRepo.TestSaveTypDescriptor(testTypeName, data); int count = testRepo.DynamicTypeDataRepository.DynamicTypeDescriptorsWhere(d => d.TypeName == testTypeName).Count(); Expect.IsTrue(count == 1); testRepo.TestSaveTypDescriptor(testTypeName, data); count = testRepo.DynamicTypeDataRepository.DynamicTypeDescriptorsWhere(d => d.TypeName == testTypeName).Count(); Expect.IsTrue(count == 1); }
public DynamicTypePropertyDescriptor AddProperty(string typeName, string propertyName, string propertyType, string nameSpace = null) { Type type = Type.GetType(propertyType); if (type == null) { type = Type.GetType($"System.{propertyType}"); } Args.ThrowIfNull(type, "propertyType"); nameSpace = nameSpace ?? DynamicNamespaceDescriptor.DefaultNamespace; DynamicNamespaceDescriptor nameSpaceDescriptor = EnsureNamespace(nameSpace); DynamicTypeDescriptor typeDescriptor = EnsureType(typeName, nameSpaceDescriptor); return(SetDynamicTypePropertyDescriptor(new DynamicTypePropertyDescriptor { DynamicTypeDescriptorId = typeDescriptor.Id, ParentTypeName = typeDescriptor.TypeName, PropertyType = propertyType, PropertyName = propertyName })); }
public void AddValuesToProperty(DynamicTypeDescriptor.CustomPropertyDescriptor property) { DynamicTypeDescriptor.StandardValueAttribute value = null; foreach (int key in select.Keys) { value = new DynamicTypeDescriptor.StandardValueAttribute(key, select[key].name); value.Description = select[key].description; property.StatandardValues.Add(value); } }