GetFireData() public method

public GetFireData ( ) : FireData
return FireData
コード例 #1
0
        public override BLRunStatus Run(BulletMLBullet bullet)
        {
            BLType blType = node.Type;
            float  value  = (float)(node.GetValue(this) * Math.PI / 180);

            if (blType == BLType.Sequence)
            {
                bullet.Direction = bullet.GetFireData().SourceDirection + value;
            }
            else if (blType == BLType.Absolute)
            {
                bullet.Direction = value;
            }
            else if (blType == BLType.Relative)
            {
                bullet.Direction = bullet.Direction + value;
            }
            else //if (blType == BLType.Aim || blType == BLType.None)
            {
                bullet.Direction = bullet.GetAimDir() + value;
            }

            //Debug.WriteLine(String.Format("SetDirecton:{0},  (type:{1} val:{2})", bullet.Direction / Math.PI * 180, node.type, value / Math.PI * 180));
            End = true;

            return(BLRunStatus.End);
        }
コード例 #2
0
        public override BLRunStatus Run(BulletMLBullet bullet)
        {
            BLType blType = node.Type;
            float value = (float)(node.GetValue(this) * Math.PI / 180);

            if (blType == BLType.Sequence)
            {
                bullet.Direction = bullet.GetFireData().SourceDirection + value;
            }
            else if (blType == BLType.Absolute)
            {
                bullet.Direction = value;
            }
            else if (blType == BLType.Relative)
            {
                bullet.Direction = bullet.Direction + value;
            }
            else //if (blType == BLType.Aim || blType == BLType.None)
            {
                bullet.Direction = bullet.GetAimDir() + value;
            }

            //Debug.WriteLine(String.Format("SetDirecton:{0},  (type:{1} val:{2})", bullet.Direction / Math.PI * 180, node.type, value / Math.PI * 180));
            End = true;

            return BLRunStatus.End;
        }
コード例 #3
0
        //BulletMLTreeの内容を元に、実行のための各種クラスを生成し、自身を初期化する
        public void Parse(BulletMLTree tree, BulletMLBullet bullet)
        {
            foreach (BulletMLTree node in tree.children)
            {
                // Action
                if (node.name == BLName.Repeat)
                {
                    Parse(node, bullet);
                }
                else if (node.name == BLName.Action)
                {
                    ////Debug.WriteLine("Action");
                    int repeatNum = 1;
                    if (node.parent.name == BLName.Repeat)
                        repeatNum = (int)node.parent.GetChildValue(BLName.Times, this);
                    BulletMLAction task = new BulletMLAction(node, repeatNum);
                    task.owner = this;
                    taskList.Add(task);
                    task.Parse(node, bullet);
                }
                else if (node.name == BLName.ActionRef)
                {
                    BulletMLTree refNode = tree.GetLabelNode(node.label, BLName.Action);
                    int repeatNum = 1;
                    if (node.parent.name == BLName.Repeat)
                        repeatNum = (int)node.parent.GetChildValue(BLName.Times, this);
                    BulletMLAction task = new BulletMLAction(refNode, repeatNum);
                    task.owner = this;
                    taskList.Add(task);

                    // パラメータを取得
                    for (int i = 0; i < node.children.Count; i++)
                    {
                        task.paramList.Add(node.children[i].GetValue(this));
                    }
                    //if (node.children.Count > 0)
                    //{
                    //    task.paramNode = node;
                    //}

                    task.Parse(refNode, bullet);
                }
                else if (node.name == BLName.ChangeSpeed)
                {
                    BulletMLChangeSpeed blChangeSpeed = new BulletMLChangeSpeed(node);
                    blChangeSpeed.owner = this;
                    taskList.Add(blChangeSpeed);
                    ////Debug.WriteLine("ChangeSpeed");
                }
                else if (node.name == BLName.ChangeDirection)
                {
                    BulletMLChangeDirection blChangeDir = new BulletMLChangeDirection(node);
                    blChangeDir.owner = this;
                    taskList.Add(blChangeDir);
                    ////Debug.WriteLine("ChangeDirection");
                }
                else if (node.name == BLName.Fire)
                {
                    if (taskList == null) taskList = new List<BulletMLTask>();
                    BulletMLFire fire = new BulletMLFire(node);
                    fire.owner = this;
                    taskList.Add(fire);
                }
                else if (node.name == BLName.FireRef)
                {
                    if (taskList == null) taskList = new List<BulletMLTask>();
                    BulletMLTree refNode = tree.GetLabelNode(node.label, BLName.Fire);
                    BulletMLFire fire = new BulletMLFire(refNode);
                    fire.owner = this;
                    taskList.Add(fire);
                    // パラメータを取得
                    //if (node.children.Count > 0)
                    //{
                    //    fire.paramNode = node;
                    //}
                    for (int i = 0; i < node.children.Count; i++)
                    {
                        fire.paramList.Add(node.children[i].GetValue(this));
                    }
                }
                else if (node.name == BLName.Wait)
                {
                    BulletMLWait wait = new BulletMLWait(node);
                    wait.owner = this;
                    taskList.Add(wait);
                }
                else if (node.name == BLName.Speed)
                {
                    //BulletMLSetSpeed task = new BulletMLSetSpeed(node);
                    //task.owner = this;
                    //taskList.Add(task);
                    bullet.GetFireData().speedInit = true; // 値を明示的にセットしたことを示す
                    bullet.Speed = node.GetValue(this);
                }
                else if (node.name == BLName.Direction)
                {
                    BulletMLSetDirection task = new BulletMLSetDirection(node);
                    task.owner = this;
                    taskList.Add(task);
                }
                else if (node.name == BLName.Vanish)
                {
                    BulletMLVanish task = new BulletMLVanish();
                    task.owner = this;
                    taskList.Add(task);
                }
                else if (node.name == BLName.Accel)
                {
                    BulletMLAccel task = new BulletMLAccel(node);
                    task.owner = this;
                    taskList.Add(task);
                }
                else
                {
                    ////Debug.WriteLine("node.name:{0}", node.name);
                }
            }
        }
