internal static int ToEnd(CmdData elseCmd) { // EndIfを探す var depth = 1; foreach (var i in elseCmd.AfterEventIdRange()) { var cmd = elseCmd.Event.EventCmd[i]; switch (cmd.Name) { case CmdType.IfCmd: if ((cmd as AIfCmd).IfCmdType == IfCmdType.Then) { depth = depth + 1; } break; case CmdType.EndIfCmd: depth = depth - 1; if (depth == 0) { return(i + 1); } break; } } throw new EventErrorException(elseCmd, "IfとEndIfが対応していません"); }
internal static int ToEnd(CmdData caseCmd) { // 対応するEndSwを探す var depth = 1; foreach (var i in caseCmd.AfterEventIdRange()) { var cmd = caseCmd.Event.EventCmd[i]; switch (cmd.Name) { case CmdType.SwitchCmd: depth = depth + 1; break; case CmdType.EndSwCmd: depth = depth - 1; if (depth == 0) { return(i + 1); } break; } } throw new EventErrorException(caseCmd, "SwitchとEndSwが対応していません"); }