private void CreateSideScrollMap(LevelGenerationDataModel levelGenerationDataModel) { var mapStaticObject = CreateStatics(levelGenerationDataModel); var objectsContainer = GameObject.Find("ObjectsContainer"); GenerateMapContent(levelGenerationDataModel, objectsContainer); }
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); } } }
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"); }
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); } } // } }
//floor and background creation private GameObject CreateStatics(LevelGenerationDataModel levelGenerationDataModel) { return(Instantiate(levelGenerationDataModel.LevelStaticObject, Vector3.zero, Quaternion.identity, transform)); }
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); }