diff options
author | frosch <frosch@openttd.org> | 2010-04-26 20:35:27 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2010-04-26 20:35:27 +0000 |
commit | 7b30f34ecf037f3d53b9a30487661df9c87bac3a (patch) | |
tree | 56663f5d292c4d1dafe56a89cc64d1768b2a83ff /src/window.cpp | |
parent | f4e677db805fb0f4073e8ff38ac65984c153e3a0 (diff) | |
download | openttd-7b30f34ecf037f3d53b9a30487661df9c87bac3a.tar.xz |
(svn r19731) -Add: Spritepicker to sprite alignment tool.
Diffstat (limited to 'src/window.cpp')
-rw-r--r-- | src/window.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/window.cpp b/src/window.cpp index db8505ba1..4b824a775 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -31,6 +31,7 @@ #include "widgets/dropdown_func.h" #include "strings_func.h" #include "settings_type.h" +#include "newgrf_debug.h" #include "table/sprites.h" @@ -2190,7 +2191,24 @@ void HandleMouseEvents() _input_events_this_tick++; } - MouseLoop(click, mousewheel); + /* Handle sprite picker before any GUI interaction */ + if (_newgrf_debug_sprite_picker.mode == SPM_REDRAW && _newgrf_debug_sprite_picker.click_time != _realtime_tick) { + /* Next realtime tick? Then redraw has finished */ + _newgrf_debug_sprite_picker.mode = SPM_NONE; + InvalidateWindowData(WC_SPRITE_ALIGNER, 0, 1); + } + + if (click == MC_LEFT && _newgrf_debug_sprite_picker.mode == SPM_WAIT_CLICK) { + /* Mark whole screen dirty, and wait for the next realtime tick, when drawing is finished. */ + Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); + _newgrf_debug_sprite_picker.clicked_pixel = blitter->MoveTo(_screen.dst_ptr, _cursor.pos.x, _cursor.pos.y); + _newgrf_debug_sprite_picker.click_time = _realtime_tick; + _newgrf_debug_sprite_picker.sprites.Clear(); + _newgrf_debug_sprite_picker.mode = SPM_REDRAW; + MarkWholeScreenDirty(); + } else { + MouseLoop(click, mousewheel); + } /* We have moved the mouse the required distance, * no need to move it at any later time. */ |