コード例 #4
0
        public override BLRunStatus Run(BulletMLBullet bullet)
        {
            float changeDir = 0;
            float changeSpd = 0;

            // 方向の設定
            if (dirNode != null)
            {
                changeDir = (int)dirNode.GetValue(this) * (float)Math.PI / (float)180;
                if (dirNode.Type == BLType.Sequence)
                {
                    bullet.GetFireData().SourceDirection += changeDir;
                }
                else if (dirNode.Type == BLType.Absolute)
                {
                    bullet.GetFireData().SourceDirection = changeDir;
                }
                else if (dirNode.Type == BLType.Relative)
                {
                    bullet.GetFireData().SourceDirection = changeDir + bullet.Direction;
                }
                else
                {
                    bullet.GetFireData().SourceDirection = changeDir + bullet.GetAimDir();
                }
            }
            else
            {
                bullet.GetFireData().SourceDirection = bullet.GetAimDir();
            }



            // 弾の生成
#if ExpandedBulletML
            string blName = "";
            if (bulletNode != null)
            {
                blName = bulletNode.bulletName;
            }
            else if (refNode != null)
            {
                blName = refNode.bulletName;
            }
            BulletMLBullet newBullet = bullet.GetNewBullet(blName); //bullet.tree);
#else
            BulletMLBullet newBullet = bullet.GetNewBullet();       //bullet.tree);
#endif

            if (newBullet == null)
            {
                End = true;
                return(BLRunStatus.End);
            }

            if (refNode != null)
            {
                // パラメータを取得
                for (int i = 0; i < refNode.Children.Count; i++)
                {
                    newBullet.Tasks[0].ParamList.Add(refNode.Children[i].GetValue(this));
                }

                //if (refNode.children.Count > 0)
                //{
                //    newBullet.task.paramNode = refNode;// node;
                //}
                // refBulletで参照
                newBullet.Init(bullet.Tree.GetLabelNode(refNode.Label, BLName.Bullet));
#if ExpandedBulletML
                newBullet.Visible = refNode.visible;
#endif
            }
            else
            {
                newBullet.Init(bulletNode);
#if ExpandedBulletML
                newBullet.Visible = bulletNode.visible;
#endif
            }

            newBullet.X = bullet.X;
            newBullet.Y = bullet.Y;
            newBullet.Tasks[0].Owner = this;
            newBullet.Direction      = bullet.GetFireData().SourceDirection;


            if (!bullet.GetFireData().SpeedInit&& newBullet.GetFireData().SpeedInit)
            {
                // 自分の弾発射速度の初期化がまだのとき、子供の弾の速度を使って初期値とする
                bullet.GetFireData().SourceSpeed = newBullet.Speed;
                bullet.GetFireData().SpeedInit   = true;
            }
            else
            {
                // 自分の弾発射速度の初期化済みのとき
                // スピードの設定
                if (spdNode != null)
                {
                    changeSpd = spdNode.GetValue(this);
                    if (spdNode.Type == BLType.Sequence || spdNode.Type == BLType.Relative)
                    {
                        bullet.GetFireData().SourceSpeed += changeSpd;
                    }
                    else
                    {
                        bullet.GetFireData().SourceSpeed = changeSpd;
                    }
                }
                else
                {
                    // 特に弾に速度が設定されていないとき
                    if (!newBullet.GetFireData().SpeedInit)
                    {
                        bullet.GetFireData().SourceSpeed = 1;
                    }
                    else
                    {
                        bullet.GetFireData().SourceSpeed = newBullet.Speed;
                    }
                }
            }

            newBullet.GetFireData().SpeedInit = false;
            newBullet.Speed = bullet.GetFireData().SourceSpeed;

            //if(bullet.index == DISP_BULLET_INDEX) Debug.WriteLine(String.Format("Fire dir:{0} spd:{1} label:{2}", bullet.srcDir / Math.PI * 180, bullet.srcSpeed, refNode != null ? refNode.label : ""));
            //Debug.WriteLine("index({3}) Fire dir:{0} spd:{1} label:{2}", bullet.srcDir / Math.PI * 180, bullet.srcSpeed, refNode != null ? refNode.label : "", bullet.index);

            End = true;
            return(BLRunStatus.End);
        }
