Example #1
0
        public bool IsOnRange(Range2D range)
        {
            Point2D point = new Point2D(this, range.Center.Plain.Dimention);

            if (!point.IsOnPlain(range.Center.Plain))
            {
                return(false);
            }

            return(Math.Abs(point.X.value - range.Center.X.value) <= range.XWidth / 2 &&
                   Math.Abs(point.Y.value - range.Center.Y.value) <= range.YWidth / 2);
        }
Example #2
0
        // [根據技能種類執行不同動作]
        // 在場上顯示技能效果.
        // skill        技能名稱.
        // userPosition 施術者位置.
        // userVector   施術者面向方位.
        private static void showSkill(Skill skill, Point2D userPosition, Vector2D userVector, bool isPlayer)
        {
            // 如果和玩家不同平面(玩家看不到),就不會畫圖.
            if (!userPosition.IsOnPlain(GlobalAsset.player.Plain) || userPosition.DistanceTo(Player.position) > GlobalAsset.seenRange)
            {
                return;
            }

            switch (skill)
            {
            case Skill.attack:
                showSkill(convert(userPosition), convert(userVector), 1, 1, GlobalAsset.attack);
                if (isPlayer)
                {
                    attack.Play();
                }
                break;

            case Skill.straight:
                showSkill(convert(userPosition), convert(userVector), 3, 1, GlobalAsset.straight);
                if (isPlayer)
                {
                    specialAttack.Play();
                }
                break;

            case Skill.horizon:
                showSkill(convert(userPosition), convert(userVector), 1, 3, GlobalAsset.horizon);
                if (isPlayer)
                {
                    specialAttack.Play();
                }
                break;

            case Skill.create:
                showSkill(convert(userPosition), GlobalAsset.create);
                if (isPlayer)
                {
                    build.Play();
                }
                break;
            }
        }