Exemple #1
0
        public void Fire(IFireable fireable, int row, int col)
        {
            if (hit == 17 || row < 1 || row > 10 || col < 1 || col > 10)
            {
                return;
            }
            var curpoint = shotHistory[row - 1, col - 1];

            if (curpoint != null)
            {
                return;
            }
            if (fireable.Fire(col, row) == Result.HIT)
            {
                shotHistory[row - 1, col - 1] = "y";
                hit++;
                Fire(fireable, row + 1, col);
                Fire(fireable, row - 1, col);
                Fire(fireable, row, col + 1);
                Fire(fireable, row, col - 1);
            }
            else
            {
                shotHistory[row - 1, col - 1] = "x";
                return;
            }
        }
Exemple #2
0
        public void Play(IFireable fireable)
        {
            for (int i = 1; i < 11; i++)
            {
                Fire(fireable, i, i);
            }

            int startRow = 1;

            for (int i = 10; i >= 0; i--)
            {
                Fire(fireable, startRow, i);
                startRow++;
            }

            for (int i = 1; i < 11; i++)
            {
                Fire(fireable, 6, i);
            }

            for (int i = 1; i < 11; i++)
            {
                Fire(fireable, i, 6);
            }
        }
        public static Fireable Of(this Fireable fireable, IFireable subemitter)
        {
            if (fireable == null)
            {
                throw new ArgumentNullException("fireable");
            }
            var lowest = GetLowestChild(fireable);

            lowest.Child = subemitter;
            return(fireable);
        }
 public void Fire(bool pressed)
 {
     if (ammo_ != null)
     {
         ammo_.Fire(1f, GlobalPosition, GlobalRotation, Vector2.Up.Rotated(GlobalRotation));
         if (!ammo_.IsLaser())
         {
             GetNode("/root").GetChild(0).AddChild(ammo_ as Node2D);
             ammo_ = (IFireable)ammoScene_.Instance();
         }
     }
 }
Exemple #5
0
 public void Play(IFireable fireable)
 {
     Fire(fireable, 1, 3);
     Fire(fireable, 1, 5);
     Fire(fireable, 1, 7);
     Fire(fireable, 1, 9);
     Fire(fireable, 1, 11);
     Fire(fireable, 3, 13);
     Fire(fireable, 5, 15);
     Fire(fireable, 7, 17);
     Fire(fireable, 9, 19);
 }
Exemple #6
0
 public void Play(IFireable fireable)
 {
     Fire(fireable, 1, 3);
     Fire(fireable, 1, 5);
     Fire(fireable, 1, 7);
     Fire(fireable, 1, 9);
     Fire(fireable, 1, 11);
     Fire(fireable, 3, 13);
     Fire(fireable, 5, 15);
     Fire(fireable, 7, 17);
     Fire(fireable, 9, 19);
 }
Exemple #7
0
        /// <summary>
        /// Start is called on the frame when a script is enabled just before
        /// any of the Update methods is called the first time.
        /// </summary>
        void Start()
        {
            if (DanmakuType == null)
            {
                Debug.LogWarning($"Emitter doesn't have a valid DanmakuPrefab", this);
                return;
            }
            var set = CreateSet(DanmakuType);

            set.AddModifiers(GetComponents <IDanmakuModifier>());
            fireable = Arc.Of(Line).Of(set);
        }
Exemple #8
0
 public void Play(IFireable fireable)
 {
     var result = fireable.Fire(2, 1);
     Console.WriteLine(result);
     result = fireable.Fire(2, 1);
     Console.WriteLine(result);
     fireable.Fire(2, 1);
     fireable.Fire(2, 1);
     fireable.Fire(2, 1);
     fireable.Fire(2, 1);
     fireable.Fire(2, 1);
     fireable.Fire(4, 3);
     fireable.Fire(6, 7);
 }
        public void Play(IFireable fireable)
        {
            var result = Result.MISS;
            while (result != Result.MISSION_COMPLETED)
            {
                var x = RANDOM.Next(1, 11);
                var y = RANDOM.Next(1, 11);

                x--;
                y--;
                if (board[x, y] != "X")
                {
                    board[x, y] = "X";
                    result = fireable.Fire(x+1, y+1);
                }
            }
        }
