fix view port rendering to include
All checks were successful
Dynamic Branch Deploy / build-and-deploy (push) Successful in 7m1s
All checks were successful
Dynamic Branch Deploy / build-and-deploy (push) Successful in 7m1s
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user