コード例 #1
0
    public void Init(int arg_x, int arg_y, TD_Tile_Factory arg_factory)
    {
        spawn_points_      = new List <TD_Tile>();
        this.map_size_     = new Vector2Int(arg_x, arg_y);
        this.tile_factory_ = arg_factory;
        map_tiles_         = new TD_Tile[arg_y, arg_x];

        //offset caries on tile scale; this could be 0.5 for performance sake
        Vector2 ls_offset = new Vector2((map_size_.x - 1) * (prefab_tile_.transform.localScale.x / 2), (map_size_.y - 1) * (prefab_tile_.transform.localScale.y / 2));

        for (int i_y = 0; i_y < map_size_.y; i_y++)
        {
            for (int i_x = 0; i_x < map_size_.x; i_x++)
            {
                TD_Tile ls_tile = map_tiles_[i_y, i_x] = Instantiate(prefab_tile_);
                ls_tile.transform.position = new Vector3(i_x - ls_offset.x, 0, i_y - ls_offset.y);
                ls_tile.Content            = tile_factory_.Get(TileContentType.EMPTY);
                ls_tile.Parent             = null;
                ls_tile.g      = int.MaxValue;
                ls_tile.IndexX = i_x;
                ls_tile.IndexY = i_y;
            }
        }
    }
コード例 #2
0
    public void Init(TD_Tile_Factory arg_factory, List <Vector3Int> arg_loaded_tiles)
    {
        spawn_points_      = new List <TD_Tile>();
        this.map_size_     = new Vector2Int(arg_loaded_tiles[0].x, arg_loaded_tiles[0].y);
        this.tile_factory_ = arg_factory;
        map_tiles_         = new TD_Tile[map_size_.y, map_size_.x];

        //offset caries on tile scale; this could be 0.5 for performance sake
        Vector2 ls_offset = new Vector2((map_size_.x - 1) * (prefab_tile_.transform.localScale.x / 2), (map_size_.y - 1) * (prefab_tile_.transform.localScale.y / 2));

        int ls_loaded_tiles_index = 1;

        for (int i_y = 0; i_y < map_size_.y; i_y++)
        {
            for (int i_x = 0; i_x < map_size_.x; i_x++)
            {
                TD_Tile ls_tile;

                if (ls_loaded_tiles_index < arg_loaded_tiles.Count)
                {
                    if (arg_loaded_tiles[ls_loaded_tiles_index].x == i_x &&
                        arg_loaded_tiles[ls_loaded_tiles_index].y == i_y)
                    {
                        ls_tile = map_tiles_[i_y, i_x] = Instantiate(prefab_tile_);
                        ls_tile.transform.position = new Vector3(i_x - ls_offset.x, 0, i_y - ls_offset.y);
                        ls_tile.Content            = tile_factory_.Get((TileContentType)(arg_loaded_tiles[ls_loaded_tiles_index].z));

                        //should be a switch here
                        if (TileContentType.DESTINATION == ls_tile.Content.Type)
                        {
                            destination_         = ls_tile;
                            ls_tile.is_blocking_ = false;
                            ls_tile.Parent       = null;
                            ls_tile.g            = int.MaxValue;
                            ls_tile.IndexX       = i_x;
                            ls_tile.IndexY       = i_y;
                            ls_loaded_tiles_index++;
                            continue;
                        }
                        else if (TileContentType.SPAWN == ls_tile.Content.Type)
                        {
                            spawn_points_.Add(ls_tile);
                            ls_tile.is_blocking_ = false;
                            ls_tile.Parent       = null;
                            ls_tile.g            = int.MaxValue;
                            ls_tile.IndexX       = i_x;
                            ls_tile.IndexY       = i_y;
                            ls_loaded_tiles_index++;
                            continue;
                        }
                        else if (TileContentType.OIL == ls_tile.Content.Type)
                        {
                            ls_tile.is_blocking_ = false;
                            ls_tile.Parent       = null;
                            ls_tile.g            = int.MaxValue;
                            ls_tile.IndexX       = i_x;
                            ls_tile.IndexY       = i_y;
                            ls_loaded_tiles_index++;
                            continue;
                        }

                        ls_tile.is_blocking_ = true;
                        ls_tile.Parent       = null;
                        ls_tile.g            = int.MaxValue;
                        ls_tile.IndexX       = i_x;
                        ls_tile.IndexY       = i_y;
                        ls_loaded_tiles_index++;
                        continue;
                    }
                }

                ls_tile = map_tiles_[i_y, i_x] = Instantiate(prefab_tile_);
                ls_tile.transform.position = new Vector3(i_x - ls_offset.x, 0, i_y - ls_offset.y);
                ls_tile.Content            = tile_factory_.Get(TileContentType.EMPTY);
                ls_tile.Parent             = null;
                ls_tile.g      = int.MaxValue;
                ls_tile.IndexX = i_x;
                ls_tile.IndexY = i_y;
            }
        }
    }