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);
        }
Ejemplo n.º 2
0
        public Sprite[] GetWorkerSprites(out SaveManager.SavableObject.Worker worker)
        {
            Sprite[] toReturn = new Sprite[5];

            string name = DialogueSys.GetName();

            int        headIndex;
            GameObject head = CreateNewPart($"{name}.head", Heads, 1, out headIndex);

            toReturn[0] = head.GetComponent <SpriteRenderer>().sprite;

            Destroy(head);

            int        eyeIndex;
            GameObject eyes = CreateNewPart($"{name}.eyes", Eyes, 2, out eyeIndex);

            toReturn[1] = eyes.GetComponent <SpriteRenderer>().sprite;

            Destroy(eyes);

            int        noseIndex;
            GameObject nose = CreateNewPart($"{name}.nose", Noses, 3, out noseIndex);

            toReturn[2] = nose.GetComponent <SpriteRenderer>().sprite;

            Destroy(nose);

            int        mouthIndex;
            GameObject mouth = CreateNewPart($"{name}.mouth", Mouths, 2, out mouthIndex);

            toReturn[3] = mouth.GetComponent <SpriteRenderer>().sprite;

            Destroy(mouth);

            bool hasHairLoss = Random.Range(0, 1f) > 0.85f;// Taken from a real statistic!

            int   hairIndex = -1;
            Color hairColor = Color.black;

            if (hasHairLoss)
            {
                GameObject hair = CreateNewPart($"{name}.hair", Hairs, 3, out hairIndex);
                toReturn[4] = hair.GetComponent <SpriteRenderer>().sprite;

                hairColor = hair.GetComponent <SpriteRenderer>().color;

                Destroy(hair);
            }

            int day = TimeManagement.TimeScale.days % 7;

            float skill = Random.Range(30 * day, 50 * day) % 70;

            float income = Random.Range(5f, 500);

            income = (float)System.Math.Round(income, 2);

            worker = new SaveManager.SavableObject.Worker(name, headIndex, eyeIndex, noseIndex, mouthIndex, hairIndex, hairColor, skill, income, income + skill, 0, new float[] { 100, 100 });

            return(toReturn);
        }