예제 #1
0
        public Sprite[] GetWorkerSprites(SaveManager.SavableObject.Worker worker)
        {
            Sprite[] toReturn = new Sprite[5];

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

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

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

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

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

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

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

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

            if (worker.hairIndex > -1)
            {
                GameObject hair = CreateNewPart($"{name}.hair", Hairs, worker.hairIndex, 3);
                hair.GetComponent <SpriteRenderer>().color = worker.color;
                toReturn[4] = hair.GetComponent <SpriteRenderer>().sprite;
                Destroy(hair);
            }

            return(toReturn);
        }
예제 #2
0
        public GameObject GetWorker(SaveManager.SavableObject.Worker worker)
        {
            string name = worker.name;

            GameObject toReturn = new GameObject($"{name}.Base");

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

            head.transform.SetParent(toReturn.transform);

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

            eyes.transform.SetParent(toReturn.transform);

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

            nose.transform.SetParent(toReturn.transform);

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

            mouth.transform.SetParent(toReturn.transform);

            if (worker.hairIndex > -1)
            {
                GameObject hair = CreateNewPart($"{name}.hair", Hairs, worker.hairIndex, 3);
                hair.transform.SetParent(toReturn.transform);
                hair.GetComponent <SpriteRenderer>().color = worker.color;
            }

            return(toReturn);
        }
        public void Fire()
        {
            if (selectedEmployee == null)
            {
                return;
            }

            Tasks.Worker[] workers = FindObjectsOfType <Tasks.Worker>();

            for (int i = 0; i < workers.Length; i++)
            {
                if (workers[i].workerData == selectedEmployee)
                {
                    if (workers[i].Desk != null)
                    {
                        workers[i].Desk.currentWorker = null;
                        workers[i].Desk = null;
                    }

                    ParticleManager.instance.StartEffect_FireWorker(workers[i].transform.position);

                    hiredEmployees.Remove(workers[i].workerData);

                    Destroy(workers[i].gameObject);
                }
            }

            selectedEmployee = null;
            UpdateHireButtons();
        }
예제 #4
0
        public GameObject GetWorker(string name, out SaveManager.SavableObject.Worker worker)
        {
            GameObject toReturn = new GameObject($"{name}.Base");

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

            head.transform.SetParent(toReturn.transform);

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

            eyes.transform.SetParent(toReturn.transform);

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

            nose.transform.SetParent(toReturn.transform);

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

            mouth.transform.SetParent(toReturn.transform);

            int        bodyIndex;
            GameObject body = CreateNewPart($"{name}.body", Bodies, 0, out bodyIndex);

            body.transform.SetParent(toReturn.transform);

            float hasHairLoss = Random.Range(0, 1f);

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

            if (hasHairLoss >= 0.85f) // Taken from a real statistic!
            {
                GameObject hair = CreateNewPart($"{name}.hair", Hairs, 3, out hairIndex);
                hair.transform.SetParent(toReturn.transform);

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

            int day = TimeManagement.TimeScale.days % 7;

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

            float income = Random.Range(5, 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);
        }
예제 #5
0
        public IEnumerator SaveGameAction()
        {
            // -----------------Save Player data---------------
            ActivePlayerData = new SaveManager.SaveData(saveName, Money, TimeScale.minutes, TimeScale.hours, TimeScale.days);

            SaveManager.DeleteSavedGame(ActivePlayerData);

            SaveManager.SavePlayerData(ActivePlayerData);

            yield return(null);

            Debug.Log("Saving workers...");

            // -----------------Save workers---------------
            var savedWorkers = new SaveManager.SavableObject.Worker[workers.Count];

            for (int i = 0; i < workers.Count; i++)
            {
                savedWorkers[i] = workers[i].workerData;
            }

            SaveManager.SaveWorkers(ActivePlayerData.userName, savedWorkers);

            yield return(null);

            Debug.Log("Saving objects...");

            // -----------------Save Objects---------------
            var objects      = FindObjectsOfType <PlacedObject>();
            var savedObjects = new List <SaveManager.SavableObject.WorldObject>()
            {
            };

            for (int i = 0; i < objects.Length; i++)
            {
                if (objects[i].objectData.type == ObjectType.Abstract)
                {
                    continue;
                }

                savedObjects.Add(objects[i].objectData);
            }

            SaveManager.SaveObjects(ActivePlayerData.userName, savedObjects.ToArray());

            yield return(null);

            Debug.Log("Save complete.");

            NotificationManager.instance.ShowNotification("Game saved!");
        }
        public void Hire()
        {
            if (selectedEmployee == null)
            {
                return;
            }

            Constructor.GetWorker(selectedEmployee);

            todaysEmployees.Remove(selectedEmployee);
            selectedEmployee = null;

            UpdateHireButtons();
        }
예제 #7
0
        public void InitializeWorker(SaveManager.SavableObject.Worker bodyData)
        {
            if (body != null)
            {
                Destroy(body);
            }

            workerData = bodyData;

            GetNeed(NeedDefinition.Hunger).Set(workerData.hunger);
            GetNeed(NeedDefinition.Thirst).Set(workerData.hunger);

            body = FindObjectOfType <WorkerSpriteGenerator>().GetWorker(bodyData);

            body.transform.localScale = Vector2.one * 0.5f;

            body.transform.position = transform.position;

            body.transform.SetParent(transform);
        }
예제 #8
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);
        }
        private void SpawnHiredButton(SaveManager.SavableObject.Worker worker)
        {
            Sprite[] images = WorkerSpriteGenerator.instance.GetWorkerSprites(worker);

            GameObject spawnable = new GameObject(worker.name); //Create a temporary object to spawn

            spawnable.AddComponent <Image>();

            GameObject go     = Instantiate(spawnable, HiredSpawningParent);
            Button     button = go.AddComponent <Button>();

            GameObject[] children = new GameObject[images.Length];

            for (int i = 0; i < images.Length; i++)
            {
                var child = children[i];

                if (i == 0)
                {
                    child = go;

                    child.GetComponent <Image>().raycastTarget = true;

                    button.targetGraphic = child.GetComponent <Image>();
                }
                else
                {
                    child = Instantiate(spawnable, go.transform);
                    child.GetComponent <RectTransform>().localScale = go.GetComponent <RectTransform>().localScale / 2;

                    child.GetComponent <Image>().raycastTarget = false;
                }

                child.name = $"{worker.name}.Layer{i}";

                child.GetComponent <Image>().sprite = images[i];

                if (images[i] == null)
                {
                    Destroy(child.gameObject);

                    continue;
                }

                if (i == 4) //Hair
                {
                    child.GetComponent <Image>().color = worker.color;
                }

                child.transform.SetSiblingIndex(i);
            }

            button.onClick.AddListener(delegate()
            {
                float eff = worker.skill;

                Display($"{worker.name}\nEfficiency:{eff}%\nWorks for: ${worker.pay}(Due on payday)");
                selectedEmployee = worker;
            });

            Destroy(spawnable); //Clean up temp object
        }