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