public static void RegisterCallback(UnityAction callback)
        {
            int order = GetUpdateOrder(callback);

            lock (s_OrderBlocks)
            {
                int i = 0;
                for (; i < s_OrderBlocks.Count && (s_OrderBlocks[i].order <= order); i++)
                {
                    if (s_OrderBlocks[i].order == order)
                    {
                        OrderBlock element = s_OrderBlocks[i];
                        element.callback += callback;
                        s_OrderBlocks[i]  = element;
                        return;
                    }
                }

                var newElement = new OrderBlock();
                newElement.order     = order;
                newElement.callback += callback;

                s_OrderBlocks.Insert(i, newElement);
            }
        }
Example #2
0
        private List <Order> Transfer(OrderBlock block)
        {
            List <Order> results = new List <Order>();

            block.Order.All(
                delegate(Quotation.Order t) {
                results.Add(Transfer(t));
                return(true);
            });
            return(results);
        }
Example #3
0
        internal OrderBlockDto ConvertOrderBlockForView(OrderBlock block)
        {
            var blockDto = new OrderBlockDto()
            {
                Id                   = block.Id,
                IsMachining          = block.IsMachining,
                ProductionItemId     = block.ProductionItemId,
                ProductionItemsCount = block.ProductionItemsCount,
                ProductionItemsName  = block.ProductionItemsName,
                Duration             = block.Duration,
                StartTime            = block.StartTime,
                GroupBlocks          = block.GroupBlocks.Select(b => ConvertGroupBlockForView(b)).ToList()
            };

            return(blockDto);
        }
        public static void UnregisterCallback(UnityAction callback)
        {
            int order = GetUpdateOrder(callback);

            lock (s_OrderBlocks)
            {
                for (int i = 0; i < s_OrderBlocks.Count && (s_OrderBlocks[i].order <= order); i++)
                {
                    if (s_OrderBlocks[i].order == order)
                    {
                        OrderBlock element = s_OrderBlocks[i];
                        element.callback -= callback;
                        s_OrderBlocks[i]  = element;

                        if (element.callback == null)
                        {
                            s_OrderBlocks.RemoveAt(i);
                        }
                        return;
                    }
                }
            }
        }