first commit
This commit is contained in:
68
tests/CamCal.gd
Normal file
68
tests/CamCal.gd
Normal file
@@ -0,0 +1,68 @@
|
||||
extends Node3D
|
||||
|
||||
## Rendert dieselbe Aufstellung mit verschiedenen Kameraeinstellungen.
|
||||
|
||||
var main: Node3D
|
||||
var out_dir := "user://shots"
|
||||
|
||||
const SETS := [
|
||||
{"pos": Vector3(0, 17.0, 15.5), "fov": 42.0, "h": 0.0, "v": 0.0},
|
||||
{"pos": Vector3(0, 17.0, 15.5), "fov": 42.0, "h": 0.4, "v": -1.0},
|
||||
{"pos": Vector3(0, 17.0, 15.5), "fov": 42.0, "h": 0.4, "v": 1.0},
|
||||
{"pos": Vector3(0, 19.0, 17.0), "fov": 40.0, "h": 0.4, "v": 1.4},
|
||||
]
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
var args := OS.get_cmdline_user_args()
|
||||
if args.size() > 0:
|
||||
out_dir = args[0]
|
||||
DirAccess.make_dir_recursive_absolute(out_dir)
|
||||
main = load("res://scenes/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
_run()
|
||||
|
||||
|
||||
func _run() -> void:
|
||||
await get_tree().create_timer(0.5).timeout
|
||||
var p: PlayerState = main.game.human
|
||||
main.game.round_no = 14
|
||||
var el := [Data.Element.FEUER, Data.Element.ERDE, Data.Element.WASSER]
|
||||
var i := 0
|
||||
for hex in [Vector2i(1, 0), Vector2i(5, 0), Vector2i(3, 1), Vector2i(0, 3), Vector2i(6, 3)]:
|
||||
p.board[hex] = Avatar.new(i % 3, [el[i % 3]] as Array[int], 1)
|
||||
i += 1
|
||||
main._refresh()
|
||||
# Volles Board: alle 4 Reihen belegen, damit die Einpassung sichtbar wird.
|
||||
p.board.clear()
|
||||
main.game.round_no = 20
|
||||
var k := 0
|
||||
for r in Data.BOARD_ROWS:
|
||||
for c in [0, 3, 6]:
|
||||
p.board[Vector2i(c, r)] = Avatar.new(k % 3, [el[k % 3]] as Array[int], 1)
|
||||
k += 1
|
||||
main._refresh()
|
||||
await get_tree().create_timer(0.4).timeout
|
||||
await RenderingServer.frame_post_draw
|
||||
get_viewport().get_texture().get_image().save_png("%s/fit.png" % out_dir)
|
||||
print("Kamera: ", main.camera.global_position, " blickt auf ", main.camera.global_position - main.camera.global_transform.basis.z * 10.0)
|
||||
# Trefferprüfung: jedes Feld muss unter seiner eigenen Bildschirmposition liegen.
|
||||
var bad := 0
|
||||
for r in Data.BOARD_ROWS:
|
||||
for c in Data.BOARD_COLS:
|
||||
var bh := Vector2i(c, r)
|
||||
var sp: Vector2 = main.board.slot_screen({"kind": "board", "hex": bh})
|
||||
var hit: Dictionary = main._pick_slot(sp)
|
||||
if hit.get("kind", "") != "board" or hit["hex"] != bh:
|
||||
bad += 1
|
||||
print(" Treffer daneben bei ", bh, " -> ", hit, " (Bildschirm ", sp, ")")
|
||||
print("Trefferprüfung Board: ", 28 - bad, "/28 Felder korrekt")
|
||||
var bad2 := 0
|
||||
for b in Data.BENCH_SLOTS:
|
||||
var sp2: Vector2 = main.board.slot_screen({"kind": "bench", "index": b})
|
||||
var hit2: Dictionary = main._pick_slot(sp2)
|
||||
if hit2.get("kind", "") != "bench" or hit2["index"] != b:
|
||||
bad2 += 1
|
||||
print(" Bankplatz daneben: ", b, " -> ", hit2)
|
||||
print("Trefferprüfung Bank: ", Data.BENCH_SLOTS - bad2, "/", Data.BENCH_SLOTS, " Plätze korrekt")
|
||||
get_tree().quit()
|
||||
Reference in New Issue
Block a user