示例#1
0
    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));
            }
        }
    }
示例#2
0
    // 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++;
                    }
                }
            }
        }
    }