示例#1
0
    private void OnTriggerStay2D(Collider2D collision)
    {
        IFlammable canBurn = collision.GetComponent <IFlammable>();

        if (canBurn != null)
        {
            canBurn.Burn();
        }
    }
示例#2
0
        public void Shoot()
        {
            // Недостаточное количество воды в запасе
            if (waterCapacity == minWaterCapacity)
            {
                InsufficientlyWaterError?.Invoke(this, new InsufficientlyWaterErrorEventArgs());

                return;
            }

            // Пушка не подготовлена
            if (!weaponReady)
            {
                WeaponUnchargedError?.Invoke(this, new WeaponUnchargeErrorEventArgs());

                return;
            }

            // Присваиваем null для случая, когда выстрел не попал ни в какое дерево (или дом)
            IFlammable objectToExtinguish = null;

            // Если пушка опущена, то можно потушить только ближайшее дерево (или дом)
            if (!up)
            {
                foreach (Vector2f coords in GetTargetPositions())
                {
                    objectToExtinguish = _terrain.GetFlammableObjects().Find(flammable => ((Entity)flammable).Position == coords);

                    // Если нашли ближайшее дерево (или дом), то остальные не проверяем
                    if (objectToExtinguish != null)
                    {
                        objectToExtinguish.Water();
                        break;
                    }
                }
            }
            // Если пушка поднята, то можно потушить только одно дальнее дерево (или дом)
            else
            {
                objectToExtinguish = _terrain.GetFlammableObjects().Find(flammable => ((Entity)flammable).Position == GetTargetPositions()[0]);
                objectToExtinguish?.Water();
            }

            TurretShoot?.Invoke(this, new ShootTurretEventArgs(objectToExtinguish));

            // После выстрела сбрасываем давление, уменьшаем запасы воды, убираем заряд пушки
            waterPressure = minWaterPressure;
            waterCapacity--;
            weaponReady = false;
        }
示例#3
0
    public void UnRegisterFire(IFlammable flammable)
    {
        if (activeFlammables == null)
        {
            return;
        }

        if (!activeFlammables.Contains(flammable))
        {
            return;
            //throw new Exception("Flammable was never registered");
        }

        activeFlammables.Remove(flammable);
    }
示例#4
0
    //================================================================================================================//

    public void RegisterFire(IFlammable flammable)
    {
        if (activeFlammables == null)
        {
            activeFlammables = new List <IFlammable>();
        }

        if (activeFlammables.Contains(flammable))
        {
            //Debug.LogError("Flammable already registered");
            return;
        }

        activeFlammables.Add(flammable);
    }
示例#5
0
 public ShootTurretEventArgs(IFlammable treeToExtinguish)
 {
     this.objectToExtinguish = treeToExtinguish;
 }