コード例 #5
0
ファイル: BulletMLFire.cs プロジェクト: Noxalus/BulletMLLib
        public override BLRunStatus Run(BulletMLBullet bullet)
        {
            float changeDir = 0;
            float changeSpd = 0;

            // 方向の設定
            if (dirNode != null)
            {
                changeDir = (int)dirNode.GetValue(this) * (float)Math.PI / (float)180;
                if (dirNode.Type == BLType.Sequence)
                {
                    bullet.GetFireData().SourceDirection += changeDir;
                }
                else if (dirNode.Type == BLType.Absolute)
                {
                    bullet.GetFireData().SourceDirection = changeDir;
                }
                else if (dirNode.Type == BLType.Relative)
                {
                    bullet.GetFireData().SourceDirection = changeDir + bullet.Direction;
                }
                else
                {
                    bullet.GetFireData().SourceDirection = changeDir + bullet.GetAimDir();
                }
            }
            else
            {
                bullet.GetFireData().SourceDirection = bullet.GetAimDir();
            }

            // 弾の生成
            #if ExpandedBulletML
            string blName = "";
            if (bulletNode != null)
                blName = bulletNode.bulletName;
            else if (refNode != null)
                blName = refNode.bulletName;
            BulletMLBullet newBullet = bullet.GetNewBullet(blName);//bullet.tree);
            #else
            BulletMLBullet newBullet = bullet.GetNewBullet();//bullet.tree);
            #endif

            if (newBullet == null)
            {
                End = true;
                return BLRunStatus.End;
            }

            if (refNode != null)
            {
                // パラメータを取得
                for (int i = 0; i < refNode.Children.Count; i++)
                {
                    newBullet.Tasks[0].ParamList.Add(refNode.Children[i].GetValue(this));
                }

                //if (refNode.children.Count > 0)
                //{
                //    newBullet.task.paramNode = refNode;// node;
                //}
                // refBulletで参照
                newBullet.Init( bullet.Tree.GetLabelNode(refNode.Label, BLName.Bullet) );
            #if ExpandedBulletML
                newBullet.Visible = refNode.visible;
            #endif
            }
            else
            {
                newBullet.Init(bulletNode);
            #if ExpandedBulletML
               newBullet.Visible = bulletNode.visible;
            #endif
            }

            newBullet.X = bullet.X;
            newBullet.Y = bullet.Y;
            newBullet.Tasks[0].Owner = this;
            newBullet.Direction = bullet.GetFireData().SourceDirection;

            if (!bullet.GetFireData().SpeedInit && newBullet.GetFireData().SpeedInit)
            {
                // 自分の弾発射速度の初期化がまだのとき、子供の弾の速度を使って初期値とする
                bullet.GetFireData().SourceSpeed = newBullet.Speed;
                bullet.GetFireData().SpeedInit = true;
            }
            else
            {
                // 自分の弾発射速度の初期化済みのとき
                // スピードの設定
                if (spdNode != null)
                {
                    changeSpd = spdNode.GetValue(this);
                    if (spdNode.Type == BLType.Sequence || spdNode.Type == BLType.Relative)
                    {
                        bullet.GetFireData().SourceSpeed += changeSpd;
                    }
                    else
                    {
                        bullet.GetFireData().SourceSpeed = changeSpd;
                    }
                }
                else
                {
                    // 特に弾に速度が設定されていないとき
                    if(!newBullet.GetFireData().SpeedInit)
                        bullet.GetFireData().SourceSpeed = 1;
                    else
                        bullet.GetFireData().SourceSpeed = newBullet.Speed;
                }
            }

            newBullet.GetFireData().SpeedInit = false;
            newBullet.Speed = bullet.GetFireData().SourceSpeed;

            //if(bullet.index == DISP_BULLET_INDEX) Debug.WriteLine(String.Format("Fire dir:{0} spd:{1} label:{2}", bullet.srcDir / Math.PI * 180, bullet.srcSpeed, refNode != null ? refNode.label : ""));
            //Debug.WriteLine("index({3}) Fire dir:{0} spd:{1} label:{2}", bullet.srcDir / Math.PI * 180, bullet.srcSpeed, refNode != null ? refNode.label : "", bullet.index);

            End = true;
            return BLRunStatus.End;
        }
