def Rewards.loop
gralha-bendquest@0.1.0.0 · rewards.bend:46
import gralha-bendquest@0.1.0.0/rewards.bend as Rewards
import Base
import gralha-bendquest@0.1.0.0/game.bend as G
46def Rewards.loop(fuel: Nat, eligible: Bool, +hero: G.Bq.Hero, +xp: U32, +levels: U32) -> Rewards.Result:
47 match fuel:
48 case Zero{}:
49 Rewards.Result{hero, xp, levels}
50 case Succ{remaining}:
51 match eligible:
52 case False{}:
53 Rewards.Result{hero, xp, levels}
54 case True{}:
55 +next_hero = G.Bq.hero_step(G.Bq.HOp.LevelUp{}, hero)
56 +next_xp = U32.sub(xp, Rewards.cost(U32.from_nat(Rewards.level(hero))))
57 Rewards.loop(remaining, Rewards.eligible(next_hero, next_xp), next_hero, next_xp, U32.add(levels, 1))