Exemple #10
0
    // Called when the node enters the scene tree for the first time.
    public override void _Ready()
    {
        poly_ = GetNode <Polygon2D>("Shape");
        ammo_ = (IFireable)ammoScene_.Instance();
        var rigid = (ammo_ as RigidBody2D);

        if (rigid != null)
        {
            rigid.Sleeping = true;
        }
        if (ammo_.IsLaser())
        {
            (ammo_ as RayCast2D).Enabled = true;
            // TODO: this throws error currently
            AddChild(ammo_ as Node2D);
        }
    }
Exemple #11
0
 public void Play(IFireable fireable)
 {
     var isMissionCompleted = false;
     for (int i = 1; i <= 10; i++)
     {
         for (int j = 1; j <= 10; j++)
         {
             var result = fireable.Fire(j, i);
             if (result == Result.MISSION_COMPLETED)
             {
                 isMissionCompleted = true;
                 break;
             }
         }
         if (isMissionCompleted)
             break;
     }
 }
Exemple #12
0
 private void FireAround(IFireable fireable, int col, int row)
 {
     if (col > 10 || col < 1 || row > 10 || row < 1)
         return;
     if (IsAvaliableTarget(col - 1, row - 1))
     {
         if (fireable.Fire(col, row) == Result.HIT)
             AddHistory(col, row, "o");
         else
         {
             AddHistory(col, row, "x");
         }
     }
     else
     {
         AddHistory(col, row, "x");
     }
 }
Exemple #13
0
 public void Fire(IFireable fireable, int col, int odd)
 {
     var _tempRow = (col - odd) * -1;
     if (col > 10 || _tempRow == 0 || _tempRow > 10 || _tempRow < 1 || shotHistory[col - 1, _tempRow - 1] != null)
         return;
     if (fireable.Fire(col, _tempRow) == Result.HIT)
     {
         AddHistory(col, _tempRow, "o");
         FireAround(fireable, col - 1, _tempRow);
         FireAround(fireable, col + 1, _tempRow);
         FireAround(fireable, col, _tempRow - 1);
         FireAround(fireable, col, _tempRow + 1);
     }
     else
     {
         AddHistory(col, _tempRow, "x");
     }
     Fire(fireable, col + 1, odd);
 }
Exemple #14
0
        private void FireDown(IFireable fireable, int row, int column, int hit)
        {
            if (hit == 17)
            {
                return;
            }

            if (row < 1 || row > 10 || column < 1 || column > 10)
            {
                return;
            }
            var initRow = row - 1;
            var initCol = column - 1;
            var current = shotHistory[initRow, initCol];
            var top     = initRow > 0 ? shotHistory[initRow - 1, initCol] : "";
            var bottom  = initRow < 9 ? shotHistory[initRow + 1, initCol] : "";
            var left    = initCol > 0 ? shotHistory[initRow, initCol - 1] : "";
            var right   = initCol < 9 ? shotHistory[initRow, initCol + 1] : "";

            if (shotHistory[initRow, initCol] == null)
            {
                if (right != "miss")
                {
                    if (fireable.Fire(column, row) == Result.HIT)
                    {
                        hit++;
                        shotHistory[initRow, initCol] = "hit";
                        FindAnyShip(fireable, row, column, hit, shotHistory);
                        //Fire(fireable, row, column - 1, hit, tempShot);
                    }
                    else
                    {
                        shotHistory[initRow, initCol] = "miss";
                    }
                }
                else
                {
                    shotHistory[initRow, initCol] = "miss";
                }
            }
            FireDown(fireable, row + 1, column, hit);
        }
Exemple #15
0
        public void Play(IFireable fireable)
        {
            int hit = 0;

            //for (int target = 1; target <= 10; target++)
            //{
            //    if (fireable.Fire(target, target) == Result.HIT)
            //    {
            //        hit++;
            //        if (hit == 17)
            //            continue;

            //    }
            //}

            for (var column = 1; column <= 10; column++)
            {
                FireDown(fireable, 1, column, hit);
            }
        }
Exemple #16
0
        public void Play(IFireable fireable)
        {
            int hit = 0;

            //for (int target = 1; target <= 10; target++)
            //{
            //    if (fireable.Fire(target, target) == Result.HIT)
            //    {
            //        hit++;
            //        if (hit == 17)
            //            continue;

            //    }
            //}

            for (var column = 1; column <= 10; column++)
            {
                FireDown(fireable, 1, column, hit);
            }
        }
Exemple #17
0
        private void FindAnyShip(IFireable fireable, int row, int col, int hitPoint, string[,] historyStrings)
        {
            if (hitPoint == 17)
            {
                return;
            }

            if (row < 1 || row > 10 || col < 1 || col > 10)
            {
                return;
            }
            var initRow = row - 1;
            var initCol = col - 1;
            var current = historyStrings[initRow, initCol];
            var top     = initRow > 0 ? historyStrings[initRow - 1, initCol] : "";
            var bottom  = initRow < 9 ? historyStrings[initRow + 1, initCol] : "";
            var left    = initCol > 0 ? historyStrings[initRow, initCol - 1] : "";
            var right   = initCol < 9 ? historyStrings[initRow, initCol + 1] : "";

            if (historyStrings[initRow, initCol] == null)
            {
                if (right != "miss")
                {
                    if (fireable.Fire(col, row) == Result.HIT)
                    {
                        hitPoint++;
                        historyStrings[initRow, initCol] = "hit";
                        FindAnyShip(fireable, row, col + 1, hitPoint, historyStrings);
                        FindAnyShip(fireable, row, col - 1, hitPoint, historyStrings);
                    }
                    else
                    {
                        historyStrings[initRow, initCol] = "miss";
                    }
                }
                else
                {
                    historyStrings[initRow, initCol] = "miss";
                }
            }
        }
Exemple #18
0
    private void Update()
    {
        //Check if weapon has changed
        currentWeapon = gameObject.GetComponentInChildren <IFireable>();

        if (Input.GetKeyDown(shootKey))
        {
            if (currentWeapon != null)
            {
                currentWeapon.Shoot();
            }
        }

        if (Input.GetKeyDown(reloadKey))
        {
            if (currentWeapon != null)
            {
                currentWeapon.Reload();
            }
        }
    }
Exemple #19
0
        public void Fire(IFireable fireable, int col, int odd)
        {
            var _tempRow = (col - odd) * -1;

            if (col > 10 || _tempRow == 0 || _tempRow > 10 || _tempRow < 1 || shotHistory[col - 1, _tempRow - 1] != null)
            {
                return;
            }
            if (fireable.Fire(col, _tempRow) == Result.HIT)
            {
                AddHistory(col, _tempRow, "o");
                FireAround(fireable, col - 1, _tempRow);
                FireAround(fireable, col + 1, _tempRow);
                FireAround(fireable, col, _tempRow - 1);
                FireAround(fireable, col, _tempRow + 1);
            }
            else
            {
                AddHistory(col, _tempRow, "x");
            }
            Fire(fireable, col + 1, odd);
        }
Exemple #20
0
 private void FireAround(IFireable fireable, int col, int row)
 {
     if (col > 10 || col < 1 || row > 10 || row < 1)
     {
         return;
     }
     if (IsAvaliableTarget(col - 1, row - 1))
     {
         if (fireable.Fire(col, row) == Result.HIT)
         {
             AddHistory(col, row, "o");
         }
         else
         {
             AddHistory(col, row, "x");
         }
     }
     else
     {
         AddHistory(col, row, "x");
     }
 }
Exemple #21
0
        public static bool NonInteractableClick <T>(CompositeDisposable cd, IEngine engine,
                                                    Clickable src, IFireable <T> dst,
                                                    Func <T> valueGetter, Func <bool> checker = null)
        {
            if (!src)
            {
                return(NotBinded());
            }

            UnityAction action = () =>
            {
                if (checker != null && !checker())
                {
                    return;
                }
                dst.Fire(valueGetter());
            };

            src.onNonInteractableClick.AddListener(action);
            cd.Add(new DisposableAction(() => src.onNonInteractableClick.RemoveListener(action)));
            return(true);
        }
Exemple #22
0
        private void FindAnyShip(IFireable fireable, int row, int col, int hitPoint, string[,] historyStrings)
        {
            if (hitPoint == 17)
                return;

            if (row < 1 || row > 10 || col < 1 || col > 10)
                return;
            var initRow = row - 1;
            var initCol = col - 1;
            var current = historyStrings[initRow, initCol];
            var top = initRow > 0 ? historyStrings[initRow - 1, initCol] : "";
            var bottom = initRow < 9 ? historyStrings[initRow + 1, initCol] : "";
            var left = initCol > 0 ? historyStrings[initRow, initCol - 1] : "";
            var right = initCol < 9 ? historyStrings[initRow, initCol + 1] : "";
            if (historyStrings[initRow, initCol] == null)
            {
                if (right != "miss")
                {
                    if (fireable.Fire(col, row) == Result.HIT)
                    {
                        hitPoint++;
                        historyStrings[initRow, initCol] = "hit";
                        FindAnyShip(fireable, row, col + 1, hitPoint, historyStrings);
                        FindAnyShip(fireable, row, col - 1, hitPoint, historyStrings);
                    }
                    else
                    {
                        historyStrings[initRow, initCol] = "miss";
                    }
                }
                else
                {
                    historyStrings[initRow, initCol] = "miss";
                }
            }
        }
Exemple #23
0
 public void Play(IFireable fireable)
 {
     throw new NotImplementedException();
 }
Exemple #24
0
 private void Awake()
 {
     shooter = GetComponent <IFireable>();
     UpdatePatternDetails();
 }
Exemple #25
0
        private void FireDown(IFireable fireable, int row, int column, int hit)
        {
            if (hit == 17)
                return;

            if (row < 1 || row > 10 || column < 1 || column > 10)
                return;
            var initRow = row - 1;
            var initCol = column - 1;
            var current = shotHistory[initRow, initCol];
            var top = initRow > 0 ? shotHistory[initRow - 1, initCol] : "";
            var bottom = initRow < 9 ? shotHistory[initRow + 1, initCol] : "";
            var left = initCol > 0 ? shotHistory[initRow, initCol - 1] : "";
            var right = initCol < 9 ? shotHistory[initRow, initCol + 1] : "";
            if (shotHistory[initRow, initCol] == null)
            {
                if (right != "miss")
                {
                    if (fireable.Fire(column, row) == Result.HIT)
                    {
                        hit++;
                        shotHistory[initRow, initCol] = "hit";
                        FindAnyShip(fireable, row, column, hit, shotHistory);
                        //Fire(fireable, row, column - 1, hit, tempShot);
                    }
                    else
                    {
                        shotHistory[initRow, initCol] = "miss";
                    }
                }
                else
                {
                    shotHistory[initRow, initCol] = "miss";
                }
            }
            FireDown(fireable, row + 1, column, hit);
        }
Exemple #26
0
 private void CollectWeapon(IFireable fireable)
 {
     this.weapon = fireable;
     this.weapon.Kickbacks.Subscribe(x => this.body.LinearVelocity += x);
 }
    void FireBullet()
    {
        IFireable bullet = BulletFactory.Instance.Create(m_type);

        bullet.Fire(this.transform.position, this.transform.rotation * m_bulletVelocity);
    }
Exemple #28
0
 public void SetProjectile(GameObject newProjectile)
 {
     projectile         = newProjectile;
     projectileFireable = projectile.GetComponent <IFireable> ();
 }
Exemple #29
0
 public void AddTrigger(IFireable trigger)
 {
     _triggers.Add(trigger);
 }
Exemple #30
0
 public Robot(Engine engine)
     : base(engine)
 {
     this.weapon = Fireable.Empty;
 }