ludic.fishing, net, clock: their dice made once and seeded again, never made again per reset; ludic.minimap's near list kept, its marks and grid declared
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
4bca5dfa92
commit
4fc9d2616a
6 changed files with 26 additions and 8 deletions
|
|
@ -41,11 +41,13 @@ export function clock_advance(clock_st: mut ClockState, gh: float) -> void {
|
|||
# a new trip: day one at the start hour, the moon somewhere in its month
|
||||
export function clock_reset(clock_st: mut ClockState) -> void {
|
||||
if clock_st.ck_dice == null {
|
||||
@alloc_ok("once: the clock's dice, seeded again on every new trip after")
|
||||
clock_st.ck_dice = rng_new(ClockWorld.seed())
|
||||
clock_st.ck_dice = ck_dice_new(ClockWorld.seed())
|
||||
} else { rng_seed(clock_st.ck_dice, ClockWorld.seed()) }
|
||||
clock_st.ck_day = 1
|
||||
clock_st.ck_hours = clock_st.ck_start_hours
|
||||
clock_st.ck_moon = rng_span(clock_st.ck_dice, clock_st.ck_moon_lo, clock_st.ck_moon_hi) % 1.0
|
||||
q_clear(clock_days(clock_st))
|
||||
}
|
||||
|
||||
@alloc_ok("once: the clock's dice, seeded again on every new trip after")
|
||||
function ck_dice_new(seed: int) -> Rng { return rng_new(seed) }
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ export function fishing_config(fishing_st: mut FishingState, min_depth: float, d
|
|||
fishing_st.fishing_min_depth = min_depth
|
||||
fishing_st.fishing_deep = deep
|
||||
fishing_st.fishing_seed_n = seed
|
||||
fishing_st.fishing_dice = rng_new(seed)
|
||||
fishing_dice_seed(fishing_st, seed)
|
||||
}
|
||||
|
||||
export function fishing_facts(fishing_st: FishingState) -> Queue<FishingFact> {
|
||||
|
|
@ -50,10 +50,21 @@ export function fishing_facts(fishing_st: FishingState) -> Queue<FishingFact> {
|
|||
}
|
||||
|
||||
function fishing_rand(fishing_st: mut FishingState) -> float {
|
||||
if fishing_st.fishing_dice == null { fishing_st.fishing_dice = rng_new(fishing_st.fishing_seed_n) }
|
||||
if fishing_st.fishing_dice == null { fishing_dice_seed(fishing_st, fishing_st.fishing_seed_n) }
|
||||
return rng_float(fishing_st.fishing_dice)
|
||||
}
|
||||
|
||||
# the line's dice: made the first time, seeded again after (a reset, a new trip)
|
||||
function fishing_dice_seed(fishing_st: mut FishingState, seed: int) -> void {
|
||||
if fishing_st.fishing_dice != null {
|
||||
rng_seed(fishing_st.fishing_dice, seed)
|
||||
return
|
||||
}
|
||||
fishing_st.fishing_dice = fishing_dice_new(seed)
|
||||
}
|
||||
@alloc_ok("once: the line's dice")
|
||||
function fishing_dice_new(seed: int) -> Rng { return rng_new(seed) }
|
||||
|
||||
function fishing_say(fishing_st: mut FishingState, what: int) -> void {
|
||||
let f = fishing_fact_record(fishing_st)
|
||||
f.what = what
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ export function fishing_reset(fishing_st: mut FishingState) -> void {
|
|||
fishing_st.fishing_n = 0
|
||||
fishing_st.fishing_big = 0
|
||||
fishing_st.fishing_leg = false
|
||||
fishing_st.fishing_dice = rng_new(fishing_st.fishing_seed_n)
|
||||
fishing_dice_seed(fishing_st, fishing_st.fishing_seed_n)
|
||||
q_clear(fishing_facts(fishing_st))
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ export function minimap_config(minimap_st: mut MinimapState, cells: int, cell_m:
|
|||
minimap_st.mm_core_n = minimap_st.mm_cells
|
||||
@alloc_ok("once per map configured: its explored grid")
|
||||
minimap_st.mm_seen = new []int
|
||||
@alloc_ok("once per map configured: as above")
|
||||
for i in 0 .. minimap_st.mm_cells * minimap_st.mm_cells { push(minimap_st.mm_seen, 0) }
|
||||
minimap_st.mm_land_n = 0
|
||||
minimap_st.mm_version += 1
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ export function minimap_pin_add(minimap_st: mut MinimapState, x: float, z: float
|
|||
p.icon = Math.clamp(icon, 0, minimap_st.mm_symbols - 1)
|
||||
p.day = MinimapWorld.day()
|
||||
p.label = label
|
||||
@alloc_ok("a mark put down: kept, and the map holds at most its most")
|
||||
push(minimap_st.mm_pins, p)
|
||||
minimap_st.mm_last = p.icon
|
||||
return len(minimap_st.mm_pins) - 1
|
||||
|
|
@ -65,6 +66,7 @@ export function minimap_pin_put(minimap_st: mut MinimapState, x: float, z: float
|
|||
p.colour = Math.clamp(colour, 0, minimap_st.mm_colours - 1)
|
||||
p.day = day
|
||||
p.label = label
|
||||
@alloc_ok("a mark put down: kept, and the map holds at most its most")
|
||||
push(minimap_st.mm_pins, p)
|
||||
return len(minimap_st.mm_pins) - 1
|
||||
}
|
||||
|
|
@ -91,7 +93,7 @@ export function minimap_pins_near(minimap_st: mut MinimapState, x: float, z: flo
|
|||
}
|
||||
}
|
||||
if best < 0 { break }
|
||||
push(out, best)
|
||||
kept_push(out, best)
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,7 @@
|
|||
# from outside: the router's address and the port it mapped
|
||||
|
||||
function net__stun_send(net_st: mut NetState) -> void {
|
||||
@alloc_ok("once: the transport's dice, seeded by its config the first time a STUN request goes")
|
||||
if net_st.net__dice == null { net_st.net__dice = rng_new(net__conf(net_st).seed) }
|
||||
if net_st.net__dice == null { net_st.net__dice = net__dice_new(net__conf(net_st).seed) }
|
||||
if net_st.net__stun_ip == 0 {
|
||||
let c = net__conf(net_st)
|
||||
if len(c.stun_at) > 0 and net_parse_code(net_st, c.stun_at) {
|
||||
|
|
@ -63,3 +62,6 @@ function net__stun_packet(net_st: mut NetState, n: int) -> bool {
|
|||
# what this machine looks like from outside, once STUN has said (0 until then)
|
||||
export function net_outside_ip(net_st: NetState) -> int { return net_st.net__pub_ip }
|
||||
export function net_outside_port(net_st: NetState) -> int { return net_st.net__pub_port }
|
||||
|
||||
@alloc_ok("once: the transport's dice, seeded by its config the first time a STUN request goes")
|
||||
function net__dice_new(seed: int) -> Rng { return rng_new(seed) }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue