nx_beach_overhang_gate.nx source
↩ module page · 54 lines · 2456 B
1import "nx_wasm_craft.nx"
2import "nx_gate_verdict.nx"
3
4// Fixture coordinates describe two traversable levels, not runtime policy.
5func main() -> i64 {
6 let c: *i64 = gv_ctr()
7 let base: i64 = sys_mmap(CRAFT_TOTAL) as i64
8 let sp: *i64 = wsp(base)
9 let state: *i64 = wst(base)
10 sp[P_SURF]=1
11 sp[P_WATER]=0
12 let x: i64=10*256+128
13 let z: i64=10*256+128
14 hq_set(base,10,10,4*256)
15 hq_set(base,11,10,4*256)
16 hq_set(base,10,11,4*256)
17 hq_set(base,11,11,4*256)
18 vset(base,10,4,10,5)
19 let ground: i64=5*256
20 state[S_CX]=x
21 state[S_CZ]=z
22 state[S_CY]=ground+EYE
23 gv_check_eq("open terrain standing",wstand(base,x,z,state[S_CY]),ground+EYE,c)
24 gv_check_eq("open terrain vertical target",wstand_here(base,x,z),ground+EYE,c)
25 // A wood platform above the player's head must remain usable from above
26 // while allowing the same player to walk beneath it.
27 vset(base,10,12,10,6)
28 gv_kv("terrain_top_q8",ground)
29 gv_kv("platform_bottom_q8",12*256)
30 gv_kv("platform_top_q8",13*256)
31 gv_kv("eye_offset_q8",EYE)
32 gv_check_eq("walk below overhead platform",wstand(base,x,z,state[S_CY]),ground+EYE,c)
33 gv_check_eq("vertical target below overhead platform",wstand_here(base,x,z),ground+EYE,c)
34 state[S_CY]=13*256+EYE
35 gv_check_eq("stand on platform remains supported",wstand(base,x,z,state[S_CY]),13*256+EYE,c)
36 gv_check_eq("vertical target above platform",wstand_here(base,x,z),13*256+EYE,c)
37 state[S_CY]=10*256+EYE
38 gv_check_eq("fall beneath platform selects lower ground",wstand_here(base,x,z),ground+EYE,c)
39 state[S_CY]=14*256+EYE
40 gv_check_eq("fall above platform selects platform",wstand_here(base,x,z),13*256+EYE,c)
41 gv_check_eq("support exactly at bound",wc_contact_floor_below_q(base,x,z,WY-1,13*256),13*256,c)
42 gv_check_eq("support just below platform top",wc_contact_floor_below_q(base,x,z,WY-1,13*256-1),ground,c)
43 sp[P_SURF]=0
44 state[S_CY]=ground+EYE
45 gv_check_eq("voxel walk under platform",wstand(base,x,z,state[S_CY]),ground+EYE,c)
46 gv_check_eq("voxel vertical under platform",wstand_here(base,x,z),ground+EYE,c)
47 sp[P_SURF]=1
48 state[S_CY]=ground+EYE
49 vset(base,10,5,10,6)
50 gv_check_eq("existing one-cell step remains reachable",wstand(base,x,z,state[S_CY]),6*256+EYE,c)
51 state[S_CY]=6*256+EYE
52 gv_check_eq("accepted step supports vertical integration",wstand_here(base,x,z),6*256+EYE,c)
53 return gv_verdict("BEACH-OVERHANG",c,"Support selection includes overhang, falling, exact bounds, voxel mode and step retention; browser movement remains unverified.")
54}