Пример #1
0
Файл: AIfCmd.cs Проект: 7474/SRC
        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が対応していません");
        }
Пример #2
0
        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が対応していません");
        }