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))

Uses (13)

Used by (3)