From: <la...@us...> - 2011-08-15 04:53:24
|
Revision: 7088 http://exult.svn.sourceforge.net/exult/?rev=7088&view=rev Author: lanica Date: 2011-08-15 04:53:18 +0000 (Mon, 15 Aug 2011) Log Message: ----------- * iPhone: Enabled itemmenu for gumps * iPhone: Fixed indentation of Game_window::find_nearby_objects Modified Paths: -------------- exult/trunk/gamewin.cc exult/trunk/gamewin.h Modified: exult/trunk/gamewin.cc =================================================================== --- exult/trunk/gamewin.cc 2011-08-14 19:56:57 UTC (rev 7087) +++ exult/trunk/gamewin.cc 2011-08-15 04:53:18 UTC (rev 7088) @@ -2154,27 +2154,36 @@ } #ifdef __IPHONEOS__ -void Game_window::find_nearby_objects(Game_object_map_xy *mobjxy, int x, int y) +void Game_window::find_nearby_objects(Game_object_map_xy *mobjxy, int x, int y, Gump *gump) { - // Find object at each pixel - for (int iy = y - 10; iy < (y + 10); iy++) - { - for (int ix = x - 10; ix < (x + 10); ix++) - { - Game_object *iobj = find_object(ix, iy); - if (iobj) - { - int *arrXY = new int[2]; - arrXY[0] = ix; - arrXY[1] = iy; - std::pair<Game_object_map_xy::iterator,bool> ret; + Game_object *iobj; + // Find object at each pixel + for (int iy = y - 10; iy < (y + 10); iy++) + { + for (int ix = x - 10; ix < (x + 10); ix++) + { + if (gump) + { + iobj = gump->find_object(ix, iy); + } + else + { + iobj = find_object(ix, iy); + } + + if (iobj) + { + int *arrXY = new int[2]; + arrXY[0] = ix; + arrXY[1] = iy; + std::pair<Game_object_map_xy::iterator,bool> ret; - ret = mobjxy->insert(std::pair<Game_object *, int*>(iobj, arrXY)); - if (ret.second == false) - delete arrXY; - } - } - } + ret = mobjxy->insert(std::pair<Game_object *, int*>(iobj, arrXY)); + if (ret.second == false) + delete arrXY; + } + } + } } #endif static inline string Get_object_name(Game_object *obj) @@ -2212,19 +2221,19 @@ else // Search rest of world. { obj = find_object(x, y); + } #ifdef __IPHONEOS__ - Game_object_map_xy mobjxy; - find_nearby_objects(&mobjxy, x, y); - if (mobjxy.size() > 0) - { - Itemmenu_gump *itemgump = new Itemmenu_gump(&mobjxy, x, y); - Game_window::get_instance()->get_gump_man()->do_modal_gump(itemgump, Mouse::hand); - itemgump->postCloseActions(); - delete itemgump; - obj = NULL; - } + Game_object_map_xy mobjxy; + find_nearby_objects(&mobjxy, x, y, gump); + if (mobjxy.size() > 0) + { + Itemmenu_gump *itemgump = new Itemmenu_gump(&mobjxy, x, y); + Game_window::get_instance()->get_gump_man()->do_modal_gump(itemgump, Mouse::hand); + itemgump->postCloseActions(); + delete itemgump; + obj = NULL; + } #endif - } // Map-editing? if (obj && cheat.in_map_editor()) { Modified: exult/trunk/gamewin.h =================================================================== --- exult/trunk/gamewin.h 2011-08-14 19:56:57 UTC (rev 7087) +++ exult/trunk/gamewin.h 2011-08-15 04:53:18 UTC (rev 7088) @@ -530,7 +530,7 @@ Game_object *find_object(int x, int y); #ifdef __IPHONEOS__ typedef std::map<Game_object*, int*> Game_object_map_xy; - void find_nearby_objects(Game_object_map_xy *mobjxy, int x, int y); + void find_nearby_objects(Game_object_map_xy *mobjxy, int x, int y, Gump *gump = NULL); #endif // Show names of items clicked on. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |