FC2ブログ

三角端。

Δ-sphere管理人三角区也による絵日記/ゲーム開発日記。コメントは右側のweb拍手からどぞー。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

luaスクリプトと色々

ここ数日暑い日が続きましたね。

なんか久しぶりの更新のような気がしますね。

気のせいですかね。
気のせいならいいんですけどね。


◆ゲーム制作

微妙に少しずつ亀のように進んでいます。
とりあえずバトル画面にLuaスクリプトを導入して動かしてみることに成功しました。

スキルを使用すると
Skill_ナントカって関数を呼び出して、
ユニットの向きを変えたり戻したり。
コルーチンの待機時間を設定したり。
ユニットのHPを削ってみたり。

ある程度動くようになったのでターンの順番とかCPUとかに入っていきますかねー
エフェクトどうしよ・・・





スキル関数Skill_AAAを呼び出すときは
lua_newthreadをしたあとで
luaL_ref(m_State,LUA_REGISTRYINDEX);を使わないといけないっぽいです。

lua関数をlua_getglobalでスタックに積み、
lua_pushlightuserdataでユニットのクラスポインタを渡す。
lua_resumeで呼び出す。
あらかじめlua_registerでC側の関数と関数名を紐付けした_Waitに達するとC側の_Waitでlua_yield。
lua_yieldの際に「なぜ止まっているか」と止まる時間をスタックに積んでおきます。
戻り値がLUA_OKなら終わり。
LUA_YIELDならlua_yieldのときのスタックが取得できるので、
スタックに積まれている止まった理由ともうひとつの数値を取得。
_Waitによる停止ならば停止時間だけ待って再度lua_resume。

そんな感じでコルーチン処理をまとめてみました。

このあたりの設計を考えるの楽しいw
スポンサーサイト

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。