From 60e8b633af0b20057f9dad750226109a358b05e0 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Tue, 23 Apr 2024 20:12:36 +0100 Subject: [PATCH] Add: Road waypoint default graphics --- media/baseset/openttd.grf | Bin 553738 -> 554417 bytes media/baseset/openttd.grf.hash | 2 +- media/baseset/openttd/CMakeLists.txt | 2 ++ media/baseset/openttd/openttd.nfo | 1 + media/baseset/openttd/road_waypoints.nfo | 14 ++++++++++++ media/baseset/openttd/road_waypoints.png | Bin 0 -> 8580 bytes src/newgrf.cpp | 1 + src/table/sprites.h | 10 ++++++++- src/table/station_land.h | 26 +++++++++++++++++------ 9 files changed, 48 insertions(+), 8 deletions(-) create mode 100644 media/baseset/openttd/road_waypoints.nfo create mode 100644 media/baseset/openttd/road_waypoints.png diff --git a/media/baseset/openttd.grf b/media/baseset/openttd.grf index 7f4f6cbc499876021243cd11e7bc33fac4132c52..6cee79959ece163e16291971c1397b1bb5f231b3 100644 GIT binary patch delta 677 zcmZva-)qxQ6vw|=(%7bVcFF96B4a}kDJ=*JJ_++>^9PF5DWiyN(xDx=6*iPjv`vhz zt{YZFJJB(83=t6-GKOz^bGgaDKcRb(pbvZWK}S5dwaUQ27tRUyo_zS6On>cK{@xV_ zdec2ttF}*D$Vz|$AaKq2N?hv8cE?1=(xZdf&Rc^M`O)0S_?Rr-h4w1qCQs zJi~Lm!~$Mp32*Qg@9-WUu#Asb@efMHnz9xywXJn%R(mvR>zd|yzS_3oxwg(c&$D#4 zVd~76Wm9kU*Rb0mi#&H{WVZz1~ zrZJ00cuZhVQ6;n&m?yYbSghvzL-9fpM6@1`SV>K@6OjnPL|xZqc7nSeYw?+Ers_1Q zKQxu&l{2ON5`?>%x{CwkVl(&^EK!%~!AYFPIikv70M{^#8^~h}H!(p_cTga#d$>xUXuC<1j19nVIrsUzM8sIZOW{ GJ--1wdd^D# delta 74 zcmdn^TCwYyq9_A{dyrcbFP9Wod. +// + + -1 * 0 0C "Road waypoints" +//@@LINT OFF + -1 * 3 05 19 04 +//@@LINT ON + -1 sprites/road_waypoints.png 8bpp 10 10 64 40 -5 -22 normal + -1 sprites/road_waypoints.png 8bpp 90 10 64 40 -31 -9 normal + -1 sprites/road_waypoints.png 8bpp 170 10 64 35 -31 -4 normal + -1 sprites/road_waypoints.png 8bpp 240 10 64 35 -57 -17 normal diff --git a/media/baseset/openttd/road_waypoints.png b/media/baseset/openttd/road_waypoints.png new file mode 100644 index 0000000000000000000000000000000000000000..2934cb5b222cab6080b0239016640da9ca3308c3 GIT binary patch literal 8580 zcmeHMeLR!x+rPY2E^+8Aw@t~Y-RwBPK9uHu&59!j}`y` zyype!v~V@7Y|Pw*B1fD7se8qWVltX*&&bs$>v^(o%w9+>ynizZ0+p9Y>)bOtRXX?X zcx0Y_!qdkN?}e|^yhkGQzJ3mwGMkQkIle9UGP8GL$MG-2XY2AP5$1DGo_%h{!YzK` zozzHd8r&MS_25Ut=Hbdt{)2$Sk)CVz^+!fF9uTVLjt*|5ZLx^O^-W;68Fv$XFQZz#n{A@qun93^MdX)f|WUJe6)4u zh~$@){u|7(!I9dDs1M{lFOKehNZs)|4*t?t;zQI2X1vAYUbC#}&y{+2_INgWCpTRj z90}ZRw$i}MH}S(5%*1#m@aQMO7s$G&>;Tdb(ZpErDlSn z@j>Zh@|>>CpA*AsxJ^&aUAezw*`x57<%ZWvTo&C>xv}wJ>wB{_)?jGF9hLQ{%M}Gk zgh%PSxjxpOi1*I25sf8^i#D!nKCq-GsBE3Ibz}EUDSYLQ-gUAmDK7rF`-aDalwuf837-CZo6JM?%F|Cjsqfl0ptDaQ56o0CY{4k7< zmp_;Q(Ma8#)#{Pm(121ME8pyYFkCfMRKk9(PJ2n4h;CrCMTV~0+holIyJe|w&)LKC z`l06)Ve8mij|HrNUG%y}yPP+${+e6Cwd>El>5?)j?itsgdkvf2Y9ySxf}4tHOvF5{ zv$j>iy$#BC9zso|cwT74b&lv3mLwhAl2&-@`CF6HLoOp_)Z+!W$F9#rhiILO>`%$g zIUWARBpB{?S8Wg9i+5HD?h=0HPIirF&KDyB0=ukAy4qhBQWy)w9F9G4S$#05P9@-u zO}tg&PXG4O71BsZy$J!^yZZK;x>+U0rnk&qr8!A#VDs#%I&9`le5Y|P?AYxc%XVFC zX1`tjq}I&L{h4#YNnpZ$l;t%%ymh8U@e%!1V!hum;<$7Jc_JuzOW=5N#4magGS7xO zPzRi}a9W#9q>JUQoei}yo1mBlj@;sw6x$DABdm5^`odo#QUX`_jL!N-$ym9Sh7(&ZENzb$9fVwoLu*N z?R&~iB{)ny4Xbi?8S}uMp!drf8b(t`$Z)fbdmZ}q>`%P0kDn>eFDm7_pUy{@pU=P{ z{P4^X%a4IYCTq^_TfO+SrPjmB3Ez?&r$<-T7I-Sjtz55uwN!e%CM(#-d`0YHZKz+w z!#iQACkRhH(&oMx&Kb`XrPMq7o-Dy>+cufpc3(V@rl50>|Ei<*q>koV#ic%U4xi@! zvPrNjwdBpMw25^NVWmD(n4sG|MoKbai^|JSF2?6U)^L<%qoiGKC_5?=j~BHgRk1mr zzPLk^x4jOO|A5o55{XT@QzSj)YA8cHeM^70#vXF)Xez~6{bpGsXet3%uu}=rk&6C1o?&@n#)tsu5Hq1|7yd0_&`ebKw+mgNN z%kPXNd8#}lcu78;zFD{Ya9*FSN5_4BD$;PaO(b!qX=ZL%NztwI~9V=kF`YhB%!<%W4}c=Uj^ z=IT=&d5_i$ExgvZ9(X6|*?U>JiyuCFxW0-{>OILnHg)>?nGg#F)U>jyXSnKS)W=`ke7UQ(ob=74XE*h{IG=ULA04tT8y^0s^gxlH01Zf=Qg&r%@E zv+m^DjDjq9ktUrj7Z!9?_bHWdY9F=mjl#ib#-)}65&CaDp*S`AQAwFi8;tf_Jia4d zpwxNj*O}3h+gTTnQMSpB>xqp@-IA)aTvzIIX$} z258N%SKTY*X&KxVdvbPo;Gjciuy+%GAAPw-YtZ_fmHjrvELTW`B3%aE@yJKj0lL>R zD+6S^GE8pj5bC6sLRO2aOxwMRt*|%( z{z(i}_tY&0^4AdGqv>NwYkl|o+&K|&HbU}KqDeqmN`>xA0U@N9(t9*bX)=DhT>j-O zRP_jd(ePpSep@MnG?zY?JUQX<8sPA%&Hg@Wmu%I5uc*WH{Cf_fyD#ik8V%~xIa*~I z&L&?v;1}*v(_MtLIn#XU98Gln#ay;^zL=rgTG-R$h$^M?V!tXUT4P2B_Ekf*+>uwZ ze4AYSYvE$BPG{SS;?s;|hny zKjUd6Z?DlzSZJV8jl8VrzI&Cd0vW?Xb;7o$7tgXA^nDBc2~~IBgxZ$aj0&t4kxK49*c|A2M`@L_X!#mzy!DDE-zDoysu)2^ z*8$TN@I5MHO2`s%x}5#}k)1+c1YXY*!FWE}lX9)K{NuHQ+*2hM8b_rMT8LE6 zu2xtR?e{5bSf?YnxGTBwNYb>!@k}-mg(?jlyc#hRI34`aJPoN$=duV zxm~JIMrt6lch`!!y<$2KLtm{8cHjqRLvu=UYc#A(veBli?0uB>SJtSsaCWsSs4NR% zm}?kjRjsOrjM#MW`>=VZbKMOS+#k3eHM{iGyAMU$9_niOkz8E20S#YeLc6$#9+rJQ zGf?;S#6*%rgO6iHDQ?5AwP*HSBuiOZ$ZTm5)Sh)Y|1^PSkk_5EQ{(xSGvn_rSy+`W zW6d3kR_GYeesD^pHefiFD|@R({o}Mu{N&*NNZ(pNxz~}z{)91tCh`D7btQDve$ZFJ&k{KMWtpi`e{j6(sXZn-5CW3cHms82sD1+J4fitN+VuEc0JoKxwrk*=Cy{N=BOZMzrmg7^r z!%f6xy~5xTi<0sqi%-z=U9X;r%8l07cuc~DGhGd`soDM=ZPMq}3QwvDsjtj@J5CHZ z&5XukS)&cJav$1bEYKMdpTN^E^-qtzG!~aUf9y4jN6PXM(qdC(d$lyf-G(^CN6m+# z=cIJ4Lp`svuYBBHb=bw|RchVoR@ZK;YSz295%H}e>#Rk*uc&`gys0vB!NEmtrk`Ok z?y%DMZq^eu@ZcRov$iJMTU-Bj&Ia8GqK=x`RS^~UJG-8Tu2`aL7gk3+r56{E30@IT zRBu~afJ-l%l*>SC>gXTd8*=a7nfn*_B@`FR7Vd>ii}ellpBsX%?LMyPRn6;tZ{B!& z@LhKlzd0At@K$vR`h`*JgP8P&g7~w)ip%fkLl#p5R5-~gdzn!$T#cV>6$E~sn)Qqd z?)JyyHBVDxY0H`N&dleF2c!BVbRVpLkA0tRzfyB||E<3Fs|K?ki8dvspO`cai}BD4 zFM510pAuZ{T8-S&se&6&BxSFUe#ShliV-*Zny2r z6tTsO=x#$MqktnY2UIe)yj_gJh}$Nll#fk}oo>82+u54&Qf}f3o7)9@&@Or)*4uvd0xFKdx z4<{nTn#ra@(E4b71k8p<3paq8FNK)0DFHYag6($-uw@1f;&NFyI6NXELO%kf&twO} zkytDijxc~57{EXTjI)EmCGlVkj>bI2Hx2@oLuP|=rZE|ic}|i)b34}z3I)d@-^u62 zZo>mRzdM+3FVJ(i6u3RuK!fuE0dNBZ0s})BzznePpY6d>C#N6Q49@o~g878=NGv!~ z9{~>y{euOEYZLyvzdyC$xPgzKa2G0vxt&d>+JsXXT#cWdvgq46Kl|Lyq0VvvJpXL7!QP4Z!)88>fwWN8g2g=gXC#IE1IOCVrY~S9WH^;h4Fv|Y}8HT2yDKHYnAOME( zH!wzEji@Ay0r@8?dj^L~VvwoxR3N!N4dgLGAkkk(Y8Dn7>3KHRu z!jKG+SoBX6&TJYeZ4&+GsOG6CAQi@d{{9AF zKt>Bx^NGb-679{P2KtEKdx&%rH-O0wHG?|R7~6Tj54h1nsjghoeA2)uQAi_{AqHiH zz#tK*-$CwFHV0JgJSP&NkHjpDP{=r2kdXwchZaf-q{3N@z=Z)YW}G#fO5!rvZcHZK z3_2eZWZrb479ghIRgQCHl1cN`umGk~<_qO}saTN$;R{Vu_+Nql8 zgT<1~jbO4voY~I)!BjH$uX+9q{Da8_+@v^M_73}hGpYZAGyNt@JJ6QN-tm)vS8CX| z*0-I6PFqM71hP=QI1+h2i)K&`DV$1KSOPGQ--gIRBt{?=+$O)*$Z!3$KandIjW#wk z#-d>u1eFA83~dDS$B+;(3WkCqQ8B0hs?j&O{$S@Y1Go_+Hq|l^EFy57!4g_nXNdNK z%5?r1OGFSA3{n??z#$OOZ_E3Ax&JfsF+`Cmr~niOoR1L-h9(=M!1++nFe4Pgc)sP2 zCI|d6!vFhxOyTo8`)|u-I=}ZhIpKa@P}BLn5obSNF|ONLEIN(K{^LUbCj9>a_mlni zBKvpdKf}IRTQgZZz|AIz>m0%OOZR^Q{Knu&BU2e1=3j;WGvr%Ze!2mIF@Ng=Z>->b z8vf%({axnsJHdbO^SyljgC0QYf1LcS{Qi@!f7120GVr&+|ETMqbp5Ri{4MZ5>iU06 z*V5k~^{EW-;2Hrw$hW^Cl>mSkKy-Ao0f4zNU~C*1e+RsK54`^Xe3$?xCV|P1z{gL( zr`+7!($dnpy1MrE_MxF6p-_l6wIewCc=)mC+?bfebU`Ng3Z}ZgxeK8ujyIJiIx714 zsPTCCloU!)QA~Y(E`>tja=Af7y~rTD^cbJgOkP`A%4AnjOiYZ2xI9Z95(hzNVjRod z==DL7T`@@`f^)*M3Sl!K95NLO`HtFvpQ!}bLoJSr5yTOT1oY~XID#_Zrzg%QNC^Do zOL@v|0?1IQys!-rPVSCnv5lc(#c@iE#dc9>ir$5OgSHJ{#=!k0h;@^}D3 z6i4`p<5|*fF^WMcYW!S1JRYw{fS7t9h(V@7k&gTnpY$SnNqwX|S{Y)ehw-y>oofr4ZG`DcXuWjCP_UK9k~C8W*RjO+cXC@OTQ5$fZ!?Vq(ta=U23~^&k)k zyk3$AK0nB@n&;7z7$nS$6PD!)0cAR%83Uj*0lQMbuT7cPg-IIn$bHAJ7MAr03}c}5S{~s72w--Kqv(2<0Sf% z#DxMtScDK(Q-tm563QOZnn8-_NHs#Dw$C{XugosJos!?5{IIn6h?{^n7`F`FX(;SekZRZAYFSF%sd%x1%IcVshIjg?{{V1iwT_WeK{Ta*`do zi0<|{c{doM&gMXDO14IG%)=c`1}R< zG6T#A0pTn#`xW>)2aeCp9Z`F@0RaDb>A!IU0f<|)+74_;vg|xL0HCii{}bVzw+IJ2 zmvHT!Y?cg&sERJvt$3bU2X=k1Cs?}io{x66$m~N%+iad&r#W-E4MVyR&W94#z@Q(a z#5{)TDyyNNG`*xn`;)9?v3u3nb?Pg(Hf|ayn1l^Sjpiju=^RI~vjlJ{wnO>jG7YT< zH%-{df)z(6^u;))tMGM+Fu>zd;TI{;&@EI1vMnA*Hp^nBb z7~Orw*-U-6?o^QZKEaDCgI-5pn|tn=?cLPA<))xk0v33+3x{LJ`>3?+D!j-J8IlaM zZA`Kr^SY_(TL_7Ge{c=9zc7t#RbNE4lEs3N9-fOi3WnQXYG1iptzQBR`hXg{pXcj1 WLQ7mV82%NUJz#IMiBM?exA$MWOv)qx literal 0 HcmV?d00001 diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 68396cdbca..6c6135bef9 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -6426,6 +6426,7 @@ static constexpr auto _action5_types = std::to_array({ /* 0x16 */ { A5BLOCK_ALLOW_OFFSET, SPR_AIRPORT_PREVIEW_BASE, 1, SPR_AIRPORT_PREVIEW_COUNT, "Airport preview graphics" }, /* 0x17 */ { A5BLOCK_ALLOW_OFFSET, SPR_RAILTYPE_TUNNEL_BASE, 1, RAILTYPE_TUNNEL_BASE_COUNT, "Railtype tunnel base" }, /* 0x18 */ { A5BLOCK_ALLOW_OFFSET, SPR_PALETTE_BASE, 1, PALETTE_SPRITE_COUNT, "Palette" }, + /* 0x19 */ { A5BLOCK_ALLOW_OFFSET, SPR_ROAD_WAYPOINTS_BASE, 1, ROAD_WAYPOINTS_SPRITE_COUNT, "Road waypoints" }, }); /** diff --git a/src/table/sprites.h b/src/table/sprites.h index ea522724b5..0ab4f1bc99 100644 --- a/src/table/sprites.h +++ b/src/table/sprites.h @@ -307,8 +307,16 @@ static const uint16_t EMPTY_BOUNDING_BOX_SPRITE_COUNT = 1; static const SpriteID SPR_PALETTE_BASE = SPR_EMPTY_BOUNDING_BOX + EMPTY_BOUNDING_BOX_SPRITE_COUNT; static const uint16_t PALETTE_SPRITE_COUNT = 1; +/** Road waypoint sprites. */ +static const SpriteID SPR_ROAD_WAYPOINTS_BASE = SPR_PALETTE_BASE + PALETTE_SPRITE_COUNT; +static const SpriteID SPR_ROAD_WAYPOINT_Y_W = SPR_ROAD_WAYPOINTS_BASE; +static const SpriteID SPR_ROAD_WAYPOINT_Y_E = SPR_ROAD_WAYPOINTS_BASE + 1; +static const SpriteID SPR_ROAD_WAYPOINT_X_W = SPR_ROAD_WAYPOINTS_BASE + 2; +static const SpriteID SPR_ROAD_WAYPOINT_X_E = SPR_ROAD_WAYPOINTS_BASE + 3; +static const uint16_t ROAD_WAYPOINTS_SPRITE_COUNT = 4; + /* From where can we start putting NewGRFs? */ -static const SpriteID SPR_NEWGRFS_BASE = SPR_PALETTE_BASE + PALETTE_SPRITE_COUNT; +static const SpriteID SPR_NEWGRFS_BASE = SPR_ROAD_WAYPOINTS_BASE + ROAD_WAYPOINTS_SPRITE_COUNT; /* Manager face sprites */ static const SpriteID SPR_GRADIENT = 874; // background gradient behind manager face diff --git a/src/table/station_land.h b/src/table/station_land.h index b67fbd94fe..fc47de8d77 100644 --- a/src/table/station_land.h +++ b/src/table/station_land.h @@ -763,6 +763,20 @@ static const DrawTileSeqStruct _station_display_datas_0171[] = { TILE_SEQ_END() }; +/* road waypoint X */ +static const DrawTileSeqStruct _station_display_datas_road_waypoint_X[] = { + TILE_SEQ_LINE( 0, 0, 0, 16, 3, 16, SPR_ROAD_WAYPOINT_X_W | (1U << PALETTE_MODIFIER_COLOUR)) + TILE_SEQ_LINE( 0, 13, 0, 16, 3, 16, SPR_ROAD_WAYPOINT_X_E | (1U << PALETTE_MODIFIER_COLOUR)) + TILE_SEQ_END() +}; + +/* road waypoint Y */ +static const DrawTileSeqStruct _station_display_datas_road_waypoint_Y[] = { + TILE_SEQ_LINE(13, 0, 0, 3, 16, 16, SPR_ROAD_WAYPOINT_Y_W | (1U << PALETTE_MODIFIER_COLOUR)) + TILE_SEQ_LINE( 0, 0, 0, 3, 16, 16, SPR_ROAD_WAYPOINT_Y_E | (1U << PALETTE_MODIFIER_COLOUR)) + TILE_SEQ_END() +}; + static const DrawTileSeqStruct _station_display_datas_waypoint_X[] = { TILE_SEQ_LINE( 0, 0, 0, 16, 5, 23, SPR_WAYPOINT_X_1 | (1U << PALETTE_MODIFIER_COLOUR)) TILE_SEQ_LINE( 0, 11, 0, 16, 5, 23, SPR_WAYPOINT_X_2 | (1U << PALETTE_MODIFIER_COLOUR)) @@ -956,12 +970,12 @@ static const DrawTileSprites _station_display_datas_bus[] = { }; static const DrawTileSprites _station_display_datas_road_waypoint[] = { - TILE_SPRITE_LINE(SPR_BUS_STOP_NE_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_71) - TILE_SPRITE_LINE(SPR_BUS_STOP_SE_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_72) - TILE_SPRITE_LINE(SPR_BUS_STOP_SW_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_73) - TILE_SPRITE_LINE(SPR_BUS_STOP_NW_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_74) - TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_X, _station_display_datas_0170) - TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_Y, _station_display_datas_0171) + TILE_SPRITE_LINE(0, nullptr) + TILE_SPRITE_LINE(0, nullptr) + TILE_SPRITE_LINE(0, nullptr) + TILE_SPRITE_LINE(0, nullptr) + TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_X, _station_display_datas_road_waypoint_X) + TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_Y, _station_display_datas_road_waypoint_Y) }; static const DrawTileSprites _station_display_datas_oilrig[] = {