/// <description> /// Surface Methods for all surface models in level view /// </description> public void OnSurfaceTerrainCreated(Models.Surfaces surfaceModel) { int x = surfaceModel.X; int y = surfaceModel.Y; GameObject gameObject = new GameObject (); Vector3 point = Utility.ConvertCartesianToIsometric (new Vector3 (x, y, 0), offset); surfaceModel.Terrain = Models.Surfaces.TerrainType.Empty; // Debug.Log ("Views.Level --> OnSurfaceTerrainCreated : Creating surface view for surface models"); //Create an object of Views.Surface class Views.Surfaces surfaceView = new Views.Surfaces(gameObject); surfaceView.GameObject.name = "Surface_" + x + "_" + y; surfaceView.GameObject.transform.SetParent (viewLevelInstance.transform, true); surfaceView.GameObject.AddComponent<SpriteRenderer> (); surfaceView.GameObject.GetComponent<SpriteRenderer> ().sprite = Empty; surfaceView.GameObject.GetComponent<SpriteRenderer> ().sortingOrder = Utility.SortingOrderNumber (level.Width, level.Height, x, y); surfaceView.SetPosition (point.x, point.y); //FIXME: for now all the sprite tiles will be empty surfaceModelViewMap.Add (surfaceModel, surfaceView); // surfaceModel.RegisterTerrainCallBack (OnSurfaceTerrainChanged); // Debug.Log ("Views.Level --> OnSurfaceTerrainCreated : SurfaceModel Created and displayed on screen " + surfaceModelViewMap.Count); }
public void OnSurfaceTerrainChanged(Models.Surfaces surfaceModel) { Debug.Log ("On surface changed"); if (surfaceModelViewMap.ContainsKey (surfaceModel) == false) { Debug.Log ("Views.Levels --> On surface Changed : surface model does not exist"); return; } Views.Surfaces surfaceView = surfaceModelViewMap [surfaceModel]; //FIXME: Major Re-Write Needed if (surfaceModel.Terrain == Models.Surfaces.TerrainType.Empty) { surfaceView.GameObject.GetComponent<SpriteRenderer> ().sprite = Empty; } else if (surfaceModel.Terrain == Models.Surfaces.TerrainType.Lake) { surfaceView.GameObject.GetComponent<SpriteRenderer> ().sprite = Lake[UnityEngine.Random.Range(0, Lake.Length)]; } else if (surfaceModel.Terrain == Models.Surfaces.TerrainType.Mountain) { surfaceView.GameObject.GetComponent<SpriteRenderer> ().sprite = Mountain[UnityEngine.Random.Range(0, Mountain.Length)]; } else if (surfaceModel.Terrain == Models.Surfaces.TerrainType.Plain) { surfaceView.GameObject.GetComponent<SpriteRenderer> ().sprite = Plain[UnityEngine.Random.Range(0, Plain.Length)]; } else { Debug.Log ("Views.Levels - Trying to assign sprite based on terrain type, but terrain type not found"); } }