本文整理汇总了C++中EntityManager::MarkAdded方法的典型用法代码示例。如果您正苦于以下问题:C++ EntityManager::MarkAdded方法的具体用法?C++ EntityManager::MarkAdded怎么用?C++ EntityManager::MarkAdded使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类EntityManager
的用法示例。
在下文中一共展示了EntityManager::MarkAdded方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Run
void Run(EntityManager& em, CSnakeGame& gsnake) {
CGrid& grid = gsnake.GetGrid();
for (auto a = em.begin(); a != em.end(); a++) {
if (!(*a)->HasComponent<CMotion>() || !(*a)->HasComponent<CHead>()) {
continue;
}
if (!IsInsideGrid(*(*a)->GetComponent<CMotion>(), gsnake.GetGrid().GetGridSize())) {
gsnake.GameOver();
}
}
for (auto a = em.begin(); a != em.end(); a++) {
if ((*a).get() == 0 || !(*a)->HasComponent<CPlayerControlled>()) {
continue;
}
CHead* head_a = (*a)->GetComponent<CHead>();
CMotion* motion_a = (*a)->GetComponent<CMotion>();
for (auto b = em.begin(); b != em.end(); b++) {
if ((*b).get() == 0 || a == b || !(*b)->HasComponent<CMotion>()) {
continue;
}
CMotion* motion_b = (*b)->GetComponent<CMotion>();
if (motion_a->GetCoords() == motion_b->GetCoords()) {
std::pair<int, int> xy = motion_b->GetCoords();
if (grid.Get(xy.first, xy.second) < 0) {
head_a->SetLength(head_a->GetLength() + 1);
xy = grid.EatFood(xy.first, xy.second);
em.MarkAdded(std::unique_ptr<CEntity>(new CFood(xy.first, xy.second)));
em.MarkRemoved(*b);
} else if (grid.Get(xy.first, xy.second) > 0 || (*b)->HasComponent<CHead>()) {
gsnake.GameOver();
}
}
}
}
em.Update();
}