public void BuyFromShop(CitizenScript buyer, string itemType, int maxCost = int.MaxValue) { maxCost = Mathf.Clamp(maxCost, 0, buyer.money); // Make sure that the buyer can actually afford stuff // Pick an item to be bought List <Item> potentialProducts = new List <Item>(); foreach (Item item in shopStocks) { if (item.type.Contains(itemType) && item.value <= maxCost) { potentialProducts.Add(item); //Debug.Log(item.name + " is a potential product for " + buyer.myName); } } if (potentialProducts.Count < 1) // For whatever reason the buyer can't buy anything { return; } //Debug.Log(buyer.myName + "'s potentialProducts: " + potentialProducts.Count); Item toBuy = potentialProducts[Random.Range(0, potentialProducts.Count)]; // Add the item to the buyer's inventory buyer.inventory.Add(toBuy); shopStocks.Remove(toBuy); buyer.GetPaid(-toBuy.value, true); gc.LogMessage(buyer.myName + " has bought 1 " + toBuy.name + " from the shops for " + toBuy.value + " Gold.", "LGray"); Debug.Log(buyer.myName + " has bought 1 " + toBuy.name + " from the shops for " + toBuy.value + " Gold."); potentialProducts.Clear(); }
public void AsignCitizens() { foreach (GameObject citizen in GameObject.FindGameObjectsWithTag("Citizen")) { if (!citizenAsigned) { CitizenScript citizenScript = citizen.GetComponent <CitizenScript>(); if (citizenScript.available && citizenScript.profession == CitizenScript.Professions.Unemployeed) { citizenAsigned = true; citizenScript.available = false; citizenScript.profession = CitizenScript.Professions.Gatherer; // Add WoodCutterScript componenet to asigned citizen citizen.AddComponent <GatherersScript>(); GatherersScript worker = citizen.GetComponent <GatherersScript>(); worker.citizen = citizen; System.Console.WriteLine("Found: " + worker.citizen.ToString()); worker.hut = this; worker.GoToWorkplace(); } } } }
public void AsignCitizens() { foreach (GameObject citizen in GameObject.FindGameObjectsWithTag("Citizen")) { if (!citizenAsigned) { CitizenScript citizenScript = citizen.GetComponent <CitizenScript>(); if (citizenScript.available && citizenScript.profession == CitizenScript.Professions.Unemployeed) { citizenAsigned = true; citizenScript.available = false; citizenScript.profession = CitizenScript.Professions.Mason; // Add WoodCutterScript componenet to asigned citizen citizen.AddComponent <MasonScript>(); MasonScript ms = citizen.GetComponent <MasonScript>(); ms.citizen = citizen; ms.mhc = this; ms.ChangeState_GoingToWorkplace(); // Citizen goes to his workplace Unit unit = citizen.GetComponent <Unit>(); unit.MoveTo(InitialPosition.transform.position); } } } }
void HealthDrop() { if (healthDropTimer + 1.0f < Time.time) { healthDropTimer = Time.time; Collider[] hitColliders = Physics.OverlapSphere(transform.position, 5.0f); int workerCount = 0; int blondeCount = 0; int sailorCount = 0; for (int i = 0; i < hitColliders.Length; ++i) { CitizenScript citizen = hitColliders[i].GetComponent <CitizenScript>(); AIAttackScript citizenAI = hitColliders[i].GetComponent <AIAttackScript>(); if ((citizen != null) && !citizenAI.IsStopped()) { if (citizen.GetType() == CitizenScript.CitizenTypes.Worker) { ++workerCount; } else if (citizen.GetType() == CitizenScript.CitizenTypes.Blonde) { ++blondeCount; } else if (citizen.GetType() == CitizenScript.CitizenTypes.Sailor) { ++sailorCount; } } } float healthDrop = workerCount * healthDropPerWorker + blondeCount * healthDropPerBlonde + sailorCount * healthDropPerSailor; health -= healthDrop; if (healthDrop > 0.0f) { //print(23); GameObject message = (GameObject)Instantiate(Resources.Load("prefabs/message")); Vector3 pos = GetComponent <Collider>().bounds.center; pos.y = 0; message.GetComponentInChildren <PopupMessageScript>().pos = pos; //transform.position/* + new Vector3(0,0,10.0f)*/; message.GetComponent <RectTransform>().SetParent(canvas.transform); message.transform.SetSiblingIndex(0); message.GetComponent <RectTransform>().anchoredPosition = new Vector2(0, 0); message.GetComponentInChildren <Text>().text = (-healthDrop).ToString(); } if (health <= 0) { EndGame(false); } } }
bool CheckSailor(out CitizenScript.CitizenTypes type) { if (sailorLeft > 0) { type = CitizenScript.CitizenTypes.Sailor; --sailorLeft; return true; } type = CitizenScript.CitizenTypes.None; return false; }
bool CheckBlonde(out CitizenScript.CitizenTypes type) { if (blondeLeft > 0) { type = CitizenScript.CitizenTypes.Blonde; --blondeLeft; return true; } type = CitizenScript.CitizenTypes.None; return false; }
public void ToggleCitizenDetails(CitizenScript me) { if (citizenViewUIGroup.activeInHierarchy) { citizenViewUIGroup.SetActive(false); citizenDetailViewUIGroup.GetComponent <CitizenDetailsScript>().me = me; citizenDetailViewUIGroup.SetActive(true); } else { citizenViewUIGroup.SetActive(true); citizenDetailViewUIGroup.GetComponent <CitizenDetailsScript>().me = null; citizenDetailViewUIGroup.SetActive(false); } }
// Get a valid target for a citizen. public CitizenScript GetTarget(CitizenScript me) { CitizenScript target; bool isValid = false; do { target = citizens[Random.Range(0, citizens.Count)]; if (me.validTargets.Contains(target)) { isValid = true; } else { isValid = false; } } while (target == me || !isValid); return(target); }
bool CheckWorker(out CitizenScript.CitizenTypes type) { if (workerLeft > 0) { type = CitizenScript.CitizenTypes.Worker; --workerLeft; return true; } type = CitizenScript.CitizenTypes.None; return false; }
private void Start() { gc = GameObject.FindGameObjectWithTag("GameController").GetComponent <GameControllerScript>(); me = GetComponentInParent <CitizenScript>(); Init(); }
// This citizen gives gold to another public void PayPerson(CitizenScript recipient) { // TODO: Implement }
bool ProcessCitizen(Collider citizenCollider) { CitizenScript citizen = citizenCollider.GetComponent <CitizenScript>(); AIAttackScript citizenAI = citizenCollider.GetComponent <AIAttackScript>(); if ((citizen != null) && !citizenAI.IsStopped()) { if ((target == null) || (citizenAI == target)) { bool hit = false; int moneyEarned = 0; if (m_type == WeaponTypes.LieGenerator) { hit = true; } else if (m_type == WeaponTypes.DrinkSpot) { targetPointerLine.SetColors(new Color(0.811f, 0.713f, 0.368f), new Color(0.811f, 0.713f, 0.368f)); if (citizen.GetType() == CitizenScript.CitizenTypes.Worker) { hit = true; moneyEarned = 10; } else if (citizen.GetType() == CitizenScript.CitizenTypes.Sailor) { hit = true; moneyEarned = 40; } } else if (m_type == WeaponTypes.ShoppingCenter) { targetPointerLine.SetColors(new Color(0.972f, 0.388f, 0.388f), new Color(0.972f, 0.388f, 0.388f)); if (citizen.GetType() == CitizenScript.CitizenTypes.Blonde) { hit = true; moneyEarned = 20; } } else if (m_type == WeaponTypes.Brothel) { targetPointerLine.SetColors(new Color(0.145f, 0.054f, 0.533f), new Color(0.145f, 0.054f, 0.533f)); if (citizen.GetType() == CitizenScript.CitizenTypes.Sailor) { hit = true; moneyEarned = 40; } else if (citizen.GetType() == CitizenScript.CitizenTypes.Worker) { hit = true; moneyEarned = 10; } } /*if (target == null) * {*/ //targetPointer.Play(); if (hit && (target == null)) { target = citizenAI; } if ((citizenAI != target) && (m_type != WeaponTypes.LieGenerator)) { return(false); } //} if (hit) { targetPointerLine.enabled = true; attackTimer = Time.time; if (m_type == WeaponTypes.LieGenerator) { //citizenAI.Stop(); citizenAI.Hit(10); } else if (m_type == WeaponTypes.DrinkSpot) { citizenAI.Hit(1); citizenAI.home = transform.position; } else if (m_type == WeaponTypes.ShoppingCenter) { citizenAI.Hit(5); citizenAI.home = transform.position; } else if (m_type == WeaponTypes.Brothel) { citizenAI.Hit(7); citizenAI.home = transform.position; } } if (citizenAI.IsStopped()) { target = null; //targetPointer.Stop(); targetPointerLine.enabled = false; StatsScript.money += moneyEarned; //print(23); GameObject message = (GameObject)Instantiate(Resources.Load("prefabs/message")); Vector3 pos = GetComponent <Collider>().bounds.center; pos.y = 0; message.GetComponentInChildren <PopupMessageScript>().pos = pos; //transform.position/* + new Vector3(0,0,10.0f)*/; message.GetComponent <RectTransform>().SetParent(canvas.transform); message.transform.SetSiblingIndex(0); message.GetComponent <RectTransform>().anchoredPosition = new Vector2(0, 0); message.GetComponentInChildren <Text>().text = "$" + moneyEarned.ToString() + "K"; message.GetComponentInChildren <Text>().color = new Color(0.0f, 0.7f, 0.0f); } return(true); } } return(false); }