Exemplo n.º 1
0
        public FireFightAction(CitizenBehaviour self, GameObject target)
        {
            try{
                if (target == null)
                {
                    GetNewTarget(WorldObjects.BuildingsOnFire);
                }

                Self                = self;
                ActionCompleted     = false;
                CurrentActionTarget = target;
                ObjectiveRange      = 1.5f;

                targetPosition = target.transform;

                //make this better
                waterParticle = Self.GetComponent <Citizen_PublicServant_FireFighter> ().waterParticle;

                targetBuildingScript = CurrentActionTarget.GetComponent <Building> ();

                animator = Self.anim;


                ExitBuilding(Self.HomeBuilding);
            }
            catch (MissingReferenceException)
            {
                MonoBehaviour.Destroy(Self.gameObject);
            }
        }
Exemplo n.º 2
0
        public CatchCriminal(CitizenBehaviour self, CitizenBehaviour target)
        {
            Self            = self;
            ActionCompleted = false;
            try{
                if (target == null)
                {
                    GetNewTarget();
                }

                CurrentActionTarget = target.gameObject;
                ObjectiveRange      = 0.15f;

                personScript = self.GetComponent <Citizen_PublicServant_PoliceOfficer> ();

                targetScript   = target;
                targetPosition = CurrentActionTarget.transform.GetChild(0).GetChild(0);

                personScript.SetPersonActive(true);

                gunParticle = Self.GetComponentInChildren <ParticleSystem> ();

                animator = personScript.anim;
            }
            catch (MissingReferenceException)
            {
                MonoBehaviour.Destroy(Self.gameObject);
            }
        }
Exemplo n.º 3
0
        public HealPerson(CitizenBehaviour self, GameObject target)
        {
            Self            = self;
            paramedicScript = Self as Citizen_PublicServant_Paramedic;
            ActionCompleted = false;
            try{
                if (target == null)
                {
                    GetNewTarget();
                }

                CurrentActionTarget = target;
                ObjectiveRange      = 0.15f;

                targetScript   = CurrentActionTarget.GetComponent <CitizenBehaviour> ();
                targetPosition = CurrentActionTarget.transform.GetChild(0).GetChild(0);


                Self.SetPersonActive(true);

                animator = Self.anim;
            }
            catch (MissingReferenceException)
            {
                MonoBehaviour.Destroy(Self.gameObject);
            }
        }
Exemplo n.º 4
0
        public ExtortPersonAction(CitizenBehaviour self, CitizenBehaviour target)
        {
            Self            = self;
            ActionCompleted = false;
            try{
                CurrentActionTarget = target.gameObject;
            }
            catch (System.Exception) {
                MonoBehaviour.Destroy(self.gameObject);
            }
            ObjectiveRange = 0.15f;

            //Make sure all citizens spawn inside houses, and then moves out
            Self.SetPersonActive(true);

            targetStatsScript = CurrentActionTarget.GetComponent <CitizenStats> ();
            targetScript      = target as Citizen_Civilian;
            targetPosition    = CurrentActionTarget.transform.GetChild(0).GetChild(0);

            animator = Self.anim;

            //Change this to a "chasing" system. Also in the talk action
            //ForceTargetToHalt ();

            Gunparticle = Self.transform.GetChild(0).GetChild(0).GetChild(1).GetComponentInChildren <ParticleSystem> ();

            ExecuteAction();
        }
Exemplo n.º 5
0
        void StartArrestAttempt(CitizenBehaviour target)
        {
            //Debug.Log("Starting Arrest");
            targetScript.CurrentAction.PauseAction(true);

            attemptingArrest = true;
        }
Exemplo n.º 6
0
    public static CitizenBehaviour GetPersonTarget(CitizenBehaviour invoker)
    {
        try{
            var personTargets = new List <GameObject> (0);

            for (int i = 0; i < ValidTargets.Count; i++)
            {
                if (ValidTargets [i].GetComponent <CitizenBehaviour> ())
                {
                    personTargets.Add(ValidTargets [i]);
                }
            }

            if (personTargets.Count == 0)
            {
                return(null);
            }

            if (personTargets.Contains(invoker.gameObject))
            {
                personTargets.Remove(invoker.gameObject);
            }

            var rand = Random.Range(0, personTargets.Count);

            return(personTargets [rand].GetComponent <CitizenBehaviour>());
        }
        catch (System.Exception ex) {
            if (ex is MissingReferenceException || ex is System.ArgumentOutOfRangeException)
            {
                return(null);
            }
        }
        return(null);
    }
