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); } }
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); } }
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); } }
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(); }
void StartArrestAttempt(CitizenBehaviour target) { //Debug.Log("Starting Arrest"); targetScript.CurrentAction.PauseAction(true); attemptingArrest = true; }
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); }
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); }
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(); } }
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); }
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>(); }
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>(); }
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; }
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); }
public void OnPointerClick(PointerEventData eventData) { CitizenBehaviour selectedCitizenBehaviour = gameManager.SelectedCitizen.GetComponent <CitizenBehaviour>(); selectedCitizenBehaviour.SetTurnAction( delegate() { CleanDebris(); }, actions.cleanDebris); }
public void OnPointerClick(PointerEventData eventData) { if (gameManager.SelectedCitizen != null) { CitizenBehaviour selectedCitizenBehaviour = gameManager.SelectedCitizen.GetComponent <CitizenBehaviour>(); OpenCraftTable(); } }
protected void ForceTargetToHalt(CitizenBehaviour target) { if (target.CurrentAction != null) { target.CurrentAction.previousAction = target.CurrentAction; } target.CurrentAction = null; target.CurrentSubState = SubState.Waiting; }
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 } }
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); }
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(); }
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(); } } } }
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); } } }
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(); }
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()); }
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); } } }
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; }
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(); }
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; }
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; }
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; }