public void render(Graphics2D g, Game game, Spritesheet spritesheet,
            int frame) {
        
        switch (kind) {
        case FLOOR:
            g.drawImage(spritesheet.get(extraData, 3), null, 0, 0);
            break;
        case WALL:
            if (extraData >= 4)
                g.drawImage(spritesheet.get(4 + extraData % 4, 4), null, 0, 0);
            else
                g.drawImage(spritesheet.get(4 + extraData % 4, 3), null, 0, 0);
            break;
        case DOOR:
            g.drawImage(spritesheet.get(0, 4), null, 0, 0);
            break;
        case CRAFTING_BENCH:
            g.drawImage(spritesheet.get(2, 4), null, 0, 0);
            break;
        case INVENTORY:
            g.drawImage(spritesheet.get(1, 4), null, 0, 0);
            break;
        case SPONSOR:
            g.drawImage(spritesheet.get(0, 3), null, 0, 0); // FLOOR
            g.drawImage(spritesheet.get((frame>>2)%4
                    + (game.hasSponsors() ? 4 : 0), 2), null, 0, 0);
            break;
        case MERCHANT:
            g.drawImage(spritesheet.get(0, 3), null, 0, 0); // FLOOR
            g.drawImage(spritesheet.get(4, 1), null, 0, 0);
            break;
        default:
            throw new RuntimeException("Unhandled tile kind");
        }
    }