/// <summary> /// Конвертация Lua-таблицы в массив свойств /// </summary> /// <param name="table">Lua таблица</param> /// <returns></returns> public static Editor.ObjectProperty[] ConvertLuaTableToCArray( LuaTable table) { var Keys = new string[table.Values.Count]; var Values = new string[table.Values.Count]; var res = new Editor.ObjectProperty[Keys.Length]; table.Values.CopyTo(Values, 0); table.Keys.CopyTo(Keys, 0); for (int i = 0; i < Keys.Length; i++) { res[i] = new Editor.ObjectProperty(Keys[i], Values[i]); } return(res); }
/// <summary> /// Создание нового шага. /// </summary> /// <param name="name">Имя шага.</param> /// <param name="getN">Функция получения номера шага.</param> /// <param name="isMode">Признак того, является ли шаг шагом операции. /// </param> /// <param name="owner">Владелец шага (Состояние)</param> public Step(string name, GetN getN, State owner, bool isMode = false) { this.name = name; this.getN = getN; this.IsMode = isMode; this.owner = owner; this.baseStep = new ActiveParameter("", ""); this.baseStep.Owner = this; items = new List <Editor.ITreeViewItem>(); actions = new List <Action>(); actions.Add(new Action("Включать", this, "opened_devices", new Device.DeviceType[3] { Device.DeviceType.V, Device.DeviceType.DO, Device.DeviceType.M })); actions.Add(new Action("Включать реверс", this, "opened_reverse_devices", new Device.DeviceType[1] { Device.DeviceType.M })); actions.Add(new Action("Выключать", this, "closed_devices", new Device.DeviceType[3] { Device.DeviceType.V, Device.DeviceType.DO, Device.DeviceType.M })); actions[2].DrawStyle = Editor.DrawInfo.Style.RED_BOX; actions.Add(new Action_WashSeats("Верхние седла", this, "opened_upper_seat_v")); actions[3].DrawStyle = Editor.DrawInfo.Style.GREEN_UPPER_BOX; actions.Add(new Action_WashSeats("Нижние седла", this, "opened_lower_seat_v")); actions[4].DrawStyle = Editor.DrawInfo.Style.GREEN_LOWER_BOX; actions.Add(new Action("Сигналы для включения", this, "required_FB", new Device.DeviceType[2] { Device.DeviceType.DI, Device.DeviceType.GS })); actions.Add(new Action_Wash("Мойка( DI, DO, устройства)", this, "wash_data")); actions.Add(new Action_DI_DO("Группы DI -> DO DO ...", this, "DI_DO")); actions.Add(new Action_AI_AO("Группы AI -> AO AO ...", this, "AI_AO")); items.AddRange(actions.ToArray()); if (!isMode) { timeParam = new Editor.ObjectProperty("Время (параметр)", -1); nextStepN = new Editor.ObjectProperty( "Номер следующего шага", -1); items.Add(timeParam); items.Add(nextStepN); } }