using System; using System.Collections.ObjectModel; using System.Windows; using ERVSimulator.Model; namespace ERVSimulator { // 편집 가능한 풍량 VSP 행 (환기1~4, 바이패스, 공청1~4) public class VspEditRow { public string Name { get; set; } public int Sa { get; set; } public int Ea { get; set; } public VspEditRow(string n, int sa, int ea) { Name = n; Sa = sa; Ea = ea; } } public partial class VspWindow : Window { readonly ErvState _state; public ObservableCollection Rows { get; } = new(); public event Action? Applied; public VspWindow(ErvState state) { InitializeComponent(); _state = state; Rows.Add(new VspEditRow("환기1", state.FanSAPreset_Vent[1], state.FanEAPreset_Vent[1])); Rows.Add(new VspEditRow("환기2", state.FanSAPreset_Vent[2], state.FanEAPreset_Vent[2])); Rows.Add(new VspEditRow("환기3", state.FanSAPreset_Vent[3], state.FanEAPreset_Vent[3])); Rows.Add(new VspEditRow("환기4", state.FanSAPreset_Vent[4], state.FanEAPreset_Vent[4])); Rows.Add(new VspEditRow("바이패스", state.FanSAPreset_Bypass[1], state.FanEAPreset_Bypass[1])); Rows.Add(new VspEditRow("공청1", state.FanSAPreset_Air[1], state.FanEAPreset_Air[1])); Rows.Add(new VspEditRow("공청2", state.FanSAPreset_Air[2], state.FanEAPreset_Air[2])); Rows.Add(new VspEditRow("공청3", state.FanSAPreset_Air[3], state.FanEAPreset_Air[3])); Rows.Add(new VspEditRow("공청4", state.FanSAPreset_Air[4], state.FanEAPreset_Air[4])); VspItems.ItemsSource = Rows; } static ushort Clamp(int v) => (ushort)(v < 0 ? 0 : v > 255 ? 255 : v); // VSP 1바이트 void Apply_Click(object sender, RoutedEventArgs e) { _state.FanSAPreset_Vent[1] = Clamp(Rows[0].Sa); _state.FanEAPreset_Vent[1] = Clamp(Rows[0].Ea); _state.FanSAPreset_Vent[2] = Clamp(Rows[1].Sa); _state.FanEAPreset_Vent[2] = Clamp(Rows[1].Ea); _state.FanSAPreset_Vent[3] = Clamp(Rows[2].Sa); _state.FanEAPreset_Vent[3] = Clamp(Rows[2].Ea); _state.FanSAPreset_Vent[4] = Clamp(Rows[3].Sa); _state.FanEAPreset_Vent[4] = Clamp(Rows[3].Ea); _state.FanSAPreset_Bypass[1] = Clamp(Rows[4].Sa); _state.FanEAPreset_Bypass[1] = Clamp(Rows[4].Ea); _state.FanSAPreset_Air[1] = Clamp(Rows[5].Sa); _state.FanEAPreset_Air[1] = Clamp(Rows[5].Ea); _state.FanSAPreset_Air[2] = Clamp(Rows[6].Sa); _state.FanEAPreset_Air[2] = Clamp(Rows[6].Ea); _state.FanSAPreset_Air[3] = Clamp(Rows[7].Sa); _state.FanEAPreset_Air[3] = Clamp(Rows[7].Ea); _state.FanSAPreset_Air[4] = Clamp(Rows[8].Sa); _state.FanEAPreset_Air[4] = Clamp(Rows[8].Ea); Applied?.Invoke("[Manual] 풍량 VSP 값 적용"); } void Close_Click(object sender, RoutedEventArgs e) => Close(); } }