computeDiff ok
This commit is contained in:
parent
71de446a33
commit
281f725ccf
@ -175,4 +175,65 @@ void GridService::ComputeDiff(int old_grid_id, int new_grid_id,
|
|||||||
std::set<GridCell*>& dec_grid_list)
|
std::set<GridCell*>& dec_grid_list)
|
||||||
{
|
{
|
||||||
int diff_grid = new_grid_id - old_grid_id;
|
int diff_grid = new_grid_id - old_grid_id;
|
||||||
|
if (diff_grid == 1) {
|
||||||
|
Get369(new_grid_id, inc_grid_list);
|
||||||
|
Get147(old_grid_id, dec_grid_list);
|
||||||
|
} else if (diff_grid == -1) {
|
||||||
|
Get147(new_grid_id, inc_grid_list);
|
||||||
|
Get369(old_grid_id, dec_grid_list);
|
||||||
|
} else if (diff_grid == cell_count_per_row_) {
|
||||||
|
Get789(new_grid_id, inc_grid_list);
|
||||||
|
Get123(old_grid_id, dec_grid_list);
|
||||||
|
} else if (diff_grid + cell_count_per_row_ == 0) {
|
||||||
|
Get123(new_grid_id, inc_grid_list);
|
||||||
|
Get789(old_grid_id, dec_grid_list);
|
||||||
|
} else if (diff_grid + cell_count_per_row_ == 1) {
|
||||||
|
Get123(new_grid_id, inc_grid_list);
|
||||||
|
GetGridList(new_grid_id, 6, inc_grid_list);
|
||||||
|
GetGridList(new_grid_id, 9, inc_grid_list);
|
||||||
|
|
||||||
|
GetGridList(old_grid_id, 1, dec_grid_list);
|
||||||
|
GetGridList(old_grid_id, 4, dec_grid_list);
|
||||||
|
Get789(old_grid_id, dec_grid_list);
|
||||||
|
} else if (diff_grid + cell_count_per_row_ == -1) {
|
||||||
|
Get123(new_grid_id, inc_grid_list);
|
||||||
|
GetGridList(new_grid_id, 4, inc_grid_list);
|
||||||
|
GetGridList(new_grid_id, 7, inc_grid_list);
|
||||||
|
|
||||||
|
GetGridList(old_grid_id, 6, dec_grid_list);
|
||||||
|
GetGridList(old_grid_id, 9, dec_grid_list);
|
||||||
|
Get789(old_grid_id, dec_grid_list);
|
||||||
|
} else if (diff_grid == cell_count_per_row_ + 1) {
|
||||||
|
Get789(new_grid_id, inc_grid_list);
|
||||||
|
GetGridList(new_grid_id, 3, inc_grid_list);
|
||||||
|
GetGridList(new_grid_id, 6, inc_grid_list);
|
||||||
|
|
||||||
|
GetGridList(old_grid_id, 4, dec_grid_list);
|
||||||
|
GetGridList(old_grid_id, 7, dec_grid_list);
|
||||||
|
Get123(old_grid_id, dec_grid_list);
|
||||||
|
} else if (diff_grid == cell_count_per_row_ - 1) {
|
||||||
|
Get789(new_grid_id, inc_grid_list);
|
||||||
|
GetGridList(new_grid_id, 1, inc_grid_list);
|
||||||
|
GetGridList(new_grid_id, 4, inc_grid_list);
|
||||||
|
|
||||||
|
GetGridList(old_grid_id, 6, dec_grid_list);
|
||||||
|
GetGridList(old_grid_id, 9, dec_grid_list);
|
||||||
|
Get123(old_grid_id, dec_grid_list);
|
||||||
|
} else {
|
||||||
|
std::set<GridCell*> new_grid_list;
|
||||||
|
Get123456789(new_grid_id, new_grid_list);
|
||||||
|
for (auto& cell : new_grid_list) {
|
||||||
|
if (grid_list.find(cell) == grid_list.end()) {
|
||||||
|
inc_grid_list.insert(cell);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (auto& cell : grid_list) {
|
||||||
|
if (new_grid_list.find(cell) == new_grid_list.end()) {
|
||||||
|
dec_grid_list.insert(cell);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grid_list.clear();
|
||||||
|
Get123456789(new_grid_id, grid_list);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user