private void UpdateScriptTypes() { DataTable DT = new DataTable(); DT.Columns.Add("Type", typeof(string)); DT.Columns.Add("Interface", typeof(string)); if (LoadedScripts.SelectedRows.Count > 0) { string N = LoadedScripts.SelectedRows[0].Cells[0].Value.ToString(); if (Pinball.Scripts.Any(sc => sc.File.FullName == N)) { Script S = Pinball.Scripts[N]; if (S.Assembly != null) { foreach (Type T in S.Assembly.GetTypes().Where(t => typeof(IEffect).IsAssignableFrom(t) && !t.IsAbstract)) { DT.Rows.Add(T.Name, "IEffect"); } foreach (Type T in S.Assembly.GetTypes().Where(t => typeof(IToy).IsAssignableFrom(t) && !t.IsAbstract)) { DT.Rows.Add(T.Name, "IToy"); } } } } ScriptTypes.ClearSelection(); ScriptTypes.Columns.Clear(); ScriptTypes.AutoGenerateColumns = true; ScriptTypes.DataSource = DT; ScriptTypes.Refresh(); ScriptTypes.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); UpdateTypeXml(); }