Exemplo n.º 1
0
    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();
    }
Exemplo n.º 2
0
    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();
                }
            }
        }
    }
Exemplo n.º 3
0
    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);
            }
        }
    }
Exemplo n.º 5
0
    bool CheckSailor(out CitizenScript.CitizenTypes type)
    {
        if (sailorLeft > 0)
        {
            type = CitizenScript.CitizenTypes.Sailor;
            --sailorLeft;
            return true;
        }

        type = CitizenScript.CitizenTypes.None;

        return false;
    }
Exemplo n.º 6
0
    bool CheckBlonde(out CitizenScript.CitizenTypes type)
    {
        if (blondeLeft > 0)
        {
            type = CitizenScript.CitizenTypes.Blonde;
            --blondeLeft;
            return true;
        }

        type = CitizenScript.CitizenTypes.None;

        return false;
    }
Exemplo n.º 7
0
 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);
     }
 }
Exemplo n.º 8
0
    // 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);
    }
Exemplo n.º 9
0
    bool CheckWorker(out CitizenScript.CitizenTypes type)
    {
        if (workerLeft > 0)
        {
            type = CitizenScript.CitizenTypes.Worker;
            --workerLeft;
            return true;
        }

        type = CitizenScript.CitizenTypes.None;

        return false;
    }
Exemplo n.º 10
0
 private void Start()
 {
     gc = GameObject.FindGameObjectWithTag("GameController").GetComponent <GameControllerScript>();
     me = GetComponentInParent <CitizenScript>();
     Init();
 }
Exemplo n.º 11
0
 // 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);
    }