private IEnumerator CreateMapTiles(TileBuildHelper[] obstaclesToInsert) { if (tileColorDictionary == null) { tileColorDictionary = new Dictionary <Vector2Int, MapTileScript>(); } tileColorDictionary.Clear(); int ceiling = 100; int counter = 0; foreach (TileBuildHelper obstacle in obstaclesToInsert) { if (obstacle.Obstacle == ObstacleType.PartOfObstacle) { continue; } if ((++counter) % ceiling == 0) { yield return(new WaitForEndOfFrame()); } GameObject instancedMapElement = null; MapTileScript instancedTileScript = null; switch (obstacle.Obstacle) { case ObstacleType.None: instancedMapElement = Instantiate(FreeTile, this.transform); break; case ObstacleType.OneByOne: instancedMapElement = Instantiate(ObstacleOneByOnePrefab, this.transform); break; case ObstacleType.OneByTwo: instancedMapElement = Instantiate(ObstacleOneByTwoPrefab, this.transform); break; case ObstacleType.TwoByOne: instancedMapElement = Instantiate(ObstacleTwoByOnePrefab, this.transform); break; case ObstacleType.TwoByTwo: instancedMapElement = Instantiate(ObstacleTwoByTwoPrefab, this.transform); break; } instancedTileScript = instancedMapElement.GetComponent <MapTileScript>(); instancedTileScript.SetTilePosition(obstacle.Point); tileColorDictionary.Add(obstacle.Point, instancedTileScript); } }
private void SetTileSize() { if (currentlyDisplayedMap != null && currentlyDisplayedMap.GetLength(1) > 0) { float guiMapSize = rectTransform.rect.height; float tileSize = guiMapSize / currentlyDisplayedMap.GetLength(1); MapTileScript.SetUnitSize(tileSize); } }
private void BuildMap() { GameObject mapObject = GameObject.FindWithTag("Map"); // If the map already has tiles, blow them away and make new ones. // TODO: Investigate updating existing tiles, rather than recreating them. if (mapObject.transform.childCount > 0) { Debug.Log("Destroying maptiles."); foreach (Transform child in mapObject.transform) { GameObject.Destroy(child.gameObject); } } // Build the game objects for the map. foreach (MapTileModel tileModel in GameState.GetMapTileList()) { // Make a new game object for the map tile. GameObject tileObject = Instantiate(mapTilePrefab) as GameObject; tileObject.transform.parent = mapObject.transform; Renderer renderer = tileObject.GetComponent <Renderer>(); float x_pos = tileModel.coordinate_x * renderer.bounds.size.x; float y_pos = tileModel.coordinate_y * renderer.bounds.size.y; float z_pos = PositionConstants.MAP_TILE_Z; tileObject.transform.localPosition = new Vector3(x_pos, y_pos, z_pos); MapTileScript script = tileObject.GetComponent(typeof(MapTileScript)) as MapTileScript; script.SetModel(tileModel); // Make a new game object for every unit on the tile. // TODO: Make this more interesting for battles that have many units. if (tileModel.unit_keys.Count > 0) { foreach (string unit_key in tileModel.unit_keys) { // TODO: Make this an army marker object, since multiple units land on same tile. // TODO: Set up a script that makes the units tappable for information. GameObject unitObject = Instantiate(unitPrefab) as GameObject; unitObject.transform.parent = tileObject.transform; unitObject.transform.localPosition = new Vector3(0, 0, PositionConstants.UNIT_Z); } } // Make a new game object for every structure on the tile. if (tileModel.structure_keys.Count > 0) { foreach (string structure_key in tileModel.structure_keys) { GameObject structureObject = Instantiate(structurePrefab) as GameObject; structureObject.transform.parent = tileObject.transform; structureObject.transform.localPosition = new Vector3(0, 0, PositionConstants.STRUCTURE_Z); } } // Make a new game object for enemy bases. if (tileModel.is_enemy_home) { GameObject enemyHomeObject = Instantiate(enemyCastlePrefab) as GameObject; enemyHomeObject.transform.parent = tileObject.transform; enemyHomeObject.transform.localPosition = new Vector3(0, 0, PositionConstants.STRUCTURE_Z); } // Make a new game object for the player base. if (tileModel.is_player_home) { GameObject playerHomeObject = Instantiate(playerCastlePrefab) as GameObject; playerHomeObject.transform.parent = tileObject.transform; playerHomeObject.transform.localPosition = new Vector3(0, 0, PositionConstants.STRUCTURE_Z); } } mapBuilt = true; mapOutOfDate = false; }
void Update() { //RAYCAST STUFF RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero); if(hit.collider != null && Input.GetMouseButtonDown(0)) { MapTileScript s = hit.collider.gameObject.GetComponent("MapTileScript") as MapTileScript; dms.setText(s.code, s.tilecode); highlightedTile = s; } if(desiredDisplacementTime > 0) desiredDisplacementTime --; else { if(screenScrolling) { disposeOfArray(oldTiles); initEnemiesCurrentRoom(); } screenScrolling = false; } if(desiredSpeech == "" && !screenScrolling && MoveCurtain.isMoved) linkRef.SendMessage("setMovementEnabled", true); //SHOULD ROOM TRANSITION?? ////////////////////////// if(!screenScrolling) { //n if(linkRef.transform.position.y > 3) { transitionRoom('n'); } //e if(linkRef.transform.position.x > 7.5) { transitionRoom('e'); } //s if(linkRef.transform.position.y < -7) { transitionRoom('s'); } //w if(linkRef.transform.position.x < -7.5) { transitionRoom('w'); } } }