Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
 void onConfirmPressed()
 {
     ConfirmPressed?.Invoke();
 }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        /// <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);
            }
        }