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); }
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(); }
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); }
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(); }
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); }
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 }