From: Trent W. <qua...@us...> - 2006-09-22 01:33:59
|
Update of /cvsroot/freesynd/freesynd In directory sc8-pr-cvs5.sourceforge.net:/tmp/cvs-serv2021 Modified Files: mapmenu.cpp mapmenu.h screen.cpp screen.h system_sdl.cpp Log Message: Better placement of logo and line to country on map menu. Pulse the line to the country. Index: mapmenu.h =================================================================== RCS file: /cvsroot/freesynd/freesynd/mapmenu.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- mapmenu.h 20 Sep 2006 11:14:09 -0000 1.3 +++ mapmenu.h 22 Sep 2006 01:33:56 -0000 1.4 @@ -30,9 +30,11 @@ ~MapMenu(); uint8 currentBlk() { return cur_blk_; } + void handleTick(); void handleShow(); void handleMouseDown(int x, int y, int button); void handleOption(Key key); + void handleUnknownKey(Key key); protected: int mapblk_size_; @@ -40,4 +42,5 @@ uint8 *orig_pixels_; uint8 blk_colours_[50]; uint8 cur_blk_; + int tick_count_; }; Index: screen.cpp =================================================================== RCS file: /cvsroot/freesynd/freesynd/screen.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- screen.cpp 20 Sep 2006 11:14:09 -0000 1.13 +++ screen.cpp 22 Sep 2006 01:33:56 -0000 1.14 @@ -164,7 +164,7 @@ // Taken from SDL_gfx #define ABS(a) (((a)<0) ? -(a) : (a)) -void Screen::drawLine(int x1, int y1, int x2, int y2, uint8 color) +void Screen::drawLine(int x1, int y1, int x2, int y2, uint8 color, int skip, int off) { int pixx, pixy; int x, y; @@ -209,8 +209,10 @@ */ x = 0; y = 0; + int count = 0; for (; x < dx; x++, pixel += pixx) { - *pixel = color; + if (skip == 0 || !(((off + count++) / skip) & 1)) + *pixel = color; y += dy; if (y >= dx) { y -= dx; Index: system_sdl.cpp =================================================================== RCS file: /cvsroot/freesynd/freesynd/system_sdl.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- system_sdl.cpp 21 Sep 2006 07:05:15 -0000 1.13 +++ system_sdl.cpp 22 Sep 2006 01:33:56 -0000 1.14 @@ -114,7 +114,7 @@ palette[i].b = (b << 2) | (b >> 4); #if 0 - if (like(palette[i].r, 100) && like(palette[i].g, 108) && like(palette[i].b, 92)) + if (like(palette[i].r, 28) && like(palette[i].g, 144) && like(palette[i].b, 0)) printf("col %i = %i, %i, %i\n", i, palette[i].r, palette[i].g, palette[i].b); #endif } Index: mapmenu.cpp =================================================================== RCS file: /cvsroot/freesynd/freesynd/mapmenu.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- mapmenu.cpp 21 Sep 2006 14:16:41 -0000 1.6 +++ mapmenu.cpp 22 Sep 2006 01:33:56 -0000 1.7 @@ -42,11 +42,51 @@ { 542, 282 }, { 152, 230 }, { 148, 242 }, { 170, 252 }, { 504, 160 } }; +struct LogoPosition { int x; int y; } g_LogoPositions[50] = { + { 14, 12 }, { 14, 12 }, { 226, 78 }, { 226, 78 }, { 289, 24 }, + { 353, 12 }, { 353, 12 }, { 585, 69 }, { 13, 59 }, { 243, 93 }, + { 289, 22 }, { 353, 12 }, { 353, 12 }, { 585, 69 }, { 585, 69 }, + { 225, 77 }, { 13, 59 }, { 13, 59 }, { 149, 123 }, { 149, 123 }, + { 243, 93 }, { 243, 93 }, { 421, 185 }, { 421, 185 }, { 565, 133 }, + { 13, 127 }, { 149, 123 }, { 207, 165 }, { 207, 165 }, { 243, 209 }, + { 421, 185 }, { 421, 185 }, { 565, 133 }, { 13, 127 }, { 61, 179 }, + { 243, 209 }, { 285, 251 }, { 421, 185 }, { 89, 257 }, { 207, 165 }, + { 243, 209 }, { 285, 251 }, { 412, 249 }, { 459, 253 }, { 597, 259 }, + { 597, 259 }, { 215, 265 }, { 215, 265 }, { 215, 265 }, { 471, 197 }, +}; + +struct BlockLineStart { int x; int y; } g_blkLineStartPositions[50] = { + { 48, 32 }, { 48, 32 }, { 226, 78 }, { 245, 78 }, { 322, 52 }, + { 387, 45 }, { 388, 34 }, { 583, 79 }, { 49, 73 }, { 279, 107 }, + { 325, 57 }, { 381, 47 }, { 389, 45 }, { 584, 85 }, { 584, 89 }, + { 224, 87 }, { 49, 83 }, { 49, 83 }, { 149, 123 }, { 163, 122 }, + { 279, 123 }, { 279, 123 }, { 423, 183 }, { 435, 184 }, { 564, 143 }, + { 49, 135 }, { 148, 133 }, { 217, 164 }, { 243, 177 }, { 279, 215 }, + { 421, 184 }, { 449, 184 }, { 564, 149 }, { 49, 141 }, { 97, 195 }, + { 279, 211 }, { 317, 250 }, { 420, 203 }, { 115, 256 }, { 206, 191 }, + { 242, 225 }, { 321, 259 }, { 412, 259 }, { 495, 278 }, { 596, 275 }, + { 596, 283 }, { 214, 269 }, { 214, 283 }, { 214, 277 }, { 507, 211 }, +}; + +struct BlockLineEnd { int x; int y; } g_blkLineEndPositions[50] = { + { 76, 36 }, { 107, 40 }, { 181, 33 }, { 250, 40 }, { 344, 60 }, + { 404, 62 }, { 458, 48 }, { 527, 53 }, { 100, 63 }, { 316, 97 }, + { 360, 88 }, { 406, 90 }, { 452, 102 }, { 487, 81 }, { 541, 93 }, + { 177, 69 }, { 74, 91 }, { 96, 93 }, { 117, 91 }, { 157, 91 }, + { 300, 135 }, { 326, 153 }, { 385, 137 }, { 427, 129 }, { 511, 119 }, + { 86, 113 }, { 107, 117 }, { 207, 137 }, { 284, 163 }, { 358, 167 }, + { 401, 159 }, { 468, 143 }, { 509, 147 }, { 80, 135 }, { 138, 189 }, + { 312, 181 }, { 352, 205 }, { 385, 203 }, { 131, 217 }, { 159, 211 }, + { 195, 223 }, { 342, 249 }, { 363, 243 }, { 522, 285 }, { 569, 271 }, + { 567, 293 }, { 173, 243 }, { 159, 281 }, { 179, 269 }, { 536, 207 }, +}; + extern int g_Colours[8]; MapMenu::MapMenu(MenuManager *m) : Menu(m, "map", "mmap.dat", "mmapout.dat"), - mapblk_data_(NULL), orig_pixels_(NULL), cur_blk_(9) + mapblk_data_(NULL), orig_pixels_(NULL), cur_blk_(9), + tick_count_(0) { addOption(53, 352, "BRIEF", 1, KEY_F4, "brief"); addOption(535, 352, "MENU", 1, KEY_F5, "main"); @@ -68,6 +108,13 @@ delete [] orig_pixels_; } +void MapMenu::handleTick() +{ + tick_count_++; + if ((tick_count_ % 5) == 0) + show(false); +} + void MapMenu::handleShow() { if (orig_pixels_ == 0) { orig_pixels_ = new uint8[640 * 400]; @@ -84,10 +131,13 @@ data[j] = 255; else data[j] = g_Colours[blk_colours_[i]]; - g_Screen.scale2x(g_blkPositions[i].x, g_blkPositions[i].y, 64, 44, data, 64); + if (cur_blk_ == i) + g_Screen.scale2x(g_blkPositions[i].x, g_blkPositions[i].y, 64, 44, data, 64); } - g_Screen.drawLogo(g_blkPositions[cur_blk_].x - 44, g_blkPositions[cur_blk_].y + 26, g_App.logo(), g_App.logoColour(), true); + int logo_x = g_LogoPositions[cur_blk_].x; + int logo_y = g_LogoPositions[cur_blk_].y; + g_Screen.drawLogo(logo_x, logo_y, g_App.logo(), g_App.logoColour(), true); // Draw box enclosing logo uint8 box[18 * 18]; @@ -100,18 +150,17 @@ box[j * 18] = 252; box[j * 18 + 17] = 252; } - g_Screen.scale2x(g_blkPositions[cur_blk_].x - 46, g_blkPositions[cur_blk_].y + 24, 18, 18, box); + g_Screen.scale2x(logo_x - 2, logo_y - 2, 18, 18, box); // Draw line between country and logobox - int h, w; - for (h = 0; h < 44; h++) { - for (w = 0; w < 64; w++) - if (mapblk_data_[cur_blk_ * 64*44 + h * 64 + w] != 0) - break; - if (w != 64) - break; - } - g_Screen.drawLine(g_blkPositions[cur_blk_].x - 46 + 36, g_blkPositions[cur_blk_].y + 24 + 14, g_blkPositions[cur_blk_].x + w + 20, g_blkPositions[cur_blk_].y + h + 20, 252); + int blk_line_end_x = g_blkLineEndPositions[cur_blk_].x; + int blk_line_end_y = g_blkLineEndPositions[cur_blk_].y; + int blk_line_start_x = g_blkLineStartPositions[cur_blk_].x; + int blk_line_start_y = g_blkLineStartPositions[cur_blk_].y; + g_Screen.drawLine(blk_line_start_x, blk_line_start_y, blk_line_end_x, blk_line_end_y, 252, 5, (tick_count_ / 5) % 10); + g_Screen.drawLine(blk_line_start_x, blk_line_start_y - 1, blk_line_end_x, blk_line_end_y - 1, 252, 5, (tick_count_ / 5) % 10); + g_Screen.drawLine(blk_line_start_x, blk_line_start_y, blk_line_end_x, blk_line_end_y, 4, 5, (tick_count_ / 5) % 10 + 5); + g_Screen.drawLine(blk_line_start_x, blk_line_start_y - 1, blk_line_end_x, blk_line_end_y - 1, 4, 5, (tick_count_ / 5) % 10 + 5); // Draw country info // TODO: Grab countryinfo and display it @@ -144,3 +193,13 @@ void MapMenu::handleOption(Key key) { } + +void MapMenu::handleUnknownKey(Key key) { + if (key == KEY_0) + cur_blk_ = 0; + if (key == KEY_LEFT && cur_blk_ > 0) + cur_blk_--; + if (key == KEY_RIGHT && cur_blk_ < 49) + cur_blk_++; + show(false); +} Index: screen.h =================================================================== RCS file: /cvsroot/freesynd/freesynd/screen.h,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- screen.h 20 Sep 2006 00:08:18 -0000 1.14 +++ screen.h 22 Sep 2006 01:33:56 -0000 1.15 @@ -53,7 +53,7 @@ int numLogos(); void drawLogo(int x, int y, int logo, int colour, bool mini = false); - void drawLine(int x1, int y1, int x2, int y2, uint8 color); + void drawLine(int x1, int y1, int x2, int y2, uint8 color, int skip = 0, int off = 0); }; #define g_Screen Screen::singleton() |