Skip to content

Commit 2fa4d8d

Browse files
committed
#1513: fixed tile cursor in the map editor
1 parent 2d777fe commit 2fa4d8d

File tree

1 file changed

+24
-25
lines changed

1 file changed

+24
-25
lines changed

src/studio/editors/map.c

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1051,35 +1051,34 @@ static void drawMapReg(Map* map)
10511051
tic_mem* tic = map->tic;
10521052
tic_rect rect = {MAP_X, MAP_Y, MAP_WIDTH, MAP_HEIGHT};
10531053

1054-
if(!sheetVisible(map) && checkMousePos(&rect))
1055-
{
1056-
if(tic_api_key(tic, tic_key_space))
1057-
{
1058-
processScrolling(map, checkMouseDown(&rect, tic_mouse_left) || checkMouseDown(&rect, tic_mouse_right));
1059-
}
1060-
else
1061-
{
1062-
static void(*const Handlers[])(Map*) = {processMouseDrawMode, processMouseDragMode, processMouseSelectMode, processMouseFillMode};
1054+
bool handle = !sheetVisible(map) && checkMousePos(&rect);
1055+
bool space = tic_api_key(tic, tic_key_space);
10631056

1064-
Handlers[map->mode](map);
1057+
if(handle)
1058+
processScrolling(map,
1059+
((space || map->mode == MAP_DRAG_MODE) && checkMouseDown(&rect, tic_mouse_left)) ||
1060+
checkMouseDown(&rect, tic_mouse_right));
10651061

1066-
if(map->mode != MAP_DRAG_MODE)
1067-
processScrolling(map, checkMouseDown(&rect, tic_mouse_right));
1068-
}
1069-
}
1062+
{
1063+
s32 scrollX = map->scroll.x % TIC_SPRITESIZE;
1064+
s32 scrollY = map->scroll.y % TIC_SPRITESIZE;
10701065

1071-
s32 scrollX = map->scroll.x % TIC_SPRITESIZE;
1072-
s32 scrollY = map->scroll.y % TIC_SPRITESIZE;
1066+
map2ram(&tic->ram, map->src);
10731067

1074-
map2ram(&tic->ram, map->src);
1068+
initBlitMode(map);
1069+
tic_api_map(tic, map->scroll.x / TIC_SPRITESIZE, map->scroll.y / TIC_SPRITESIZE,
1070+
TIC_MAP_SCREEN_WIDTH + 1, TIC_MAP_SCREEN_HEIGHT + 1, -scrollX, -scrollY, 0, 0, 1, NULL, NULL);
1071+
resetBlitMode(map->tic);
10751072

1076-
initBlitMode(map);
1077-
tic_api_map(tic, map->scroll.x / TIC_SPRITESIZE, map->scroll.y / TIC_SPRITESIZE,
1078-
TIC_MAP_SCREEN_WIDTH + 1, TIC_MAP_SCREEN_HEIGHT + 1, -scrollX, -scrollY, 0, 0, 1, NULL, NULL);
1079-
resetBlitMode(map->tic);
1073+
if (map->canvas.grid || map->scroll.active)
1074+
drawGrid(map);
1075+
}
10801076

1081-
if(map->canvas.grid || map->scroll.active)
1082-
drawGrid(map);
1077+
if(handle && !space)
1078+
{
1079+
static void(*const Handlers[])(Map*) = {processMouseDrawMode, processMouseDragMode, processMouseSelectMode, processMouseFillMode};
1080+
Handlers[map->mode](map);
1081+
}
10831082
}
10841083

10851084
static void undo(Map* map)
@@ -1283,8 +1282,8 @@ static void overline(tic_mem* tic, void* data)
12831282

12841283
{
12851284
tic_rect rect = {MAP_X, MAP_Y, MAP_WIDTH, MAP_HEIGHT};
1286-
if(!sheetVisible(map) && checkMousePos(&rect))
1287-
{
1285+
if(!sheetVisible(map) && checkMousePos(&rect) && !tic_api_key(tic, tic_key_space))
1286+
{
12881287
switch(map->mode)
12891288
{
12901289
case MAP_DRAW_MODE:

0 commit comments

Comments
 (0)