ちょー雑にやるよ
あくまで仕様想定のみなので実際の実装はそのうち書くかもしれんが
基本的には各自なんとかしてください
・必要そうな変数の想定
とりあえず左右別制御だからLRの二種類は必要
インジケータの点灯認識に必要そうなのでラストリンクナンバー
integer lst_anim_num_L;
integer lst_anim_num_R;
アニメ止めるのに必要そうなのでラストアニメネーム
string lst_anim_name_L;
string lst_anim_name_R;
・アニメーション名称のフォーマット
Lhand_XXX
Rhand_XXX
こんなもんかな XXXは連番の数字 3桁 001~999まで
ボタンプリムの名称も同じにすることで
収納と展開の処理もオートに出来るんじゃないのという想定
このフォーマットになっていないボタンは
別の機能ボタン あるいは背景として最初の方でif文で弾けばいい
アニメボタンのif文後にreturn入れれば
アニメボタンのレスポンスがスポイルされることはないんじゃねぇかなぁ
・ボタンのLRとか番号とかやるためのIF文
基本的に llDetectedLinkNumber からの llGetLinkName で
名称の先頭1文字でLR判定 後ろから3文字で番号判定
抽出はllGetSubString でいいだろ
・タッチ時の挙動
まず押されたボタンのLRと番号をチェック
ラストアニメと押されたアニメが一緒の場合
停止してインジケータ消灯 でreturn
ラストアニメと押されたアニメが別の場合
ラストアニメが空白でなければ停止してインジケータを消灯後に
押されたアニメを再生してインジケータを点灯
ラストアニメに再生したアニメ名を入れて
ラストリンクナンバーにリンクナンバーを入れる
アニメのボタンでない場合
展開格納の制御等の処理?
・その他気をつけること
通常のAOのようなアニメの全停止処理を入れると割とまずい
外した時にアニメ停止するかどうかは判断が別れると思われ
停止したほうがいいと思うけどねぇ
・展開と収納の処理
全プリムスキャンしてボタン番号を調べて
除算と余りを使って位置を確定して
等間隔にグリッド配置すりゃええでしょう
大体この辺かな
以上