Beispiel #1
0
    private void CreateSideScrollMap(LevelGenerationDataModel levelGenerationDataModel)
    {
        var mapStaticObject  = CreateStatics(levelGenerationDataModel);
        var objectsContainer = GameObject.Find("ObjectsContainer");

        GenerateMapContent(levelGenerationDataModel, objectsContainer);
    }
Beispiel #2
0
    private void LoadSideScrollMap(LevelDataModel levelDataModel, LevelGenerationDataModel levelGenerationDataModel)
    {
        var mapStaticObject  = CreateStatics(levelGenerationDataModel);
        var objectsContainer = GameObject.Find("ObjectsContainer");

        // In here we are give a chance to createing harvested or destroyed game objects again.
        foreach (var probabilityDataModel in levelGenerationDataModel.ItemGenerationProbabilityDataModels)
        {
            var alreadyGeneratedItemsForThisModel = levelDataModel.GeneratedObjects.FindAll(obj => obj.Prefab.StartsWith(probabilityDataModel.BasePrefabName));
            var deltaCount = probabilityDataModel.Intensity - alreadyGeneratedItemsForThisModel.Count;
            if (deltaCount <= 0)
            {
                deltaCount = 0;
            }

            //calculating new delta count according to lastVisitTime
            var currentTime            = DateTime.Now;
            var timePastSinceLastVisit = new TimeSpan(currentTime.Ticks - levelDataModel.LastVisitTime);
            var newDeltaCount          = Math.Floor(((float)(timePastSinceLastVisit.TotalSeconds) / (float)levelGenerationDataModel.FullyGenerationTimeInSeconds) * deltaCount);
            if (newDeltaCount >= deltaCount)
            {
                newDeltaCount = deltaCount;
            }
            Debug.Log("deltacount " + deltaCount);
            Debug.Log("newdeltacount " + newDeltaCount);
            // trying to create game objects per amount of delta count
            var counter = 0;
            for (int i = 0; i < newDeltaCount; i++)
            {
                var gameObject = TryInstantiateGameObject(probabilityDataModel, levelGenerationDataModel, objectsContainer, false);
                if (gameObject != null)
                {
                    counter++;
                }
            }

            Debug.Log(counter + " " + probabilityDataModel.BasePrefabName + " is created since last visit.");
        }


        // crateing game objects those are already there
        foreach (var generatedObject in levelDataModel.GeneratedObjects)
        {
            var prefab = Resources.Load("Prefabs/" + generatedObject.Prefab, typeof(GameObject));
            if (prefab != null)
            {
                Instantiate(prefab, generatedObject.Position, Quaternion.identity, objectsContainer.transform);
            }
        }
    }
Beispiel #3
0
    void Start()
    {
        IsEnabled = true;

        sideScrollMap = GetComponent <SideScrollMap>();
        if (sideScrollMap == null)
        {
            IsEnabled = false;
            // Debug.Log("ItemSpawner: Item Spawner is not working because it could not reach the SideScrollMap.");
            return;
        }

        levelDataModel           = sideScrollMap.GetLevelDataModel();
        levelGenerationDataModel = sideScrollMap.GetLevelGenerationDataModel(levelDataModel.LevelType);
        objectsContainer         = GameObject.Find("ObjectsContainer");
    }
Beispiel #4
0
 private void GenerateMapContent(LevelGenerationDataModel levelGenerationDataModel, GameObject container)
 {
     //try to create items according to intensity level
     // for (int i = 0; i < levelGenerationDataModel.IntensityLevel; i++)
     // {
     //loop trough each item in generation content
     foreach (var probabilityDataModel in levelGenerationDataModel.ItemGenerationProbabilityDataModels)
     {
         //try to create items according to its intensity level
         for (int i = 0; i < probabilityDataModel.Intensity; i++)
         {
             //tryin to create game objects
             TryInstantiateGameObject(probabilityDataModel, levelGenerationDataModel, container);
         }
     }
     // }
 }
Beispiel #5
0
 //floor and background creation
 private GameObject CreateStatics(LevelGenerationDataModel levelGenerationDataModel)
 {
     return(Instantiate(levelGenerationDataModel.LevelStaticObject, Vector3.zero, Quaternion.identity, transform));
 }
Beispiel #6
0
    public GameObject TryInstantiateGameObject(ItemGenerationProbabilityDataModel probabilityDataModel, LevelGenerationDataModel levelGenerationDataModel, GameObject container, bool isDeltaRegen = false)
    {
        GameObject instantiatedObject = null;
        var        rnd         = UnityEngine.Random.Range(0f, 1f);
        var        probability = isDeltaRegen ? probabilityDataModel.RegenerateProbabilty : probabilityDataModel.Probability;

        //check luck to instantiate object in the map
        if (rnd < probability)
        {
            //get random variant
            var variantIndex      = UnityEngine.Random.Range(0, probabilityDataModel.GameObjectVariants.Count);
            var gameObjectVariant = probabilityDataModel.GameObjectVariants[variantIndex];

            //get random x position withing the map size
            var randomX = UnityEngine.Random.Range(levelGenerationDataModel.LeftEdge, levelGenerationDataModel.RightEdge);


            //instantiate game object in random x position
            instantiatedObject = Instantiate(probabilityDataModel.GameObjectVariants[variantIndex],
                                             new Vector3(randomX, gameObjectVariant.transform.position.y, gameObjectVariant.transform.position.z),
                                             Quaternion.identity, container.transform);

            var gameStaticObject = instantiatedObject.GetComponent <GameStaticObject>();
            gameStaticObject.Type = probabilityDataModel.Type;
        }

        return(instantiatedObject);
    }