private void confirmButton_Click(object sender, EventArgs e) { if (currentInfo == null) { return; } AnimationGroup confirmedInfo = currentInfo; string newName = nameTextBox.Text; if (!int.TryParse(startTextBox.Text, out int newFrameStart)) { newFrameStart = confirmedInfo.FrameStart; } if (!int.TryParse(endTextBox.Text, out int newFrameEnd)) { newFrameEnd = confirmedInfo.FrameEnd; } confirmedInfo.Name = newName; confirmedInfo.FrameStart = newFrameStart; confirmedInfo.FrameEnd = newFrameEnd; ResetChangedTextBoxColors(); InfoChanged?.Invoke(confirmedInfo); ConfirmPressed?.Invoke(confirmedInfo); }
private void confirmButton_Click(object sender, EventArgs e) { if (currentInfo == null) { return; } AnimationGroup confirmedInfo = currentInfo; string newName = nameTextBox.Text; int newFrameStart; if (!int.TryParse(startTextBox.Text, out newFrameStart)) { newFrameStart = confirmedInfo.FrameStart; } int newFrameEnd; if (!int.TryParse(endTextBox.Text, out newFrameEnd)) { newFrameEnd = confirmedInfo.FrameEnd; } List <uint> newHandles; bool nodesChanged = MaxNodeTree.ApplyQueuedChanges(out newHandles); bool changed = newName != confirmedInfo.Name || newFrameStart != confirmedInfo.FrameStart || newFrameEnd != confirmedInfo.FrameEnd || nodesChanged; if (!changed) { return; } confirmedInfo.Name = newName; confirmedInfo.FrameStart = newFrameStart; confirmedInfo.FrameEnd = newFrameEnd; if (nodesChanged) { confirmedInfo.NodeGuids = newHandles.ToGuids(); } ResetChangedTextBoxColors(); MaxNodeTree.SelectedNode = null; InfoChanged?.Invoke(confirmedInfo); ConfirmPressed?.Invoke(confirmedInfo); }
void onConfirmPressed() { ConfirmPressed?.Invoke(); }
private void confirmButton_Click(object sender, EventArgs e) { if (currentInfo == null) { return; } AnimationGroup confirmedInfo = currentInfo; string newName = nameTextBox.Text; int newFrameStart; if (!int.TryParse(startTextBox.Text, out newFrameStart)) { newFrameStart = confirmedInfo.FrameStart; } int newFrameEnd; if (!int.TryParse(endTextBox.Text, out newFrameEnd)) { newFrameEnd = confirmedInfo.FrameEnd; } List <uint> newHandles; bool nodesChanged = MaxNodeTree.ApplyQueuedChanges(out newHandles); bool changed = newName != confirmedInfo.Name || newFrameStart != confirmedInfo.FrameStart || newFrameEnd != confirmedInfo.FrameEnd || nodesChanged; if (!changed) { return; } confirmedInfo.Name = newName; confirmedInfo.FrameStart = newFrameStart; confirmedInfo.FrameEnd = newFrameEnd; if (nodesChanged) { confirmedInfo.NodeGuids = newHandles.ToGuids(); if (confirmedInfo.AnimationGroupNodes == null) { confirmedInfo.AnimationGroupNodes = new List <AnimationGroupNode>(); } foreach (uint handle in newHandles) { IINode node = Loader.Core.GetINodeByHandle(handle); if (node != null) { string name = node.Name; string parentName = node.ParentNode.Name; AnimationGroupNode nodeData = new AnimationGroupNode(node.GetGuid(), name, parentName); confirmedInfo.AnimationGroupNodes.Add(nodeData); } } } ResetChangedTextBoxColors(); MaxNodeTree.SelectedNode = null; InfoChanged?.Invoke(confirmedInfo); ConfirmPressed?.Invoke(confirmedInfo); }
private void confirmButton_Click(object sender, EventArgs e) { if (currentInfo == null) { return; } AnimationGroup confirmedInfo = currentInfo; string newName = nameTextBox.Text; bool newKeepEmpty = keepStaticAnimBox.Checked; bool newKeepNonAnimated = keepNonAnimatedBox.Checked; int newFrameStart; if (!int.TryParse(startTextBox.Text, out newFrameStart)) { newFrameStart = confirmedInfo.FrameStart; } int newFrameEnd; if (!int.TryParse(endTextBox.Text, out newFrameEnd)) { newFrameEnd = confirmedInfo.FrameEnd; } List <uint> newHandles; bool nodesChanged = MaxNodeTree.ApplyQueuedChanges(out newHandles); IList <Guid> newMaterialGUIDs; bool materialsChanged = maxMaterialView.ApplyMaterialsChanges(out newMaterialGUIDs); bool changed = newKeepEmpty != confirmedInfo.KeepStaticAnimation || newName != confirmedInfo.Name || newFrameStart != confirmedInfo.FrameStart || newFrameEnd != confirmedInfo.FrameEnd || nodesChanged || materialsChanged || newKeepNonAnimated != confirmedInfo.KeepNonAnimated; if (!changed) { return; } confirmedInfo.Name = newName; confirmedInfo.FrameStart = newFrameStart; confirmedInfo.FrameEnd = newFrameEnd; confirmedInfo.KeepStaticAnimation = newKeepEmpty; confirmedInfo.KeepNonAnimated = newKeepNonAnimated; if (nodesChanged) { confirmedInfo.NodeGuids = newHandles.ToGuids(); if (confirmedInfo.AnimationGroupNodes == null) { confirmedInfo.AnimationGroupNodes = new List <AnimationGroupNode>(); } foreach (uint handle in newHandles) { IINode node = Loader.Core.GetINodeByHandle(handle); if (node != null) { string name = node.Name; string parentName = node.ParentNode.Name; AnimationGroupNode nodeData = new AnimationGroupNode(node.GetGuid(), name, parentName); confirmedInfo.AnimationGroupNodes.Add(nodeData); } } } if (materialsChanged) { confirmedInfo.MaterialGuids = newMaterialGUIDs; if (confirmedInfo.AnimationGroupMaterials == null) { confirmedInfo.AnimationGroupMaterials = new List <AnimationGroupMaterial>(); } foreach (Guid guid in newMaterialGUIDs) { IMtl mat = Tools.GetIMtlByGuid(guid); if (mat != null) { string name = mat.Name; AnimationGroupMaterial matData = new AnimationGroupMaterial(guid, name); confirmedInfo.AnimationGroupMaterials.Add(matData); } } } ResetChangedTextBoxColors(); MaxNodeTree.SelectedNode = null; InfoChanged?.Invoke(confirmedInfo); ConfirmPressed?.Invoke(confirmedInfo); }
/// <summary> /// Establish connection with specified gateways. Returns -1 if failed, 1 if ok. /// </summary> /// <returns></returns> public int Connect() { if (!connected) { int retu = -1; try { retu = CapsAPI.AB_API_Open(); } catch { } if (retu < 0) { return(-1); } for (int i = 0; i < Gateway_N.Length; i++) { CapsAPI.AB_GW_Open(Gateway_N[i]); } bgwork = new BackgroundWorker(); bgwork.WorkerReportsProgress = true; bgwork.WorkerSupportsCancellation = true; bgwork.DoWork += (se, ev) => { while (true) { if (bgwork.CancellationPending) { break; } int[] status = new int[Gateway_N.Length]; for (int i = 0; i < Gateway_N.Length; i++) { status[i] = CapsAPI.AB_GW_Status(Gateway_N[i]); } byte[] ccbdata = new byte[255]; int ccblen = 0; int ret = 0; int nGwId, nNode; short TagCommand, nMsg_type; nGwId = 0; nNode = 0; TagCommand = -1; nMsg_type = -1; if (status[0] == 7) { ret = CapsAPI.AB_Tag_RcvMsg(ref nGwId, ref nNode, ref TagCommand, ref nMsg_type, ref ccbdata[0], ref ccblen); } bgwork.ReportProgress(0, new PTLMessage() { ret = ret, nGwId = nGwId, nMsgType = nMsg_type, nNode = nNode, TagCommand = TagCommand, status = status, ccbdata = ccbdata, ccblen = ccblen }); System.Threading.Thread.Sleep(10); } }; bgwork.ProgressChanged += (se, ev) => { int ret = (ev.UserState as PTLMessage).ret; if (ret > 0) { switch ((ev.UserState as PTLMessage).TagCommand) { case 6: { string m_RcvTagData = Bin2Str((ev.UserState as PTLMessage).ccbdata, 0, (ev.UserState as PTLMessage).ccblen); Direction dir = Direction.None; if (m_RcvTagData[0] != '8' && m_RcvTagData[1] != '8') { dir = Direction.None; } else if (m_RcvTagData[0] == '8' && m_RcvTagData[1] != '8') { dir = Direction.Up; } else if (m_RcvTagData[0] != '8' && m_RcvTagData[1] == '8') { dir = Direction.Down; } else if (m_RcvTagData[0] == '8' && m_RcvTagData[1] == '8') { dir = Direction.Both; } ConfirmOccured?.Invoke(this, new ConfirmButtonArgs() { Gateway = (ev.UserState as PTLMessage).nGwId, Node = -(ev.UserState as PTLMessage).nNode, Message = m_RcvTagData.Substring(3, 5), direction = dir }); break; } case 7: { string m_RcvTagData = Bin2Str((ev.UserState as PTLMessage).ccbdata, 0, (ev.UserState as PTLMessage).ccblen); Direction dir = Direction.None; if (m_RcvTagData[0] != '8' && m_RcvTagData[1] != '8') { dir = Direction.None; } else if (m_RcvTagData[0] == '8' && m_RcvTagData[1] != '8') { dir = Direction.Up; } else if (m_RcvTagData[0] != '8' && m_RcvTagData[1] == '8') { dir = Direction.Down; } else if (m_RcvTagData[0] == '8' && m_RcvTagData[1] == '8') { dir = Direction.Both; } ShortageOccured?.Invoke(this, new ConfirmButtonArgs() { Gateway = (ev.UserState as PTLMessage).nGwId, Node = -(ev.UserState as PTLMessage).nNode, Message = m_RcvTagData.Substring(3, 5), direction = dir }); break; } case 15: { string m_RcvTagData = Bin2Str((ev.UserState as PTLMessage).ccbdata, 0, (ev.UserState as PTLMessage).ccblen); Direction dir = Direction.None; if (m_RcvTagData[0] != '8' && m_RcvTagData[1] != '8') { dir = Direction.None; } else if (m_RcvTagData[0] == '8' && m_RcvTagData[1] != '8') { dir = Direction.Up; } else if (m_RcvTagData[0] != '8' && m_RcvTagData[1] == '8') { dir = Direction.Down; } else if (m_RcvTagData[0] == '8' && m_RcvTagData[1] == '8') { dir = Direction.Both; } StockConfirmationOccured?.Invoke(this, new ConfirmButtonArgs() { Gateway = (ev.UserState as PTLMessage).nGwId, Node = -(ev.UserState as PTLMessage).nNode, Message = m_RcvTagData.Substring(3, 5), direction = dir }); break; } case 100: if ((ev.UserState as PTLMessage).nMsgType == 0) { byte[] ccbdata = (ev.UserState as PTLMessage).ccbdata; int ccblen = (ev.UserState as PTLMessage).ccblen; int nRcvbun = CapsAPI.AB_GW_RcvButton(ref ccbdata[0], ref ccblen); switch (nRcvbun) { case 1: ConfirmPressed?.Invoke(this, new PressedArgs() { Gateway = (ev.UserState as PTLMessage).nGwId, Node = -(ev.UserState as PTLMessage).nNode }); break; case 2: UpPressed?.Invoke(this, new PressedArgs() { Gateway = (ev.UserState as PTLMessage).nGwId, Node = -(ev.UserState as PTLMessage).nNode }); break; case 3: DownPressed?.Invoke(this, new PressedArgs() { Gateway = (ev.UserState as PTLMessage).nGwId, Node = -(ev.UserState as PTLMessage).nNode }); break; } } break; } } int[] status = (ev.UserState as PTLMessage).status; bool[] sta = new bool[status.Length]; bool changed = false; for (int i = 0; i < status.Length; i++) { if ((curr_status[i] != 7 && status[i] == 7) || (curr_status[i] == 7 && status[i] != 7)) { changed = true; } sta[i] = (status[i] == 7); curr_status[i] = status[i]; } if (changed) { connectionStatesChanged?.Invoke(this, new ConnStateArgs() { status = sta }); } }; bgwork.RunWorkerAsync(); connected = true; return(1); } else { return(-1); } }