Private
Public Access
1
0

fix view port rendering to include
All checks were successful
Dynamic Branch Deploy / build-and-deploy (push) Successful in 7m1s

This commit is contained in:
Sebastian Unterschütz
2026-03-24 09:57:26 +01:00
parent fc7cef4989
commit a6cfc055be

View File

@@ -688,54 +688,39 @@ func GetFloorYFromHeight(screenHeight int) float64 {
return floorY
}
// GetScale gibt den Scale-Faktor zurück um die Spielwelt an den Bildschirm anzupassen
// Auf Mobile: Scale < 1.0 (rauszoomen, damit mehr sichtbar ist)
// Auf Desktop: Scale = 1.0 (normale Größe)
// GetScale gibt den Scale-Faktor zurück um die Spielwelt an den Bildschirm anzupassen.
// Die Scale ist proportional zur Bildschirmhöhe relativ zur Referenz-Auflösung (720p),
// damit auf jedem Gerät dieselbe Menge Spielwelt sichtbar ist wie auf dem PC.
func GetScale() float64 {
_, h := ebiten.WindowSize()
if h == 0 {
h = ScreenHeight
}
// Mobile Geräte (kleine Bildschirme): Rauszoomen für bessere Sicht
if h <= 400 {
// Sehr kleine Bildschirme: 0.7x Scale (30% rauszoomen)
return 0.7
} else if h <= 600 {
// Mittlere Bildschirme: 0.85x Scale (15% rauszoomen)
return 0.85
}
// Desktop/große Bildschirme: Normale Größe
return 1.0
return GetScaleFromHeight(h)
}
// GetScaleFromHeight - Scale mit expliziter Höhe
// GetScaleFromHeight - Scale proportional zur Bildschirmhöhe.
// scale = screenHeight / 720 (Referenz), maximal 1.0.
func GetScaleFromHeight(screenHeight int) float64 {
h := screenHeight
if h == 0 {
h = ScreenHeight
}
if h <= 400 {
return 0.7
} else if h <= 600 {
return 0.85
scale := float64(h) / float64(ScreenHeight)
if scale > 1.0 {
scale = 1.0
}
return 1.0
return scale
}
// WorldToScreenY konvertiert Server-Welt-Y-Koordinate zu Bildschirm-Y-Koordinate
// Nimmt die tatsächliche Bildschirmhöhe als Parameter (wichtig für WASM!)
// WorldToScreenYWithHeight konvertiert Welt-Y zu Bildschirm-Y.
// Skaliert die Y-Achse genauso wie die X-Achse, damit das Seitenverhältnis
// der Spielwelt auf allen Geräten gleich bleibt.
func WorldToScreenYWithHeight(worldY float64, screenHeight int) float64 {
// Server arbeitet mit festen Koordinaten (Boden bei Y=540 für 720px Referenz)
// Client will Boden dynamisch positionieren
serverFloorY := float64(RefFloorY) // Server-Boden (540 bei 720px)
clientFloorY := GetFloorYFromHeight(screenHeight) // Client-Boden (dynamisch)
yOffset := clientFloorY - serverFloorY // Verschiebung (z.B. 620 - 540 = +80px nach unten)
return worldY + yOffset
viewScale := GetScaleFromHeight(screenHeight)
// Boden (Y=540) soll am unteren Bildschirmrand erscheinen (canvasH - 100).
floorScreenY := float64(screenHeight) - 100.0
return (worldY-float64(RefFloorY))*viewScale + floorScreenY
}
func isHit(x, y, w, h int) bool {