Exemplo n.º 7
0
    public static Building GetBuildingTarget(CitizenBehaviour invoker)
    {
        try
        {
            var buildingTargets = new List <GameObject> (0);

            for (int i = 0; i < ValidTargets.Count; i++)
            {
                if (ValidTargets [i].GetComponent <Building> ())
                {
                    buildingTargets.Add(ValidTargets [i]);
                }
            }

            if (buildingTargets.Count > 0)
            {
                var rand = Random.Range(0, buildingTargets.Count);
                return(buildingTargets [rand].GetComponent <Building>());
            }
        }
        catch (System.Exception ex) {
            if (ex is MissingReferenceException || ex is System.ArgumentOutOfRangeException)
            {
                return(null);
            }
        }
        return(null);
    }
Exemplo n.º 8
0
    public void StopCutscene()
    {
        foreach (GameObject citizen in GameObject.FindGameObjectsWithTag("Citizen"))
        {
            float   posY          = Random.Range(-3, 3) + 0.5f;
            float   posX          = Random.Range(-5, 5) + 0.5f;
            Vector3 currentVector = new Vector3(posX, posY, -1f);

            CitizenBehaviour citizenBehaviour = citizen.GetComponent <CitizenBehaviour>();
            if (citizenBehaviour.hasTent)
            {
                citizen.transform.position = new Vector3(citizenBehaviour.tent.transform.position.x, citizenBehaviour.tent.transform.position.y, -1);
            }
            else
            {
                citizen.transform.position = currentVector;
                Vector3 newVector = Vector3.zero;
                do
                {
                    posY          = Random.Range(-3, 3) + 0.5f;
                    posX          = Random.Range(-5, 5) + 0.5f;
                    newVector     = new Vector3(posX, posY, -1f);
                    currentVector = newVector;
                }while (newVector.x != currentVector.x && newVector.y != currentVector.y);
            }
            citizen.transform.localScale = new Vector3(1f, 1f, 0f);
            citizen.GetComponent <CitizenBehaviour>().IsClickable = true;
            citizen.GetComponent <CitizenBehaviour>().UnhighlightInteractable();
            citizen.GetComponent <CitizenBehaviour>().HideInfo();
        }
    }
Exemplo n.º 9
0
        public override bool GetNewTarget(List <GameObject> targets)
        {
            if (targets == null)
            {
                targets = new List <GameObject> ();
            }
            if (targets.Count == 0)
            {
                return(false);
            }

            List <GameObject> personTargets = new List <GameObject>();

            for (int i = 0; i < targets.Count; i++)
            {
                if (targets [i].GetComponent <Citizen_Civilian> ())
                {
                    personTargets.Add(targets [i]);
                }
            }

            CurrentActionTarget = personTargets [Random.Range(0, personTargets.Count)];
            targetScript        = CurrentActionTarget.GetComponent <Citizen_Civilian> ();

            return(true);
        }
Exemplo n.º 10
0
        void InitializeCitizenStats(CitizenBehaviour citizen)
        {
            citizen.stats.MaxHealth   = 25;
            citizen.stats.Health      = citizen.stats.MaxHealth;
            citizen.stats.MoneyAmount = 50;

            citizen.HomeBuilding = gameObject.GetComponent <Building_Normal_Residence>();
        }
Exemplo n.º 11
0
    protected override void InitializeCitizenStats(CitizenBehaviour citizen)
    {
        citizen.stats.MaxHealth   = 25;
        citizen.stats.Health      = citizen.stats.MaxHealth;
        citizen.stats.MoneyAmount = 50;

        citizen.HomeBuilding = gameObject.GetComponent <Building_PublicService_FireDepartment>();
    }
