mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-05-10 11:14:07 +00:00
rogueviz::seuphorica::animate classic moves, do not allow dropping outside of explored area
This commit is contained in:
parent
683cfac945
commit
8d72003391
@ -940,12 +940,19 @@ void seuphorica_screen() {
|
|||||||
}
|
}
|
||||||
if(box_moved == &drawn && current_box == nullptr && tile_moved_from == mouseover && hold_mode == 1) {
|
if(box_moved == &drawn && current_box == nullptr && tile_moved_from == mouseover && hold_mode == 1) {
|
||||||
/* do nothing, it was already removed from the board */
|
/* do nothing, it was already removed from the board */
|
||||||
sort_hand();
|
/* ... but assume we want the default interface */
|
||||||
|
if(snapshots.empty()) snapshot();
|
||||||
|
for(auto& s: snapshots) {
|
||||||
|
s.erase(drawn[0].id);
|
||||||
|
s.emplace(drawn[0].id, snaptile{ drawn[0], eupoint(mousex, mousey) });
|
||||||
|
}
|
||||||
|
for(auto& d: drawn) where_is_tile.erase(d.id);
|
||||||
|
snapshot();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(box_moved == &drawn && current_box == nullptr && mouseover) {
|
if(box_moved == &drawn && current_box == nullptr && mouseover) {
|
||||||
auto at = mouseover;
|
auto at = mouseover;
|
||||||
if(!board.count(at)) {
|
if(in_board(at) && !board.count(at)) {
|
||||||
swap(drawn[tile_boxid], drawn[0]);
|
swap(drawn[tile_boxid], drawn[0]);
|
||||||
drop_hand_on(at);
|
drop_hand_on(at);
|
||||||
sort_hand();
|
sort_hand();
|
||||||
@ -953,7 +960,7 @@ void seuphorica_screen() {
|
|||||||
}
|
}
|
||||||
if(box_moved == &shop && current_box == nullptr && mouseover && tile_moved->price <= cash) {
|
if(box_moved == &shop && current_box == nullptr && mouseover && tile_moved->price <= cash) {
|
||||||
auto at = mouseover;
|
auto at = mouseover;
|
||||||
if(!board.count(at)) {
|
if(in_board(at) && !board.count(at)) {
|
||||||
buy(tile_boxid);
|
buy(tile_boxid);
|
||||||
drop_hand_on(at);
|
drop_hand_on(at);
|
||||||
}
|
}
|
||||||
@ -965,8 +972,13 @@ void seuphorica_screen() {
|
|||||||
back_from_board(at); hold_mode = 1; tile_moved_from = mouseover;
|
back_from_board(at); hold_mode = 1; tile_moved_from = mouseover;
|
||||||
holdmouse = true; tile_moved = &(drawn[0]); tile_boxid = 0; box_moved = &drawn;
|
holdmouse = true; tile_moved = &(drawn[0]); tile_boxid = 0; box_moved = &drawn;
|
||||||
}
|
}
|
||||||
else
|
else if(in_board(at)) {
|
||||||
|
for(auto& s: snapshots) s.erase(drawn[0].id);
|
||||||
drop_hand_on(at);
|
drop_hand_on(at);
|
||||||
|
if(snapshots.empty()) snapshot();
|
||||||
|
for(auto& d: drawn) where_is_tile.erase(d.id);
|
||||||
|
snapshot();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user