public void StartEvent(EventScriptableObj eventObj, bool positive = true) { if (!positive) { HandleNegativeEvent(eventObj); } else { HandlePositiveEvents(eventObj); } }
public void HandleNegativeEvent(EventScriptableObj eventObj) { string numberText = ""; switch (eventObj.m_NegativeEventType) { case NegativeEventTypes.INCREASE_TEMPERATURE: { Temperature temperature = GameStats.Instance.m_Temperature; if (temperature == null) { return; } float increaseAmt = 0; if (eventObj.m_AffectedByPercentage) { increaseAmt = ((float)temperature.m_CurrTemperatureAmt * Random.Range(eventObj.m_MinMaxAffectedPercentages.x, eventObj.m_MinMaxAffectedPercentages.y)); } else { increaseAmt = Random.Range(eventObj.m_MinMaxAffectedAmount.x, eventObj.m_MinMaxAffectedAmount.y); } temperature.AddToTemperatureOffset(-increaseAmt); numberText = "Temperature slightly increased."; } break; case NegativeEventTypes.DECREASE_POPULARITY: { Popularity popularity = GameStats.Instance.m_Popularity; if (popularity == null) { return; } int decreaseAmt = 0; if (eventObj.m_AffectedByPercentage) { decreaseAmt = (int)((float)popularity.m_CurrentPopularity * Random.Range(eventObj.m_MinMaxAffectedPercentages.x, eventObj.m_MinMaxAffectedPercentages.y)); } else { decreaseAmt = (int)Random.Range(eventObj.m_MinMaxAffectedAmount.x, eventObj.m_MinMaxAffectedAmount.y); } numberText = decreaseAmt.ToString(); popularity.UpdatePopularityOffset(-decreaseAmt); } break; case NegativeEventTypes.LOSE_MONEY: { Money money = GameStats.Instance.m_Money; if (money == null) { return; } int decreaseAmt = 0; if (eventObj.m_AffectedByPercentage) { decreaseAmt = (int)((float)money.m_CurrMoney * Random.Range(eventObj.m_MinMaxAffectedPercentages.x, eventObj.m_MinMaxAffectedPercentages.y)); } else { decreaseAmt = (int)Random.Range(eventObj.m_MinMaxAffectedAmount.x, eventObj.m_MinMaxAffectedAmount.y); } numberText = "$" + decreaseAmt.ToString(); money.ReduceMoney(decreaseAmt); } break; case NegativeEventTypes.EVIL_COOPERATE: { //THIS EVENT CAN ONLY HAPPEN WHEN THERE ARE TREES if (MapManager.Instance.GetTotalAmtOfTreeOnMap() == 0) { return; } int numberToSpawn = (int)Random.Range(eventObj.m_MinMaxAffectedAmount.x, eventObj.m_MinMaxAffectedAmount.y); for (int i = 0; i < numberToSpawn; ++i) { NPCManager.Instance.SpawnEvilPeople(); } } break; } ++m_EventNumberInAMonth; ++m_NumberOfBadEventsInAMonth; UpdateUI(eventObj, numberText); SoundManager.Instance.Play("UnsuccessfulFund"); }
public void HandlePositiveEvents(EventScriptableObj eventObj) { string numberText = ""; switch (eventObj.m_PositiveEventType) { case PositiveEventTypes.DECREASE_TEMPERATURE: { Temperature temperature = GameStats.Instance.m_Temperature; if (temperature == null) { return; } float decreaseAmt = 0; if (eventObj.m_AffectedByPercentage) { decreaseAmt = ((float)temperature.m_CurrTemperatureAmt * Random.Range(eventObj.m_MinMaxAffectedPercentages.x, eventObj.m_MinMaxAffectedPercentages.y)); } else { decreaseAmt = Random.Range(eventObj.m_MinMaxAffectedAmount.x, eventObj.m_MinMaxAffectedAmount.y); } temperature.AddToTemperatureOffset(decreaseAmt); numberText = "Temperature slightly decreased."; } break; case PositiveEventTypes.GET_MONEY: { Money money = GameStats.Instance.m_Money; if (money == null) { return; } int increaseAmt = 0; if (eventObj.m_AffectedByPercentage) { increaseAmt = (int)((float)money.m_CurrMoney * Random.Range(eventObj.m_MinMaxAffectedPercentages.x, eventObj.m_MinMaxAffectedPercentages.y)); } else { increaseAmt = (int)Random.Range(eventObj.m_MinMaxAffectedAmount.x, eventObj.m_MinMaxAffectedAmount.y); } numberText = "$" + increaseAmt.ToString(); money.IncreaseMoney(increaseAmt); } break; case PositiveEventTypes.INCREASE_POPULARITY: { Popularity popularity = GameStats.Instance.m_Popularity; if (popularity == null) { return; } int increaseAmt = 0; if (eventObj.m_AffectedByPercentage) { increaseAmt = (int)((float)popularity.m_CurrentPopularity * Random.Range(eventObj.m_MinMaxAffectedPercentages.x, eventObj.m_MinMaxAffectedPercentages.y)); } else { increaseAmt = (int)Random.Range(eventObj.m_MinMaxAffectedAmount.x, eventObj.m_MinMaxAffectedAmount.y); } numberText = increaseAmt.ToString(); popularity.UpdatePopularityOffset(increaseAmt); } break; } ++m_EventNumberInAMonth; UpdateUI(eventObj, numberText); SoundManager.Instance.Play("successfulFund"); }
public void UpdateUI(EventScriptableObj eventObj, string number) { if (m_UIGameObject == null) { return; } //randomize if (eventObj.m_EventPicture.Length > 0) { m_Image.sprite = eventObj.m_EventPicture[Random.Range(0, eventObj.m_EventPicture.Length)]; } if (eventObj.m_Description.Length > 0) { m_DescriptionText.text = eventObj.m_Description[Random.Range(0, eventObj.m_Description.Length)]; } if (eventObj.m_Title.Length > 0) { m_TitleText.text = eventObj.m_Title[Random.Range(0, eventObj.m_Title.Length)]; } if (eventObj.m_NameOfPersonInvolve.Length > 0) { m_NameOfPersonInvolveText.text = eventObj.m_NameOfPersonInvolve[Random.Range(0, eventObj.m_NameOfPersonInvolve.Length)]; } switch (eventObj.m_PositiveEventType) { case PositiveEventTypes.DECREASE_TEMPERATURE: m_AffectedText.text = number; break; case PositiveEventTypes.INCREASE_POPULARITY: m_AffectedText.text = "Popularity increase by " + number; break; case PositiveEventTypes.GET_MONEY: m_AffectedText.text = "You earn " + number; break; } switch (eventObj.m_NegativeEventType) { case NegativeEventTypes.INCREASE_TEMPERATURE: m_AffectedText.text = number; break; case NegativeEventTypes.DECREASE_POPULARITY: m_AffectedText.text = "Popularity decrease by " + number; break; case NegativeEventTypes.LOSE_MONEY: m_AffectedText.text = "You lost " + number; break; case NegativeEventTypes.EVIL_COOPERATE: m_AffectedText.text = "They sent people to cut down your trees"; break; } m_UIGameObject.SetActive(true); }