Exemplo n.º 1
0
    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);
        }
    }
Exemplo n.º 2
0
    private void SetTileSize()
    {
        if (currentlyDisplayedMap != null && currentlyDisplayedMap.GetLength(1) > 0)
        {
            float guiMapSize = rectTransform.rect.height;
            float tileSize   = guiMapSize / currentlyDisplayedMap.GetLength(1);

            MapTileScript.SetUnitSize(tileSize);
        }
    }
Exemplo n.º 3
0
    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;
    }
Exemplo n.º 4
0
    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');
            }
        }
    }