Exemplo n.º 12
0
        public override void BuyItem(CitizenBehaviour customer)
        {
            var boughtItemPrice = (moneyAmount / 100f) * Random.Range(1f, 10f);

            boughtItemPrice = Mathf.Clamp(boughtItemPrice, 30, 100);

            customer.stats.MoneyAmount += boughtItemPrice;
            moneyAmount -= boughtItemPrice;
        }
Exemplo n.º 13
0
        void ShootAtTarget(CitizenBehaviour target)
        {
            //Raycast to check for hits
            //Select a target to hit based on multiple factors?
            gunParticle.Play();


            target.stats.TakeDamage(personScript.GunDamage);
        }
Exemplo n.º 14
0
    public void OnPointerClick(PointerEventData eventData)
    {
        CitizenBehaviour selectedCitizenBehaviour = gameManager.SelectedCitizen.GetComponent <CitizenBehaviour>();

        selectedCitizenBehaviour.SetTurnAction(
            delegate() {
            CleanDebris();
        }, actions.cleanDebris);
    }
Exemplo n.º 15
0
    public void OnPointerClick(PointerEventData eventData)
    {
        if (gameManager.SelectedCitizen != null)
        {
            CitizenBehaviour selectedCitizenBehaviour = gameManager.SelectedCitizen.GetComponent <CitizenBehaviour>();

            OpenCraftTable();
        }
    }
Exemplo n.º 16
0
        protected void ForceTargetToHalt(CitizenBehaviour target)
        {
            if (target.CurrentAction != null)
            {
                target.CurrentAction.previousAction = target.CurrentAction;
            }
            target.CurrentAction = null;

            target.CurrentSubState = SubState.Waiting;
        }
Exemplo n.º 17
0
        public WaitAction(CitizenBehaviour self, GameObject target, float time)
        {
            ActionCompleted     = false;
            CurrentActionTarget = target;
            actionTimer         = time;

            Self = self;

            animator = Self.anim;
        }
    public virtual void BuyItem(CitizenBehaviour customer)
    {
        var boughtItemPrice = (customer.stats.MoneyAmount / 100f) * Random.Range(1f, 15f);

        if (customer.stats.MoneyAmount >= boughtItemPrice)
        {
            moneyAmount += boughtItemPrice;
            customer.stats.MoneyAmount -= boughtItemPrice;
            //add happiness to costumer
        }
    }
Exemplo n.º 19
0
        public override bool GetNewTarget()
        {
            ResetOfficerTargetValues();

            Status  status     = Status.Incapacitated;
            Vector3 currentPos = Self.transform.position;

            while ((int)status <= 4)
            {
                if ((int)status == 3)
                {
                    status++;
                    continue;
                }
                ILookup <Status, CitizenBehaviour> AllCitizens = WorldObjects.People.ToLookup(o => o.stats.CurrentStatus);
                IEnumerable <CitizenBehaviour>     priorities  = AllCitizens[status];

                GameObject tMin    = null;
                float      minDist = Mathf.Infinity;

                foreach (var priority in priorities)
                {
                    if (priority.committedCrime)
                    {
                        float dist = Vector3.Distance(priority.transform.position, currentPos);
                        if (dist < minDist)
                        {
                            tMin    = priority.gameObject;
                            minDist = dist;
                        }
                    }
                }
                if (tMin != null)
                {
                    CurrentActionTarget = tMin;
                    targetScript        = tMin.GetComponent <CitizenBehaviour> ();
                    targetPosition      = tMin.transform.GetChild(0).GetChild(0);

                    if (Self.inBuilding)
                    {
                        Building_PublicService_PoliceStation policeStation = Self.HomeBuilding as Building_PublicService_PoliceStation;
                        ExitBuilding(policeStation);
                    }
                    //Debug.Log("more criminal targets ");
                    return(true);
                }
                status++;
            }

            targetPosition = Self.HomeBuilding.transform;
            returningHome  = true;
            // Debug.Log("no more criminal targets ");
            return(false);
        }
