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}