FROM ubuntu:22.04

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        ca-certificates \
        libssl3 \
        libcurl4 \
        libfontconfig1 \
        libfreetype6 \
        libglu1-mesa \
        libsm6 \
        libxrandr2 \
        libxinerama1 \
        libxcursor1 \
    && apt-get clean -y \
    && rm -rf /var/lib/apt/lists/*

ARG GSW_VERSION=v2.6.0
ADD https://github.com/GameFabric/gswrapper/releases/download/${GSW_VERSION}/gsw_linux_x86_64 \
    /app/gsw
RUN chmod +x /app/gsw

RUN mkdir -p /app/gameserver /app/shared \
    && useradd -m -u 1000 gameserver \
    && chown -R gameserver:gameserver /app

USER 1000
COPY --chown=gameserver:gameserver Build/LinuxServer/ /app/gameserver/
RUN chmod +x /app/gameserver/SampleGameServer.sh \
    && chmod +x /app/gameserver/SampleGame/Binaries/Linux/SampleGameServer

WORKDIR /app

ENTRYPOINT ["/app/gsw", \
    "--shutdown.ready=1h", \
    "--shutdown.allocated=24h", \
    "--tail-log.paths=/app/gameserver/SampleGame/Saved/Logs/SampleGame.log", \
    "--"]

# Template variables documented here: https://docs.gamefabric.com/multiplayer-servers/multiplayer-services/game-server-wrapper#command-line-arguments
CMD ["/app/gameserver/SampleGameServer.sh", \
    "-server", \
    "-log", \
    "-Hostname={{ .GameServerIP }}", \
    "-ExternalPort={{ .GameServerPort }}"]
