从事小规模的不法游戏,为不属于该地图一部分的任何物体/“th”而工作的人,都属于XEntity类。 有几个班级,如XPlayer、XItem和XMonster。
我的问题是,如果我知道某个物体是物品,我想把一个点从XEntity改为十一tem。 我在选择一个项目时使用的样本代码是这样,正好是,一个不同的实体拿到了它所继承的项目。
void XEntity::PickupItem()
{
XEntity *Ent = MapList; // Start of a linked list
while(true)
{
if(Ent == NULL) { break; }
if(Ent->Flags & ENT_ITEM)
{
Ent->RemoveEntity(); // Unlink from the map s linked list
XItem *Item = Ent // Problem is here, type-safety
// Code to link into inventory is here
break;
}
Ent = Ent->MapList;
}
}
我的第一项想法是,在XEntity中形成一种方法,将自己作为十一点点点点,但这种方法会产生无法解决的循环依赖性。
我很忙于这样做。 非常感谢任何帮助。