示例#1
0
 public BadMechanic(Conveyer conveyer)
 {
     locker                = new object();
     this.conveyer         = conveyer;
     TimeOfRepairing       = 3000;
     Message               = "Конвейер отремонтирован за " + TimeOfRepairing + " милисекунд";
     conveyer.AskMechanic += Repair;
 }
示例#2
0
        static void DoInConveyer()
        {
            Conveyer.Job[] jobs = new Conveyer.Job[]
            {
                FastIncrementer, MediumIncrementer, SlowIncrementer
            };

            Conveyer conveyer = new Conveyer(jobs);

            //int[] init = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            object[][] init = new object[][] {
                new object[] { 1, 1 },
                new object[] { 1, 2 },
                new object[] { 1, 3 },
                new object[] { 1, 4 },
                new object[] { 1, 5 },
                new object[] { 1, 6 },
                new object[] { 1, 7 }
            };

            for (int i = 0; i < init.Length; i++)
            {
                conveyer.WriteNext(init[i]);
                Console.WriteLine("Основной поток: поставил задачу на конвейер");
            }

            for (int i = 0; i < init.Length; i++)
            {
                while (true)
                {
                    if (conveyer.HasNextResult())
                    {
                        object[] resultArr = (object[])conveyer.ReadNextResult();
                        int      result    = (int)resultArr[0];
                        int      takNum    = (int)resultArr[1];
                        Console.WriteLine("Основной поток: данные получены о задаче " + takNum + " в " + DateTime.Now);
                        Console.WriteLine("Result " + (i + 1) + ": " + result);
                        break;
                    }
                }
            }

            conveyer.StopConveyer();
        }
示例#3
0
 private void Start()
 {
     conveyer  = this.GetComponent <Conveyer>();
     this.name = "Factory";
 }
    private void FixedUpdate()
    {
        if (_pressedE && !Bottle)
        {
            var colliders = new Collider[16];
            var size      = Physics.OverlapSphereNonAlloc(transform.position, raycastRadius, colliders);

            Bottle bottleToGrab = null;
            if (size > 0)
            {
                Collider bottleCollider = null;
                for (var i = 0; i < size; i++)
                {
                    var col = colliders[i];
                    if (col.GetComponent <Bottle>())
                    {
                        Debug.Log("detect bottle");
                        if (!bottleCollider)
                        {
                            Debug.Log("get bottle");
                            bottleToGrab   = col.GetComponent <Bottle>();
                            bottleCollider = col;
                        }

                        if (bottleCollider &&
                            Vector3.Distance(transform.position, bottleCollider.transform.position) >
                            Vector3.Distance(transform.position, col.transform.position))
                        {
                            bottleToGrab   = col.GetComponent <Bottle>();
                            bottleCollider = col;
                        }
                    }
                }
            }

            if (bottleToGrab)
            {
                // todo do something to bottle
                // let's pass in a transform point to hold the bottle
                bottleToGrab.Grab(bottleHoldPoint);
                Bottle = bottleToGrab;
            }

            _pressedE = false;
        }
        else if (_pressedE && Bottle)
        {
            // find the nearest conveyor
            var colliders = new Collider[16];
            var size      = Physics.OverlapSphereNonAlloc(transform.position, raycastRadius, colliders);

            Conveyer conveyerToUse     = null;
            Collider convenyerCollider = null;
            if (size > 0)
            {
                Debug.Log("number found: " + size);
                for (var i = 0; i < size; i++)
                {
                    var col = colliders[i];

                    var conveyer = col.GetComponent <Conveyer>();
                    if (conveyer)
                    {
                        if (!convenyerCollider)
                        {
                            conveyerToUse     = conveyer;
                            convenyerCollider = col;
                        }

                        if (convenyerCollider &&
                            Vector3.Distance(transform.position, convenyerCollider.transform.position) >
                            Vector3.Distance(transform.position, col.transform.position))
                        {
                            conveyerToUse     = conveyer;
                            convenyerCollider = col;
                        }
                    }
                }
            }

            if (conveyerToUse)
            {
                var bottleToPlace = Bottle;
                bottleToPlace.Drop(convenyerCollider.bounds.center + new Vector3(0, convenyerCollider.bounds.center.y + 0.4f));
                Bottle = null;
            }

            _pressedE = false;
        }
        body.MovePosition(transform.position + (_currentMovement * Time.fixedDeltaTime));
        _currentMovement = Vector3.zero;
    }
