Beispiel #1
0
        /// *******************************************************
        /// <summary>コンストラクタ</summary>
        /// *******************************************************
        public MoveScript(EnemyScriptMain mng, ScriptGroup group, string key, float wait = -1)
        {
            Manager = mng;
            Scripts = group;

            if (string.IsNullOrEmpty(key) == false)
            {
                Scripts.ActivateLine(line => {
                    CommandAttribute atr = line.GetAttribute("key");
                    if (atr == null)
                    {
                        return(true);
                    }
                    return(atr.CompareStrValue(key));
                });
            }

            Limit     = LIMIT_TYPE.TIME;
            PastTime  = 0;
            WaitTime  = Mathf.RoundToInt(wait);
            LineIndex = -1;

            Shots       = new List <ShotScript>();
            RemoveShots = new List <ShotScript>();
        }
Beispiel #2
0
        /// *******************************************************
        /// <summary>コマンド実行</summary>
        /// *******************************************************
        private void PlayLine(EnemyControll character, ScriptLine line)
        {
            var last_limit = Limit;

            CommandAttribute keY_atr  = line.GetAttribute("key");
            bool             have_key = (keY_atr != null);

            Limit = LIMIT_TYPE.NEAR;
            switch (line.CommandName)
            {
            case "position": character.TargetDirection = TargetType.DIRECTION_POSITION; break;

            case "target": character.TargetDirection = TargetType.DIRECTION_TARGET; break;

            case "angle": character.TargetDirection = TargetType.DIRECTION_ANGLE; break;

            case "bottom": character.TargetDirection = TargetType.DIRECTION_BOTTOM; break;

            case "top": character.TargetDirection = TargetType.DIRECTION_TOP; break;

            case "left": character.TargetDirection = TargetType.DIRECTION_LEFT; break;

            case "right": character.TargetDirection = TargetType.DIRECTION_RIGHT; break;

            case "shot": ShotCommand(character, line); return;
            }

            line.Attributes.ForEach(atr => {
                if (RunAttribute(atr) == false)
                {
                    Manager.OverrideParam(atr, have_key);
                }
            });
        }
Beispiel #3
0
        /// *******************************************************
        /// <summary>個別アトリビュート解析</summary>
        /// *******************************************************
        public bool RunAttribute(CommandAttribute attribute)
        {
            switch (attribute.Name)
            {
            case "time": WaitTime = attribute.IntValue; Limit = LIMIT_TYPE.TIME;  return(true);

            case "unlimited": Limit = LIMIT_TYPE.UNLIMITED; return(true);
            }
            return(false);
        }
Beispiel #4
0
        /// *******************************************************
        /// <summary>射撃アトリビュート解析</summary>
        /// *******************************************************
        private void ShotCommand(EnemyControll character, ScriptLine line)
        {
            Limit    = LIMIT_TYPE.TIME;
            WaitTime = 0;
            PastTime = 0;
            line.Attributes.ForEach(atr => {
                switch (atr.Name)
                {
                case "time": WaitTime = atr.IntValue; break;
                }
            });

            Shots.Add(new ShotScript(this, line));
        }