refactor(packages): 0.R5 - a question no longer starts its state - 64 lazy starts ('if st.x == null { st.x = ... }' inside a getter) are the state's defaults, gear__ensure is gone, and ludic migrate state --tighten took mut off 208 package parameters: things_all, thing_find, gear_charge, gear_level, jobs_state and the rest read
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
54f5efb23f
commit
9862ec82e3
102 changed files with 320 additions and 351 deletions
|
|
@ -6,13 +6,13 @@ export state NpcState {
|
|||
np_wx: float = 0.0
|
||||
np_wz: float = 0.0
|
||||
np_clock: float = 0.0
|
||||
np_recent: []string = null # the last few names that left
|
||||
np_walkers: []NpcPerson = null
|
||||
np_posts: []NpcPerson = null
|
||||
np_recent: []string = new []string # the last few names that left
|
||||
np_walkers: []NpcPerson = new []NpcPerson
|
||||
np_posts: []NpcPerson = new []NpcPerson
|
||||
np_max: int = 10 # walkers at most
|
||||
np_n: int = 0 # walkers about
|
||||
np_dice: Rng = null
|
||||
np_facts: Queue<NpcFact> = null
|
||||
np_dice: Rng = rng_new(20260925)
|
||||
np_facts: Queue<NpcFact> = np_facts__new()
|
||||
np_next_h: float = 0.0 # the hour the census is next looked at
|
||||
np_hold: bool = false # held where they stand (a shot of their poses)
|
||||
np_mirror: bool = false # a guest drawing a host's: no routine runs here
|
||||
|
|
@ -23,12 +23,11 @@ export state NpcState {
|
|||
const NP_PI: float = 3.1415927
|
||||
const NP_TAU: float = 6.2831853
|
||||
|
||||
export function npc_facts(npc_st: mut NpcState) -> Queue<NpcFact> {
|
||||
if npc_st.np_facts == null { npc_st.np_facts = queue_new("npc.facts") }
|
||||
export function npc_facts(npc_st: NpcState) -> Queue<NpcFact> {
|
||||
return npc_st.np_facts
|
||||
}
|
||||
|
||||
function np_fact(npc_st: mut NpcState, what: int, p: NpcPerson, player: int) -> NpcFact {
|
||||
function np_fact(npc_st: NpcState, what: int, p: NpcPerson, player: int) -> NpcFact {
|
||||
let f = new NpcFact
|
||||
f.what = what
|
||||
f.person = p.id
|
||||
|
|
@ -40,40 +39,37 @@ function np_fact(npc_st: mut NpcState, what: int, p: NpcPerson, player: int) ->
|
|||
return f
|
||||
}
|
||||
|
||||
function np_ensure(npc_st: mut NpcState) -> void {
|
||||
if npc_st.np_walkers == null { npc_st.np_walkers = new []NpcPerson }
|
||||
if npc_st.np_posts == null { npc_st.np_posts = new []NpcPerson }
|
||||
if npc_st.np_dice == null { npc_st.np_dice = rng_new(20260925) }
|
||||
function np_ensure() -> void {
|
||||
}
|
||||
|
||||
# how many walkers the place can hold at once
|
||||
export function npc_config(npc_st: mut NpcState, max: int) -> void { npc_st.np_max = max }
|
||||
|
||||
export function npc_seed(npc_st: mut NpcState, n: int) -> void {
|
||||
np_ensure(npc_st)
|
||||
export function npc_seed(npc_st: NpcState, n: int) -> void {
|
||||
np_ensure()
|
||||
rng_seed(npc_st.np_dice, n)
|
||||
}
|
||||
|
||||
# 0 .. 1, and whole seconds lo .. hi, off the package's dice
|
||||
export function npc_rnd(npc_st: mut NpcState) -> float {
|
||||
np_ensure(npc_st)
|
||||
export function npc_rnd(npc_st: NpcState) -> float {
|
||||
np_ensure()
|
||||
return rng_float(npc_st.np_dice)
|
||||
}
|
||||
|
||||
export function npc_between(npc_st: mut NpcState, lo: int, hi: int) -> int {
|
||||
np_ensure(npc_st)
|
||||
export function npc_between(npc_st: NpcState, lo: int, hi: int) -> int {
|
||||
np_ensure()
|
||||
return rng_between(npc_st.np_dice, lo, hi)
|
||||
}
|
||||
|
||||
export function npc_secs(npc_st: mut NpcState, lo: int, hi: int) -> float { return float(npc_between(npc_st, lo, np_hi(lo, hi))) }
|
||||
export function npc_secs(npc_st: NpcState, lo: int, hi: int) -> float { return float(npc_between(npc_st, lo, np_hi(lo, hi))) }
|
||||
|
||||
export function npc_walkers(npc_st: mut NpcState) -> []NpcPerson {
|
||||
np_ensure(npc_st)
|
||||
export function npc_walkers(npc_st: NpcState) -> []NpcPerson {
|
||||
np_ensure()
|
||||
return npc_st.np_walkers
|
||||
}
|
||||
|
||||
export function npc_posts(npc_st: mut NpcState) -> []NpcPerson {
|
||||
np_ensure(npc_st)
|
||||
export function npc_posts(npc_st: NpcState) -> []NpcPerson {
|
||||
np_ensure()
|
||||
return npc_st.np_posts
|
||||
}
|
||||
|
||||
|
|
@ -82,20 +78,20 @@ export function npc_count(npc_st: NpcState) -> int { return npc_st.np_n }
|
|||
export function npc_max(npc_st: NpcState) -> int { return npc_st.np_max }
|
||||
|
||||
# a walker's slot or a post, and anyone by id
|
||||
export function npc_at(npc_st: mut NpcState, slot: int) -> NpcPerson {
|
||||
np_ensure(npc_st)
|
||||
export function npc_at(npc_st: NpcState, slot: int) -> NpcPerson {
|
||||
np_ensure()
|
||||
if slot < 0 or slot >= len(npc_st.np_walkers) { return null }
|
||||
return npc_st.np_walkers[slot]
|
||||
}
|
||||
|
||||
export function npc_post(npc_st: mut NpcState, i: int) -> NpcPerson {
|
||||
np_ensure(npc_st)
|
||||
export function npc_post(npc_st: NpcState, i: int) -> NpcPerson {
|
||||
np_ensure()
|
||||
if i < 0 or i >= len(npc_st.np_posts) { return null }
|
||||
return npc_st.np_posts[i]
|
||||
}
|
||||
|
||||
export function npc_by_id(npc_st: mut NpcState, id: int) -> NpcPerson {
|
||||
np_ensure(npc_st)
|
||||
export function npc_by_id(npc_st: NpcState, id: int) -> NpcPerson {
|
||||
np_ensure()
|
||||
for i in 0 .. len(npc_st.np_walkers) { if npc_st.np_walkers[i].active and npc_st.np_walkers[i].id == id { return npc_st.np_walkers[i] } }
|
||||
for i in 0 .. len(npc_st.np_posts) { if npc_st.np_posts[i].active and npc_st.np_posts[i].id == id { return npc_st.np_posts[i] } }
|
||||
return null
|
||||
|
|
@ -118,3 +114,4 @@ function np_hi(lo: int, hi: int) -> int {
|
|||
if hi < lo { return lo }
|
||||
return hi
|
||||
}
|
||||
function np_facts__new() -> Queue<NpcFact> { return queue_new("npc.facts") }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue