// Обновить состояние чайника public void Update(float timedelta = 1) { float heatQuantity = 0; if (PowerButton.State) { heatQuantity = Heater.Work(timedelta); } WaterContainer.Update(timedelta, heatQuantity); }
public Form1() { InitializeComponent(); WaterContainer container = new WaterContainer(volume: 2000); Heater heater = new Heater(power: 1500, efficioncy: 0.85f); PowerButton button = new PowerButton(); Teapot = new Teapot(container, heater, button); Teapot.AddWater(new Water(500, 20)); DoubleBuffered = true; // Костыль ThreadStart start = new ThreadStart(() => { Thread.Sleep(1000); while (ActiveForm != null) { float timedelta = (float)(DateTime.Now - time).TotalSeconds; if (timedelta > 0.03f) { time = DateTime.Now; Teapot.Update(timedelta); try { Form1.ActiveForm.Invoke(new Action(() => Refresh())); } catch { Thread.CurrentThread.Abort(); } } } }); Thread thread = new Thread(start); thread.Start(); }
// Вылить количество воды (мл) из чайника public Water PourWater(int amount) => WaterContainer.PourWater(amount);
// Вылить всю воду из чайника public Water PourWater() => WaterContainer.PourWater();
// Добавить воды в чайник public void AddWater(Water water) => WaterContainer.AddWater(water);
public Teapot(WaterContainer waterContainer, Heater heater, PowerButton powerButton) { WaterContainer = waterContainer ?? throw new ArgumentNullException(nameof(waterContainer)); Heater = heater ?? throw new ArgumentNullException(nameof(heater)); PowerButton = powerButton ?? throw new ArgumentNullException(nameof(powerButton)); }