コード例 #1
0
        public void SetWorker(TaskWorkerAI worker)
        {
            if (currentWorker != null && worker != currentWorker)
            {
                return;
            }

            currentWorker             = worker;
            currentWorker.worker.Desk = this;

            TaskSystem.Task StartWorking = new TaskSystem.Task
            {
                moveToPosition = new TaskSystem.Task.MoveTo(chair.position, 0, () =>
                {
                    currentWorker         = worker;
                    worker.currentThought = DialogueSys.GetWorkPhrase();
                }),
                executeActionRecurring = () =>
                {
                    Clicked();
                    if (Time.frameCount % 300 == 1)
                    {
                        worker.currentThought = DialogueSys.GetRandomPhrase();
                    }
                }
            };

            worker.taskManager.tasks.Enqueue(StartWorking);
        }
コード例 #2
0
        public static GameObject GetWorker(SaveManager.SavableObject.Worker WorkerToSpawn)
        {
            Vector3 spawnPoint = FindObjectOfType <MapLayoutManager>().PlayAreaSize - Vector2.one;

            GameObject obj = new GameObject(WorkerToSpawn.name);

            TaskWorkerAI workerAI = obj.AddComponent <TaskWorkerAI>();
            Worker       worker   = obj.AddComponent <Worker>();

            worker.InitializeWorker(WorkerToSpawn);
            workerAI.Setup(worker);

            if (WorkerToSpawn.position != Vector2.zero)
            {
                //Old worker
                obj.transform.position = WorkerToSpawn.position;
                obj.transform.rotation = WorkerToSpawn.rotation;
            }
            else
            {
                //New worker
                obj.transform.position = spawnPoint;
                obj.transform.rotation = Quaternion.identity;
            }

            return(obj);
        }
コード例 #3
0
        public static void DeselectWorker()
        {
            if (SelectedWorker != null)
            {
                SelectedWorker = null;

                UIManager.instance.HideMenus();
            }
        }
コード例 #4
0
        public void SelectWorker(TaskWorkerAI worker)
        {
            DeselectWorker();

            SelectedWorker = worker;

            UpdateInformation();

            onSelectEvent?.Invoke();
        }
コード例 #5
0
        private void Update()
        {
            if (currentWorker != null)
            {
                float distanceToWorker = Vector2.Distance(currentWorker.transform.position, transform.position);

                if (distanceToWorker < 1)
                {
                    currentWorker.worker.Face(transform.position);
                }

                if (currentWorker.worker.Desk != this)
                {
                    currentWorker = null;
                }
            }
        }