大槻さんの記事: id:ozchi:20040612#p3 RPGでテーブルの上にコップとか表示する方法
うーん、難しいな。条件として「自分より大きい物は上に乗せない」てルールにすれば(乗せると下の物が見えなくなるし)なんとかなるかも。
グリッドからオブジェクトへのポインタはそこにある一番上の物を指すことにして、物の next は下にある物へのポインタにするとか。下には必ず一種類しかないから。grid に o_new を置く場合、o_new.next=grid.top_obj , grid.top_obj=o_new でいいかな。
表示は
って感じで。Dungeon Crawl のタイル重ね合わせ高速化を考えてたときに、上から重ねたほうが計算は少ないなー、と気がついたんですが、たいした時間じゃないんで実装はしてません。^^;
gx=grid->x;
gy=grid->y;
object &obj = grid->top_obj;
while(obj!=NULL)
{
int ox = obj->x //原点座標
int oy = obj->y //原点座標
obj の絵の gx-ox, gy-oy 部分を重ね合わせ描画
(既に書いたgrid の絵に、まだ背景色のままの部分だけにobjの絵を描く)
obj = obj->next;
}