# Build stage
FROM debian:bookworm AS builder

RUN apt-get update && apt-get install -y \
    build-essential \
    cmake \
    git \
    libcurl4-gnutls-dev \
    liblzma-dev \
    liblzo2-dev \
    libpng-dev \
    libzstd-dev \
    zlib1g-dev \
    pkg-config \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /src
COPY OpenTTD-patches /src/OpenTTD-patches

WORKDIR /src/OpenTTD-patches/build
RUN cmake .. \
    -DCMAKE_BUILD_TYPE=Release \
    -DOPTION_DEDICATED=ON \
    -DOPTION_INSTALL_HTML_DOCS=OFF \
    -DOPTION_USE_ASSERTS=OFF \
    && make -j$(nproc) install

# Runtime stage
FROM debian:bookworm-slim

RUN apt-get update && apt-get install -y \
    libcurl3-gnutls \
    liblzma5 \
    liblzo2-2 \
    libpng16-16 \
    libzstd1 \
    zlib1g \
    ca-certificates \
    openttd-opengfx \
    && rm -rf /var/lib/apt/lists/*

# Copy binaries from builder
COPY --from=builder /usr/local/games/openttd /usr/local/bin/openttd
COPY --from=builder /usr/local/share/games/openttd /usr/local/share/games/openttd

# Ensure base graphics are in a path openttd searches
RUN mkdir -p /usr/local/share/games/openttd/baseset && \
    cp -r /usr/share/games/openttd/baseset/* /usr/local/share/games/openttd/baseset/

# Create openttd user
RUN useradd -m -u 1000 openttd
USER openttd
WORKDIR /home/openttd

# Create config directory
RUN mkdir -p /home/openttd/.local/share/openttd/save

EXPOSE 3979/tcp 3979/udp 3977/tcp

CMD ["openttd", "-D"]
