private void OnTriggerStay2D(Collider2D collision) { IFlammable canBurn = collision.GetComponent <IFlammable>(); if (canBurn != null) { canBurn.Burn(); } }
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; }
public void UnRegisterFire(IFlammable flammable) { if (activeFlammables == null) { return; } if (!activeFlammables.Contains(flammable)) { return; //throw new Exception("Flammable was never registered"); } activeFlammables.Remove(flammable); }
//================================================================================================================// 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); }
public ShootTurretEventArgs(IFlammable treeToExtinguish) { this.objectToExtinguish = treeToExtinguish; }