コード例 #6
0
ファイル: BulletMLTask.cs プロジェクト: Noxalus/BulletMLLib
        // BulletMLTreeの内容を元に、実行のための各種クラスを生成し、自身を初期化する
        public void Parse(BulletMLTree tree, BulletMLBullet bullet)
        {
            foreach (BulletMLTree node in tree.Children)
            {
                // Action
                if (node.Name == BLName.Repeat)
                {
                    Parse(node, bullet);
                }
                else if (node.Name == BLName.Action)
                {
                    ////Debug.WriteLine("Action");
                    int repeatNum = 1;
                    if (node.Parent.Name == BLName.Repeat)
                    {
                        repeatNum = (int)node.Parent.GetChildValue(BLName.Times, this);
                    }
                    BulletMLAction task = new BulletMLAction(node, repeatNum);
                    task.Owner = this;
                    TaskList.Add(task);
                    task.Parse(node, bullet);
                }
                else if (node.Name == BLName.ActionRef)
                {
                    BulletMLTree refNode   = tree.GetLabelNode(node.Label, BLName.Action);
                    int          repeatNum = 1;
                    if (node.Parent.Name == BLName.Repeat)
                    {
                        repeatNum = (int)node.Parent.GetChildValue(BLName.Times, this);
                    }
                    BulletMLAction task = new BulletMLAction(refNode, repeatNum);
                    task.Owner = this;
                    TaskList.Add(task);

                    // パラメータを取得
                    for (int i = 0; i < node.Children.Count; i++)
                    {
                        task.ParamList.Add(node.Children[i].GetValue(this));
                    }
                    //if (node.children.Count > 0)
                    //{
                    //    task.paramNode = node;
                    //}

                    task.Parse(refNode, bullet);
                }
                else if (node.Name == BLName.ChangeSpeed)
                {
                    BulletMLChangeSpeed blChangeSpeed = new BulletMLChangeSpeed(node);
                    blChangeSpeed.Owner = this;
                    TaskList.Add(blChangeSpeed);
                    ////Debug.WriteLine("ChangeSpeed");
                }
                else if (node.Name == BLName.ChangeDirection)
                {
                    BulletMLChangeDirection blChangeDir = new BulletMLChangeDirection(node);
                    blChangeDir.Owner = this;
                    TaskList.Add(blChangeDir);
                    ////Debug.WriteLine("ChangeDirection");
                }
                else if (node.Name == BLName.Fire)
                {
                    if (TaskList == null)
                    {
                        TaskList = new List <BulletMLTask>();
                    }
                    BulletMLFire fire = new BulletMLFire(node);
                    fire.Owner = this;
                    TaskList.Add(fire);
                }
                else if (node.Name == BLName.FireRef)
                {
                    if (TaskList == null)
                    {
                        TaskList = new List <BulletMLTask>();
                    }
                    BulletMLTree refNode = tree.GetLabelNode(node.Label, BLName.Fire);
                    BulletMLFire fire    = new BulletMLFire(refNode);
                    fire.Owner = this;
                    TaskList.Add(fire);
                    // パラメータを取得
                    //if (node.children.Count > 0)
                    //{
                    //    fire.paramNode = node;
                    //}
                    for (int i = 0; i < node.Children.Count; i++)
                    {
                        fire.ParamList.Add(node.Children[i].GetValue(this));
                    }
                }
                else if (node.Name == BLName.Wait)
                {
                    BulletMLWait wait = new BulletMLWait(node);
                    wait.Owner = this;
                    TaskList.Add(wait);
                }
                else if (node.Name == BLName.Speed)
                {
                    //BulletMLSetSpeed task = new BulletMLSetSpeed(node);
                    //task.owner = this;
                    //taskList.Add(task);
                    bullet.GetFireData().SpeedInit = true; // 値を明示的にセットしたことを示す
                    bullet.Speed = node.GetValue(this);
                }
                else if (node.Name == BLName.Direction)
                {
                    BulletMLSetDirection task = new BulletMLSetDirection(node);
                    task.Owner = this;
                    TaskList.Add(task);
                }
                else if (node.Name == BLName.Vanish)
                {
                    BulletMLVanish task = new BulletMLVanish();
                    task.Owner = this;
                    TaskList.Add(task);
                }
                else if (node.Name == BLName.Accel)
                {
                    BulletMLAccel task = new BulletMLAccel(node);
                    task.Owner = this;
                    TaskList.Add(task);
                }
                else
                {
                    ////Debug.WriteLine("node.name:{0}", node.name);
                }
            }
        }