/// <summary> /// 以下自装ロジック. 選択肢設定時のID設定チェック. by yoshida ryo /// 選択肢設定時のID設定チェック. /// </summary> void CheckValidationSelectID(List <AdvCommand> commandList) { var list = AdvSelectInfoEx.ReadData(); selectIdList.Clear(); for (var i = 0; i < commandList.Count; ++i) { var cmd = commandList[i]; // SendMessageByNameによるID送信チェック. if (cmd.GetType().ToString().Contains("SendMessageByName")) { string receiver = cmd.ParseCellOptional("Arg1", ""); string method = cmd.ParseCellOptional("Arg2", ""); if (receiver == "ReceiveUtageCommand" && method == "RegistSelectionID") { int id = -1; if (!cmd.TryParseCell("Arg3", out id)) { continue; } var lineNo = cmd.RowData.DebugIndex + 1; // 別のシートで重複. if (list.Exists(sel => sel.ID == id)) { var item = list.Find(sel => sel.ID == id); var msg = "<color=red>『" + Name + "』シート:『" + lineNo + "』行目で使用されている選択肢ID『" + id + "』 は既に別のシートで使用済みのIDです。"; msg += "\n→" + item.SheetName + "シートの" + item.RowIndex + "行目で使用してます。</color>"; Debug.LogError(cmd.RowData.ToErrorString(msg)); continue; } // 今回の修正で重複した. if (selectIdList.ContainsKey(id)) { var msg = "<color=red>『" + Name + "』シート:『" + lineNo + "』行目で使用されている選択肢ID『" + id + "』 は既にこのシートで使用済みのIDです。"; msg += "\n→" + selectIdList[id] + "行目で使用してます。</color>"; Debug.LogError(cmd.RowData.ToErrorString(msg)); continue; } AdvSelectInfo info; info.SheetName = Name; info.RowIndex = lineNo; info.ID = id; info.WriteData(); selectIdList.Add(id, lineNo); } } } }