lang migration: rename signed integer types sN -> iN
Mechanical sweep of all .sx sources, plan docs, and tests/expected snapshots for the sx language rename (s8/s16/s32/s64 -> i8/i16/i32/i64). Verified: tools/run_tests.sh 23/23. Note: the ios-sim build has 2 pre-existing 'restart' dot-call errors from the sx opt-in UFCS change (sx a47ea14) — independent of this rename (present pre-sweep); migrated in the follow-up commit.
This commit is contained in:
@@ -126,7 +126,7 @@ BoardAssets :: struct {
|
||||
self.loaded = self.bg_tex != 0 and self.cell_tex != 0 and self.gems_tex != 0;
|
||||
}
|
||||
|
||||
gem_uv :: (self: *BoardAssets, index: s64) -> GemUV {
|
||||
gem_uv :: (self: *BoardAssets, index: i64) -> GemUV {
|
||||
u0 : f32 = xx index * self.cell_u;
|
||||
GemUV.{
|
||||
uv_min = Point.{ x = u0, y = 0.0 },
|
||||
@@ -139,9 +139,9 @@ BoardAssets :: struct {
|
||||
// failure). When a GPU backend is bound (iOS Metal) it owns the upload; the
|
||||
// desktop GL path falls back to a plain GL_TEXTURE_2D.
|
||||
load_texture :: (path: [:0]u8, gpu: ?GPU) -> u32 {
|
||||
w : s32 = 0;
|
||||
h : s32 = 0;
|
||||
ch : s32 = 0;
|
||||
w : i32 = 0;
|
||||
h : i32 = 0;
|
||||
ch : i32 = 0;
|
||||
pixels := stbi_load(path, @w, @h, @ch, 4);
|
||||
if pixels == null {
|
||||
out("WARNING: could not load texture: ");
|
||||
@@ -237,7 +237,7 @@ BoardView :: struct {
|
||||
safe: EdgeInsets;
|
||||
// Seed for `restart`: the same fixed seed main seeded the board with, so the
|
||||
// restart button reproduces the identical starting level.
|
||||
seed: s64;
|
||||
seed: i64;
|
||||
// FPS dev overlay (P20.1). `fps_on` gates the corner readout (off by default,
|
||||
// set only by the M3TE_FPS env pin); `fps` is the smoothed reciprocal frame
|
||||
// rate computed in the frame loop. Purely a render overlay.
|
||||
@@ -266,7 +266,7 @@ BoardView :: struct {
|
||||
}
|
||||
|
||||
// Draw gem `gem_index`'s sprite-sheet column into `gf`.
|
||||
draw_gem :: (self: *BoardView, ctx: *RenderContext, gf: Frame, gem_index: s64) {
|
||||
draw_gem :: (self: *BoardView, ctx: *RenderContext, gf: Frame, gem_index: i64) {
|
||||
uv := self.assets.gem_uv(gem_index);
|
||||
ctx.add_image_uv(gf, self.assets.gems_tex, uv.uv_min, uv.uv_max);
|
||||
}
|
||||
@@ -285,7 +285,7 @@ BoardView :: struct {
|
||||
|
||||
// Frame for a gem shrunk by `scale` about its cell centre — the clear
|
||||
// scale-out. At scale 0 the gem is a zero-size frame (gone).
|
||||
gem_frame_scaled :: (self: *BoardView, col: s64, row: s64, dim: f32, scale: f32) -> Frame {
|
||||
gem_frame_scaled :: (self: *BoardView, col: i64, row: i64, dim: f32, scale: f32) -> Frame {
|
||||
cs := self.layout.cell_size;
|
||||
cx := self.layout.origin.x + cast(f32) col * cs + cs * 0.5;
|
||||
cy := self.layout.origin.y + cast(f32) row * cs + cs * 0.5;
|
||||
@@ -297,7 +297,7 @@ BoardView :: struct {
|
||||
// sprite is scaled about its cell centre and nudged by the pose offset (both
|
||||
// in cell units). A resting pose reproduces gem_frame exactly, so the t==0
|
||||
// idle pose draws identically to the static sprite.
|
||||
gem_pose_frame :: (self: *BoardView, col: s64, row: s64, dim: f32, pose: GemPose) -> Frame {
|
||||
gem_pose_frame :: (self: *BoardView, col: i64, row: i64, dim: f32, pose: GemPose) -> Frame {
|
||||
cs := self.layout.cell_size;
|
||||
cx := self.layout.origin.x + (cast(f32) col + 0.5) * cs + pose.dx * cs;
|
||||
cy := self.layout.origin.y + (cast(f32) row + 0.5) * cs + pose.dy * cs;
|
||||
@@ -311,7 +311,7 @@ BoardView :: struct {
|
||||
// — the wide-and-short landing impact. sq==0 reproduces gem_frame's centred
|
||||
// placement EXACTLY, so a gem still mid-fall (or one that never moved) draws
|
||||
// byte-identically to the plain fall; only a landed gem flattens.
|
||||
gem_squash_frame :: (self: *BoardView, col: s64, frow: f32, dim: f32, sq: f32) -> Frame {
|
||||
gem_squash_frame :: (self: *BoardView, col: i64, frow: f32, dim: f32, sq: f32) -> Frame {
|
||||
cs := self.layout.cell_size;
|
||||
cx := self.layout.origin.x + (cast(f32) col + 0.5) * cs;
|
||||
cy := self.layout.origin.y + (frow + 0.5) * cs;
|
||||
@@ -323,7 +323,7 @@ BoardView :: struct {
|
||||
// The per-gem animation pose for a settled cell: the always-on idle breath,
|
||||
// plus a squash-bounce if the cell landed recently, plus a pop if it is the
|
||||
// selected cell. Purely visual — composed from gem_anim's pure functions.
|
||||
gem_pose_at :: (self: *BoardView, col: s64, row: s64) -> GemPose {
|
||||
gem_pose_at :: (self: *BoardView, col: i64, row: i64) -> GemPose {
|
||||
pose := idle_pose(self.motion.clock, col, row);
|
||||
|
||||
sq := land_squash(self.motion.land_local(Board.idx(col, row)));
|
||||
@@ -347,7 +347,7 @@ BoardView :: struct {
|
||||
// (land_squash → 0, so it draws unsquashed) and one that never moved reads 0.
|
||||
// render_fall passes the current round; render_clear the previous (its board is
|
||||
// that round's `after`), so the one bounce plays on across the fall→clear seam.
|
||||
rest_squash :: (self: *BoardView, i: s64, kmax: s64, elapsed: f32) -> f32 {
|
||||
rest_squash :: (self: *BoardView, i: i64, kmax: i64, elapsed: f32) -> f32 {
|
||||
m := delivering_round(@self.anim.move, i, kmax);
|
||||
if m < 0 { return 0.0; }
|
||||
col := i % BOARD_COLS;
|
||||
@@ -363,7 +363,7 @@ BoardView :: struct {
|
||||
if g != .empty {
|
||||
pose := self.gem_pose_at(col, row);
|
||||
gf := self.gem_pose_frame(col, row, dim, pose);
|
||||
self.draw_gem(ctx, gf, cast(s64) g);
|
||||
self.draw_gem(ctx, gf, cast(i64) g);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -436,7 +436,7 @@ BoardView :: struct {
|
||||
if g != .empty {
|
||||
sq := self.rest_squash(i, last, e);
|
||||
gf := self.gem_squash_frame(i % BOARD_COLS, cast(f32) (i / BOARD_COLS), dim, sq);
|
||||
self.draw_gem(ctx, gf, cast(s64) g);
|
||||
self.draw_gem(ctx, gf, cast(i64) g);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -457,7 +457,7 @@ BoardView :: struct {
|
||||
g := mv.pre[i];
|
||||
if g != .empty {
|
||||
gf := self.gem_frame(cast(f32) (i % BOARD_COLS), cast(f32) (i / BOARD_COLS), inset, dim);
|
||||
self.draw_gem(ctx, gf, cast(s64) g);
|
||||
self.draw_gem(ctx, gf, cast(i64) g);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -482,18 +482,18 @@ BoardView :: struct {
|
||||
ga := mv.pre[ai];
|
||||
if ga != .empty {
|
||||
gf := self.gem_frame(afc + (bfc - afc) * p, afr + (bfr - afr) * p, inset, dim);
|
||||
self.draw_gem(ctx, gf, cast(s64) ga);
|
||||
self.draw_gem(ctx, gf, cast(i64) ga);
|
||||
}
|
||||
gb := mv.pre[bi];
|
||||
if gb != .empty {
|
||||
gf := self.gem_frame(bfc + (afc - bfc) * p, bfr + (afr - bfr) * p, inset, dim);
|
||||
self.draw_gem(ctx, gf, cast(s64) gb);
|
||||
self.draw_gem(ctx, gf, cast(i64) gb);
|
||||
}
|
||||
}
|
||||
|
||||
// Clear segment: matched gems pop outward then collapse to nothing (a
|
||||
// satisfying pop, composing with the particle burst); the rest hold position.
|
||||
render_clear :: (self: *BoardView, ctx: *RenderContext, rd: *AnimRound, k: s64, e: f32, dim: f32, t: f32) {
|
||||
render_clear :: (self: *BoardView, ctx: *RenderContext, rd: *AnimRound, k: i64, e: f32, dim: f32, t: f32) {
|
||||
span := clear_diag_span(@rd.matched);
|
||||
for 0..BOARD_CELLS (i) {
|
||||
g := rd.before[i];
|
||||
@@ -507,7 +507,7 @@ BoardView :: struct {
|
||||
// reaches scale 0 by t==1, keeping the seam to the fall clean.
|
||||
pop := clear_pop_scale(clear_ripple_t(t, clear_rank(span, col, row)));
|
||||
gf := self.gem_frame_scaled(col, row, dim, pop);
|
||||
self.draw_gem(ctx, gf, cast(s64) g);
|
||||
self.draw_gem(ctx, gf, cast(i64) g);
|
||||
} else {
|
||||
// before[k] is round k-1's settled board, so a survivor here still
|
||||
// carries the bounce from the round that dropped it in — continue it
|
||||
@@ -515,7 +515,7 @@ BoardView :: struct {
|
||||
// (nothing has fallen yet), keeping that frame byte-identical.
|
||||
sq := self.rest_squash(i, k - 1, e);
|
||||
gf := self.gem_squash_frame(col, cast(f32) row, dim, sq);
|
||||
self.draw_gem(ctx, gf, cast(s64) g);
|
||||
self.draw_gem(ctx, gf, cast(i64) g);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -593,7 +593,7 @@ BoardView :: struct {
|
||||
// lockstep row; ease_in_cubic pins each column's f(1)=1, and fall_stagger_t
|
||||
// guarantees every column reaches 1 by t==1, so each gem lands exactly on its
|
||||
// cell and the seam to the next round / settled board stays invisible.
|
||||
render_fall :: (self: *BoardView, ctx: *RenderContext, rd: *AnimRound, k: s64, e: f32, dim: f32, t: f32) {
|
||||
render_fall :: (self: *BoardView, ctx: *RenderContext, rd: *AnimRound, k: i64, e: f32, dim: f32, t: f32) {
|
||||
for 0..BOARD_CELLS (i) {
|
||||
g := rd.after[i];
|
||||
if g == .empty { continue; }
|
||||
@@ -608,7 +608,7 @@ BoardView :: struct {
|
||||
// has reached its cell flattens wide-and-short, then wobbles out.
|
||||
sq := self.rest_squash(i, k, e);
|
||||
gf := self.gem_squash_frame(col, cur_row, dim, sq);
|
||||
self.draw_gem(ctx, gf, cast(s64) g);
|
||||
self.draw_gem(ctx, gf, cast(i64) g);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -668,7 +668,7 @@ BoardView :: struct {
|
||||
// pin) is set, so the unset render path is byte-identical. A bright halo under
|
||||
// the dark text keeps the digits legible over the light background art.
|
||||
render_fps_overlay :: (self: *BoardView, ctx: *RenderContext, frame: Frame) {
|
||||
n := cast(s64) (self.fps + 0.5);
|
||||
n := cast(i64) (self.fps + 0.5);
|
||||
txt := format("FPS {}", n);
|
||||
sz := measure_text(txt, FPS_FONT);
|
||||
x := frame.origin.x + self.safe.left + FPS_PAD;
|
||||
|
||||
Reference in New Issue
Block a user