===== 概要 ===== * LuaにはSwitch構文がない。 * だが、TIC-80だと必須となるメイン関数(Callback)が存在しており、これを利用する必要がある。 * つまりツリー構造としなければならないが、毎回if分岐を使うのも面倒。 * そこで、switch構文っぽく実装ができれば記述を大きくしなくて済む。また改造も局所的で済む。 ---- * 参考資料 * https://noracle.jp/lua-switch-case/ ===== TIC-80での実装 ===== * 元実装とそれほど変わりない local StateId = { Idle = 1, Run = 2, Attack = 3, } local state=2 function SwitchCaseIdle(arg) return 1+arg*10 end function SwitchCaseRun(arg) return 2+arg*10 end function SwitchCaseAttack(arg) return 3+arg*10 end -- switchぽい関数分岐 function SwitchMain(stateId, arg) local switchCase={} switchCase[StateId.Idle] = SwitchCaseIdle switchCase[StateId.Run] = SwitchCaseRun switchCase[StateId.Attack] = SwitchCaseAttack switchCase[stateId](arg) end function TIC() print SwitchMain(state,1) end