示例#5
0
 private void Start()
 {
     this.name         = "Collector";
     conveyer          = this.GetComponent <Conveyer>();
     conveyer.resource = deposit.resource;
 }
示例#6
0
 public void New(Conveyer conveyer)
 {
     Player.main.lanes.Add(this);
     lanePos = conveyer.transform.position.x;
 }
示例#7
0
 public void New(Conveyer conveyer)
 {
     Player.main.lanes.Add(this);
     lanePos = conveyer.GetComponent <RectTransform>().anchoredPosition.x;
 }
示例#8
0
 public ConveyerTests()
 {
     feedFactory = new FeedFactory();
     conveyer    = new Conveyer(feedFactory);
 }
    private void GetBottleInput()
    {
        if (Input.GetKeyDown(KeyCode.E))
        {
            var position = transform.position + capsuleCollider.center;
            if (!Bottle)
            {
                var size = Physics.OverlapSphereNonAlloc(position, raycastRadius, _colliders);

                Bottle bottleToGrab = null;
                if (size > 0)
                {
                    Collider bottleCollider = null;
                    for (var i = 0; i < size; i++)
                    {
                        var col = _colliders[i];
                        if (col.GetComponent <Bottle>())
                        {
                            Debug.Log("detect bottle");
                            if (!bottleCollider)
                            {
                                Debug.Log("get bottle");
                                bottleToGrab   = col.GetComponent <Bottle>();
                                bottleCollider = col;
                            }

                            if (bottleCollider &&
                                Vector3.Distance(position, bottleCollider.transform.position) >
                                Vector3.Distance(position, col.transform.position))
                            {
                                bottleToGrab   = col.GetComponent <Bottle>();
                                bottleCollider = col;
                            }
                        }
                    }
                }

                if (bottleToGrab)
                {
                    // let's pass in a transform point to hold the bottle
                    bottleToGrab.Grab(bottleHoldPoint);
                    Bottle = bottleToGrab;
                }
            }
            else if (Bottle)
            {
                // find the nearest conveyor
                var size = Physics.OverlapSphereNonAlloc(position, raycastRadius, _colliders);

                Conveyer conveyerToUse     = null;
                Collider convenyerCollider = null;
                if (size > 0)
                {
                    Debug.Log("number found: " + size);
                    for (var i = 0; i < size; i++)
                    {
                        var col = _colliders[i];

                        var conveyer = col.GetComponent <Conveyer>();
                        if (conveyer && conveyer.canPutBottleOn)
                        {
                            if (!convenyerCollider)
                            {
                                conveyerToUse     = conveyer;
                                convenyerCollider = col;
                            }
                            else if (Vector3.Distance(position, convenyerCollider.transform.position) >
                                     Vector3.Distance(position, col.transform.position))
                            {
                                conveyerToUse     = conveyer;
                                convenyerCollider = col;
                            }
                        }
                        // bottle stops placement
                        else if (col.GetComponent <Bottle>())
                        {
                            conveyerToUse = null;
                            break;
                        }
                    }
                }

                if (conveyerToUse)
                {
                    var bottleToPlace = Bottle;
                    bottleToPlace.Drop(convenyerCollider.bounds.center +
                                       new Vector3(0, convenyerCollider.bounds.center.y + 0.5f));
                    Bottle = null;
                }
            }
        }
    }