code wiki / (root) / nx_decl_combat_arena_test.nx

nx_decl_combat_arena_test.nx source

↩ module page · 68 lines · 2744 B

1// nx_decl_combat_arena_test.nx -- smoke for the third declarator. 2// 3// expect_exit: 0 4// 5// license_tier: ORIGINAL 6 7import "nx_syscalls.nx" 8import "nx_types.nx" 9import "nx_tier.nx" 10import "nx_decl_random_environment.nx" 11import "nx_decl_simple_scene.nx" 12import "nx_decl_combat_arena.nx" 13 14func main() -> nx_int { 15 // ---- T1: shape validity --------------------------------------- 16 if nx_arena_shape_is_valid(NX_ARENA_SHAPE_SQUARE) != 1 { return 1 } 17 if nx_arena_shape_is_valid(NX_ARENA_SHAPE_HEXAGON) != 1 { return 2 } 18 if nx_arena_shape_is_valid(NX_ARENA_SHAPE_N) != 0 { return 3 } 19 if nx_arena_shape_is_valid(-1) != 0 { return 4 } 20 21 // ---- T2: REAL arena -> SQUARE, 1v1, 24m radius ---------------- 22 let a: *NxCombatArena = nx_arena_alloc() 23 nx_decl_combat_arena(a, NX_RE_MODIFIER_REAL, 7) 24 if a.is_valid != 1 { return 10 } 25 if a.scene.is_valid != 1 { return 11 } 26 if a.shape != NX_ARENA_SHAPE_SQUARE { return 12 } 27 if a.radius_m != 24 { return 13 } 28 if a.spawn_count_per_team != 1 { return 14 } 29 if a.team_count != 2 { return 15 } 30 if a.obstacle_count < 0 { return 16 } 31 if a.obstacle_count > 10 { return 17 } 32 33 // ---- T3: FANTASY arena -> OCTAGON, 4v4, 32m ------------------- 34 let f: *NxCombatArena = nx_arena_alloc() 35 nx_decl_combat_arena(f, NX_RE_MODIFIER_FANTASY, 7) 36 if f.shape != NX_ARENA_SHAPE_OCTAGON { return 20 } 37 if f.radius_m != 32 { return 21 } 38 if f.spawn_count_per_team != 4 { return 22 } 39 40 // ---- T4: SCI_FI arena -> CIRCLE, 2v2, 48m --------------------- 41 let s: *NxCombatArena = nx_arena_alloc() 42 nx_decl_combat_arena(s, NX_RE_MODIFIER_SCI_FI, 7) 43 if s.shape != NX_ARENA_SHAPE_CIRCLE { return 30 } 44 if s.radius_m != 48 { return 31 } 45 if s.spawn_count_per_team != 2 { return 32 } 46 47 // ---- T5: scene composition propagated ------------------------ 48 if nx_ss_light_is_valid(a.scene.light_kind) != 1 { return 40 } 49 if a.scene.env.size_tiles != 256 { return 41 } 50 if f.scene.env.size_tiles != 512 { return 42 } 51 if s.scene.env.size_tiles != 1024 { return 43 } 52 53 // ---- T6: determinism (same seed -> identical arena) ---------- 54 let p: *NxCombatArena = nx_arena_alloc() 55 let q: *NxCombatArena = nx_arena_alloc() 56 nx_decl_combat_arena(p, NX_RE_MODIFIER_REAL, 99) 57 nx_decl_combat_arena(q, NX_RE_MODIFIER_REAL, 99) 58 if p.obstacle_count != q.obstacle_count { return 50 } 59 if p.scene.cam_yaw_q14 != q.scene.cam_yaw_q14 { return 51 } 60 if p.scene.light_kind != q.scene.light_kind { return 52 } 61 62 // ---- T7: invalid modifier -> is_valid=0 ----------------------- 63 let bad: *NxCombatArena = nx_arena_alloc() 64 nx_decl_combat_arena(bad, 999, 0) 65 if bad.is_valid != 0 { return 60 } 66 67 return 0 68}