From 827b1ced12e5f2e458950cdda5663e6d4242dc4e Mon Sep 17 00:00:00 2001 From: Trevor Finney <8711258+finneyt@users.noreply.github.com> Date: Sun, 19 Feb 2023 16:47:22 -0500 Subject: [PATCH] Setup for extended palette --- data/language/en-GB.txt | 25 ++++ .../g2/palette_map/palette_map_aqua_dark.png | Bin 0 -> 608 bytes .../palette_map_bordeaux_red_dark.png | Bin 0 -> 615 bytes .../palette_map_bordeaux_red_light.png | Bin 0 -> 605 bytes .../palette_map_dark_olive_dark.png | Bin 0 -> 617 bytes .../palette_map_dark_olive_light.png | Bin 0 -> 616 bytes .../palette_map_dull_brown_dark.png | Bin 0 -> 617 bytes .../palette_map_dull_brown_light.png | Bin 0 -> 609 bytes .../palette_map_dull_green_dark.png | Bin 0 -> 618 bytes .../palette_map_dull_green_light.png | Bin 0 -> 614 bytes .../palette_map_dull_purple_light.png | Bin 0 -> 612 bytes .../palette_map_grass_green_dark.png | Bin 0 -> 609 bytes .../palette_map_grass_green_light.png | Bin 0 -> 615 bytes .../g2/palette_map/palette_map_invisible.png | Bin 0 -> 602 bytes .../palette_map/palette_map_magenta_light.png | Bin 0 -> 607 bytes .../g2/palette_map/palette_map_olive_dark.png | Bin 0 -> 608 bytes .../palette_map/palette_map_olive_light.png | Bin 0 -> 611 bytes .../palette_map/palette_map_orange_light.png | Bin 0 -> 607 bytes .../palette_map_saturated_brown_light.png | Bin 0 -> 614 bytes .../palette_map_saturated_green_light.png | Bin 0 -> 609 bytes .../palette_map_saturated_purple_dark.png | Bin 0 -> 609 bytes .../palette_map_saturated_purple_light.png | Bin 0 -> 609 bytes .../g2/palette_map/palette_map_tan_dark.png | Bin 0 -> 620 bytes .../g2/palette_map/palette_map_tan_light.png | Bin 0 -> 608 bytes resources/g2/palette_map/palette_map_void.png | Bin 0 -> 608 bytes resources/g2/sprites.json | 72 +++++++++++ .../drawing/engines/opengl/TextureCache.cpp | 14 ++- src/openrct2-ui/input/MouseInput.cpp | 24 ++++ src/openrct2-ui/windows/Dropdown.cpp | 4 +- src/openrct2/drawing/Drawing.cpp | 114 +++++++++++++++++- src/openrct2/drawing/Drawing.h | 26 ++++ src/openrct2/drawing/ImageId.hpp | 8 +- src/openrct2/interface/Colour.cpp | 26 +++- src/openrct2/interface/Colour.h | 31 ++++- src/openrct2/localisation/StringIds.h | 25 ++++ src/openrct2/sprites.h | 29 ++++- 36 files changed, 386 insertions(+), 12 deletions(-) create mode 100644 resources/g2/palette_map/palette_map_aqua_dark.png create mode 100644 resources/g2/palette_map/palette_map_bordeaux_red_dark.png create mode 100644 resources/g2/palette_map/palette_map_bordeaux_red_light.png create mode 100644 resources/g2/palette_map/palette_map_dark_olive_dark.png create mode 100644 resources/g2/palette_map/palette_map_dark_olive_light.png create mode 100644 resources/g2/palette_map/palette_map_dull_brown_dark.png create mode 100644 resources/g2/palette_map/palette_map_dull_brown_light.png create mode 100644 resources/g2/palette_map/palette_map_dull_green_dark.png create mode 100644 resources/g2/palette_map/palette_map_dull_green_light.png create mode 100644 resources/g2/palette_map/palette_map_dull_purple_light.png create mode 100644 resources/g2/palette_map/palette_map_grass_green_dark.png create mode 100644 resources/g2/palette_map/palette_map_grass_green_light.png create mode 100644 resources/g2/palette_map/palette_map_invisible.png create mode 100644 resources/g2/palette_map/palette_map_magenta_light.png create mode 100644 resources/g2/palette_map/palette_map_olive_dark.png create mode 100644 resources/g2/palette_map/palette_map_olive_light.png create mode 100644 resources/g2/palette_map/palette_map_orange_light.png create mode 100644 resources/g2/palette_map/palette_map_saturated_brown_light.png create mode 100644 resources/g2/palette_map/palette_map_saturated_green_light.png create mode 100644 resources/g2/palette_map/palette_map_saturated_purple_dark.png create mode 100644 resources/g2/palette_map/palette_map_saturated_purple_light.png create mode 100644 resources/g2/palette_map/palette_map_tan_dark.png create mode 100644 resources/g2/palette_map/palette_map_tan_light.png create mode 100644 resources/g2/palette_map/palette_map_void.png diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index 2838b84003..dbe35ec22c 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -3653,6 +3653,31 @@ STR_6548 :Show railings at junction STR_6549 :Compatibility objects cannot be selected! STR_6550 :This entry is included for backwards compatibility with old or damaged objects. It cannot be selected, only deselected. +STR_6551 :Army green +STR_6552 :Honeydew +STR_6553 :Tan +STR_6554 :Maroon +STR_6555 :Coral Pink +STR_6556 :Forest green +STR_6557 :Chartreuse +STR_6558 :Hunter green +STR_6559 :Celadon +STR_6560 :Lime green +STR_6561 :Sepia +STR_6562 :Peach +STR_6563 :Lilac +STR_6564 :Viridian +STR_6565 :Seafoam green +STR_6566 :Violet +STR_6567 :Lavender +STR_6568 :Pastel orange +STR_6569 :Deep water +STR_6570 :Pastel pink +STR_6571 :Umber +STR_6572 :Beige +STR_6573 :Invisible +STR_6574 :Void + ############# # Scenarios # ################ diff --git a/resources/g2/palette_map/palette_map_aqua_dark.png b/resources/g2/palette_map/palette_map_aqua_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..098781adbd2d8f181cb6f0304c04844c929be7d9 GIT binary patch literal 608 zcmV-m0-ybfP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TZLgTqckQ@GImk9LOW& zt&(q~J>zs<_?SI*H2UYCxs_h|oL^l04Kd1yFJdxMQps6)iN?pPQ-vUMPRRAdu$&2y z6qB7L#?1Mw`|Ulyow9uo-9vq9M@UQkRBNL=e3B2YY414n^!Kjqh-vitx_j#17u~IP4$6o; z5(0gI^}OD`mqViA8|ZrW6dh1vp~s>cM?KD;m8jkPhVtUw<7H?hc|7&_8P^ZoS-H>d zJ$g;FUd?+jO{H|s<^z6B8pyR8ZC2#w%1q4DjJMgTCa(!EHk&Ai2H$$_vo(7Cz6+V5 z6y{ZlhtnSl1KRwOYyK~~Q{o*h2_1O~Dsb~=rOdn->;DWrYWqQ&neE!x==SEVD*HAX ze!iq|z-HR#WVItT6EiW7GK*_Fmm5Xz?)Lh#|AlBYgWrE)|L|%da;H7^-!eZ< u*GymEcDv`j`T6^)<+SG&y?wvDT>S&?h(iK;u)mW40000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TZLgT&76l&OayV(-`uv zl5eCvbLlMj7#%wrJ-wOh^u~35aq-uOAR`>bXvCxh0i;~^?U zJ4+0S^GOez2Y&ZT_T7_ju($f2x}KT=e9W9Jx|y%Y6?YngQYK~xz4GYfGavj)a?r0e zc2}BtM;HbLXZ7tK>Qg&FT=z8@O9gsujjaem(dYrwK3C>!2PDuD-eT)@b$HEF_we z=~p4{Pk+b{Xmd-h`M>Cnkv&=>I@08o;rd;tM89b3{|qf^^GTZN?aEl|=K8$~^EMi8 zp|=C)zzG`=v{dl4yM5-pB%#9?&|BvK?U|T~g*Y)2Bka4Z2}SXQzM7w|F*1v>Wc6t8 zixF#_F3*?&>uKwg)eh8*^u#<$46e;ws$_k*-RaNn7oyP&Zga`{}9X*s@u-bv*C&H_`65_4VbY`v=-cLjneGEy@4@002ovPDHLkV1fvu BBuM}O literal 0 HcmV?d00001 diff --git a/resources/g2/palette_map/palette_map_bordeaux_red_light.png b/resources/g2/palette_map/palette_map_bordeaux_red_light.png new file mode 100644 index 0000000000000000000000000000000000000000..418efefd61c3e72ac9fa57f38a51a580dc0b12f6 GIT binary patch literal 605 zcmV-j0;2tiP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TZLgT&Bna+~XwgkcSE+ z-$;ALsgi|{*<(kefBu;p^qjNJ@MNq+xI}e!MoKD)D6^(5K`f6)x+wJTydu{Di>n$;8Z5BQ1}qmk_WfZ zG~8)LA8{NNz16pSs88((X{n!TZItJa^1(Ij9fzL&-nE@Ejb2~&-~0DPcdMO)G9u4} zKp$W|uXkHHBpSYft`|?y0VNiCEUIzRY4u5o+Rbk$uiiaghDMUdQ;(l<{mh+}`|RGc z*F@{pya&@%O6O{I#IIQ+xmKgiirie8iFumwHapeiHRHu*6Xnq0ThD#AMz7y@Av2W1 zyejc{`AuO&n_qIx|3!C7yrU(dBhNtv?%xc`%!{%9&Df)M@1+&9T^k!c+`m<2-zLK^ zI6H6+oUjE!O9M}b#}oaMgbrgwZ`%X37h)k+;>=D=a2$$e6r~I1YJU38#4e^<bX`hqTj?_%d#5~F@uI*fI6uo;q=;z@FqR|Zg@R|L?tA)s&_Sk>R{4`xF r`ue)xzwFJg)9IhPZO=Il+wJfN2OmQMQ5<+%00000NkvXXu0mjf)IuAT literal 0 HcmV?d00001 diff --git a/resources/g2/palette_map/palette_map_dark_olive_dark.png b/resources/g2/palette_map/palette_map_dark_olive_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..cf09089be5b86f52c4e36240faa93456d285ec23 GIT binary patch literal 617 zcmV-v0+#)WP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!Tua1^5vqjE}0OEf-QoyvQ$=Y+kE=$A7d zqC&K@#E>|jbicXhy;rjDp8W>Tmfw@tlQV#inX^T=^EG?LoyMS)iP=G~JUaQz2fvaW z^lOdXwPxxF!=T_SzuiNAatDY@{#Z&SKYo<+ebwIR(bJxrwgaZo>0$fazAw6K?&Osa zdBA(>0IPYmd8ZzUhO40K#Zz=Z4w)LWN*MJte^MlO^&9fhv%^bYiE?=A@H4C)xwCMe z-FxtwXtkR6V48AnoXvaunl!N2a@1b2Hx+tfo+i9ay-IYN@M66V>e1k8&8@da%im@p z(UeTT3UPn>U4B5DTlSj&i|!bCMoUCTn!GaHyy=wa7j1pb(4sc)rJ3HYjJ0lWE>)Pf z(QpgB9XJP0*nps=f~Vcx6ZNtQ9mas(ItOUa#7r#2iJ2H--(^iGiYN5d{B(_xS&SvC zM|)q4SmShc#tc|bTc0d+Ri6zjr?ojb?DW&&(fQEd=hgW&f7> zX}V_W`nKJ^%*~(YA9ar{E6djL|7Yv)58C?rPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!Txp5x z6Cf!jyGx9j`&oC}JAON5`yM!Nu($kyyn&n%LMq&?x|y#yE8a9lD4TJon_8|D6;d~i*B$Dyb1yS5{y(d*OhTmQc3Zn<+% zM&ywYr~|C#_4c(K5)I!#*Q2NCfD#Ke7S*`Y!~8*s+|6$&Pxc-!LnF!KsmIT_zUR%# zd-m?pYogU^-h*i>rE@kP@N3e@SPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TD&hLAjun~ z$Xg}fNPFhoMes2?b~O6+&s?YfT;~@Te|-ot!cmMyjLIn~Ezx*)bt>;g&I!4W=$A7d zqC&K@#E>|jbicXhcdumMJ^2QEtM94nsTsh>%-N#b`I=mDr!gpHVs_9gk4`@G!LK9- z{aRypt(kX(VNh^Z-|nG4wFAVZek`SuAK%OQzG`pu=xO_=?SN@?df5JK-xuArcJfMy zJm5X=0DJRl^F}=q4Oce1lpn_F*?c zqA8hv72^K%i~N8#x8$1ti|!cNqa~svOi#7vB^@3JNo#S{8!e!9lUEXI=6 zqrERitZ}+JV+O3Jtxr}vP&3jK^C&U6HglPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!Ttq%Fg9U(3GQ>~5i@KHXvroH3P)AwE53DfBHW&hN_FS=Xq9F!4x zA_U$6_U6s*og5Mk-$2*1r|5tZ3vVo{anj@ZlM=a`-%wucJzj=JlE+hzpK&YJ&=?v&W0C7~nFK?QDJ4a)S3w*Jl7qjvA5HND*!TixEgQDxpH z!!J0yZ~@$~0YOUxPlvll-pe6$7$bVy9H6}r3$YSsW@3WlP&A_`ozYkG(|0CjG1Vf6 zc2|wm;(T?^3|LQlpDcGIXQC(OQD$&$=5nLx?cG5?4?hr%X7Gp4%pYDYL~7cy|Cae_ vy4Jkw>wf<{H@}{~|Ff1Yt7mIiy&nDm79T?bQr$v600000NkvXXu0mjfSMLPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TbXvCxh0i z;~^?UJ4+0S^GWxcdw%yy_T7_ju($f2x}KT=e9W9Jx}C4d6?YngQYK~xz4GYfGavj) za?r0ecGsGDM;HbLXZ7tK>Qg&FTU27+= zgvbNl^A4~#uQqSgBhhdbbUk~D4#*+%#;g)XJrwK3C>!2PDuD-eT)@b$H zEF_we=~p4{Prt|yXmd-h`M>Cnkv&=>I@08o;pSDRM89b3ONJJ;c`MEIc4e$}dvmG6 zyp4ui=UK;LQy=SujZ#~jLc#z zSv}hOV#FG!t21W6dfNJAwF5OHJu#0GgKIOFDp{}ZcKWmXjc7E3+kIsI@M=3Sq++vmCY{^M)Sv1Prnb=)6YhaTDb`RQBt58m)Y0w{NN=Kufz07*qoM6N<$ Eg4B8*9smFU literal 0 HcmV?d00001 diff --git a/resources/g2/palette_map/palette_map_dull_green_light.png b/resources/g2/palette_map/palette_map_dull_green_light.png new file mode 100644 index 0000000000000000000000000000000000000000..1dd93c9a48dd449e7b16d24d103b9303cf2cd96e GIT binary patch literal 614 zcmV-s0-61ZP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!Tb3l~>h;W9-Yz>kqfaNZ$B z-YNM;+A|Kgh~Q&%>}d4spSe!|xz5hd|M(DOgcmUyF)F8|v_#|c#Y*0boD*^#(JyB_ zM1^Q)i6L=5>27<+?_SBid-4tTR^LTD#XL;yZnGQx8$1ti|!cNqa~svOkI*b9mbq>&;iJ4f46EiWwq05?36i?`@`RN)XvlvTO zkM_P8vBv4*lo_y|wmw)USkJU36jf3$q_7hdayEjw@P{pxM^7Yy%10*|)G761SM07*qoM6N<$f?dla AYXATM literal 0 HcmV?d00001 diff --git a/resources/g2/palette_map/palette_map_dull_purple_light.png b/resources/g2/palette_map/palette_map_dull_purple_light.png new file mode 100644 index 0000000000000000000000000000000000000000..e062e82cc3ed813b2a7633238757cd57e5feff1e GIT binary patch literal 612 zcmV-q0-ODbP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TZLgT&Bna_;Hdh50Eks zl6OeHk@k$!1TTEd9y=QS^UvI%7d{u4mw!TxGUBtCjFePzR$ij<{_0#Ih@3NWJuxh2 z0wl#`XNfU$KI?vW&u^z}-vjvu?^ZuhH&8P|NQJXix9e+i#hu2eT!_VkQ<=O%;X~L+ z9^6*baIH0c#Bo&gR^RTSKD8sHrGBclQ64_X2iLTB9D4eD*LK1*dVSu1>)#jMt#%H| zh&&MjeSr16*}auRqTw6pdh!$hUvf9=Nk| zpWS=%nrOY6_h6bz>8#dA{F*hAYc<-e$jz0Rn5P+Uvr|o8GhS@BQ4S5h_1tG`^!j}l zGD9iMs}hgrUlm5Q`6buPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TUbZxJ;1;@B`!}(k0+W z$Xg}fNPEWVyznu5>}d4QKXWU+@HxM@_#0xB5ue3mq@_O%xB7v)ftnFQDx9slnXkwdcN&9oAr=o#W%LS#4`D5N za2t)QE6wx~he6R>eY=PH)Q*sr`l;4Nx&J61T+`lh=;`lW+Y!^~^=0>~e_wRB+BqmA z@<<5u0oL<+`&JH#hHs$j$y0PdiG?1EY8>@2e^R1$^Bc;ucaN8$k>v5z<7Zsob7$o~ zyZ7id(RwxS!8Dc9IhzmoHEAH%YP4CAn=3OhPcz zX!r$Z2hM>LwjgL};OXl2fqqFshcTeH?E%^gu@Eb9Vkbs8tcoTSr4#0Ae)`VHE~Z-K z(C(^{TAVJ=*a4eqpOe*&)J)98JjyJt?ObjYy}8}%&;B=}(F}h7nf=47g~*-u*ni9X vG+i@&ecSDx_U7^NN6WG2CA<6e!_U<}>QF-h(uk8W00000NkvXXu0mjfE}tV4 literal 0 HcmV?d00001 diff --git a/resources/g2/palette_map/palette_map_grass_green_light.png b/resources/g2/palette_map/palette_map_grass_green_light.png new file mode 100644 index 0000000000000000000000000000000000000000..c756b835dd8d23f2e85c5428f2074dbb1de3d395 GIT binary patch literal 615 zcmV-t0+{`YP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TAsp?H#|JvV9MnH`rVLK;A&k2q6{jR^7~3oE2{xgK{Aj4^CzD3WX10 zEqQPojjJoo)Dee4(OZ6dhy3J@ke2+Z)<(I1Cm&qX-f`&Z`>ySXY4rNI`_{iNx?AoX zlo5F(1nK~*dA)rlheX3S(DmpkI-tZtjYTz%dYIoUk-PZ~<;mXTWoRUMJoWe)*Y~_x zdC%TGdQG%i&3iCSrF72b1Aa{!IBPjtuQ;14Juy!+-e#woye7QZY@!?*e5<+l*68{B zEM%He=vO5kPCqLQX!FZi^MBEu5__~HbmS?h!1c40GX0{he>3!`?Q3bKw`*ggo9h>< z%-d-A1!ot|fg3g;XldZ->h^(pIfM>lKyRA^v=?F_R^r4=jBr>LO(;qy^ws?Iosn5g zwaB5}RU@@HU7j%m*3;f6%N@y?=!toh8C;vW+$ef^yVsBXcSNHZ{Qd*;hgS=cH*MK} z%ltH5Gj)C1?H=dm=dZ7AKL0hVwrpN)y?y>=^#=kULjrM60^9%q002ovPDHLkV1jpU B77zdc literal 0 HcmV?d00001 diff --git a/resources/g2/palette_map/palette_map_invisible.png b/resources/g2/palette_map/palette_map_invisible.png new file mode 100644 index 0000000000000000000000000000000000000000..1c1a31c14450ac352cd4f82bf3af060b822bf73c GIT binary patch literal 602 zcmV-g0;TPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TjW1WH3PI$Ykn4$IITIi$ zCOb=vne$l>+XsF-W&0k;H+Z-Dfx3a35ke}Qt-77B$rX1RgK{Aj4^CzD3WX10EqQPo zjjLO}I_pa@TY4m#B{p#Nr-K};G%7{D? z0)2q>yxxA2L!#ju=z8@O9Z+JS$D$fXz06;gsNMXA^5)&+WoRUMJoWe)*H7G8xzFxB zdQG%m&3iCSrF72b1Aa{!$h8`6R^;Z&Ow7}ax7n#CuL& ormye2-Rs``e13lS|G7WXKev!T0vcTFd;kCd07*qoM6N<$f*uPONdN!< literal 0 HcmV?d00001 diff --git a/resources/g2/palette_map/palette_map_magenta_light.png b/resources/g2/palette_map/palette_map_magenta_light.png new file mode 100644 index 0000000000000000000000000000000000000000..e506905c5b5bf0b7e85aa260736bc6d6bd5df382 GIT binary patch literal 607 zcmV-l0-*hgP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TOX+)A+RZ_@95~2L0!{xV-!wVw4eI#bl(UlC$y>jStu73PGGXp+_KrhO-*;^%OrzK5{rCQT(cN` zt43;ZzFsi{*3;f6%N@y?=!toh8C;vW+$ehcaL}*A4@9FG{NWSxhgS=cH*MK}%ltH5 tYwG&4-@nXF{`T{q+HBe0)^N2N{s8C@LIOE1f{XwF002ovPDHLkV1jmx8)g6i literal 0 HcmV?d00001 diff --git a/resources/g2/palette_map/palette_map_olive_dark.png b/resources/g2/palette_map/palette_map_olive_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..1cd4ce3886dfcfb58fc3a93da14ac533e2b04afe GIT binary patch literal 608 zcmV-m0-ybfP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TxyaG4?x;D^XVB%L21 zZIdouYDNgDaJK4Z+K?;mGoVfSnPzUXeXb5KU) zkr3zutmoDCqZ|?q-$2)kr|5tZ3q2OqIOu8mqD1ZHH9$>XWV&$xQz&dPmu z@6l_b^=jUOX)0yrY&ziAsGeM_(Pl+%uFS+d&3K!gYVsQKV!e)XXz;D)dA7z}f8K@6 zPzv*^#KY+ig&u8w$u<8M-6`>omV}Nx1{Jt|*C{hE#`-_~9JT!taWq!UX^_t z48P#)z&UWj76dH~JninD=$9mP7(II19-zGt3$YSMc4B}-S2Ut1oiJDP)6Wd-VyZ-@1SG&_e>_+LW~b0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!Trh?eRbV%nka_b$)U2JH#j>zKF?4NhN3HB^nWZ`CO=DCp#NxrJOkSbzA*>}2 zZlh_q(uz9bI4XL}Z|{(w+!4}}Kh@eO4J`9WjkwUv@wG_eFQhor5wW zkAy%SU^TC|*K$ZSd;?w2o}vRvEYw(3zoER?d%O&dB#);aKjZp=H!JVi zyGO5yR;zgrrm2+9+3J8_vqsKZj@B#A=1Nb@(~P&-sV1)(FE*PfhX&tj?!7g7{yqzt zrWE>BiHFl~3M1P5a@PD`bf?4~EeRcY4k~c-dQhfcwDoVs9<_Zht?2FA*y#4=tt#_2 z8Ggapg>&GB4G3BqcskrYQZI+lVT|Z)bAa|jEW}EjnTZJwL(z<)bV6UvPv4oC#Z-$N z+FdnLi}U3fGhjXKeX`tPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TZLgT&75q&X1G4L5jRp z@{P1-oGKA~jEH;i9K2pI`SM;;O51kOuuOB-;6!#`mMCk+l{f+?aeDy=4~?k zin9ynzzrJ^v^4N^xO=2t4xz&s(c9(#?S)u~l{hmK6C8%38Aa)YzM7xDGck*)7CE%L zYNQtD%QI%cdfNMBxg$9fJu#0mgKIOF8%3}0_WHH|foL>?-+yBM@M tp{_5x-P7D`et!FR?Y5}j*6{Mf@CV^gLIOZx^^^br002ovPDHLkV1j>Z7DfO7 literal 0 HcmV?d00001 diff --git a/resources/g2/palette_map/palette_map_saturated_brown_light.png b/resources/g2/palette_map/palette_map_saturated_brown_light.png new file mode 100644 index 0000000000000000000000000000000000000000..2cedcb0536dba6775d705cd570a41ff8d0294dc1 GIT binary patch literal 614 zcmV-s0-61ZP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!Tb3l~>h;W9-Yz>ko}NZui3 z-YEG-+A~fO@WRJvS!wjoKeL@)`CMFH{_!Em2rptZVpL8^X^F-Lv0dZTUTUJvjsTm^oW?GjG`|?lcCaOw0~?<nNM^9TfZ6{2l)5HEp`@ZO|xsz8y z?gDq+;q{6&%6)o;iz)($UyCCcHc!_TmOl~mx6Em?8CuU-VW0y6dD4x+*^V2m(W-*qm z9_@WGVvW<)iW#t;wmwx30o*V!Bdz($;KmU$B_W#)PX0`490^&eI0;}Z=NdN!<07*qoM6N<$f^Xv> AnE(I) literal 0 HcmV?d00001 diff --git a/resources/g2/palette_map/palette_map_saturated_green_light.png b/resources/g2/palette_map/palette_map_saturated_green_light.png new file mode 100644 index 0000000000000000000000000000000000000000..eefb08ceb96367159314cbd0bcff6fd944ed79ba GIT binary patch literal 609 zcmV-n0-pVeP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!Tksj6<4J26(K3EaKJ?h7gq%0BE=O~xJ;2Iogc?}hdfN) zA^AqyGftHVK1Rn%qksOH8}y&+^6Kh$h*3s-5tEUUO3unlG~QpID+F=ojI*8?mOBBG zVzRr$n7N;Izq{wRQ?~Dc^9Fm%AIKZX86l*?-KyJp%USWJF)9~g@!(WeUZL@h&I2RHUAggDX~XOLPws03f#OJl<603{hP5z?cPZ2U_I@9vfPoJiJq88nZdQ0%Z;KpcL)7E{6I9C!5=;|e|WVJdDE8tx6Dt| vHB;Bu{r-7wo_>A*=PcQ>d9t+~J`8^V2ggGK;vUhA00000NkvXXu0mjfI$jxu literal 0 HcmV?d00001 diff --git a/resources/g2/palette_map/palette_map_saturated_purple_dark.png b/resources/g2/palette_map/palette_map_saturated_purple_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..6585acd752c9f7c1acb3465950d47a74f32d7248 GIT binary patch literal 609 zcmV-n0-pVeP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!Tz`jz<6dGq=(UpYw~0zad5$@mWkpN-8-kFVT2^d8!aZ&I!4m7?v{u zl47#6#F#msb-%smw^O$7fqa8^s~@Nvs2L%o!r7|Z`HEa|r!goOV)5WqMz2u#5Z00h zx6!z|(o7$57!HSHaTp8npo9WjkwUv@wG_eFQBor5wW zkAy%UU_Gz5*K$ZSd;?uio}vRvEc94Z>pk&MDDc5{#)j! v>6+>5>u&e7H^0CCX*u@1#Ov$NuUG#7`)or3Qwsu>00000NkvXXu0mjf%o!0? literal 0 HcmV?d00001 diff --git a/resources/g2/palette_map/palette_map_saturated_purple_light.png b/resources/g2/palette_map/palette_map_saturated_purple_light.png new file mode 100644 index 0000000000000000000000000000000000000000..4ec0de07722535adbf159099d2419b58bbde9321 GIT binary patch literal 609 zcmV-n0-pVeP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TZLgT&BnaxXhy@?~upI z8zkRId&X%(7CvT=9gY6^XKv7cK9^Tlze9{N;;Wd9lvHw7UZU~gdZiFV&KbF$7?v{u zl47#6#F#ms^|*WFw^O$7fqa8^s~@Nvs2L%o!r7|3^$oe=PGeLq#NxrJOkSbzA#5ZM zZmVgy(V9NuI4XLpZ}(82+7Z%HKh@eOPxtb{HSHaTp8npooiL4FpZDMU_eFQBor5wW zPlP}pU_Ebk@8pnZ_y)ROJVghTSm?2+#!1iXk4n^TenWZn?(s4-l02Sz{EV9??yTHr z_ny2aTCe6kn5I%X=j$VW%^JzI8f{kO=E_XW(~P&-sV1)(FSgq#hX&tz?z1&|{k{vC zp%ms-iO1Dfg%NFj$u<8M-6`>omV}Nx2Nk%z7?hb8WBr@4NA2EAYi7GKwz|80qsqQb zhF@@Y;1W1t3xbvgo(>Ps^h**tj1j$U571tSg;bGcFU_TiwPhaZSWGx)OevQ_c_ox00000NkvXXu0mjfPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T;(XHm=APfZl708&8|>`F03S1Fi*Dy@a>bp-pp=Q(L9aYI`OF8u zk{tAFjor0o-VugD!C8H~hx*hG5SRL~luCa5Am{t4z0sqm?VGj(rqStP`?Gytbl2L+ zDUiwOu!&8T!VfDzJ zh5PK@gV#iRt9cKmDd)!7yvMIe1G!eC_KMt8=!ton@HX`-(P_eq^*X3WgR5_Dy)|0> zHVcWSWcpQz`_r%T1KQk@YyK~~V`Pt(h>kRQWw?3ODbX+5`jVkVZQe;UyFSIbu%5O)S?xg0NKee8#NgV@rApSDyPbaTejyso;C7#wKfGE9+-b}H zTjrb8OkH)Mz~co0sF?wqAev-u(me&_e>?b;Be80000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TEM<#B+Tw~UC~^gY;))b0C{kR3L<)*4u1HD21LR>S;2kJ< zC-}zRgHRDmpT?)P$N&5@H|Uw`^6KhWh*3s-5|fdVO3unlG~QjGD+F=ojI*8?mOBBG zVzRr$n7N;Izq{wRQ?~Dc^9Fm%AIKZX86l*?-KyJp%USWJF)9~g@!(V@uTc09){+Oe z(KKu|Q%4*}MQ{1-9rBYqLR#{tS{vozy?k&@d&i-t@4L1WrqS!u{#*aP=x(`lP)6j5 z5U2yJ=JoE491;!RK-V8n(E%kEYAmX8(&PL=iQLU^C{OktFGC~ACVFBXWd_$~E;ou^-yQVh@Ey@;27ma-{NdF?Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!Tn$;8Z5BQ1}qm zk_WfZG+b##A8{NNz16pSs88((X{n!TZIt^j^1(Ij9fzL&-nAVujb7h(PyPF%yVcG? z8IeaqpbxN~*V~VBNHlx{T`!)Z14=CPSXASrht*dlYB#^3yn6R|85&6*Pd$Fd^*wi1 z?z4N3UK6cX^Bzo7DV?*`0l#LAvqv*r!UcdLh5RGQ=`)}+YUM)oKw8#Ei u=BMde(btdN?qzSD9v@rITc1DA&%-~_&_e>)A0Uwc0000x_offset, y - element->y_offset }); } } + // G2 Palette textures + for (int i = PALETTE_TO_G1_OFFSET_COUNT; i < PALETTE_TOTAL_OFFSETS; ++i) + { + GLint y = PaletteToY(static_cast(i)); + + auto g2Index = GetPaletteG2Index(i); + if (g2Index.has_value()) + { + auto element = GfxGetG1Element(g2Index.value()); + GfxDrawSpriteSoftware(&dpi, ImageId(g2Index.value()), { -element->x_offset, y - element->y_offset }); + } + } glBindTexture(GL_TEXTURE_2D, _paletteTexture); glTexImage2D(GL_TEXTURE_2D, 0, GL_R8UI, width, height, 0, GL_RED_INTEGER, GL_UNSIGNED_BYTE, dpi.bits); diff --git a/src/openrct2-ui/input/MouseInput.cpp b/src/openrct2-ui/input/MouseInput.cpp index 1e6dfe700d..af71e09002 100644 --- a/src/openrct2-ui/input/MouseInput.cpp +++ b/src/openrct2-ui/input/MouseInput.cpp @@ -1445,6 +1445,30 @@ void InputStateWidgetPressed( STR_COLOUR_DARK_PINK_TIP, STR_COLOUR_BRIGHT_PINK_TIP, STR_COLOUR_LIGHT_PINK_TIP, + STR_COLOUR_DARK_OLIVE_DARK_TIP, + STR_COLOUR_DARK_OLIVE_LIGHT_TIP, + STR_COLOUR_SATURATED_BROWN_LIGHT_TIP, + STR_COLOUR_BORDEAUX_RED_DARK_TIP, + STR_COLOUR_BORDEAUX_RED_LIGHT_TIP, + STR_COLOUR_GRASS_GREEN_DARK_TIP, + STR_COLOUR_GRASS_GREEN_LIGHT_TIP, + STR_COLOUR_OLIVE_DARK_TIP, + STR_COLOUR_OLIVE_LIGHT_TIP, + STR_COLOUR_SATURATED_GREEN_LIGHT_TIP, + STR_COLOUR_TAN_DARK_TIP, + STR_COLOUR_TAN_LIGHT_TIP, + STR_COLOUR_DULL_PURPLE_LIGHT_TIP, + STR_COLOUR_DULL_GREEN_DARK_TIP, + STR_COLOUR_DULL_GREEN_LIGHT_TIP, + STR_COLOUR_SATURATED_PURPLE_DARK_TIP, + STR_COLOUR_SATURATED_PURPLE_LIGHT_TIP, + STR_COLOUR_ORANGE_LIGHT_TIP, + STR_COLOUR_AQUA_DARK_TIP, + STR_COLOUR_MAGENTA_LIGHT_TIP, + STR_COLOUR_DULL_BROWN_DARK_TIP, + STR_COLOUR_DULL_BROWN_LIGHT_TIP, + STR_COLOUR_INVISIBLE_TIP, + STR_COLOUR_VOID_TIP, }; WindowTooltipShow(OpenRCT2String{ _colourTooltips[dropdown_index], {} }, screenCoords); } diff --git a/src/openrct2-ui/windows/Dropdown.cpp b/src/openrct2-ui/windows/Dropdown.cpp index d0859d8c00..25fb68f299 100644 --- a/src/openrct2-ui/windows/Dropdown.cpp +++ b/src/openrct2-ui/windows/Dropdown.cpp @@ -32,7 +32,7 @@ static constexpr const uint8_t _appropriateImageDropdownItemsPerRow[34] = { 1, 1, 1, 1, 2, 2, 3, 3, 4, 3, // 10 5, 4, 4, 5, 5, 5, 4, 5, 6, 5, // 20 5, 7, 4, 5, 6, 5, 6, 6, 6, 6, // 30 - 6, 8, 8, 8, // 34 + 6, 8, 9, 8, // 34 }; enum @@ -462,7 +462,7 @@ void WindowDropdownShowColour(WindowBase* w, Widget* widget, uint8_t dropdownCol // Show dropdown WindowDropdownShowImage( w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->height() + 1, dropdownColour, - Dropdown::Flag::StayOpen, COLOUR_COUNT, 12, 12, _appropriateImageDropdownItemsPerRow[COLOUR_COUNT]); + Dropdown::Flag::StayOpen, COLOUR_COUNT, 12, 12, _appropriateImageDropdownItemsPerRow[COLOR_NUM_ORIGINAL]); gDropdownIsColour = true; gDropdownLastColourHover = -1; diff --git a/src/openrct2/drawing/Drawing.cpp b/src/openrct2/drawing/Drawing.cpp index 0f27f2bae5..73addab87a 100644 --- a/src/openrct2/drawing/Drawing.cpp +++ b/src/openrct2/drawing/Drawing.cpp @@ -293,6 +293,58 @@ enum SPR_PALETTE_GLASS_DARK_PINK = 5045, SPR_PALETTE_GLASS_BRIGHT_PINK = 5046, SPR_PALETTE_GLASS_LIGHT_PINK = 5047, + + // Start of G2 Palettes + + SPR_PALETTE_DARK_OLIVE_DARK = 32607, + SPR_PALETTE_DARK_OLIVE_LIGHT, + SPR_PALETTE_SATURATED_BROWN_LIGHT, + SPR_PALETTE_BORDEAUX_RED_DARK, + SPR_PALETTE_BORDEAUX_RED_LIGHT, + SPR_PALETTE_GRASS_GREEN_DARK, + SPR_PALETTE_GRASS_GREEN_LIGHT, + SPR_PALETTE_OLIVE_DARK, + SPR_PALETTE_OLIVE_LIGHT, + SPR_PALETTE_SATURATED_GREEN_LIGHT, + SPR_PALETTE_TAN_DARK, + SPR_PALETTE_TAN_LIGHT, + SPR_PALETTE_DULL_PURPLE_LIGHT, + SPR_PALETTE_DULL_GREEN_DARK, + SPR_PALETTE_DULL_GREEN_LIGHT, + SPR_PALETTE_SATURATED_PURPLE_DARK, + SPR_PALETTE_SATURATED_PURPLE_LIGHT, + SPR_PALETTE_ORANGE_LIGHT, + SPR_PALETTE_AQUA_DARK, + SPR_PALETTE_MAGENTA_LIGHT, + SPR_PALETTE_DULL_BROWN_DARK, + SPR_PALETTE_DULL_BROWN_LIGHT, + SPR_PALETTE_INVISIBLE, + SPR_PALETTE_VOID, + + SPR_PALETTE_GLASS_DARK_OLIVE_DARK, + SPR_PALETTE_GLASS_DARK_OLIVE_LIGHT, + SPR_PALETTE_GLASS_SATURATED_BROWN_LIGHT, + SPR_PALETTE_GLASS_BORDEAUX_RED_DARK, + SPR_PALETTE_GLASS_BORDEAUX_RED_LIGHT, + SPR_PALETTE_GLASS_GRASS_GREEN_DARK, + SPR_PALETTE_GLASS_GRASS_GREEN_LIGHT, + SPR_PALETTE_GLASS_OLIVE_DARK, + SPR_PALETTE_GLASS_OLIVE_LIGHT, + SPR_PALETTE_GLASS_SATURATED_GREEN_LIGHT, + SPR_PALETTE_GLASS_TAN_DARK, + SPR_PALETTE_GLASS_TAN_LIGHT, + SPR_PALETTE_GLASS_DULL_PURPLE_LIGHT, + SPR_PALETTE_GLASS_DULL_GREEN_DARK, + SPR_PALETTE_GLASS_DULL_GREEN_LIGHT, + SPR_PALETTE_GLASS_SATURATED_PURPLE_DARK, + SPR_PALETTE_GLASS_SATURATED_PURPLE_LIGHT, + SPR_PALETTE_GLASS_ORANGE_LIGHT, + SPR_PALETTE_GLASS_AQUA_DARK, + SPR_PALETTE_GLASS_MAGENTA_LIGHT, + SPR_PALETTE_GLASS_DULL_BROWN_DARK, + SPR_PALETTE_GLASS_DULL_BROWN_LIGHT, + SPR_PALETTE_GLASS_INVISIBLE, + SPR_PALETTE_GLASS_VOID, }; const FilterPaletteID GlassPaletteIds[COLOUR_COUNT] = { @@ -328,10 +380,34 @@ const FilterPaletteID GlassPaletteIds[COLOUR_COUNT] = { FilterPaletteID::PaletteGlassDarkPink, FilterPaletteID::PaletteGlassBrightPink, FilterPaletteID::PaletteGlassLightPink, + FilterPaletteID::PaletteGlassDarkOliveDark, + FilterPaletteID::PaletteGlassDarkOliveLight, + FilterPaletteID::PaletteGlassSaturatedBrownLight, + FilterPaletteID::PaletteGlassBordeauxRedDark, + FilterPaletteID::PaletteGlassBordeauxRedLight, + FilterPaletteID::PaletteGlassGrassGreenDark, + FilterPaletteID::PaletteGlassGrassGreenLight, + FilterPaletteID::PaletteGlassOliveDark, + FilterPaletteID::PaletteGlassOliveLight, + FilterPaletteID::PaletteGlassSaturatedGreenLight, + FilterPaletteID::PaletteGlassTanDark, + FilterPaletteID::PaletteGlassTanLight, + FilterPaletteID::PaletteGlassDullPurpleLight, + FilterPaletteID::PaletteGlassDullGreenDark, + FilterPaletteID::PaletteGlassDullGreenLight, + FilterPaletteID::PaletteGlassSaturatedPurpleDark, + FilterPaletteID::PaletteGlassSaturatedPurpleLight, + FilterPaletteID::PaletteGlassOrangeLight, + FilterPaletteID::PaletteGlassAquaDark, + FilterPaletteID::PaletteGlassMagentaLight, + FilterPaletteID::PaletteGlassDullBrownDark, + FilterPaletteID::PaletteGlassDullBrownLight, + FilterPaletteID::PaletteGlassInvisible, + FilterPaletteID::PaletteGlassVoid, }; // Previously 0x97FCBC use it to get the correct palette from g1_elements -static const uint16_t palette_to_g1_offset[PALETTE_TO_G1_OFFSET_COUNT] = { +static const uint16_t palette_to_g1_offset[PALETTE_TOTAL_OFFSETS] = { SPR_PALETTE_BLACK, SPR_PALETTE_GREY, SPR_PALETTE_WHITE, @@ -480,6 +556,31 @@ static const uint16_t palette_to_g1_offset[PALETTE_TO_G1_OFFSET_COUNT] = { SPR_PALETTE_GLASS_DARK_PINK, SPR_PALETTE_GLASS_BRIGHT_PINK, SPR_PALETTE_GLASS_LIGHT_PINK, + + SPR_PALETTE_DARK_OLIVE_DARK, + SPR_PALETTE_DARK_OLIVE_LIGHT, + SPR_PALETTE_SATURATED_BROWN_LIGHT, + SPR_PALETTE_BORDEAUX_RED_DARK, + SPR_PALETTE_BORDEAUX_RED_LIGHT, + SPR_PALETTE_GRASS_GREEN_DARK, + SPR_PALETTE_GRASS_GREEN_LIGHT, + SPR_PALETTE_OLIVE_DARK, + SPR_PALETTE_OLIVE_LIGHT, + SPR_PALETTE_SATURATED_GREEN_LIGHT, + SPR_PALETTE_TAN_DARK, + SPR_PALETTE_TAN_LIGHT, + SPR_PALETTE_DULL_PURPLE_LIGHT, + SPR_PALETTE_DULL_GREEN_DARK, + SPR_PALETTE_DULL_GREEN_LIGHT, + SPR_PALETTE_SATURATED_PURPLE_DARK, + SPR_PALETTE_SATURATED_PURPLE_LIGHT, + SPR_PALETTE_ORANGE_LIGHT, + SPR_PALETTE_AQUA_DARK, + SPR_PALETTE_MAGENTA_LIGHT, + SPR_PALETTE_DULL_BROWN_DARK, + SPR_PALETTE_DULL_BROWN_LIGHT, + SPR_PALETTE_INVISIBLE, + SPR_PALETTE_VOID, }; #define WINDOW_PALETTE_GREY {FilterPaletteID::PaletteTranslucentGrey, FilterPaletteID::PaletteTranslucentGreyHighlight, FilterPaletteID::PaletteTranslucentGreyShadow} @@ -747,7 +848,16 @@ void GfxDrawPickedUpPeep(DrawPixelInfo* dpi) std::optional GetPaletteG1Index(colour_t paletteId) { - if (paletteId < std::size(palette_to_g1_offset)) + if (paletteId < PALETTE_TO_G1_OFFSET_COUNT) + { + return palette_to_g1_offset[paletteId]; + } + return std::nullopt; +} + +std::optional GetPaletteG2Index(colour_t paletteId) +{ + if (paletteId < PALETTE_TOTAL_OFFSETS) { return palette_to_g1_offset[paletteId]; } diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index 075d13a42b..2ab6638f1a 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -296,6 +296,30 @@ enum class FilterPaletteID : int32_t PaletteGlassDarkPink = PaletteGlass + COLOUR_DARK_PINK, PaletteGlassBrightPink = PaletteGlass + COLOUR_BRIGHT_PINK, PaletteGlassLightPink = PaletteGlass + COLOUR_LIGHT_PINK, + PaletteGlassDarkOliveDark = PaletteGlass + COLOUR_DARK_OLIVE_DARK, + PaletteGlassDarkOliveLight = PaletteGlass + COLOUR_DARK_OLIVE_LIGHT, + PaletteGlassSaturatedBrownLight = PaletteGlass + COLOUR_SATURATED_BROWN_LIGHT, + PaletteGlassBordeauxRedDark = PaletteGlass + COLOUR_BORDEAUX_RED_DARK, + PaletteGlassBordeauxRedLight = PaletteGlass + COLOUR_BORDEAUX_RED_LIGHT, + PaletteGlassGrassGreenDark = PaletteGlass + COLOUR_GRASS_GREEN_DARK, + PaletteGlassGrassGreenLight = PaletteGlass + COLOUR_GRASS_GREEN_LIGHT, + PaletteGlassOliveDark = PaletteGlass + COLOUR_OLIVE_DARK, + PaletteGlassOliveLight = PaletteGlass + COLOUR_OLIVE_LIGHT, + PaletteGlassSaturatedGreenLight = PaletteGlass + COLOUR_SATURATED_GREEN_LIGHT, + PaletteGlassTanDark = PaletteGlass + COLOUR_TAN_DARK, + PaletteGlassTanLight = PaletteGlass + COLOUR_TAN_LIGHT, + PaletteGlassDullPurpleLight = PaletteGlass + COLOUR_DULL_PURPLE_LIGHT, + PaletteGlassDullGreenDark = PaletteGlass + COLOUR_DULL_GREEN_DARK, + PaletteGlassDullGreenLight = PaletteGlass + COLOUR_DULL_GREEN_LIGHT, + PaletteGlassSaturatedPurpleDark = PaletteGlass + COLOUR_SATURATED_PURPLE_DARK, + PaletteGlassSaturatedPurpleLight = PaletteGlass + COLOUR_SATURATED_PURPLE_LIGHT, + PaletteGlassOrangeLight = PaletteGlass + COLOUR_ORANGE_LIGHT, + PaletteGlassAquaDark = PaletteGlass + COLOUR_AQUA_DARK, + PaletteGlassMagentaLight = PaletteGlass + COLOUR_MAGENTA_LIGHT, + PaletteGlassDullBrownDark = PaletteGlass + COLOUR_DULL_BROWN_DARK, + PaletteGlassDullBrownLight = PaletteGlass + COLOUR_DULL_BROWN_LIGHT, + PaletteGlassInvisible = PaletteGlass + COLOUR_INVISIBLE, + PaletteGlassVoid = PaletteGlass + COLOUR_VOID, }; struct TranslucentWindowPalette @@ -446,6 +470,7 @@ void FASTCALL BlitPixels(const uint8_t* src, uint8_t* dst, const PaletteMap& pal } #define PALETTE_TO_G1_OFFSET_COUNT 144 +#define PALETTE_TOTAL_OFFSETS 192 #define INSET_RECT_F_30 (INSET_RECT_FLAG_BORDER_INSET | INSET_RECT_FLAG_FILL_NONE) #define INSET_RECT_F_60 (INSET_RECT_FLAG_BORDER_INSET | INSET_RECT_FLAG_FILL_DONT_LIGHTEN) @@ -570,6 +595,7 @@ extern void (*MaskFn)( int32_t maskWrap, int32_t colourWrap, int32_t dstWrap); std::optional GetPaletteG1Index(colour_t paletteId); +std::optional GetPaletteG2Index(colour_t paletteId); std::optional GetPaletteMapForColour(colour_t paletteId); void UpdatePalette(const uint8_t* colours, int32_t start_index, int32_t num_colours); diff --git a/src/openrct2/drawing/ImageId.hpp b/src/openrct2/drawing/ImageId.hpp index 6821f9cc2e..8755e9ef71 100644 --- a/src/openrct2/drawing/ImageId.hpp +++ b/src/openrct2/drawing/ImageId.hpp @@ -227,7 +227,7 @@ public: [[nodiscard]] constexpr ImageId WithPrimary(colour_t colour) const { ImageId result = *this; - result._primary = colour & 31; + result._primary = colour; result._flags |= NEW_FLAG_PRIMARY; return result; } @@ -235,7 +235,7 @@ public: [[nodiscard]] constexpr ImageId WithSecondary(colour_t colour) const { ImageId result = *this; - result._secondary = colour & 31; + result._secondary = colour; result._flags |= NEW_FLAG_SECONDARY; return result; } @@ -251,7 +251,7 @@ public: [[nodiscard]] constexpr ImageId WithTertiary(colour_t tertiary) const { ImageId result = *this; - result._tertiary = tertiary & 31; + result._tertiary = tertiary; result._flags &= ~NEW_FLAG_PRIMARY; result._flags |= NEW_FLAG_SECONDARY; if (!(_flags & NEW_FLAG_SECONDARY)) @@ -265,7 +265,7 @@ public: [[nodiscard]] ImageId WithTransparency(colour_t colour) const { - return WithTransparency(GetGlassPaletteId(colour & 31)); + return WithTransparency(GetGlassPaletteId(colour)); } [[nodiscard]] ImageId WithTransparency(FilterPaletteID palette) const diff --git a/src/openrct2/interface/Colour.cpp b/src/openrct2/interface/Colour.cpp index 56bb2474a6..0c9befc8af 100644 --- a/src/openrct2/interface/Colour.cpp +++ b/src/openrct2/interface/Colour.cpp @@ -37,7 +37,7 @@ enum void ColoursInitMaps() { // Get colour maps from g1 - for (int32_t i = 0; i < COLOUR_COUNT; i++) + for (int32_t i = 0; i < 32; i++) { const G1Element* g1 = GfxGetG1Element(SPR_PALETTE_2_START + i); if (g1 != nullptr) @@ -93,6 +93,30 @@ namespace Colour { "dark_pink", COLOUR_DARK_PINK }, { "bright_pink", COLOUR_BRIGHT_PINK }, { "light_pink", COLOUR_LIGHT_PINK }, + { "dark_olive_dark", COLOUR_DARK_OLIVE_DARK }, + { "dark_olive_light", COLOUR_DARK_OLIVE_LIGHT }, + { "saturated_brown_light", COLOUR_SATURATED_BROWN_LIGHT }, + { "bordeaux_red_dark", COLOUR_BORDEAUX_RED_DARK }, + { "bordeaux_red_light", COLOUR_BORDEAUX_RED_LIGHT }, + { "grass_green_dark", COLOUR_GRASS_GREEN_DARK }, + { "grass_green_light", COLOUR_GRASS_GREEN_LIGHT }, + { "olive_dark", COLOUR_OLIVE_DARK }, + { "olive_light", COLOUR_OLIVE_LIGHT }, + { "saturated_green_light", COLOUR_SATURATED_GREEN_LIGHT }, + { "tan_dark", COLOUR_TAN_DARK }, + { "tan_light", COLOUR_TAN_LIGHT }, + { "dull_purple_light", COLOUR_DULL_PURPLE_LIGHT }, + { "dull_green_dark", COLOUR_DULL_GREEN_DARK }, + { "dull_green_light", COLOUR_DULL_GREEN_LIGHT }, + { "saturated_purple_dark", COLOUR_SATURATED_PURPLE_DARK }, + { "saturated_purple_light", COLOUR_SATURATED_PURPLE_LIGHT }, + { "orange_light", COLOUR_ORANGE_LIGHT }, + { "aqua_dark", COLOUR_AQUA_DARK }, + { "magenta_light", COLOUR_MAGENTA_LIGHT }, + { "dull_brown_dark", COLOUR_DULL_BROWN_DARK }, + { "dull_brown_light", COLOUR_DULL_BROWN_LIGHT }, + { "invisible", COLOUR_INVISIBLE }, + { "void", COLOUR_VOID }, }; colour_t FromString(std::string_view s, colour_t defaultValue) diff --git a/src/openrct2/interface/Colour.h b/src/openrct2/interface/Colour.h index 5a3f8d066c..6bea93cd73 100644 --- a/src/openrct2/interface/Colour.h +++ b/src/openrct2/interface/Colour.h @@ -52,6 +52,30 @@ enum : colour_t COLOUR_DARK_PINK, COLOUR_BRIGHT_PINK, COLOUR_LIGHT_PINK, + COLOUR_DARK_OLIVE_DARK, + COLOUR_DARK_OLIVE_LIGHT, + COLOUR_SATURATED_BROWN_LIGHT, + COLOUR_BORDEAUX_RED_DARK, + COLOUR_BORDEAUX_RED_LIGHT, + COLOUR_GRASS_GREEN_DARK, + COLOUR_GRASS_GREEN_LIGHT, + COLOUR_OLIVE_DARK, + COLOUR_OLIVE_LIGHT, + COLOUR_SATURATED_GREEN_LIGHT, + COLOUR_TAN_DARK, + COLOUR_TAN_LIGHT, + COLOUR_DULL_PURPLE_LIGHT, + COLOUR_DULL_GREEN_DARK, + COLOUR_DULL_GREEN_LIGHT, + COLOUR_SATURATED_PURPLE_DARK, + COLOUR_SATURATED_PURPLE_LIGHT, + COLOUR_ORANGE_LIGHT, + COLOUR_AQUA_DARK, + COLOUR_MAGENTA_LIGHT, + COLOUR_DULL_BROWN_DARK, + COLOUR_DULL_BROWN_LIGHT, + COLOUR_INVISIBLE, + COLOUR_VOID, COLOUR_COUNT, @@ -64,7 +88,8 @@ enum : colour_t enum { COLOUR_DARK_WATER = 9, - COLOUR_LIGHT_WATER = 10 + COLOUR_LIGHT_WATER = 10, + COLOUR_DEEP_WATER = 50 }; enum : PaletteIndex @@ -178,6 +203,10 @@ constexpr uint8_t PALETTE_LENGTH_REMAP = 12; constexpr uint8_t PALETTE_OFFSET_ANIMATED = PALETTE_INDEX_230; constexpr uint8_t PALETTE_LENGTH_ANIMATED = 16; +constexpr uint8_t COLOR_NUM_ORIGINAL = 32; +constexpr uint8_t COLOR_NUM_EXTENDED = 24; +constexpr uint8_t COLOR_NUM_SPECIAL = 2; + #define TEXT_COLOUR_254 (254) #define TEXT_COLOUR_255 (255) diff --git a/src/openrct2/localisation/StringIds.h b/src/openrct2/localisation/StringIds.h index 4e1793e5e2..3dea22ebc4 100644 --- a/src/openrct2/localisation/StringIds.h +++ b/src/openrct2/localisation/StringIds.h @@ -3950,6 +3950,31 @@ enum : uint16_t STR_OBJECT_SELECTION_ERR_COMPAT_OBJECT = 6549, STR_OBJECT_SELECTION_COMPAT_OBJECT_DESCRIPTION = 6550, + STR_COLOUR_DARK_OLIVE_DARK_TIP = 6551, + STR_COLOUR_DARK_OLIVE_LIGHT_TIP = 6552, + STR_COLOUR_SATURATED_BROWN_LIGHT_TIP = 6553, + STR_COLOUR_BORDEAUX_RED_DARK_TIP = 6554, + STR_COLOUR_BORDEAUX_RED_LIGHT_TIP = 6555, + STR_COLOUR_GRASS_GREEN_DARK_TIP = 6556, + STR_COLOUR_GRASS_GREEN_LIGHT_TIP = 6557, + STR_COLOUR_OLIVE_DARK_TIP = 6558, + STR_COLOUR_OLIVE_LIGHT_TIP = 6559, + STR_COLOUR_SATURATED_GREEN_LIGHT_TIP = 6560, + STR_COLOUR_TAN_DARK_TIP = 6561, + STR_COLOUR_TAN_LIGHT_TIP = 6562, + STR_COLOUR_DULL_PURPLE_LIGHT_TIP = 6563, + STR_COLOUR_DULL_GREEN_DARK_TIP = 6564, + STR_COLOUR_DULL_GREEN_LIGHT_TIP = 6565, + STR_COLOUR_SATURATED_PURPLE_DARK_TIP = 6566, + STR_COLOUR_SATURATED_PURPLE_LIGHT_TIP = 6567, + STR_COLOUR_ORANGE_LIGHT_TIP = 6568, + STR_COLOUR_AQUA_DARK_TIP = 6569, + STR_COLOUR_MAGENTA_LIGHT_TIP = 6570, + STR_COLOUR_DULL_BROWN_DARK_TIP = 6571, + STR_COLOUR_DULL_BROWN_LIGHT_TIP = 6572, + STR_COLOUR_INVISIBLE_TIP = 6573, + STR_COLOUR_VOID_TIP = 6574, + // Have to include resource strings (from scenarios and objects) for the time being now that language is partially working /* MAX_STR_COUNT = 32768 */ // MAX_STR_COUNT - upper limit for number of strings, not the current count strings }; diff --git a/src/openrct2/sprites.h b/src/openrct2/sprites.h index 3e9f14ecff..0dff54916d 100644 --- a/src/openrct2/sprites.h +++ b/src/openrct2/sprites.h @@ -1364,7 +1364,34 @@ enum SPR_G2_ALPINE_LIFT_TRACK_GENTLE_DIAGONAL = SPR_G2_ALPINE_LIFT_TRACK_FLAT_DIAGONAL + 4, SPR_G2_ALPINE_END = SPR_G2_ALPINE_LIFT_TRACK_GENTLE_DIAGONAL + 12, - SPR_G2_END = SPR_G2_ALPINE_END, + SPR_G2_PAL_REMAP_BEGIN = SPR_G2_ALPINE_END, + SPR_G2_PAL_REMAP_DARK_OLIVE_DARK, + SPR_G2_PAL_REMAP_DARK_OLIVE_LIGHT, + SPR_G2_PAL_REMAP_SATURATED_BROWN_LIGHT, + SPR_G2_PAL_REMAP_BORDEAUX_RED_DARK, + SPR_G2_PAL_REMAP_BORDEAUX_RED_LIGHT, + SPR_G2_PAL_REMAP_GRASS_GREEN_DARK, + SPR_G2_PAL_REMAP_GRASS_GREEN_LIGHT, + SPR_G2_PAL_REMAP_OLIVE_DARK, + SPR_G2_PAL_REMAP_OLIVE_LIGHT, + SPR_G2_PAL_REMAP_SATURATED_GREEN_LIGHT, + SPR_G2_PAL_REMAP_TAN_DARK, + SPR_G2_PAL_REMAP_TAN_LIGHT, + SPR_G2_PAL_REMAP_DULL_PURPLE_LIGHT, + SPR_G2_PAL_REMAP_DULL_GREEN_DARK, + SPR_G2_PAL_REMAP_DULL_GREEN_LIGHT, + SPR_G2_PAL_REMAP_SATURATED_PURPLE_DARK, + SPR_G2_PAL_REMAP_SATURATED_PURPLE_LIGHT, + SPR_G2_PAL_REMAP_ORANGE_LIGHT, + SPR_G2_PAL_REMAP_AQUA_DARK, + SPR_G2_PAL_REMAP_MAGENTA_LIGHT, + SPR_G2_PAL_REMAP_DULL_BROWN_DARK, + SPR_G2_PAL_REMAP_DULL_BROWN_LIGHT, + SPR_G2_PAL_REMAP_INVISIBLE, + SPR_G2_PAL_REMAP_VOID, + SPR_G2_PAL_REMAP_END = SPR_G2_PAL_REMAP_VOID, + + SPR_G2_END = SPR_G2_PAL_REMAP_END, SPR_CSG_BEGIN = SPR_G2_END, SPR_CSG_END = SPR_CSG_BEGIN + RCT1::Limits::Num_LL_CSG_Entries,