fix game
Some checks failed
Dynamic Branch Deploy / build-and-deploy (push) Failing after 2m0s
Some checks failed
Dynamic Branch Deploy / build-and-deploy (push) Failing after 2m0s
This commit is contained in:
6
.github/workflows/deploy.yaml
vendored
6
.github/workflows/deploy.yaml
vendored
@@ -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.
|
||||
|
||||
14
Dockerfile
14
Dockerfile
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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})
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user