Private
Public Access
1
0

fix game
Some checks failed
Dynamic Branch Deploy / build-and-deploy (push) Failing after 2m0s

This commit is contained in:
Sebastian Unterschütz
2026-04-22 11:38:35 +02:00
parent a6cfc055be
commit 2286c18432
5 changed files with 29 additions and 7 deletions

View File

@@ -34,10 +34,12 @@ jobs:
if [ "$BRANCH_LOWER" = "main" ] || [ "$BRANCH_LOWER" = "master" ]; then
APP_URL="${{ env.BASE_DOMAIN }}"
TARGET_NS="${REPO_LOWER}"
BUILD_MODE="main"
echo "Mode: PRODUCTION (Root Domain)"
else
APP_URL="${REPO_LOWER}-${BRANCH_LOWER}.${{ env.BASE_DOMAIN }}"
TARGET_NS="${REPO_LOWER}-${BRANCH_LOWER}"
BUILD_MODE="dev"
echo "Mode: DEVELOPMENT (Subdomain)"
fi
@@ -50,6 +52,7 @@ jobs:
echo "DEBUG: Namespace: $TARGET_NS"
echo "DEBUG: URL: $APP_URL"
echo "DEBUG: Branch-Tag: $BRANCH_TAG"
echo "DEBUG: Build-Mode: $BUILD_MODE"
# In Gitea Actions Environment schreiben
echo "FULL_IMAGE_PATH=$FULL_IMAGE_PATH" >> $GITHUB_ENV
@@ -58,6 +61,7 @@ jobs:
echo "APP_URL=$APP_URL" >> $GITHUB_ENV
echo "IMAGE_TAG=$IMAGE_TAG" >> $GITHUB_ENV
echo "BRANCH_TAG=$BRANCH_TAG" >> $GITHUB_ENV
echo "BUILD_MODE=$BUILD_MODE" >> $GITHUB_ENV
# 3. Prüfen ob ein Image-Rebuild nötig ist
- name: Detect Source Changes
@@ -93,7 +97,7 @@ jobs:
image: ${{ env.FULL_IMAGE_PATH }}
tag: ${{ env.IMAGE_TAG }}
cache: true
extra_args: --skip-tls-verify-pull --insecure
extra_args: --skip-tls-verify-pull --insecure --build-arg BUILD_MODE=${{ env.BUILD_MODE }}
# 5. Stabilen Branch-Tag aktualisieren (NUR nach erfolgreichem Build)
# Damit weiß der nächste Nicht-Build-Push welches Image er verwenden soll.

View File

@@ -25,11 +25,19 @@ RUN if [ ! -f cmd/client/web/assets/assets.json ]; then \
RUN chmod +x scripts/cache-version.sh && \
./scripts/cache-version.sh
# Bilder komprimieren (verlustfrei für PNG, leichter Verlust für JPG)
RUN echo "🗜️ Komprimiere Bilder..." && \
# ARG für den Build-Modus (z.B. "main" für Produktion)
ARG BUILD_MODE=dev
# Bilder komprimieren (NUR für BUILD_MODE=main)
# Spart Zeit bei Feature-Branch Builds
RUN if [ "$BUILD_MODE" = "main" ]; then \
echo "🗜️ PRODUCTION MODE: Komprimiere Bilder..." && \
find cmd/client/web -type f -name "*.png" -exec optipng -o3 -strip all {} \; && \
find cmd/client/web -type f \( -name "*.jpg" -o -name "*.jpeg" \) -exec jpegoptim -m85 --strip-all --all-progressive --preserve --totals {} \; && \
echo "✅ Bildkompression abgeschlossen"
echo "✅ Bildkompression abgeschlossen"; \
else \
echo "⚡ DEV/FEATURE MODE: Bildkompression übersprungen"; \
fi
# Server binary bauen
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -ldflags="-w -s" -o server ./cmd/server

View File

@@ -245,6 +245,11 @@ func (g *Game) UpdateGame() {
g.SendInputWithSequence(input)
// Solo: Lokale Prüfung der Runde (Tod/Score)
if g.gameMode == "solo" {
g.checkSoloRound()
}
// Trail: store predicted position every physics step
g.trail = append(g.trail, trailPoint{X: g.predictedX, Y: g.predictedY})
if len(g.trail) > 8 {

View File

@@ -168,7 +168,7 @@ func (g *Game) drawGameOverScreen(screen *ebiten.Image, myScore int) {
text.Draw(screen, "SUBMIT SCORE", basicfont.Face7x13, submitBtnX+50, submitBtnY+25, color.White)
} else if g.gameMode == "solo" && g.scoreSubmitted {
// Solo: Zeige Bestätigungsmeldung
text.Draw(screen, "Score eingereicht!", basicfont.Face7x13, ScreenWidth/2-70, ScreenHeight-100, color.RGBA{0, 255, 0, 255})
text.Draw(screen, "✓ Runde verifiziert & Score eingereicht!", basicfont.Face7x13, ScreenWidth/2-110, ScreenHeight-100, color.RGBA{0, 255, 0, 255})
} else if g.gameMode == "coop" && !g.isHost {
// Coop Non-Host: Warten auf Host
text.Draw(screen, "Warte auf Host...", basicfont.Face7x13, ScreenWidth/2-70, ScreenHeight-100, color.Gray{180})

View File

@@ -139,6 +139,7 @@ type Game struct {
// Highscore
localHighscore int
roundStartTime time.Time // Startzeit der aktuellen Runde (für Solo)
// Audio System
audio *AudioSystem
@@ -271,9 +272,13 @@ func (g *Game) Update() error {
}
if currentStatus == "RUNNING" && g.lastStatus != "RUNNING" {
g.audio.PlayMusic()
g.roundStartTime = time.Now()
}
if currentStatus == "GAMEOVER" && g.lastStatus == "RUNNING" {
g.audio.StopMusic()
if g.gameMode == "solo" {
g.verifyRoundResult()
}
}
g.lastStatus = currentStatus