From 559a702ee36d974a14b8e4655985725ff9c808e5 Mon Sep 17 00:00:00 2001 From: ZHU MINCHAO <48154958+MinchaoZhu@users.noreply.github.com> Date: Tue, 3 Nov 2026 14:19:43 +0800 Subject: [PATCH] Label bar: authenticity rows first, quality rows second; single-fan brand text moved off the fan Co-Authored-By: Claude Sonnet 5.5 --- art/__pycache__/big.cpython-314.pyc | Bin 34628 -> 34628 bytes art/big.py | 2 +- src/Decentralized.Domain/CardLabels.cs | 4 +++- src/Decentralized/GpuInspectView.cs | 9 +++++---- .../Textures/Items/gpu_big_pmd_f_t0.png | Bin 2330 -> 2333 bytes .../Textures/Items/gpu_big_probidia_f_t0.png | Bin 2355 -> 2348 bytes 6 files changed, 9 insertions(+), 6 deletions(-) diff --git a/art/__pycache__/big.cpython-314.pyc b/art/__pycache__/big.cpython-314.pyc index cacd793ab06c8e15685eacc8bed86f8d2c2c3575..8044cf50cae8291a13bb0e3955654b47e6ce24f6 100644 GIT binary patch delta 53 zcmX@o$8@BRiC3GCmx}=icGkSiirL5;tjj33IZ?M=Kp=36S7*`!=M_RLqIL*hVX@u( I!`8 IVe8`w0KPpEfB*mh diff --git a/art/big.py b/art/big.py index 3481531..ec708ab 100644 --- a/art/big.py +++ b/art/big.py @@ -173,7 +173,7 @@ def gpu_front(accent, accent_dark, brand_text, tier=1, burnt=False): # 前沿斜切装饰条:品牌色 + 品牌字 for x in range(x0 + 4, x1 - 20): c.rect(x, y1 - 5, x, y1 - 3, accent if x % 11 else accent_dark) - text57(c, 136 if count == 1 else 112, 84, brand_text, 'h') + text57(c, 30 if count == 1 else 112, 84, brand_text, 'h') # 单风扇的大风扇占了右边,品牌字改放左下 # 顶沿:四根铜热管端头与 8 针供电口 for i in range(4): x = 38 + i * 9 diff --git a/src/Decentralized.Domain/CardLabels.cs b/src/Decentralized.Domain/CardLabels.cs index f99ab59..fc5c567 100644 --- a/src/Decentralized.Domain/CardLabels.cs +++ b/src/Decentralized.Domain/CardLabels.cs @@ -49,7 +49,9 @@ namespace Decentralized.Domain public static class CardLabels { public const int RowSpec = 1, RowBuild = 2, RowFan = 4, RowFingers = 8, RowBracket = 16, RowPrint = 32, RowSerial = 64, RowSeal = 128, AllRows = 255; - public static readonly int[] Rows = { RowSpec, RowBuild, RowFan, RowFingers, RowBracket, RowPrint, RowSerial, RowSeal }; + /// 标签栏的顺序:前四行鉴定真伪(型号、供电与风扇、序列号条形码、丝印),后四行鉴定成色。 + public static readonly int[] Rows = { RowSpec, RowBuild, RowSerial, RowPrint, RowFan, RowFingers, RowBracket, RowSeal }; + public const int AuthRows = 4; /// 各标签各取值对价格的影响(百分比,相加):风扇叶片积灰 −4%、缺角 −12%;金手指发暗 −4%、氧化 −12%;挡板划痕 −2%;封条缺失 −6%。 /// 型号、供电与风扇、丝印、序列号本身不扣价,它们决定的是这块卡是什么芯片。 diff --git a/src/Decentralized/GpuInspectView.cs b/src/Decentralized/GpuInspectView.cs index 308a085..02f28bc 100644 --- a/src/Decentralized/GpuInspectView.cs +++ b/src/Decentralized/GpuInspectView.cs @@ -16,7 +16,7 @@ namespace Decentralized /// public sealed class GpuInspectView : MonoBehaviour { - private const float RowH = 27f, CardScale = 2.7f, PanelTop = -86f; + private const float RowH = 27f, CardScale = 2.7f, PanelTop = -86f, GroupGap = 8f; private const int RowCount = 8; private static GpuInspectView instance; private RectTransform root, cardRoot; @@ -173,15 +173,16 @@ namespace Decentralized font = buttonTemplate.GetComponentInChildren()?.font; if (font != null) serialText.font = font; // 标签区:深色底加浅色边框,和上面的大图分开 - float panelH = RowCount * RowH + 10f, panelY = PanelTop - panelH / 2; + float panelH = RowCount * RowH + 10f + GroupGap, panelY = PanelTop - panelH / 2; MakeRect(root, "LabelFrame", new Vector2(0, panelY), new Vector2(648, panelH + 8), new Color(0.78f, 0.68f, 0.45f, 1f)); MakeRect(root, "LabelBack", new Vector2(0, panelY), new Vector2(640, panelH), new Color(0.10f, 0.11f, 0.14f, 0.96f)); + MakeRect(root, "LabelDivider", new Vector2(0, PanelTop - 5 - RowH * CardLabels.AuthRows - GroupGap / 2), new Vector2(620, 2), new Color(0.78f, 0.68f, 0.45f, 0.8f)); flip = MakeButton(root, "Flip", new Vector2(0, PanelTop - panelH - 24), new Vector2(200, 30), out flipText); flip.onClick.AddListener(() => { if (shown != null) Items.Flip(shown); }); for (int i = 0; i < RowCount; i++) { int row = CardLabels.Rows[i]; - float y = PanelTop - 5 - RowH * (i + 0.5f); + float y = PanelTop - 5 - RowH * (i + 0.5f) - (i >= CardLabels.AuthRows ? GroupGap : 0f); rowName[i] = MakeText(root, "RowName" + i, new Vector2(-255, y), new Vector2(110, RowH), TextAlignmentOptions.Left, 22); rowText[i] = MakeText(root, "RowText" + i, new Vector2(-30, y), new Vector2(330, RowH), TextAlignmentOptions.Left, 22); rowButton[i] = MakeButton(root, "RowButton" + i, new Vector2(245, y), new Vector2(110, RowH - 3), out rowButtonText[i]); @@ -218,7 +219,7 @@ namespace Decentralized { int row = CardLabels.Rows[i]; rowName[i].text = RowName(row); - rowName[i].color = new Color(1f, 0.85f, 0.45f); + rowName[i].color = i < CardLabels.AuthRows ? new Color(1f, 0.85f, 0.45f) : new Color(0.6f, 0.85f, 1f); // 真伪行金黄,成色行浅蓝 string text; Color color = new Color(0.96f, 0.98f, 1f); string Show(Claim c) => row == CardLabels.RowSpec ? DisplayModel(c.Model) : ValueText(row, c.Get(row)); diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_pmd_f_t0.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_pmd_f_t0.png index e2b32ca5b615e45d9acaa2aaa13fa717deef5f83..6991e132825972b87c9909be2eb07b5f84849da0 100644 GIT binary patch delta 2313 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 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_probidia_f_t0.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_probidia_f_t0.png index 7d4f64cd536fb2ae3949763dd11f60b71b2c1d93..ba73d5d813542090719ebac021d2331325e7f39a 100644 GIT binary patch literal 2348 zcmXw53pmtS8-M?E!MIL{ie+4*A+}5x4aQcC%S75XmoT*{OwrwC!auQeb=i_lE}3H6 z#mtt=YH5bdviUMmxu%d@HX4`ANQ3?F_dVZvp7Z|Bd7s}o&pGco@8zQJE_V&pHL3uh z;lbSDhoK1TsEQIMgHsN3090l@cDQ~U+dG*rtoVvXPMbAi>N0h8(|>TepP5M(uT&+n z%+15irj_Dw*Bvb^nBQ7uWSSDA&tzSY4Q<)@Zgn5G^Ub2o)svE1=e69Jq{1U~*@Sca z4qkh>!?Lp@Xv3RWJ68IOQ3vRd z_dCToKJ#e&GlnE$1NI1cW!rEAIH4 zux!gb3aR1`NRbi(6TUjc(nnPYU@tJ8DB}sMi$Bn$$u~EvKNtZ&p(0Q+LLL>%?OsBV)e2pBH9K7ZIHpr$5!m zh!H_%bZd#9s2rF>T@^GS=tZ|Z(w;!rO~tvJ249_=-wnk>%AgGUtS*)zg62qp?#FQO z*BLgnVJU#Y5*UE>l3c~*(W=8&yVvM`_k)$`(oA%%4ZOs6^Omg!y(qD&Z|iwNi$o1n z!M!$vdr9yqKpr&Nk^1tMY>4t%sgIF2^=?Lrv(faZ5D#>eo84!sm^tUwXjiVD=62B- zekPqo2380yVkP-zbO^6;jUaJPPUFFdLO}N^XzBDJJCk(p*s3cMS-}0b7D$n0w-)xK zA%ivG8#Fj~DYR8HxD)TIvtOA~nBM7@@E0fi#~u|hn(k7Kw((!DA$rA0wgpc_c1fsv z;*cgec<@G(7EBN$dzISPEp0fxu3_fS8p>YQRtR1qI|;Tf!{JU$Ycm6uY*rp2DPQ zx?e85H6X5I_$cfUHtTG;LRfl`#m(vQ=DEy)8u)(0P9?8^vMq0ui}7N#`qLu51=>?fgz;+PN1^Imr3tO0F@^2;FwSuQRk zJxwkeFs@d;bG<~e56`|(w4Yo#^o8}h;IGMoAd0z`{fjs!L-gF8wZfK8$vy%_PUzGz zZuR)NI;myjoyml67O#B0eBB6Of$}r!T2MW@SI2PW(v_hj7W2d8;SYp@iCyIa@oZW0 zjV6iVKnmI4C*|!!k$8r(v9LK}JB5P6z#DNee$RkRnLGgh66E__Hz>LFV_(l*pM zZv$oIu#^GLvinQ2(<#`?Y|lzqsdb!6Zp&uo9<c{b0s(0|Mf#Yc1s!gim}VU9 z*kd`HWXrQl2>PO_%zkMIPfF&1$4Rb*?ram^^2Dkm+E)&EL1svFjAdVek#+w}Um$4& z$8P1KijbV%AAJC}X~0&Mj(Y3OK&Le@1QOznE2nscrQ1i~v%C}^zo__lY$4L?z_jC1 z@1xxDnA`m2vULkVWduBc4PF$Efxi-3Z-DtTP}rCtV7XmH#9_Wj!)AOe{l;ow8my{; u5WFY?5y=9=M(NEGo&Ogi|JEZnIm@`a{5u4{-knJp5j=M8+EMWhJNX}#%^2|j literal 2355 zcmXX|3p~`>7e6zGc`!^&DrwBN9&H+WP%Q@2V~L_#TV643p4*oGq(+1J8S+PYq*h5X zrI%2OG0{vj9<|#2hx{!Tc}xj0W(*Ta{C~Uqzn{;&=iKi-_uO+o=kYn|d%fJqBoh(< zkaxN7*pE^fIuU{nx*kdiI|@LU+qHw`!|7HON*>VcDXB4L?o@XwH7&Ks$K5?mPB_cA zG&HQb@FY19<58GvXukH6r~3u|Q-_G;_!HOiC(kRsbo3>x%WVFWx!|n$Gr_E7He8%d z+qZ^FI=k)0-hW70p!27Zsn5lkcU`}wBHk|C_$wG$7NcuP>;W;)EKxQ2fAhIF7v?oHMNtaTWm{U} z`vZw#-3Az7hhyn_N!m!Y+?E8XZ@POaATu={kZ>$zz&HW<+Q=^Kae&_T=%Qqz15{ieksMK3_dOJAy!^*MF>$i6(d2-e z$r>YgK@1K!8Q~XlO9xDtuGdHCg<8nwNfF`MG6E2=^mJ*8%+ct)YOLN?sSJ}kaV@*^ zSy!;&IX|?$UaS4NEzv%`=2W&l;V0KJQk@-e$UxgdlvV{1R?~lO(T3wW1}C&ZEbrV= z(C?;;jcj*IzNc4Obz2wqVr1Nj`|u8%O^{aSSz=jp`rht8+^K0MU})?cc|4h-nH*nFzcvrzKQ6(355F!{Y(3`l7_UaTHFWs)zn~M0CV-oLbof+ zE_p49b>I3dt2^!Dv}rz(cFib$GdRgF*Bg`5j0qm#G3g0qxH@Wspg5Y}qK{a{D@`+& zwzbz^Rm9xpFrl3e$SU-tZ%#CE0e%bp-!Lwq40>KLeZucA(djRvZpL_C>hj(8D+@vG{P#ANZUPLoH{FZ2@$J3nuXT zjZxLJU$j{`Cg92b^v_~uS5N4Q~r4eXoLLbMR;TRS?S>&Rwb(rG&= z(~s8AvrGiKRTmkdE^<@M3iT@eerVfE?RN@{P5)Fo~`%3O)UO? zL>qCN&l_Mmx^bYjniWapMo(%1jgCVO&fBLs$!)(%JIN6)DVp{x>9fF~Mj4>;L4zXL zTQI1}2wu6WwhT|VdZO>zx1?M+m)qIuP`L#4`a_F8--h~itYR$L#|MFp}*nGZis?y|AJaRhs;5w-4 z2sV;#zUjliQP*~~JB?P#!VECsH{&2u@~w{G9-E!_!!ZKQ(rPZ#e-=%3CD6}qwE#&u zkBr2Bie30}^~%v7AMVLHWCGFr#Vw2%whi=BjZ)k7!))G6iukwLN1U6`CztAhNz)Omw)N)iK^L` z#GwD^PB$(Z!h!Hklf{{kvPk8|f)b6D85;v0gfhx%EV6VsfYQ#c2um%0#Df85-JNCk zp0^G$A45*x?D5#+ZhQEzI_BPDjMZ2!mK~QwBZ%cvClFgbS;aSRra_tFpg&7x!`-@n zo`XE6SGgRG78v854{&PX8 zYeP%NF@nwQek;ea(}H`lLUks+wOt!m1`?51>Kw~g1?{N}doYjiw~{z9c!{qn(|IOP zZR>t9@OuA49ap~K8l_79+5EWo@TnFHN-qA&=rfwWtMluNE+Jzx*4P{_b}TbH)XFEo z<=trO$7eSZUtHmN7yu+t+8ur^50d>x%p&o=o7`j+A5BolVOvJL7>}M$J>dV+=xsKT zLh+4C>EBfMTutB9|7+xSdTA6uEWwWApK2daU$_*N0ZOXH<7tw#_ov&Zp3V2%o2wBN z59brFQ~4c*eXIG(V;YM`Sx!-_hH3OwR;;^<-ixgk%SW_!>($?rBz!b<2HbXmbu&)X zJ$_S3OhSW-5^!+RhSgcO1~1V!wv->X7f>;iAmd10`c6j%WBMGMr_! zO-0K$n<5+kXnATwfQs*7eXW5^OO}UY`*>As`Pfh)8E@M~Ahd?)q(_cTVW?6(=wOg$Af9E>EKdpr9` zvtA_qmvo`>{z%jYBRzl$Jt!svuvfrG8#Dz0LC_LFS&woC1ax-