void World::DestroyBlock(std::vector<spades::IntVector3> pos){ std::vector<CellPos> cells; for(size_t i = 0; i < pos.size(); i++){ const IntVector3& p = pos[i]; if(p.z >= 62 || p.z < 0 || p.x < 0 || p.y < 0 || p.x >= map->Width() || p.y >= map->Height()) continue; if(!map->IsSolid(p.x, p.y, p.z)) continue; cells.push_back(CellPos(p.x,p.y,p.z)); } cells = mapWrapper->RemoveBlocks(cells); for(size_t i =0 ; i < cells.size(); i++){ CellPos& p = cells[i]; map->Set(p.x, p.y, p.z, false, 0); } std::vector<IntVector3> cells2; for(size_t i =0 ; i < cells.size(); i++){ cells2.push_back(IntVector3::Make(cells[i].x, cells[i].y, cells[i].z)); } if(listener) listener->BlocksFell(cells2); }
void CmtWiListVMenu::PaintCell( int cellIndex, CmtContext *ctx, int ) { if( cellIndex >= 0 ) { if( (uint32)cellIndex == CurrentCellIndex() && mActive[cellIndex] != 0 ) ctx->Image( CellPos(cellIndex), mActive[cellIndex], 0 ); else ctx->Image( CellPos(cellIndex), mDefault[cellIndex], 0 ); } }
MDPos(MarkupData const *md, TableData const *data): s(CellPos(md->start(), data)), e(CellPos(md->end(), data)) { }