コード例 #1
0
    void GenerateAllEventForTheDay()
    {
        if (spawnsPointForEvent.Count != 0)
        {
            for (int i = 0; i < numberOfEvent; i++)
            {
                //Random event
                Evenement.EventType tmpEventType;

                //Random free Position
                GameObject tmpSpawn = null;
                while (tmpSpawn == null)
                {
                    tmpSpawn = spawnsPointForEvent[Random.Range(0, spawnsPointForEvent.Count)];
                }

                GameObject tmpMainObject = null;

                if (tmpSpawn.tag == "SpawnPointWater")
                {
                    tmpEventType  = Evenement.EventType.BOAT;
                    tmpMainObject = Instantiate(prefabBoatEvent, tmpSpawn.transform.position, tmpSpawn.transform.rotation);
                }
                else if (tmpSpawn.tag == "SpawnPointHouse")
                {
                    tmpEventType  = Evenement.EventType.LOST_OBJECT;
                    tmpMainObject = Instantiate(prefabThiefEvent, tmpSpawn.transform.position, tmpSpawn.transform.rotation);
                }
                else
                {
                    tmpEventType = (Evenement.EventType)Random.Range(0, (float)Evenement.EventType.LOST_OBJECT);

                    //Create new evenement
                    switch (tmpEventType)
                    {
                    case Evenement.EventType.CAR_FIRE:
                        tmpMainObject = Instantiate(prefabCarFireEvent, tmpSpawn.transform.position, tmpSpawn.transform.rotation);
                        break;

                    case Evenement.EventType.LOST:
                        tmpMainObject = Instantiate(prefabLostEvent, tmpSpawn.transform.position, tmpSpawn.transform.rotation);
                        break;

                    case Evenement.EventType.WOUNDED:
                        tmpMainObject = Instantiate(prefabWoundedEvent, tmpSpawn.transform.position, tmpSpawn.transform.rotation);
                        break;
                    }
                }
                Evenement tmpEvenement = tmpMainObject.GetComponent <Evenement>();
                tmpEvenement.Set(tmpEventType, tmpSpawn, tmpMainObject);

                evenements.Add(tmpEvenement);
                spawnsPointForEvent.Remove(tmpSpawn);
            }

            foreach (GameObject spawn in spawnsPointForEvent)
            {
                Destroy(spawn);
            }
            spawnsPointForEvent.RemoveRange(0, spawnsPointForEvent.Count);
        }

        if (spawnsPointForLostObject.Count != 0)
        {
            for (int i = 0; i < numberOfStolenObject; i++)
            {
                //Random free Position
                GameObject tmpSpawn = null;
                while (tmpSpawn == null)
                {
                    tmpSpawn = spawnsPointForLostObject[Random.Range(0, spawnsPointForLostObject.Count)];
                }

                GameObject          tmpMainObject = null;
                Evenement.EventType tmpEventType  = Evenement.EventType.LOST_OBJECT;
                tmpMainObject = Instantiate(prefabThiefEvent, tmpSpawn.transform.position, tmpSpawn.transform.rotation);

                Evenement tmpEvenement = tmpMainObject.GetComponent <Evenement>();
                tmpEvenement.Set(tmpEventType, tmpSpawn, tmpMainObject);

                evenements.Add(tmpEvenement);
                spawnsPointForLostObject.Remove(tmpSpawn);
            }

            foreach (GameObject spawn in spawnsPointForLostObject)
            {
                Destroy(spawn);
            }
            spawnsPointForLostObject.RemoveRange(0, spawnsPointForLostObject.Count);
        }
    }