Ejemplo n.º 1
0
    //events
    public void DecideOnRandomEnvrionmentalEvent(bool isDay)
    {
        if ((isDay && dayEvent != null) || (!isDay && nightEvent != null)) //means something else already set an event for that period
        {
            return;
        }

        float dieRoll = Random.Range(0.0f, 1.0f);

        string[] eventsList = isDay? EventsLists.environmentalEventsDay : EventsLists.environmentalEventsNight;

        if (dieRoll < simParam.randomEnvironmentalEventProbability && eventsList.Length > 0)
        {
            int id = Random.Range(0, eventsList.Length);

            GameObject eventHolder = new GameObject("event_" + id.ToString());
            eventHolder.transform.position = Vector3.zero;
            eventHolder.transform.SetParent(this.transform);
            eventHolder.name += isDay? "_day" : "_night";
            ScenarioEvent newEvent = (ScenarioEvent)eventHolder.AddComponent(System.Type.GetType(eventsList[id]));

            if (newEvent.CheckRequirement())
            {
                AddScenarioEvent(newEvent, isDay);
            }
            else
            {
                Destroy(eventHolder);
            }
        }
    }