bool CEntity::PosValid(int NewX, int NewY) { bool Return = true; int StartX = (NewX + Col_X) / TILE_SIZE; int StartY = (NewY + Col_Y) / TILE_SIZE; int EndX = ((NewX + Col_X) + Width - Col_Width - 1) / TILE_SIZE; int EndY = ((NewY + Col_Y) + Height - Col_Height - 1) / TILE_SIZE; for(int iY = StartY;iY <= EndY;iY++) { for(int iX = StartX;iX <= EndX;iX++) { CTile* Tile = CArea::AreaControl.GetTile(iX * TILE_SIZE, iY * TILE_SIZE); if(PosValidTile(Tile) == false) { Return = false; } } } if(Flags & ENTITY_FLAG_MAPONLY) { }else{ for(int i = 0;i < EntityList.size();i++) { if(PosValidEntity(EntityList[i], NewX, NewY) == false) { Return = false; } } } return Return; }
//Collision bool Object::PosValid(int NewX, int NewY) { bool Return = true; if(Flags & OBJECT_FLAG_MAPONLY) { } else { for(unsigned int i = 0; i < App::Application.CurrentRoom->ObjectList.size(); i++) { if(PosValidEntity(App::Application.CurrentRoom->ObjectList[i], NewX, NewY) == false) { Return = false; } } } return Return; }