void ShowFurnitureSpriteAtTile(string furnitureType, Tile tile) { //Show the generic dragging visuals GameObject gameObject = new GameObject(); gameObject.transform.SetParent(this.transform, true); dragPreviewGameObjects.Add(gameObject); SpriteRenderer jobSpriteRenderer = gameObject.AddComponent <SpriteRenderer>(); jobSpriteRenderer.sprite = furnitureSpriteController.GetFurnitureSprite(furnitureType); jobSpriteRenderer.sortingLayerName = Config.JOBSORTINGLAYER; if (WorldController.Instance.World.IsFurniturePlacementValid(furnitureType, tile)) { jobSpriteRenderer.color = new Color(.5f, 1f, .5f, .25f); } else { jobSpriteRenderer.color = new Color(1f, .5f, .5f, .25f); } Furniture furniturePrototype = tile.world.furniturePrototypes[furnitureType]; gameObject.transform.position = new Vector3(tile.X + (furniturePrototype.width - 1) / 2f, tile.Y + (furniturePrototype.width - 1) / 2f, 0); }
void OnJobCreated(Job job) { if (job.jobObjectType == null) { //This job does not really have an associated sprite so no need to render return; } //Debug.Log("OnJobCreated"); //todo fixme we can only do furniture building jobs //Todo sprite if (jobGameObjectMap.ContainsKey(job)) { Debug.LogError("OnJobCreated: Job created for a job that already exists most likely job is requeued"); return; } //Creates a new gameobject and adds it to our scene GameObject jobGameObject = new GameObject(); //Add tile//Gameobject to dictionary jobGameObjectMap.Add(job, jobGameObject); jobGameObject.name = "JOB_" + job.jobObjectType + "(" + job.tile.X + "," + job.tile.Y + ")"; jobGameObject.transform.position = new Vector3(job.tile.X + (job.furniturePrototype.width - 1) / 2f, job.tile.Y + (job.furniturePrototype.width - 1) / 2f, 0); jobGameObject.transform.SetParent(this.transform, true); SpriteRenderer jobSpriteRenderer = jobGameObject.AddComponent <SpriteRenderer>(); jobSpriteRenderer.sprite = furnitureSpriteController.GetFurnitureSprite(job.jobObjectType); jobSpriteRenderer.color = new Color(.5f, 1f, .5f, .25f); jobSpriteRenderer.sortingLayerName = JOBSORTINGLAYER; if (job.jobObjectType == Config.DOOR) { //By default the door graphic is ment for walls to the east and west //Check to see if we actually have a wall north south and rotate by 90d Tile north = job.tile.world.GetTileAt(job.tile.X, job.tile.Y + 1); Tile south = job.tile.world.GetTileAt(job.tile.X, job.tile.Y - 1); if (north != null && south != null && north.furniture != null && south.furniture != null && north.furniture.objectType == Config.WALL && south.furniture.objectType == Config.WALL) { jobGameObject.transform.rotation = Quaternion.Euler(0, 0, 90); } } job.RegisterJobCompleteCallback(OnJobEnded); job.RegisterJobCancelCallback(OnJobEnded); }