public AdvImportScenarioSheet(StringGrid original, AdvSettingDataManager dataManager, AdvMacroManager macroManager) : base(original.Name, original.SheetName, original.Type) { this.entityIndexTbl = new List <int>(); this.entityDataList = new List <AdvEntityData>(); base.headerRow = original.HeaderRow; for (int i = 0; i < original.DataTopRow; i++) { base.AddRow(original.Rows[i].Strings); } List <StringGridRow> outputList = new List <StringGridRow>(); foreach (StringGridRow row in original.Rows) { if (((row.RowIndex >= original.DataTopRow) && !row.IsEmptyOrCommantOut) && !macroManager.TryMacroExpansion(row, outputList, string.Empty)) { outputList.Add(row); } } foreach (StringGridRow row2 in outputList) { string[] strings; if (AdvEntityData.ContainsEntitySimple(row2)) { string[] strArray2; if (AdvEntityData.TryCreateEntityStrings(row2, new Func <string, object>(dataManager.DefaultParam.GetParameter), out strArray2)) { AdvEntityData item = new AdvEntityData(row2.Strings); strings = strArray2; this.entityDataList.Add(item); this.entityIndexTbl.Add(base.Rows.Count); } else { strings = row2.Strings; } } else { strings = row2.Strings; } StringGridRow row3 = base.AddRow(strings); row3.DebugIndex = row2.DebugIndex; row3.DebugInfo = row2.DebugInfo; } base.InitLink(); }
//インポート用の文字列グリッドを作成 public AdvImportScenarioSheet(StringGrid original, AdvSettingDataManager dataManager, AdvMacroManager macroManager) : base(original.Name, original.SheetName, original.Type) { //ヘッダー(最初の一行目のはず)は、オリジナルを使う this.headerRow = original.HeaderRow; for (int i = 0; i < original.DataTopRow; ++i) { this.AddRow(original.Rows[i].Strings); } //マクロ展開 List <StringGridRow> rowList = new List <StringGridRow>(); foreach (StringGridRow row in original.Rows) { if (row.RowIndex < original.DataTopRow) { continue; //データの行じゃない } if (row.IsEmptyOrCommantOut) { continue; //データがない } //マクロ展開 bool isMacro = macroManager.TryMacroExpansion(row, rowList, ""); if (!isMacro) { //マクロ展開がないので、普通に行を追加 rowList.Add(row); } } //データ部分はマクロ展開済みのもの foreach (var row in rowList) { StringGridRow data; string[] strings; //マクロの場合はエンティテイ処理のチェック //将来的にはマクロ展開抜きでいけそう if (AdvEntityData.ContainsEntitySimple(row)) { //エンティティ処理がある場合はそれをリストにいれてインデックスを string[] entityStrings; if (AdvEntityData.TryCreateEntityStrings(row, dataManager.DefaultParam.GetParameter, out entityStrings)) { AdvEntityData entityData = new AdvEntityData(row.Strings); strings = entityStrings; entityDataList.Add(entityData); entityIndexTbl.Add(this.Rows.Count); } else { strings = row.Strings; } } else { strings = row.Strings; } data = this.AddRow(strings); data.DebugIndex = row.DebugIndex; data.DebugInfo = row.DebugInfo; } this.InitLink(); }