private void Copy_Over(List <Tilemap> i_from, List <Tilemap> i_to, int i_index, bool i_do_convert_to_world) { foreach (var tile in ship_tile_positions) { Vector3Int pos = tile.Key; if (i_do_convert_to_world) { Vector3 float_pos = ship_grid.CellToWorld(pos); pos.x = Mathf.RoundToInt(float_pos.x); pos.y = Mathf.RoundToInt(float_pos.y); tm.Add_Tile(pos, i_from[i_index].GetTile(tile.Key), ship_grid.transform.rotation); tm.Ship_Remove_Tile(tile.Key, i_from[i_index].GetTile(tile.Key)); } else { tm.Ship_Add_Tile(pos, i_from[i_index].GetTile(tile.Key), i_from[i_index].GetTransformMatrix(pos).rotation); tm.Remove_Tile(tile.Key, i_from[i_index].GetTile(tile.Key)); } } }
// Update is called once per frame void Update() { Selection_Update(); inventory_debug_show.text = "Slot: " + slot_selection + ": " + tile_inventory[slot_selection].amount; Vector3Int rounded_cursor_pos = new Vector3Int(); rounded_cursor_pos.x = Mathf.FloorToInt(cursor_obj.Get_World_Position().x); rounded_cursor_pos.y = Mathf.FloorToInt(cursor_obj.Get_World_Position().y); rounded_cursor_pos.z = 0; RaycastHit2D hit = Physics2D.Raycast(transform.position, rounded_cursor_pos - transform.position, Vector3.Distance(transform.position, rounded_cursor_pos)); Vector3 hit_position; if (hit.collider != null) { hit_position = hit.point; } else { hit_position = cursor_obj.Get_World_Position(); } float distance = Vector2.Distance(hit_position, cursor_obj.Get_World_Position()); if (distance < 1.0f) { if ((Input.GetMouseButton(0)) && (tile_inventory[slot_selection].amount > 0)) { if (alternate_floor_tilemap.GetTile(ship_grid.WorldToCell(cursor_obj.Get_World_Position())) != null) { if (alternate_place_tilemap.GetTile(ship_grid.WorldToCell(cursor_obj.Get_World_Position())) == null) { tm.Ship_Add_Tile(ship_grid.WorldToCell(cursor_obj.Get_World_Position()), place_tile); tile_count--; } } else if (floor_tilemap.GetTile(default_grid.WorldToCell(cursor_obj.Get_World_Position())) != null) { if (tm.Grab_Layer(tile_inventory[slot_selection].tile).GetTile(default_grid.WorldToCell(cursor_obj.Get_World_Position())) == null) { tm.Add_Tile(default_grid.WorldToCell(cursor_obj.Get_World_Position()), tile_inventory[slot_selection].tile); tile_inventory[slot_selection].amount--; } } } if (Input.GetMouseButton(1)) { if (alternate_floor_tilemap.GetTile(ship_grid.WorldToCell(cursor_obj.Get_World_Position())) != null) { if (alternate_place_tilemap.GetTile(ship_grid.WorldToCell(cursor_obj.Get_World_Position())) == place_tile) { tm.Ship_Remove_Tile(ship_grid.WorldToCell(cursor_obj.Get_World_Position()), place_tile); tile_count++; } } else if (floor_tilemap.GetTile(default_grid.WorldToCell(cursor_obj.Get_World_Position())) != null) { TileBase temp = tm.Grab_Layer(tile_inventory[slot_selection].tile).GetTile(default_grid.WorldToCell(cursor_obj.Get_World_Position())); if (tm.Grab_Layer(tile_inventory[slot_selection].tile).GetTile(default_grid.WorldToCell(cursor_obj.Get_World_Position())) == tile_inventory[slot_selection].tile) { tm.Remove_Tile(default_grid.WorldToCell(cursor_obj.Get_World_Position()), tile_inventory[slot_selection].tile); tile_inventory[slot_selection].amount++; } } } } }