Exemplo n.º 20
0
        public StunAction(CitizenBehaviour self, GameObject stunTarget, float time, Vector2 stunOrigin, CitizenAction previousAction)
        {
            ActionCompleted     = false;
            CurrentActionTarget = stunTarget;
            Self                = self;
            actionTimer         = time;
            this.previousAction = previousAction;

            this.stunOrigin = stunOrigin;
            animator        = Self.anim;

            ExecuteAction();
        }
Exemplo n.º 21
0
    void MeteorHit(Vector2 hitPos)
    {
        dealtDamage = true;

        //Meteor Explosion
        gameObject.GetComponent <Collider2D> ().enabled   = false;
        gameObject.GetComponent <Rigidbody2D> ().velocity = Vector2.zero;
        gameObject.GetComponent <AudioSource> ().Play();
        Transform fire = transform.GetChild(0);

        for (int i = 0; i < fire.childCount; i++)
        {
            fire.GetChild(i).GetComponent <ParticleSystem> ().Stop();
        }

        Transform explosion = transform.GetChild(1);

        for (int i = 0; i < explosion.childCount; i++)
        {
            explosion.GetChild(i).GetComponent <ParticleSystem> ().Play();
        }


        StartCoroutine(WaitDestroy());

        var hits = Physics2D.OverlapCircleAll(hitPos, HitRadius);

        for (int i = 0; i < hits.Length; i++)
        {
            //print(hits[i].name);
            var damageable = hits [i].transform.root.GetComponentInChildren <Damageable> ();

            if (damageable != null)
            {
                damageable.TakeDamage(BaseDamage);
                //Dont do this with a string comparison?
                if (damageable.tag == "Person")
                {
                    CitizenBehaviour person = damageable.GetComponent <CitizenBehaviour>();
                    person.CurrentAction = new StunAction(person, person.gameObject, Random.Range(5f, 10f), hitPos, person.CurrentAction);
                }

                if (damageable.tag == "Building")
                {
                    Buildings.Building building = damageable.GetComponent <Buildings.Building> ();

                    building.StartFire();
                }
            }
        }
    }
Exemplo n.º 22
0
 public void OnPointerClick(PointerEventData eventData)
 {
     if (gameManager.SelectedCitizen != null)
     {
         if (gameManager.GetInteractableItemsInCurrentDay.Exists(go => go == gameObject))
         {
             CitizenBehaviour selectedCitizenBehaviour = gameManager.SelectedCitizen.GetComponent <CitizenBehaviour>();
             selectedCitizenBehaviour.SetTurnAction(
                 delegate() {
                 selectedCitizenBehaviour.OnPointerClick(null);
                 CollectFood();
             }, actions.getFood);
         }
     }
 }
Exemplo n.º 23
0
        public IdleMovement(CitizenBehaviour self, float time)
        {
            Self            = self;
            ActionCompleted = false;

            ObjectiveRange = 0.15f;

            actionTimer      = time;
            newDirectionTime = Random.Range(5f, 15f);
            Self.SetPersonActive(true);

            animator = Self.anim;


            ExecuteAction();
        }
Exemplo n.º 24
0
    public void Bark(Barks barks, CitizenBehaviour dude)
    {
        ReorderCitizens(citizens.IndexOf(dude.GetComponent <CitizenData>()));

        if (dude.gameObject.GetComponent <SatisfactionManager>().strikes == 3)
        {
            story.ChoosePathString($"StrikeBark{Random.Range(0, 3).ToString()}");
        }

        switch (barks)
        {
        case Barks.GET_FOOD:
            story.ChoosePathString($"BarkFood{Random.Range(0, 4).ToString()}");
            break;

        case Barks.REMOVE_DEBRIE:
            story.ChoosePathString($"BarkDebrie{Random.Range(0, 4).ToString()}");
            break;

        case Barks.GET_DECOR_WATER:
            story.ChoosePathString($"BarkWater{Random.Range(0, 4).ToString()}");
            break;

        case Barks.GET_DECOR_FIRE:
            story.ChoosePathString($"BarkFire{Random.Range(0, 4).ToString()}");
            break;

        case Barks.GET_DECOR_EARTH:
            story.ChoosePathString($"BarkEarth{Random.Range(0, 4).ToString()}");
            break;

        case Barks.GET_DECOR_AIR:
            story.ChoosePathString($"BarkAir{Random.Range(0, 4).ToString()}");
            break;

        case Barks.GET_STONE:
            story.ChoosePathString($"BarkStone{Random.Range(0, 4).ToString()}");
            break;

        case Barks.GET_WOOD:
            story.ChoosePathString($"BarkWood{Random.Range(0, 4).ToString()}");
            break;
        }

        dude.ShowText(story.Continue());
    }
