From 83fda8fc5604d0dc87297c519f625b6620ab7830 Mon Sep 17 00:00:00 2001 From: Robert Jordan Date: Fri, 5 Jun 2015 12:38:52 -0400 Subject: [PATCH 1/2] Clear scenery tool now as options Can now choose to clear small scenery, large scenery, and/or footpaths. --- data/language/english_uk.txt | 5 +- resources/g2/14.png | Bin 0 -> 912 bytes resources/g2/15.png | Bin 0 -> 720 bytes resources/g2/16.png | Bin 0 -> 446 bytes resources/g2/17.png | Bin 0 -> 725 bytes src/sprites.h | 3 + src/windows/clear_scenery.c | 39 +++++++++++-- src/world/map.c | 107 +++++++++++++++++++++-------------- src/world/map.h | 4 ++ 9 files changed, 109 insertions(+), 49 deletions(-) create mode 100644 resources/g2/14.png create mode 100644 resources/g2/15.png create mode 100644 resources/g2/16.png create mode 100644 resources/g2/17.png diff --git a/data/language/english_uk.txt b/data/language/english_uk.txt index 2106e1e777..f0c4a29ad1 100644 --- a/data/language/english_uk.txt +++ b/data/language/english_uk.txt @@ -3604,4 +3604,7 @@ STR_5267 :{SMALLFONT}{BLACK}Culture and Units STR_5268 :{SMALLFONT}{BLACK}Audio STR_5269 :{SMALLFONT}{BLACK}Controls STR_5270 :{SMALLFONT}{BLACK}Miscellaneous -STR_5271 :{SMALLFONT}{BLACK}Twitch \ No newline at end of file +STR_5271 :{SMALLFONT}{BLACK}Twitch +STR_5272 :{SMALLFONT}{BLACK}Small Scenery +STR_5273 :{SMALLFONT}{BLACK}Large Scenery +STR_5274 :{SMALLFONT}{BLACK}Footpaths \ No newline at end of file diff --git a/resources/g2/14.png b/resources/g2/14.png new file mode 100644 index 0000000000000000000000000000000000000000..39d0aae67906f2e047c40538ee59aadea4293987 GIT binary patch literal 912 zcmV;B18@9^P)N2bZe?^J zG%heMHD!e|WdHyJ4oO5oR7gv;)R9B0VHC&l{(}pH3&Dlp!XOv~K`;n{U=R#~K@bcE zK@bdr;6gA6g5bg+41!>AAqavCgCGb8LHOMFbJkhgU3f2?J@4N4oZt7H-}AihN-5>P z#?p<|My>30I_3PfRW|p(m%Wol=?`}zHe2=bI3CA!yVr}nA18-ptJSJX7j-h?XT8}h zYmG*+CV*JGT`Sw&dbt@Nl&kyw8K8I33{m+B>h}Aeg5pO4z}L04nKMNwVvg@hC)v39OzGNsxN0|CiU-G0_r0_W+7b zVZ9xm2Sg#LYY=M+W{v0%2GP*(L2nTt3FP=-CqN1lpnwI6Z$_ht?A&wDL^RXy#Cm_- z{Q%@1q(y0uF?A}4vWAeH6i!i%y^OEQ?eg*= zIu!1Kc+1tvRRbPJxSDR^6iJeh0GqA|SP_6i)A$eId4~G#>26GUbMqAWOPg#&-yTQt zY;SY6=}v}@(xSn|?o_z?()t)4Ur&#uiM)^rP&Wf8NL$h(!6Ksq@SA}9a^(8(=`;>O zb$kO*P1@;PECSZI*P>9OQ>1hMS*1JOr~mFdVRF2jj&Xi}gxuWx86XAoyt9a}xyiay z$i^AqJ@P#vE{|0|JIxUP6rjL0fC+RRFI9DlJ_867#2a2k3TMQRBA&7cAb}>}alW+x zf}m!s^PzrTT+9H|uBYE07J&#O+hm)U0B<-T!GsC-#1cU0R`(!8h_lGY%(1g^alf)e m4oHfEe0x$iEP)N2bZe?^J zG%heMHD!e|WdHyIPDw;TR7gv`m7#V5F%U)9Ra77m6$nHHVg&-RqGAOCfk0GLAXZi& z5J)7lA5ekpC-52lq?8-D>1+?Rt=TSwg z=i}6@CTVk6rqlO6&xhkW9Z#FQUUakk-2G+XAn-UDWbkG&ESsWn7|7eEEpX;2$aD9X zVE_Y;&~QG=RmEpiU=-dl!0R(FsiT; z#W*yYJ>|my0V8A;3SnMT8D2*_dB|Xzj87bax@!v1MlyR{QN-+f0;m!Ie%wxPzCj#R z!24EAL91ZRnKC#)fXqL-=bnIB3fFgS*7(4q$QA!v0pME|0O0;0K&j&PvN_*nP3%QJD|&cFd9Oww2Ur3aV-05R8QAJ+;3^Qu_GA>m#HHimcJk4?BR ztBMsEw+}F2A;OK6L37vu7^nwbleKH%T2A6@-v7gb={*3D6WC5R83@Vi7DHpxJW+fQ9!2gkydSe$DtAK5^E3 z*}gS`@!6x5!6t(M_&q{I=*w!AeV=z{__Stws^(8s`s&)WoBw96l@WtLfyMvjx^44X zpV=7u5G4NB%7{S@DS*!!6Rs&hwd3iu_e{IPsHz{*-{XO2QSpQT0000N2bZe?^J zG%heMHD!e|WdHyHJV``BR7gv`l{*f?Knz5EBaT2pNl8h`0Vp^E2VdmGFAR>&QnAvA zjX!U^2}Iu9p53hQF-rPOFtg0^XwoI-?YNGMH&vnXi z1>Q`P+C(ABd49E4^MPMaKv01SaA_U2n$HUSdV)#-Gg!qiRW9(o!8c_?HDRE@o9Ps} zkz!Sq*K78H-~WrcBWJj($_0Ks0YNpZ3^k_lse$X;guuL}s#7x*_|J#jnREv1t04pb z`7UzlG&FKusmlj`|2D0P5d$!3H59qP_um5=DgmitygUQn8=wrx^0V!Z literal 0 HcmV?d00001 diff --git a/resources/g2/17.png b/resources/g2/17.png new file mode 100644 index 0000000000000000000000000000000000000000..8b1554de45d25aeff2cfe90ad2f3af132da2e824 GIT binary patch literal 725 zcmV;`0xJE9P)N2bZe?^J zG%heMHD!e|WdHyIQ%OWYR7gv`l_7T;K@^48MN}XnkP%1(0uixd1p=`Gv7!PIfj~qc zkQE3-MMMQ65)ly*5g8GIK=cPhAdnFi6&3jb)BPTEr?bm8!L;w3d*04t=ezSB!y)-E z(aI9n9$uJwlhmd2Jmk^WtHyPw=(;izlustkZ8q-P;yTn&2*EL8BQRybS;ufY%;+Kj zcZ-E{`(4E(guwL5rtxQ-p3#iwbIW#eKc+9! z+)P5SLBJT^x@@~n);_9dMPU%&oqpdk;GgSt#mM6i-+?yA83V)`Y0Zfx%rN*qomNdM zBk~&si#rfJ)XH%J1x^>to-Fv?YGH;IgF*MqeNI0)GSJ?z6ToQ+=H+~HX>gvAOvv#w zMr2GpK1s&e;kscm?6used+x4_eyAa>5ddxu5Z$8nsj75XbhGF z7KmpIUiN!is|$}mj3{g_;R0i(dMq~UP=DyWMmlOeskewfmiXk{rXTyQWyAqJ{widgets = window_clear_scenery_widgets; - window->enabled_widgets = (1 << WIDX_CLOSE) | (1 << WIDX_INCREMENT) | (1 << WIDX_DECREMENT) | (1 << WIDX_PREVIEW); + window->enabled_widgets = (1 << WIDX_CLOSE) | (1 << WIDX_INCREMENT) | (1 << WIDX_DECREMENT) | (1 << WIDX_PREVIEW) | + (1 << WIDX_SMALL_SCENERY) | (1 << WIDX_LARGE_SCENERY) | (1 << WIDX_FOOTPATH); window_init_scroll_widgets(window); window_push_others_below(window); RCT2_GLOBAL(0x00F1AD62, uint32) = MONEY32_UNDEFINED; + + gClearSmallScenery = true; + gClearLargeScenery = false; + gClearFootpath = false; } /** @@ -164,6 +176,18 @@ static void window_clear_scenery_mouseup() case WIDX_PREVIEW: window_clear_scenery_inputsize(w); break; + case WIDX_SMALL_SCENERY: + gClearSmallScenery ^= 1; + window_invalidate(w); + break; + case WIDX_LARGE_SCENERY: + gClearLargeScenery ^= 1; + window_invalidate(w); + break; + case WIDX_FOOTPATH: + gClearFootpath ^= 1; + window_invalidate(w); + break; } } @@ -220,7 +244,10 @@ static void window_clear_scenery_invalidate() colour_scheme_update(w); // Set the preview image button to be pressed down - w->pressed_widgets |= (1 << WIDX_PREVIEW); + w->pressed_widgets = (1 << WIDX_PREVIEW) | + (gClearSmallScenery ? (1 << WIDX_SMALL_SCENERY) : 0) | + (gClearLargeScenery ? (1 << WIDX_LARGE_SCENERY) : 0) | + (gClearFootpath ? (1 << WIDX_FOOTPATH) : 0); // Update the preview image window_clear_scenery_widgets[WIDX_PREVIEW].image = SPR_LAND_TOOL_SIZE_0 + RCT2_GLOBAL(RCT2_ADDRESS_LAND_TOOL_SIZE, sint16); @@ -242,7 +269,7 @@ static void window_clear_scenery_paint() // Draw cost amount x = (window_clear_scenery_widgets[WIDX_PREVIEW].left + window_clear_scenery_widgets[WIDX_PREVIEW].right) / 2 + w->x; - y = window_clear_scenery_widgets[WIDX_PREVIEW].bottom + w->y + 5; + y = window_clear_scenery_widgets[WIDX_PREVIEW].bottom + w->y + 5 + 27; if (RCT2_GLOBAL(0x00F1AD62, uint32) != MONEY32_UNDEFINED && RCT2_GLOBAL(0x00F1AD62, uint32) != 0) gfx_draw_string_centred(dpi, 986, x, y, 0, (void*)0x00F1AD62); } diff --git a/src/world/map.c b/src/world/map.c index b9852b9eb1..3d507f5b28 100644 --- a/src/world/map.c +++ b/src/world/map.c @@ -49,6 +49,9 @@ rct_xy16 *gMapSelectionTiles = (rct_xy16*)0x009DE596; bool LandPaintMode; bool LandRightsMode; +bool gClearSmallScenery; +bool gClearLargeScenery; +bool gClearFootpath; int _sub_6A876D_save_x; int _sub_6A876D_save_y; @@ -1173,50 +1176,70 @@ restart_from_beginning: type = map_element_get_type(mapElement); switch (type) { case MAP_ELEMENT_TYPE_PATH: -#ifdef CLEAR_SCENERY_REMOVES_PATHS - cost = sub_6A67C0(x, y, mapElement->base_height, flags); - if (cost == MONEY32_UNDEFINED) - return MONEY32_UNDEFINED; + if (gClearFootpath) { + cost = sub_6A67C0(x, y, mapElement->base_height, flags); + if (cost == MONEY32_UNDEFINED) + return MONEY32_UNDEFINED; - totalCost += cost; - if (flags & 1) - goto restart_from_beginning; -#endif + totalCost += cost; + if (flags & 1) + goto restart_from_beginning; + } break; + case MAP_ELEMENT_TYPE_SCENERY: + if (gClearSmallScenery) { + int eax = x * 32; + int ebx = (mapElement->type << 8) | flags; + int ecx = y * 32; + int edx = (mapElement->properties.scenery.type << 8) | (mapElement->base_height); + int esi, edi, ebp; + game_command_remove_scenery(&eax, &ebx, &ecx, &edx, &esi, &edi, &ebp); + cost = ebx; + + if (cost == MONEY32_UNDEFINED) + return MONEY32_UNDEFINED; + + totalCost += cost; + if (flags & 1) + goto restart_from_beginning; + + } break; + case MAP_ELEMENT_TYPE_FENCE: + if (gClearSmallScenery) { + int eax = x * 32; + int ebx = flags; + int ecx = y * 32; + int edx = (mapElement->base_height << 8) | (mapElement->type & MAP_ELEMENT_DIRECTION_MASK); + int esi, edi, ebp; + game_command_remove_fence(&eax, &ebx, &ecx, &edx, &esi, &edi, &ebp); + cost = ebx; + + if (cost == MONEY32_UNDEFINED) + return MONEY32_UNDEFINED; + + totalCost += cost; + if (flags & 1) + goto restart_from_beginning; + + } break; + case MAP_ELEMENT_TYPE_SCENERY_MULTIPLE: + if (gClearLargeScenery) { + int eax = x * 32; + int ebx = flags | ((mapElement->type & MAP_ELEMENT_DIRECTION_MASK) << 8); + int ecx = y * 32; + int edx = mapElement->base_height | ((mapElement->properties.scenerymultiple.type >> 10) << 8); + int esi, edi, ebp; + game_command_remove_large_scenery(&eax, &ebx, &ecx, &edx, &esi, &edi, &ebp); + cost = ebx; + + if (cost == MONEY32_UNDEFINED) + return MONEY32_UNDEFINED; + + totalCost += cost; + if (flags & 1) + goto restart_from_beginning; + + } break; break; - case MAP_ELEMENT_TYPE_SCENERY:{ - int eax = x * 32; - int ebx = (mapElement->type << 8) | flags; - int ecx = y * 32; - int edx = (mapElement->properties.scenery.type << 8) | (mapElement->base_height); - int esi, edi, ebp; - game_command_remove_scenery(&eax, &ebx, &ecx, &edx, &esi, &edi, &ebp); - cost = ebx; - - if (cost == MONEY32_UNDEFINED) - return MONEY32_UNDEFINED; - - totalCost += cost; - if (flags & 1) - goto restart_from_beginning; - - }break; - case MAP_ELEMENT_TYPE_FENCE:{ - int eax = x * 32; - int ebx = flags; - int ecx = y * 32; - int edx = (mapElement->base_height << 8) | (mapElement->type & MAP_ELEMENT_DIRECTION_MASK); - int esi, edi, ebp; - game_command_remove_fence(&eax, &ebx, &ecx, &edx, &esi, &edi, &ebp); - cost = ebx; - - if (cost == MONEY32_UNDEFINED) - return MONEY32_UNDEFINED; - - totalCost += cost; - if (flags & 1) - goto restart_from_beginning; - - }break; } } while (!map_element_is_last_for_tile(mapElement++)); diff --git a/src/world/map.h b/src/world/map.h index 7d9337fa12..f91d8f31fe 100644 --- a/src/world/map.h +++ b/src/world/map.h @@ -246,6 +246,10 @@ extern rct_xy16 *gMapSelectionTiles; extern bool LandPaintMode; // Used in the land rights tool window to either buy land rights or construction rights extern bool LandRightsMode; +// Used in the clear scenery tool +extern bool gClearSmallScenery; +extern bool gClearLargeScenery; +extern bool gClearFootpath; void map_init(int size); void map_update_tile_pointers(); From cf61f68c8680398de0199e38716e4ccef6d6c6c9 Mon Sep 17 00:00:00 2001 From: Robert Jordan Date: Fri, 5 Jun 2015 12:39:40 -0400 Subject: [PATCH 2/2] Removed unused resource --- resources/g2/17.png | Bin 725 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 resources/g2/17.png diff --git a/resources/g2/17.png b/resources/g2/17.png deleted file mode 100644 index 8b1554de45d25aeff2cfe90ad2f3af132da2e824..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 725 zcmV;`0xJE9P)N2bZe?^J zG%heMHD!e|WdHyIQ%OWYR7gv`l_7T;K@^48MN}XnkP%1(0uixd1p=`Gv7!PIfj~qc zkQE3-MMMQ65)ly*5g8GIK=cPhAdnFi6&3jb)BPTEr?bm8!L;w3d*04t=ezSB!y)-E z(aI9n9$uJwlhmd2Jmk^WtHyPw=(;izlustkZ8q-P;yTn&2*EL8BQRybS;ufY%;+Kj zcZ-E{`(4E(guwL5rtxQ-p3#iwbIW#eKc+9! z+)P5SLBJT^x@@~n);_9dMPU%&oqpdk;GgSt#mM6i-+?yA83V)`Y0Zfx%rN*qomNdM zBk~&si#rfJ)XH%J1x^>to-Fv?YGH;IgF*MqeNI0)GSJ?z6ToQ+=H+~HX>gvAOvv#w zMr2GpK1s&e;kscm?6used+x4_eyAa>5ddxu5Z$8nsj75XbhGF z7KmpIUiN!is|$}mj3{g_;R0i(dMq~UP=DyWMmlOeskewfmiXk{rXTyQWyAqJ{