Exemplo n.º 25
0
 public void OnPointerClick(PointerEventData eventData)
 {
     if (gameManager.SelectedCitizen != null)
     {
         if (gameManager.GetInteractableItemsInCurrentDay.Exists(go => go == gameObject))
         {
             CitizenBehaviour selectedCitizenBehaviour = gameManager.SelectedCitizen.GetComponent <CitizenBehaviour>();
             selectedCitizenBehaviour.SetTurnAction(
                 delegate() {
                 citizenOwner = gameManager.SelectedCitizen;
                 selectedCitizenBehaviour.OnPointerClick(null);
                 selectedCitizenBehaviour.hasTent = true;
                 selectedCitizenBehaviour.tent    = this.gameObject;
             }, actions.cleanTent);
         }
     }
 }
Exemplo n.º 26
0
    public void PrepareCraftItem(GameObject item)
    {
        CitizenBehaviour selectedCitizenBehaviour = gameManager.SelectedCitizen.GetComponent <CitizenBehaviour>();

        selectedCitizenBehaviour.SetTurnAction(
            delegate() {
            //gameManager.GetComponent<StoryMaster>().newItemName = item.name;
            gameManager.GetComponent <StoryMaster>().newItem = item;
        }, actions.craft);
        selectedCitizenBehaviour.OnPointerClick(null);

        GameObject instantiatedItem = Instantiate(item, new Vector3(100.0f, 100.0f, 100.0f), Quaternion.identity);
        Color      color            = instantiatedItem.GetComponent <SpriteRenderer>().material.color;

        instantiatedItem.GetComponent <SpriteRenderer>().material.color = new Color(color.r, color.g, color.b, alphaCreation);
        gameManager.craftedItem = instantiatedItem;
    }
Exemplo n.º 27
0
        public BuyFromStore(CitizenBehaviour self, Building_Normal_Service target)
        {
            Self                = self;
            ActionCompleted     = false;
            CurrentActionTarget = target.gameObject;
            ObjectiveRange      = 0.15f;

            timer = Random.Range(7.5f, 15f);

            Self.SetPersonActive(true);

            targetScript = target as Building_Normal_Service;

            animator = Self.anim;

            targetPosition = target.transform;

            ExecuteAction();
        }
Exemplo n.º 28
0
        void ResetOfficerTargetValues()
        {
            ActionCompleted = false;

            startedChase     = false;
            chasingCriminal  = false;
            targetArrested   = false;
            attemptingArrest = false;
            startedFighting  = false;
            returningHome    = false;
            jailingTarget    = false;


            catchTimer     = 0f;
            ObjectiveRange = 0.15f;

            targetScript   = null;
            targetPosition = null;
        }
Exemplo n.º 29
0
        public TalkAction(CitizenBehaviour self, CitizenBehaviour target, float time)
        {
            Self            = self;
            ActionCompleted = false;
            if (target == null)
            {
                StopAction();
                return;
            }
            CurrentActionTarget = target.gameObject;

            targetPosition = target.transform;

            targetScript = target;

            actionTimer = time;

            animator = Self.anim;
        }
Exemplo n.º 30
0
        public RobPersonAction(Citizen_Criminal_Robber self, CitizenBehaviour target)
        {
            Self            = self;
            ActionCompleted = false;
            try{
                CurrentActionTarget = target.gameObject;
            }
            catch (System.Exception) {
                MonoBehaviour.Destroy(self.gameObject);
            }
            ObjectiveRange = 0.15f;

            //Make sure all citizens spawn inside houses, and then moves out
            Self.SetPersonActive(true);

            targetScript   = target as Citizen_Civilian;
            targetPosition = CurrentActionTarget.transform.GetChild(0).GetChild(0);

            animator = Self.anim;
        }