From 9a1c96ddc7416f5ce4f1cc29ad45113a67455126 Mon Sep 17 00:00:00 2001 From: Dara Adedeji Date: Sun, 13 Sep 2026 00:44:49 -0400 Subject: [PATCH 1/4] Add agent firearm selection and visual overlays --- assets/weapons/README.md | 27 + assets/weapons/ares.png | Bin 0 -> 4111 bytes assets/weapons/bandit.png | Bin 0 -> 4075 bytes assets/weapons/bucky.png | Bin 0 -> 2555 bytes assets/weapons/bulldog.png | Bin 0 -> 3396 bytes assets/weapons/classic.png | Bin 0 -> 2228 bytes assets/weapons/frenzy.png | Bin 0 -> 2211 bytes assets/weapons/ghost.png | Bin 0 -> 2076 bytes assets/weapons/guardian.png | Bin 0 -> 2949 bytes assets/weapons/judge.png | Bin 0 -> 2732 bytes assets/weapons/marshal.png | Bin 0 -> 4277 bytes assets/weapons/odin.png | Bin 0 -> 2286 bytes assets/weapons/operator.png | Bin 0 -> 3157 bytes assets/weapons/outlaw.png | Bin 0 -> 4320 bytes assets/weapons/phantom.png | Bin 0 -> 3203 bytes assets/weapons/sheriff.png | Bin 0 -> 2220 bytes assets/weapons/shorty.png | Bin 0 -> 2126 bytes assets/weapons/spectre.png | Bin 0 -> 2790 bytes assets/weapons/stinger.png | Bin 0 -> 2482 bytes assets/weapons/vandal.png | Bin 0 -> 4115 bytes integration_test/agent_weapon_test.dart | 10 + lib/const/line_provider.dart | 42 ++ lib/const/placed_classes.dart | 14 + lib/const/placed_classes.g.dart | 32 ++ lib/const/settings.dart | 7 +- lib/const/transition_data.dart | 7 +- lib/const/weapons.dart | 47 ++ lib/hive/hive_adapters.dart | 2 + lib/hive/hive_adapters.g.dart | 130 ++++- lib/hive/hive_adapters.g.yaml | 58 ++- lib/hive/hive_registrar.g.dart | 2 + lib/migrations/agent_weapon_migration.dart | 13 + lib/providers/action_provider.dart | 15 + lib/providers/agent_provider.dart | 32 ++ lib/providers/strategy_provider.dart | 4 +- .../agents/agent_weapon_badge.dart | 56 +++ .../agents/agent_weapon_menu.dart | 39 ++ .../agents/agent_widget.dart | 54 ++ .../agents/placed_circle_agent_widget.dart | 8 + .../agents/placed_lineup_agent_widget.dart | 6 + .../agents/placed_view_cone_agent_widget.dart | 8 + .../draggable_widgets/agents/weapon_icon.dart | 99 ++++ .../placed_widget_builder.dart | 2 + lib/widgets/line_up_widget.dart | 1 + lib/widgets/page_transition_overlay.dart | 16 + pubspec.yaml | 3 +- test/agent_weapon_test.dart | 408 +++++++++++++++ test/agent_weapon_widgets_test.dart | 469 ++++++++++++++++++ test/view_cone_agent_drag_feedback_test.dart | 3 +- 49 files changed, 1599 insertions(+), 15 deletions(-) create mode 100644 assets/weapons/README.md create mode 100644 assets/weapons/ares.png create mode 100644 assets/weapons/bandit.png create mode 100644 assets/weapons/bucky.png create mode 100644 assets/weapons/bulldog.png create mode 100644 assets/weapons/classic.png create mode 100644 assets/weapons/frenzy.png create mode 100644 assets/weapons/ghost.png create mode 100644 assets/weapons/guardian.png create mode 100644 assets/weapons/judge.png create mode 100644 assets/weapons/marshal.png create mode 100644 assets/weapons/odin.png create mode 100644 assets/weapons/operator.png create mode 100644 assets/weapons/outlaw.png create mode 100644 assets/weapons/phantom.png create mode 100644 assets/weapons/sheriff.png create mode 100644 assets/weapons/shorty.png create mode 100644 assets/weapons/spectre.png create mode 100644 assets/weapons/stinger.png create mode 100644 assets/weapons/vandal.png create mode 100644 integration_test/agent_weapon_test.dart create mode 100644 lib/const/weapons.dart create mode 100644 lib/migrations/agent_weapon_migration.dart create mode 100644 lib/widgets/draggable_widgets/agents/agent_weapon_badge.dart create mode 100644 lib/widgets/draggable_widgets/agents/agent_weapon_menu.dart create mode 100644 lib/widgets/draggable_widgets/agents/weapon_icon.dart create mode 100644 test/agent_weapon_test.dart create mode 100644 test/agent_weapon_widgets_test.dart diff --git a/assets/weapons/README.md b/assets/weapons/README.md new file mode 100644 index 00000000..720372f5 --- /dev/null +++ b/assets/weapons/README.md @@ -0,0 +1,27 @@ +# Weapon silhouettes + +Bundled in-game kill-feed icons retrieved from [Valorant-API](https://valorant-api.com/v1/weapons) on 2026-09-13. Valorant and the artwork belong to Riot Games. Valorant-API is an unofficial asset source. + +The PNGs are unmodified and retain transparency. `WeaponIcon` fits their visible bounds at render time so wide transparent margins do not shrink pistols. No runtime downloads are needed. + +| File | Source | +| --- | --- | +| odin.png | [Odin](https://media.valorant-api.com/weapons/63e6c2b6-4a8e-869c-3d4c-e38355226584/killstreamicon.png) | +| ares.png | [Ares](https://media.valorant-api.com/weapons/55d8a0f4-4274-ca67-fe2c-06ab45efdf58/killstreamicon.png) | +| vandal.png | [Vandal](https://media.valorant-api.com/weapons/9c82e19d-4575-0200-1a81-3eacf00cf872/killstreamicon.png) | +| bulldog.png | [Bulldog](https://media.valorant-api.com/weapons/ae3de142-4d85-2547-dd26-4e90bed35cf7/killstreamicon.png) | +| phantom.png | [Phantom](https://media.valorant-api.com/weapons/ee8e8d15-496b-07ac-e5f6-8fae5d4c7b1a/killstreamicon.png) | +| judge.png | [Judge](https://media.valorant-api.com/weapons/ec845bf4-4f79-ddda-a3da-0db3774b2794/killstreamicon.png) | +| bucky.png | [Bucky](https://media.valorant-api.com/weapons/910be174-449b-c412-ab22-d0873436b21b/killstreamicon.png) | +| frenzy.png | [Frenzy](https://media.valorant-api.com/weapons/44d4e95c-4157-0037-81b2-17841bf2e8e3/killstreamicon.png) | +| classic.png | [Classic](https://media.valorant-api.com/weapons/29a0cfab-485b-f5d5-779a-b59f85e204a8/killstreamicon.png) | +| bandit.png | [Bandit](https://media.valorant-api.com/weapons/410b2e0b-4ceb-1321-1727-20858f7f3477/killstreamicon.png) | +| ghost.png | [Ghost](https://media.valorant-api.com/weapons/1baa85b4-4c70-1284-64bb-6481dfc3bb4e/killstreamicon.png) | +| sheriff.png | [Sheriff](https://media.valorant-api.com/weapons/e336c6b8-418d-9340-d77f-7a9e4cfe0702/killstreamicon.png) | +| shorty.png | [Shorty](https://media.valorant-api.com/weapons/42da8ccc-40d5-affc-beec-15aa47b42eda/killstreamicon.png) | +| operator.png | [Operator](https://media.valorant-api.com/weapons/a03b24d3-4319-996d-0f8c-94bbfba1dfc7/killstreamicon.png) | +| guardian.png | [Guardian](https://media.valorant-api.com/weapons/4ade7faa-4cf1-8376-95ef-39884480959b/killstreamicon.png) | +| outlaw.png | [Outlaw](https://media.valorant-api.com/weapons/5f0aaf7a-4289-3998-d5ff-eb9a5cf7ef5c/killstreamicon.png) | +| marshal.png | [Marshal](https://media.valorant-api.com/weapons/c4883e50-4494-202c-3ec3-6b8a9284f00b/killstreamicon.png) | +| spectre.png | [Spectre](https://media.valorant-api.com/weapons/462080d1-4035-2937-7c09-27aa2a5c27a7/killstreamicon.png) | +| stinger.png | [Stinger](https://media.valorant-api.com/weapons/f7e1b454-4ad4-1063-ec0a-159e56b58941/killstreamicon.png) | diff --git a/assets/weapons/ares.png b/assets/weapons/ares.png new file mode 100644 index 0000000000000000000000000000000000000000..b634c9bbad0ff8baebb56137b2aa059881d3bd47 GIT binary patch literal 4111 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 b`ty)pHI;S#q|LH_xxBjaGkCS4)!Y99UMSKw literal 0 HcmV?d00001 diff --git a/assets/weapons/bucky.png b/assets/weapons/bucky.png new file mode 100644 index 0000000000000000000000000000000000000000..f4c9ec5b734827470066fe64079be7bf18a29a4a GIT binary patch literal 2555 zcmaJ@dpy%^8{Z)e?=XkZP-YH2&Iu)lXyRu%O*~W&lbMDba*ndq^J>nFXbP3lqbBEw z%I~R_WTK79o@h~eiAfF*5$}3G@88e$$9-S-eSbdJ_qwjn_x^saY#%Q-q}(n!2n2!z z+;Id51WJ|oM1-_tRb8&lmTWr`T!7;UiDe*2bO=PY1;9BUPrWfep3c?s*X&(f;1ei& zKM)An1ehE_=_AI-sG~y_25rzlIjiQ~vQ+k@?ZE`ol+F+?!Jybnn2!CIsJ{o)C@U2y zp>*kG*ALfXO>eEbd@^m{+zca!Jm?p1h{MT);_e>r7D~!0ml@HzP!%!AWhQ{!f3ox5 zECn!n$h|`DhJ3W&=TD)cr}V(l@jtld^H@cRY}T#e=4)!sJOM*z)hAtn62IPXLAC*UJ7;5Wy*v73SLQ;1WV zsMuPC7w5f`V5u5wq^E&gw$>ml!j*G-m=+kz^jXQ=cCkQLC&R^8+X4xXqati>-c`3NO0)WkD{)3szOUd<5_#$b^l5*g+(#`B8U6w@VXGPX@B(Z$P+g zffwikD7p)6lPm(NW_L6>2C0$-xeD;DUuI4Kd4n@R>8CA8xLg;bO+ZE z3=F9cOyOCPPL0K5PI{BpqV^cKaPoy2K4{4>lQAoxTi3%|eCHwW%qb<ED7oce z4*L+nrGRR0D3ggaGK5&QLO)6F zZEj{D!S8+MFQ-#HD8{1xweGN~!{(c)Oj@*VPOwcedvVM-UhA^>F*t*=oYwLWXCxxy zR4lB*wQ2$($786Qs!eXfIQFmk8;5AQ4DYg(-CnSIQ#xHjHW%JbFhhiv@_$$rZSZb@ zCTw16gbWrTYc~;J|MZ;=LT21N|2+igh9rFJ)m?s}=!B2>=tT^HpCLE~O`yQ{e!crd zuZt5SXZK(xdr*s>EoqeCvo$#((7#|MdR7NBgBMgsXHfAZoR+tMYOY;7A=RGH&^rvw4`)O&qi5jIhc^wh4p zDhF!jaOp|KXf!G|;Od6OSBoZ3&oMR74E2U9M7s;~Ol}?bQkxgLYzlggo`;YFlmJ8g ziQ4Az5#n~^$li?&>2SqHzvSR6iwkCyP?g1#ndrM2(~eT4fFgQlK09Kq*D@z~h`14& z^uYQ=T2$J=QYL&fFaDi`ZptnEBOS?v!WBhBNGr^hV+{I&_APwdc5wl{$NKFLJn4O3 zu^Z0hjL&LO#b+lvy+epdQ&~sc^NUy3KzKpOQn?6MjvDykQTqIB7T#!jix_P^e<8})Am#LE)! zlt_sA(mpY{gBWnXx@f%A-xAdsgq-e+#qst7pJC>Z9)s?^3Zi&X0S4A^_3y*4L4f$~ z9L&PlcY=OVEww&!>6qv?d9}Q)koBccaIR8uuC!-)Uz~zPdY+%FcD)CziZ{k(Ycm{m zDMvw4O(r)KsWQa%>(;AQ zzy`j{m-oG5G{C*fowq^g4ff>ehi}=p^N{|IcyFmtf$OWf{8Z&@mLAP_sJr1EM>%o7 z!lH^dTltlFCyK+Ki z6B_t0lLC6}z#Nw1Moiv1087oJpjNLGAEH%Cki!^a>FH9R73CJ`Ow?B*Zulg*RiBY8 zQ-H-w9|0d!3dSOS=5>HE4I5SS8MzK#AR)JI(^KoIc4)?a=-WaQO|HRpTKinpu}BFw z1GK`e%AN?P#e>DxYq>NT!fP6K#sPFD$$oGbO@XZAi=`Y%MLGI2mc(s?90mB_CDp=g zdevheV+vm6Gx0F1N%6<~7(0nhHe^|GZSKGgp#D>T}+J%Zuc6$065Eeua z`|9gv7@ftPjfYuSeJN#WK1y(2M-Z>Hp{$=v5ZGtd5jC&k_(99l2)&>Bw{PV?h#G6~ z32G4|QDJ71>j0u=45THd{QhPN%tkG`s25Vmw>%o({I2^g|2#*)bb7+{61G?+OGG`782bJC@Z4lg|8a_z8`I+hi7 z+>G)`BY(S{VQ{BF5<<>^a*0*wVdut+)oO`b_FeNv1gn;Od3D??SxvU+baMxBvhE literal 0 HcmV?d00001 diff --git a/assets/weapons/bulldog.png b/assets/weapons/bulldog.png new file mode 100644 index 0000000000000000000000000000000000000000..ae1b46227adaadc73cd22c5480385f2591c4e5d6 GIT binary patch literal 3396 zcmV-K4ZHG*P)K8N@UUXt5{^LVW{75j(|}s8Fj= z2V@i~<5W9PMZg5nQ9#71gU~7+p{FsR=bXLvUVESOd}cDqJv(=;-`aQXT6?|hwZP2Grc&e%z^rbP<^l6d{yb&o*Aa1X zt~kw_<_5r8OVZZBLSP4A#~J@#*!S=Lzx)61HpAu_5&oU9sWJ2~hFKFN-No-J@26xA z$84hcX~$Ycl5*zn9)L{~_W)|p8@hN}?l{cMX5*)w#Cnzg<-n5MvDjGtr{Vmz0M`K* zMZ^yp&fBJ(8-Ro)1#mI&w%oB;Cw&jN0Jtn79?u<&O+GgO2}$}S@b27kSm*r$xP+ot z@ZY(EvB~8IAQ4H+fHQK(VH4-SfD3`kBjT62gR#lt1|R`R?*Y!s9fwV{M}aQ@7evI5 zatC9R!3{t~l8ysDS8{ndaMPGc{|&IH@3YOo*}xNHruiHD0nM&KggD-p3VcQDpnZU8Ef^d{gkV5knQ0@icSPJ>G3`abtrXiP{Kk6V1rc$7#kBVVzKh@FwdwO6;5A)Y z#Wm>3)#f1S6~Gk?uKXVd{<3Q2572uW|F^!6w*xNfEjg`{_D?8=nPyrDe7Z`yy|nKD z{BM#{gWxi?PvN2 zpi&Q`XDRTa1nHP{&8H%w^-IFt0E|e|3g9)l<1n+vIQSW}R@3 zq@!{NF&p;)MkHx5aBuE7%&ZeO0S86IxXZz7XIpn3fTTYG7Uzy*4&IZ+%sQ`i4FGUF-ci%ctah#KnwXhQh&DcG18xA! z%<8rvcK~JF0GOFgDK`LSW>d-yfSK8pasyyyR-S-o1j>vHP?lQf?vAB5g^ub?;|*vzcoRS|JS?jQzf-7Crwu>shSJC0FE zS`Iu4?36neGqYiN2q=Mwc!J`Pcr&xka08Hz&j>KHPH_W}&h^0h+(DRG>ujGpfHH0X z5{Zb7cp})$p3Duvl<+)&nRQ0%RsnU~wZQ+=;=Mntad!jn1b$F+K9|wr!^dm%MT)Xl zbqOurx4$lK01}Fb4U(<{-k3WU%WgAp4sd2f)P9Dvr1vp>4Z!Wdu_^Aaq!qxD>LGQD zhk(-ia_#^uyIX+$BI490Dt~~8xDB|fiM(23J#b{g`+H5IbOu>iW7?It0Z8u}U{mfO zESpP#10v$~40$ihkY_G$kBEB`rgtr%gz3%H+IqINfpt|xJO+FtcN`Pwn-p(akNRh; z=mUIxK>DfPK7T2hwpi))0;Zt{`pJk$TF!`AOVM+iDy`cKXc9;|2Kd65-~J0=UBYm> zV7EE0Zvgg=h5GZV(Ke4rdTx#PZNHl0zN4;~tMU*~4I<(Z;D+3BbjazHkH6jqoR=`K!v=h| zqW3fVc%nQO14k!HYaGjfUuDd{E=NbieKn?k3$V6^bX&VD+zmi|yf@I0dSlmLD!IHh zuq9!3hYt8`MepxV01qe1=QL&N1w_Q16qC`D7o}E3#QihA{xtAlg1jJOFMz>4oi2I+cymNFHKetIDO$$u z2B2Qv8)!5i0tUU<^IYIv3DTc!_y_oHFW@5y@`9olaBQNqh9)V1ziK+)8f*dH8WC%n z%CPtIPyOKLIe;nk73zDrWa9KD_%1BD`~gWjj+=I`QXJF+SU%vh3rRN_c)Fx{iP9R@ z0l=b$^Q^-MBO=FQivLKQ-nNO;OU4aAje0{1H|LI{W6q-3P_N(9fhx;EpAYQP_t{2@ z@#WvsJC^ig74n*CSKzorX$|YI8_ur|%SqQ08shl= zNIJRXX=<~i7mSf!^#2*+dpg$(kn~S|`5x2z{QN}asM~w%zDL85ba2W-71!>abcBR(aJy3HMaWU6wK)o3b|h zJg~at+SyG65D}XxRwkveE9rI|ol`{or0=6T_tB|hBXCqiv~999^>WbGX+?L-tc;|i zDb8yhHVST9EYSRKo$18m|l_ElL=FO8?sQy)d&5k#xi?70B@o#jus6 zA112w)=26>6EVy-95t#&dI6HoNf>h#do@vBGn+t?4w$8KNp+m#Trq^CTN71?YgO|YxQe-p zpCyX7iXYcmP8*Nk1F+7Bh?{}3WuGTW+O2^Y1f&|u*abK#QCejV0>;`vFR{kn-Zrxd zC221et4RiF>=;CqPfCyKA=TIm(3AHD%H`m?%4lX&M8)#KLAFSGQA07jE@9>PzM5j( zPST?Z;~du`%6BxTnN1Q&izRI;scf!oFpiapD#%)T0g{#^im$3mQ~17mYk%WReos4J(9LrK(#~-CwJRdjQsHy-Cv#mt5Wj`1^)JIU`XzDS82KO%X@}e)>1FdP&+| z#d*7fJSOQG4aIR~q9^CFC9cE7uxFweQrIWu{k8Pm1F+7Eh+hI{mRx=+>7LH#^3N5& ze+%#dpvoaPZF&0tX++$XI|wtI0+P0oba%;<=q5?K*PQ=>DxZrO#yUxVo*<5UE5wk} zXHwi(Gqa&+_H%nLt1;i>RlYUFFn%a$j|6f2X@wY4du@t)Yi2eS&3$6meu?wjTGIIy zE6OV*JuOi@|5!1WRMtzHm!eEoFK-256Gg=^$~7gIR|BgOX16P_Z-wta12`+imKBn= z2JQzMned*&gI?jX!;3Q77_-Ur}0t(Wu{HI(}$l0Kp0yy2YMG7)Waa1X#Hj--Qt zmAT_6@gv}fh`6h+3{><64xv~Pv;5(U%J|JD%V%cxB$D=Npt2jqGD%r`+>&;Z^bQpV*_0itSykn|jLgg`lXQ7a zmE0))Ptuay_oAPqT_v3&>Gs6sU6i|QHayP(*u;{w6R=z6FdpcgUC>&R_M(_Ccnj6; z*Bue@!ZcBtnOS30yhrhJNf)R%r+8FloAQ~NSyxEfR?^{;{$0}JLpA{W=Z@RV%o0*@ z=EBjEzAkBVN#(yrk~fz$Gn-VBo+0TZNjLR102k$s&CJXiB5ARt(G0g~n3vH~09kuG zsv7`+un5pFlJLADs!M|x)Fo?scMLq3n6t2sq1#iBxW^PNOvY#V+3xHUE%`ZA6AEN) zC;ViLGJUD87s;4M*kH1&_U#MWt{D);nuyCnxJt1p`%`#nv=jvc3Z#@NamWE+C8?D8 z;-#)vw32wr4&%|8%I&K;vwD-ASN^dm`2Olu{J^H=i=fMcC6{OH+h@mP2V;Y3=zZB5 zX?8_zHfX}`DQz%~>WHQM65s&r#+^hcq_gpq_)g4b-4rjK)5975(T#gidzb<2_pI=wIUS7yHHze-)>>A=Z&9rya^PI zU*;VEq<<;b)NCE@Qr|ET91X@gZ8)K9=4NS2xn+Vxl)I(PBR1q@%u8CaCppcY?1 zsf1ItEr1)k@~hG>`?e~p)xyV$8L46O zK?}9R+n)Lkz~{Xwa)hg)yffYG3BWh=l*|wCo?y*oC~ZF#OPGv|ejpzC-0V{9_3{92 zP1)=`-C1HlUfHP!eoFlHFXmG7-TGfIl}1nXqGj z?%iQuC}b}fUeQ-myl5%(5Y7y-+*9zB=$BBQHF_863bs|3p>V3Q1sEquX+Vz{nr&;+ z!x%#8k$L?lM)oDBG*zzRE*a53`(+61H%o;ED>A!Cs^D}J`ZIkcGv0vqGN0ZfG|~a5 z52M$jJ`wnaDD$lQO^37Yk9KJYO6XF};&;>2b9<0I#w7x1B&}Zf0!xGf^s8<+4L(3A z2bf7*JFglcU+n1?ZxV6w6X6RLTh{uSH=Q@m(>I!f_CbM-4v!kmmcG#nBkL-8R|>-F z1`=@%s>Ya&IVNtIl@;oX^34}b=#aJi41jmYqQb`F0~X2clX(@@D3?&h2HOKUP9{rX zD+b{S``bOSuM*bn@jAAe(tfY;nk(n1d2(Qa zSWPG`!Pk3#DkOQ#|HPK9O%6CWC8LKWH{}PYSk1S68L*VKGQ%aROnc;9v9-mPSq@0P z3yx%B;+fvh0|Pt5#(Hz4nhUub4U-wwXB~jmMh<=`}T;0ICSh4sM?OzPnEU*<(L) z4;Ri!ocEh)o_j_PAa~qyTjjJ$`Ec)aH#&592Cn3er>M;*Q#@)$c%8|5>yoAqS5Btc z*spoSd{uD=5nA`=FK@l$;3W7@q}bP)TOG=?4CIysUq3+EW1B#9L)jSRZy^g)k+Lt^O$2hIrVWpC{3V=Gs= zw+=S$L%890AVx*3cIcu=+43C_SFTnyg$>D1Z+XO$O`c!wsCW`(QB-w*xnuh>}i(_!q| z!tJlG_gbleKe8=)PbZHGy4cL^$d#>`RIYk@zWN|TDO?jtu6N3XyY0Opk}b`YX^)V! ztC!^^5m}y)MWe%08}(i`w}Ueaw|SHU@H=0nz0eZ6zb^t~G#3s9ThOf#G5T=P*PsZ2 zQGtW2@#2p2@mHtRk@{ZkGymN%WSKr^BAYDWe9x#yg;D*`ac@n>_+VC3i zJRcWrK#la5`f+RTJq=iYe4Zt5y7<9Wn3uhAhxijn(Ofr94LDg+S&M_#mQ9CdTXW8o z+1f;oU?|M~wq5pSGXXg|L^Kf)O{w0l_wudr6RN>`HDJKsZ26M>R?(O89G_teK=jeY z$AIKflMsT>J6i?^TQP6;{gd8?V<+RGHAd!D%YpAh$3kItIl+zn^ntMHP8dsC1k=KG z8=h$tNH$)4b;EiOAX;#izv76TiTPB!auayo^08!nm^>x(Qyk?ff?VdJm%FzEfPXfr zxgIlVqm^HaBJA26w$aM7_~sf58?48wd-&xoz)o$@4x?uAZ7OcXmGo1dV>xAStQCF` z(~n>&*1RME$`DaB*RaKRLF6jLu{ty!TcBPY-H;5bfFnBgMDN@$z=wG53DqdMj)(qm z5leNxWK}{Yskz@*X#O=DX` zKx^VH#zx~qy>zx>+fJniI8lwrCS`brP5J@Pu0xBWUa=t$7Ie4IF z&dfQp*6g#_{65Jf9QK*D{1Im$CGh&X18E{B04u>PNjrcW>kg!8 zF6y*k#dLWO@4YZt6xPWsNn3$M5%F~0!8AoU0d(XBYL-KiZi|R#>JFp{dbe7&%$xwMWD6uMsXK_t%u|7_REH!j zi-;%c4rDTO0_g189^SiI(rZ%%VqM!VX+=c*v+h79J3m!1BjA2jqtcReyPOPiL((@S zeLW)1)E!I{I05ttuulJ9%WmntAZb-ZY^ghtCh;YJmEd=(uJ`|5cOXsUy8za752%{? z=aYW|+ym&Jf7Bg7f!0UFC+iNP$=n0zpD#;VTXztJ*;97_P3Im!pF{+bJ^>t+^u@a4 znV=Jrp6}xKE^ECm&Kr)r>aRym0DTq_Ujm+$l;Z&w_o}z$%bgsEh_2S$0~;i*Z2fq@ zq)n2hOIj^yX`*=kmZ%)F<^$G}-y6G( z04$I+yY=INh`aml04a`M@|3*iHP4Sf46uA(CP1H(TIQV9C;ujh9o_l zAdYF0)&ZW()&nPi@@&Xl{*~&yBhSd=J4ZSGu+ltf=^j;M3T7rr!1W2QvD+E*8=P~m z|F0S4_zl2N!g$`FtwGJ226!Uj$u*kez_d1X&jvQOUhCTY&ZCLrISsrmYonSq1@Q62 zC)j9~O)$39-~Pj%2d+!qmZkF;K$(6d>BY=-bi5nT##fYQ73vj|HUl~5L6|iIRTn&` z(?Gke&qs^rb-<^|^X)&{hi9Xp^Krv}OXH1ze`8r*diH zdOsWy-$`6%ahw1OMm0_L8A;br}A9Udd+IRj!JqgA`W#b0QkP7_a%;NYeb}4 zb!gU1!0ODS?)&MyHlS0CcVvj`G%$$cALHVA0OiZQLhx!;*YUmBrs^^vr74o$ow&^6 zH~|zcBKAr8edcOt4XmWH%Cw9t_)=s z!?ytk1n^!-k7lf5NYcEBI6Tn;fY(SmptOINCsf^@Je9D_Vz>t|IDR4N-x9z`HY)Sp;7K3=m+kq#c>7c|$}z zIng(_Chr_pHGr4Ozf@fY*m>Lo7%aP#e~-cs^z!D2IIik)C8eBWAC2Y&FhE)hadJO3 zcqMRQk7cC14A?K}vkA*HYcAl%4D;^K*VCXIFaYNs5IU7ha%$f1m&2OgX-CQIh~-#DY(GG9_k+gwg59zwV7ElfH}aK1Sk4fKA0fR zedDb2ufP|8s}eMmS-F6%$xr!n{kn(PW&!t6J!_zoL z<&2zywucYrv+R)9@gw3o+z&CS#{deIguohTY zcUzbZ9N?xJPWm&zW?&iB7G`Ev7vRZ0o%nlz&j2|uIm~Q4S|?>LF92(B7vF4hqPi{D zX=HvpUII1&cjGR;+2jXoPnZCnrrMX#COIz$wqYqB6f$4Zl7!`1CQbl0?5C1WCM@qm z3Cl9GT&Nb}Y$5Fu;Zwk@x<8wZ%{>59M4Xm%xzheUOqH}MVR@E;6Mzl-UWPJ1nxRZH zOO5I&LEi#?obWOL;H`CkHZ$uIaC71Wu&(aUWbOH0t-TDeSJHw+#hsKiCn9q0OK211 zF#sD)%5A!*$%BDr%>i6Z+Nr_2>;6n;HV(kfgb4uP=DI(Vy__!rtew=i1wWR!JWIfX zfHo?sZMvV6lxj8Ke`c6s9e3HTIV0&G?ms%^JN zbF9@v@I8LBQUPBbancV_JwI?I-nPrEe86?Ue&B1sHFd{h>3AZLbp)LAbAaR<6`O-n=j59evUMd;#ky0BzL?$@}(67ynpDNZ0)OxnGko_pd z@DW*z{4J{C!mMZ`FlU2-Ex2^~cf2^3nJLL0&bwrzSwY%oAr&29~J@ zBM(6XGIgs19q&?4*6pIzwT>h)HrI}QvTUErylR_z;^p}4Lit--%EC3Xhm}cQgT&}h znkHudCoLE7e(1ux6ogXK=zTVIOp~F=AsMs$bGx2zl2kausbhXC)UE7WB%B5#zHX&0 zwP$z;HKG*G{z8%5KP>d;XNYx>gbMLlZ-fXt)z8m$LUcmZz489=rl(>1W^$aKfuZNX zSw>z=L6nOfLNjI~)6}HGpvd^hMQCGD{&XRFQJqhvLz-IWJ{C>(9fD;fltSZxfv5d7 zdR0Ly6f5Aw`zVdYikt8*hzZ7_64(8pm+{j-D6`mh6V4K?rq!~)uh`zPKz7KjX3mw> zRT4Fc$aEW@JBa9!C)!hW`Gny)a0i%Azw~8k$iZA?pd=-pM5A_t{eEy>bCc34y%AQD zA=|s46M99B;1j=pRu7v3QM~=~=<$D)nVt5ZQ-{?ZNp=`i1oSp|c-HF#@dbM)<@iyh zRp)lA^agp{%nQD3pg!-tof67{x^<4N2F-?hxhp?^+8c&iYVe9*$xt`IrU14v1(8G- zff;jNW}?!j$e8Xh^DVaq;yUIb1}xE?mO!{l(s?oq2rv7*qRdZ`P?wzB@z|i$^r2Zu zaZ~3HdXm&*DM#?hjnQNL^b(D7$wX_pt;yHY+cuCJvH6E zGXX}~eCuYZbrR8Umyk-5)Vy)hmT7&EJ6gkMHLH#8knGRiMAP?Se~dL&V}RL%!sq+$Bv)-6ngn<*)&rZWA7e1s9hTX7ng>Mwi7hTyJ6wQb(k5rw014#{5t&`hbnEx;+n9Z~}wH+Mp^LwZXvn zO{+itTkA(k_69Z0zWQEwGpR?ugI7{G4vbdE0Y9p2NaU(rV1r^`aVfCB@zyabz_Rqd z+Ty>%*6y9xzD!EWf=M(_47W+zDnZGdIH0b$5lUPziG6j6-L7J7f=&8TJD;FxBfCm_ z{bwhniQyt}cz#>f^$~9I53)b^oH^x|LfoqFB@BR%#oro2&`~D%lWAfd3xtvO`D7S{ z^PwBW_)k-p-KR{+R%Dy_S6v@*o*zEOK_@~EK90Gj&wan16}4&);5~)?41J9ka|1V^ z^X$>$9=|E2^~S6f*C|ULXW2jNlLKrBl}H~gd<%^Fd_6!(e5W1@BKaI?0)(g1=P_J^s5UK~K98ICRUW^=9*?X*!BzjHU9sJvygAFy&2+&*d~gGwI zWTkkf$)lEZM4NJk-G$7Hh%PwA5=X9mE+^wZ-x?Sb`icm&=(-4$*$<67hlg_JAy)$( zg(oAe;8o1ujNL)n8GqIWLtJoGq;LFJg#zFG1^Ldf@}FC95l2>7 z!`5IuQ-N45t-mhREb?#)Cx9OMDgrWKw0CBXe^L3Ff%*0UJ=kOD4*kSp=k0W_9Yyb| z6wAKtnzh~bBEJ^Rj|`iBHruv5arH9Sbv9WAVKuVjFq2v`>5J|dNw2M8C`bBXiIcUO zeoM?1dLvk(Qe39_Yj@pK*M0N4w?ii_d7H|9ccbE+%=5GiKOBll-hwsM?5#DlYmE9y{$v*~QiC%k=Re!kx=R26 literal 0 HcmV?d00001 diff --git a/assets/weapons/guardian.png b/assets/weapons/guardian.png new file mode 100644 index 0000000000000000000000000000000000000000..3e9b1b7aabf8af0ac5e8b23cfbb78e65f54d1af5 GIT binary patch literal 2949 zcmZuzX*|^X7yg+M#u}-RtwFdGjmDNG67rkL5}A@>x>88lw<3eeWGlniP2{JAF=P+J zR7#B*G`0{UUAidCwMOxud;g#N?w%Ltdp_qppYxnI=X{@gP7Ws|L={8<0FVIftepWs zfXI&tB0_vGyIgvY{|JUyfu}|I7A?@TlvcGB9 zM7PO}BB!A&WKp0?|j2V-89wlx_sG={o?nVU=zh)V4u5b)|og=QwiQ?A)50@-iJS1Ayd7#1VRwi^c z?um(iKyLLRYCtln!Gz}34wp<{PBn~h-zl9vsl7gjb|OUOr$T6lp}luGE&HcSVZ*~# z+^HRXUWVif^0K@4dje?vz?j-9pr|%INVbir+SHa_T*BWe+ePHbVNksxESZ--Ns%UD zXok44J@?LQ+7z3V(@P`nBIcGZ5UVk8UdY0&hgtf~MNLz`ZH~>FBPT@PBbaRe_IsoU zX5xMPAQ*?bVa=XD?rdSMUbl zIoi{2_q>_1X%Bks^TnZ#YBEcpLhK{N0zcx};H|)AZa!MW`tO8r@}}LSD@b z&4li2B)w$YQWKC9^~0%5MevI32WAhthw1<@U?1(dpIPLWnkKXMDQdfw0780DD25oz!rrQ>c4mK&#wrB5x>qK zGSneLo|5$5!RvxuS<8&i_&Gr*V%ep@9O#0(tjd6*jl?kTB-ff@q1Q+C?z_%|-WjuH z+;paIc;j$m4~?_T4rnK1x+NMb?S{3Hc-H_yLrU%WAzoNV0U#=L5+9BatgS9~uM>3y z3Sn=xx82@mZN!p)SSCes%38FiBgnVZd{0@oP>iYdK!`>mxn}(n$+*rz=?QjYI&dNo zrgbXeQV#}EqbA8}hgN6>?kh95=Uc508X@Y-|)^>7;XN#J*%af6I?C;aV zb9>44v-*;nMBQiV3AtoL>-PK39T~8leg$%6-G^tcsbr{L!UZHirWB>+fE3ah?p>Dx zLyMP(Qb>meo_!Gnv%?hGl&MH9~&8 z53D)yIUj5+A6)=Acc3ltSQBHUGFHjXkEstzp?E>-8ldTk_Hs&$rgpP7P0d4w%XZG0 zPl!E$RHlSRbxrKjD7>%|vcI?2SRlvEh~ubadH+WmWE7lLC=uQAS4+v&?K=J<(cG1j zNo|iMA7xv&W5JN%Jt}I`@vNo7B%ijyK|#ZsE}E-h;!ib$k+t;Y{=9437ui@`An9i6i^o zc+a;Qtx*=51`Yb?ZE$p_HgW)$S74H+Fk4RL?UC*_(l&MDCi>MgG^XjVN^Z1uH22u@ zl0?)C2fl|F0_!nW|P*YO$am2{W+=`a>02qD6ZINbo8gbidZ zZ?vJpEI1pI3#HZD==`%>b$YJrBvmutpXTx6X^g(s89WRyrafKrauNu^M*k9s6($Va zn?{VZHh(yToH*cJ#s^e@#-W%&>~NbeZy!hxC4H5}=SDu@xKFIAI_i^olbMFZ2J zjAU9bf_YGL+zuSn@Y{MrdTRRIy+J@FeOb!8S7tB10%E95v}S3X&?3ZF?-&>x?%8iM}fPQ#hEWF zusoP#z>>iQ1bfFSR;k&|bAqw-Ep#L{j=GNn_ZMwBZ53Myjy8A*|9tW0>bgSUks)(I z^R?IxS|yMOlOk96^j}MMS!Hi(#83M%b+FuLldWwo5Kq?Ui^gWO5WaQQzhtDoJR*Kkj6 z@DYaQu3#t$j`FSfO#uw?96Qw0qne3i&MygDKac2N?nzi#8pdO@X^85Y+{1G@w}f-@nqn_s9uTZ5x-AFH!a3ZNz!X|Cb+1(6-#dae`-yM@8-s0j3O$spoHO%rYgPc^$^o=su0!JO1P5e~8q7Q+L0_zVnzJ UkF%39_2XH!`!~g&Q literal 0 HcmV?d00001 diff --git a/assets/weapons/judge.png b/assets/weapons/judge.png new file mode 100644 index 0000000000000000000000000000000000000000..6b4a68311a625f4a47c864d2621f7a667f0ff034 GIT binary patch literal 2732 zcmaJ@`#;l*8~z2DFK^`v`|4yqt@5dZ+FfCRiZ z06)vpC9yYmcmG!*}Vo2z}ftnRwsjdt4w-pmTAh{^8&ljqS`oJ3C12K3kO4 ziP@3gOp_K<8}_(C5=g>-MQij{@Ip*R)nHP- z5*eoTqr~UI#93AAE9d101?VpN9b4^`w>*nBSLMQnR2*im2-mOf7$B6kx!!zuKy4Pl zNEjgJ{UAjHEs0~B^-%&FrbjP0+Y95racda|f zne(+$EzWG=(Oi#9toSUk({C}#9K^GF4_Ir4jnZ% zB99dJ(R1i6K!>vHPiM9M*gr(%kmiXg`-Fn)KpV2SWl2e`ZM^AUP90y3h zMSOZyx49@U1S>8td9zL?>h44kKcaTyd%mQ7eT%`A$Orb$j1Qwt&}46<`3D6T;Ty@E zR5S-n@j}RqtoW+zUZrj}(=W%yH?yYw<#$S1!FGf;!vLXxUZX4q6o7gAr@4_0o$GMlhlzgD}YMf@g5pP z9r6AT=qoJY#ip)&TNpVERnq9&jU}2IWsELwL7pUY8R zLOFPuR=GV~?v}hYajsVc(TyQW0gKJiI^K3*A|x|*wn-%r5r`EeT0ySU3^G+dFoKTb z>jmfvMfMh0;_%z5>J*I(rV0C={NxQ>CS-wt{}EJcN4Ve|<>SgodqJePVzJtz!Ci@y zfZoS1$t|$+hgp)UNAw@K$lD)eM10OUS5Cjm$nZW z&^FpP?OF-dwX2;4=uE=8dQ_4W1>XuAl-s9|e3hMi#2dI8$Jpqqx(rcs$B$PXo8Ls9 zQO¨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 IoKBtp7aWi!R{#J2 literal 0 HcmV?d00001 diff --git a/assets/weapons/operator.png b/assets/weapons/operator.png new file mode 100644 index 0000000000000000000000000000000000000000..2c777a4775478d5c6f4b7ae803a5db68aaaabb54 GIT binary patch literal 3157 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 D4GYfx literal 0 HcmV?d00001 diff --git a/assets/weapons/phantom.png b/assets/weapons/phantom.png new file mode 100644 index 0000000000000000000000000000000000000000..951487ab7f77d04652b39113c8a94777d9fe122f GIT binary patch literal 3203 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 literal 0 HcmV?d00001 diff --git a/assets/weapons/sheriff.png b/assets/weapons/sheriff.png new file mode 100644 index 0000000000000000000000000000000000000000..7b3a9e6529331ce3fb6e15794fde92e8d3064ff9 GIT binary patch literal 2220 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 Ef*0ZT`v3p{ literal 0 HcmV?d00001 diff --git a/assets/weapons/spectre.png b/assets/weapons/spectre.png new file mode 100644 index 0000000000000000000000000000000000000000..b7d4fc7f4cb40d5ac3d6a361da44b33566758006 GIT binary patch literal 2790 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 literal 0 HcmV?d00001 diff --git a/assets/weapons/stinger.png b/assets/weapons/stinger.png new file mode 100644 index 0000000000000000000000000000000000000000..d9287e8b2dbd3e16a75736d7d7f1e05696420d94 GIT binary patch literal 2482 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 literal 0 HcmV?d00001 diff --git a/integration_test/agent_weapon_test.dart b/integration_test/agent_weapon_test.dart new file mode 100644 index 00000000..8c621b46 --- /dev/null +++ b/integration_test/agent_weapon_test.dart @@ -0,0 +1,10 @@ +import 'package:integration_test/integration_test.dart'; + +import '../test/agent_weapon_widgets_test.dart' as scenarios; + +/// Runs the same interactions on the native desktop engine. The harness uses +/// in-memory providers and never opens the user's Hive library or other windows. +void main() { + IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + scenarios.main(); +} diff --git a/lib/const/line_provider.dart b/lib/const/line_provider.dart index 034be510..611f3bd3 100644 --- a/lib/const/line_provider.dart +++ b/lib/const/line_provider.dart @@ -4,6 +4,7 @@ import 'dart:ui'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:hive_ce_flutter/adapters.dart'; import 'package:icarus/const/agents.dart'; +import 'package:icarus/const/weapons.dart'; import 'package:icarus/const/placed_classes.dart'; import 'package:icarus/const/settings.dart'; import 'package:icarus/providers/action_provider.dart'; @@ -730,6 +731,15 @@ class LineUpProvider extends Notifier { state = state.copyWith(placement: state.placement!.copyWith(draftAgent: draft)); } + void setDraftAgentWeapon(WeaponType weapon) { + final placement = state.placement; + final draft = placement?.draftAgent; + if (placement == null || draft == null || draft.weapon == weapon) return; + state = state.copyWith( + placement: placement.copyWith(draftAgent: draft.copyWith(weapon: weapon)), + ); + } + void updateDraftAbilityPosition(Offset position) { final draft = state.placement?.draftAbility; if (draft == null) return; @@ -818,6 +828,30 @@ class LineUpProvider extends Notifier { return link; } + void setOriginWeapon(String originId, WeaponType weapon) { + final index = state.origins.indexWhere((origin) => origin.id == originId); + if (index < 0 || state.origins[index].agent.weapon == weapon) return; + final previous = state.origins[index].agent.weapon; + _applyOriginWeapon(originId, weapon); + ref.read(actionProvider.notifier).addAction(WeaponSelectionAction( + id: originId, + group: ActionGroup.lineUp, + before: previous, + after: weapon, + )); + } + + void _applyOriginWeapon(String originId, WeaponType weapon) { + final index = state.origins.indexWhere((origin) => origin.id == originId); + if (index < 0) return; + final origins = [...state.origins]; + final origin = origins[index]; + origins[index] = origin.copyWith( + agent: origin.agent.copyWith(weapon: weapon), + ); + state = state.copyWith(origins: origins); + } + // --- Edits (no action recorded; callers wrap in performTransaction) ------- void updateLink(LineUpLink link) { @@ -956,6 +990,10 @@ class LineUpProvider extends Notifier { } void undoAction(UserAction action) { + if (action is WeaponSelectionAction) { + _applyOriginWeapon(action.id, action.before); + return; + } switch (action.type) { case ActionType.addition: _removeForAction(action.id); @@ -971,6 +1009,10 @@ class LineUpProvider extends Notifier { } void redoAction(UserAction action) { + if (action is WeaponSelectionAction) { + _applyOriginWeapon(action.id, action.after); + return; + } switch (action.type) { case ActionType.addition: _restoreForAction(action.id); diff --git a/lib/const/placed_classes.dart b/lib/const/placed_classes.dart index d0aadb6e..950519fe 100644 --- a/lib/const/placed_classes.dart +++ b/lib/const/placed_classes.dart @@ -5,6 +5,7 @@ import 'package:flutter/material.dart'; import 'package:hive_ce_flutter/hive_flutter.dart'; import 'package:icarus/const/abilities.dart'; import 'package:icarus/const/agents.dart'; +import 'package:icarus/const/weapons.dart'; import 'package:icarus/const/json_converters.dart'; import 'package:icarus/const/utilities.dart'; import 'package:json_annotation/json_annotation.dart'; @@ -312,12 +313,16 @@ sealed class PlacedAgentNode extends PlacedWidget { @JsonKey(defaultValue: AgentState.none) AgentState state; + @JsonKey(defaultValue: WeaponType.none) + WeaponType weapon; + PlacedAgentNode({ required this.type, required super.position, required super.id, this.isAlly = true, this.state = AgentState.none, + this.weapon = WeaponType.none, }); String get kind; @@ -362,6 +367,7 @@ class PlacedAgent extends PlacedAgentNode { super.isAlly = true, this.lineUpID, super.state = AgentState.none, + super.weapon = WeaponType.none, }); @override @@ -383,6 +389,7 @@ class PlacedAgent extends PlacedAgentNode { bool? isAlly, String? lineUpID, AgentState? state, + WeaponType? weapon, }) { final copied = PlacedAgent( type: type ?? this.type, @@ -391,6 +398,7 @@ class PlacedAgent extends PlacedAgentNode { isAlly: isAlly ?? this.isAlly, lineUpID: lineUpID ?? this.lineUpID, state: state ?? this.state, + weapon: weapon ?? this.weapon, ); copied.isDeleted = isDeleted; return copied; @@ -451,6 +459,7 @@ class PlacedViewConeAgent extends PlacedAgentNode { this.visionElevation, super.isAlly = true, super.state = AgentState.none, + super.weapon = WeaponType.none, }) : assert( UtilityData.isViewConePresetType(presetType), 'presetType must be a view cone preset.', @@ -546,6 +555,7 @@ class PlacedViewConeAgent extends PlacedAgentNode { String? id, bool? isAlly, AgentState? state, + WeaponType? weapon, UtilityType? presetType, double? rotation, double? length, @@ -557,6 +567,7 @@ class PlacedViewConeAgent extends PlacedAgentNode { id: id ?? this.id, isAlly: isAlly ?? this.isAlly, state: state ?? this.state, + weapon: weapon ?? this.weapon, presetType: presetType ?? this.presetType, rotation: rotation ?? this.rotation, length: length ?? this.length, @@ -584,6 +595,7 @@ class PlacedCircleAgent extends PlacedAgentNode { this.opacityPercent = 100, super.isAlly = true, super.state = AgentState.none, + super.weapon = WeaponType.none, }); @override @@ -674,6 +686,7 @@ class PlacedCircleAgent extends PlacedAgentNode { String? id, bool? isAlly, AgentState? state, + WeaponType? weapon, double? diameterMeters, int? colorValue, int? opacityPercent, @@ -684,6 +697,7 @@ class PlacedCircleAgent extends PlacedAgentNode { id: id ?? this.id, isAlly: isAlly ?? this.isAlly, state: state ?? this.state, + weapon: weapon ?? this.weapon, diameterMeters: diameterMeters ?? this.diameterMeters, colorValue: colorValue ?? this.colorValue, opacityPercent: opacityPercent ?? this.opacityPercent, diff --git a/lib/const/placed_classes.g.dart b/lib/const/placed_classes.g.dart index bbf236e8..ec5ef96a 100644 --- a/lib/const/placed_classes.g.dart +++ b/lib/const/placed_classes.g.dart @@ -80,6 +80,8 @@ PlacedAgent _$PlacedAgentFromJson(Map json) => PlacedAgent( state: json['state'] == null ? AgentState.none : const AgentStateCompatConverter().fromJson(json['state']), + weapon: $enumDecodeNullable(_$WeaponTypeEnumMap, json['weapon']) ?? + WeaponType.none, )..isDeleted = json['isDeleted'] as bool? ?? false; Map _$PlacedAgentToJson(PlacedAgent instance) => @@ -90,9 +92,33 @@ Map _$PlacedAgentToJson(PlacedAgent instance) => 'type': const AgentTypeCompatConverter().toJson(instance.type), 'isAlly': instance.isAlly, 'state': const AgentStateCompatConverter().toJson(instance.state), + 'weapon': _$WeaponTypeEnumMap[instance.weapon]!, 'lineUpID': instance.lineUpID, }; +const _$WeaponTypeEnumMap = { + WeaponType.none: 'none', + WeaponType.classic: 'classic', + WeaponType.shorty: 'shorty', + WeaponType.frenzy: 'frenzy', + WeaponType.ghost: 'ghost', + WeaponType.bandit: 'bandit', + WeaponType.sheriff: 'sheriff', + WeaponType.bulldog: 'bulldog', + WeaponType.guardian: 'guardian', + WeaponType.phantom: 'phantom', + WeaponType.vandal: 'vandal', + WeaponType.bucky: 'bucky', + WeaponType.judge: 'judge', + WeaponType.stinger: 'stinger', + WeaponType.spectre: 'spectre', + WeaponType.marshal: 'marshal', + WeaponType.outlaw: 'outlaw', + WeaponType.operator: 'operator', + WeaponType.ares: 'ares', + WeaponType.odin: 'odin', +}; + PlacedViewConeAgent _$PlacedViewConeAgentFromJson(Map json) => PlacedViewConeAgent( type: const AgentTypeCompatConverter().fromJson(json['type']), @@ -108,6 +134,8 @@ PlacedViewConeAgent _$PlacedViewConeAgentFromJson(Map json) => state: json['state'] == null ? AgentState.none : const AgentStateCompatConverter().fromJson(json['state']), + weapon: $enumDecodeNullable(_$WeaponTypeEnumMap, json['weapon']) ?? + WeaponType.none, )..isDeleted = json['isDeleted'] as bool? ?? false; Map _$PlacedViewConeAgentToJson( @@ -119,6 +147,7 @@ Map _$PlacedViewConeAgentToJson( 'type': const AgentTypeCompatConverter().toJson(instance.type), 'isAlly': instance.isAlly, 'state': const AgentStateCompatConverter().toJson(instance.state), + 'weapon': _$WeaponTypeEnumMap[instance.weapon]!, 'presetType': const UtilityTypeCompatConverter().toJson(instance.presetType), 'rotation': instance.rotation, @@ -139,6 +168,8 @@ PlacedCircleAgent _$PlacedCircleAgentFromJson(Map json) => state: json['state'] == null ? AgentState.none : const AgentStateCompatConverter().fromJson(json['state']), + weapon: $enumDecodeNullable(_$WeaponTypeEnumMap, json['weapon']) ?? + WeaponType.none, )..isDeleted = json['isDeleted'] as bool? ?? false; Map _$PlacedCircleAgentToJson(PlacedCircleAgent instance) => @@ -149,6 +180,7 @@ Map _$PlacedCircleAgentToJson(PlacedCircleAgent instance) => 'type': const AgentTypeCompatConverter().toJson(instance.type), 'isAlly': instance.isAlly, 'state': const AgentStateCompatConverter().toJson(instance.state), + 'weapon': _$WeaponTypeEnumMap[instance.weapon]!, 'diameterMeters': instance.diameterMeters, 'colorValue': instance.colorValue, 'opacityPercent': instance.opacityPercent, diff --git a/lib/const/settings.dart b/lib/const/settings.dart index 2b8b9122..fa667906 100644 --- a/lib/const/settings.dart +++ b/lib/const/settings.dart @@ -40,6 +40,11 @@ class Settings { static const double agentSize = 35; static const double agentSizeMin = 15; static const double agentSizeMax = 45; + static const double agentWeaponWidthRatio = 0.70; + static const double agentWeaponHeightRatio = 0.40; + static const double agentWeaponRightOverhangRatio = 0.18; + static const double agentWeaponBottomOverhangRatio = 0.12; + static const double agentWeaponOutlineWidthRatio = 0.035; static const double abilitySize = 25; static const double abilitySizeMin = 15; @@ -100,7 +105,7 @@ class Settings { static final Uri dicordLink = Uri.parse("https://discord.gg/PN2uKwCqYB"); static const Duration autoSaveOffset = Duration(seconds: 15); - static const int versionNumber = 99; + static const int versionNumber = 100; static const String versionName = "4.6.1"; static final Uri desktopUpdaterArchiveUrl = buildDesktopUpdaterArchiveUrl(kResolvedUpdateChannel); diff --git a/lib/const/transition_data.dart b/lib/const/transition_data.dart index a91d00de..8716fb08 100644 --- a/lib/const/transition_data.dart +++ b/lib/const/transition_data.dart @@ -4,6 +4,7 @@ import 'package:icarus/const/agents.dart'; import 'package:icarus/const/abilities.dart'; import 'package:icarus/const/coordinate_system.dart'; import 'package:icarus/const/placed_classes.dart'; +import 'package:icarus/const/weapons.dart'; import 'package:icarus/const/settings.dart'; import 'package:icarus/const/utilities.dart'; @@ -481,7 +482,10 @@ class PageTransitionEntry { return null; } - /// Every property a [PageTransitionEntry.move] can tween, as one comparable + static WeaponType? weaponOf(PlacedWidget w) => + w is PlacedAgentNode ? w.weapon : null; + + /// Every property a [PageTransitionEntry.move] can animate, as one comparable /// list. Kept next to the `*Of` helpers so adding a tweened property means /// updating both in the same place. static List _tweenedPropsOf(PlacedWidget w) => [ @@ -491,6 +495,7 @@ class PageTransitionEntry { scaleOf(w), textSizeOf(w), agentStateOf(w), + weaponOf(w), customDiameterOf(w), customWidthOf(w), customLengthOf(w), diff --git a/lib/const/weapons.dart b/lib/const/weapons.dart new file mode 100644 index 00000000..ab4183cb --- /dev/null +++ b/lib/const/weapons.dart @@ -0,0 +1,47 @@ +/// Firearms available for a placed agent. Names are the stable JSON values; +/// append new entries rather than reordering the existing Hive enum values. +enum WeaponType { + none('None', null), + classic('Classic', WeaponCategory.sidearms), + shorty('Shorty', WeaponCategory.sidearms), + frenzy('Frenzy', WeaponCategory.sidearms), + ghost('Ghost', WeaponCategory.sidearms), + bandit('Bandit', WeaponCategory.sidearms), + sheriff('Sheriff', WeaponCategory.sidearms), + bulldog('Bulldog', WeaponCategory.rifles), + guardian('Guardian', WeaponCategory.rifles), + phantom('Phantom', WeaponCategory.rifles), + vandal('Vandal', WeaponCategory.rifles), + bucky('Bucky', WeaponCategory.shotguns), + judge('Judge', WeaponCategory.shotguns), + stinger('Stinger', WeaponCategory.smgs), + spectre('Spectre', WeaponCategory.smgs), + marshal('Marshal', WeaponCategory.snipers), + outlaw('Outlaw', WeaponCategory.snipers), + operator('Operator', WeaponCategory.snipers), + ares('Ares', WeaponCategory.heavies), + odin('Odin', WeaponCategory.heavies); + + const WeaponType(this.displayName, this.category); + + final String displayName; + final WeaponCategory? category; + + String get iconPath => 'assets/weapons/$name.png'; +} + +enum WeaponCategory { + sidearms('Sidearms'), + rifles('Rifles'), + shotguns('Shotguns'), + smgs('SMGs'), + snipers('Snipers'), + heavies('Heavies'); + + const WeaponCategory(this.label); + + final String label; + + Iterable get weapons => + WeaponType.values.where((weapon) => weapon.category == this); +} diff --git a/lib/hive/hive_adapters.dart b/lib/hive/hive_adapters.dart index 11f8253c..0ba01696 100644 --- a/lib/hive/hive_adapters.dart +++ b/lib/hive/hive_adapters.dart @@ -6,6 +6,7 @@ import 'dart:ui' show Offset; import 'package:flutter/material.dart'; import 'package:hive_ce/hive.dart'; import 'package:icarus/const/agents.dart'; +import 'package:icarus/const/weapons.dart'; import 'package:icarus/const/bounding_box.dart'; import 'package:icarus/const/drawing_element.dart'; import 'package:icarus/const/folder_icons.dart'; @@ -53,6 +54,7 @@ import 'package:icarus/providers/strategy_settings_provider.dart'; AdapterSpec(), AdapterSpec(), AdapterSpec(), + AdapterSpec(), ]) part 'hive_adapters.g.dart'; diff --git a/lib/hive/hive_adapters.g.dart b/lib/hive/hive_adapters.g.dart index aaf50d68..e3d6e5a6 100644 --- a/lib/hive/hive_adapters.g.dart +++ b/lib/hive/hive_adapters.g.dart @@ -161,13 +161,14 @@ class PlacedAgentAdapter extends TypeAdapter { isAlly: fields[1] == null ? true : fields[1] as bool, lineUpID: fields[5] as String?, state: fields[6] == null ? AgentState.none : fields[6] as AgentState, + weapon: fields[7] == null ? WeaponType.none : fields[7] as WeaponType, )..isDeleted = fields[3] as bool; } @override void write(BinaryWriter writer, PlacedAgent obj) { writer - ..writeByte(7) + ..writeByte(8) ..writeByte(0) ..write(obj.type) ..writeByte(1) @@ -181,7 +182,9 @@ class PlacedAgentAdapter extends TypeAdapter { ..writeByte(5) ..write(obj.lineUpID) ..writeByte(6) - ..write(obj.state); + ..write(obj.state) + ..writeByte(7) + ..write(obj.weapon); } @override @@ -1421,13 +1424,14 @@ class PlacedViewConeAgentAdapter extends TypeAdapter { visionElevation: (fields[9] as num?)?.toDouble(), isAlly: fields[4] == null ? true : fields[4] as bool, state: fields[5] == null ? AgentState.none : fields[5] as AgentState, + weapon: fields[10] == null ? WeaponType.none : fields[10] as WeaponType, )..isDeleted = fields[7] as bool; } @override void write(BinaryWriter writer, PlacedViewConeAgent obj) { writer - ..writeByte(10) + ..writeByte(11) ..writeByte(0) ..write(obj.presetType) ..writeByte(1) @@ -1447,7 +1451,9 @@ class PlacedViewConeAgentAdapter extends TypeAdapter { ..writeByte(8) ..write(obj.position) ..writeByte(9) - ..write(obj.visionElevation); + ..write(obj.visionElevation) + ..writeByte(10) + ..write(obj.weapon); } @override @@ -1480,13 +1486,14 @@ class PlacedCircleAgentAdapter extends TypeAdapter { opacityPercent: fields[2] == null ? 100 : (fields[2] as num).toInt(), isAlly: fields[4] == null ? true : fields[4] as bool, state: fields[5] == null ? AgentState.none : fields[5] as AgentState, + weapon: fields[9] == null ? WeaponType.none : fields[9] as WeaponType, )..isDeleted = fields[7] as bool; } @override void write(BinaryWriter writer, PlacedCircleAgent obj) { writer - ..writeByte(9) + ..writeByte(10) ..writeByte(0) ..write(obj.diameterMeters) ..writeByte(1) @@ -1504,7 +1511,9 @@ class PlacedCircleAgentAdapter extends TypeAdapter { ..writeByte(7) ..write(obj.isDeleted) ..writeByte(8) - ..write(obj.position); + ..write(obj.position) + ..writeByte(9) + ..write(obj.weapon); } @override @@ -1779,3 +1788,112 @@ class LineUpLinkAdapter extends TypeAdapter { runtimeType == other.runtimeType && typeId == other.typeId; } + +class WeaponTypeAdapter extends TypeAdapter { + @override + final typeId = 38; + + @override + WeaponType read(BinaryReader reader) { + switch (reader.readByte()) { + case 0: + return WeaponType.none; + case 1: + return WeaponType.classic; + case 2: + return WeaponType.shorty; + case 3: + return WeaponType.frenzy; + case 4: + return WeaponType.ghost; + case 5: + return WeaponType.bandit; + case 6: + return WeaponType.sheriff; + case 7: + return WeaponType.bulldog; + case 8: + return WeaponType.guardian; + case 9: + return WeaponType.phantom; + case 10: + return WeaponType.vandal; + case 11: + return WeaponType.bucky; + case 12: + return WeaponType.judge; + case 13: + return WeaponType.stinger; + case 14: + return WeaponType.spectre; + case 15: + return WeaponType.marshal; + case 16: + return WeaponType.outlaw; + case 17: + return WeaponType.operator; + case 18: + return WeaponType.ares; + case 19: + return WeaponType.odin; + default: + return WeaponType.none; + } + } + + @override + void write(BinaryWriter writer, WeaponType obj) { + switch (obj) { + case WeaponType.none: + writer.writeByte(0); + case WeaponType.classic: + writer.writeByte(1); + case WeaponType.shorty: + writer.writeByte(2); + case WeaponType.frenzy: + writer.writeByte(3); + case WeaponType.ghost: + writer.writeByte(4); + case WeaponType.bandit: + writer.writeByte(5); + case WeaponType.sheriff: + writer.writeByte(6); + case WeaponType.bulldog: + writer.writeByte(7); + case WeaponType.guardian: + writer.writeByte(8); + case WeaponType.phantom: + writer.writeByte(9); + case WeaponType.vandal: + writer.writeByte(10); + case WeaponType.bucky: + writer.writeByte(11); + case WeaponType.judge: + writer.writeByte(12); + case WeaponType.stinger: + writer.writeByte(13); + case WeaponType.spectre: + writer.writeByte(14); + case WeaponType.marshal: + writer.writeByte(15); + case WeaponType.outlaw: + writer.writeByte(16); + case WeaponType.operator: + writer.writeByte(17); + case WeaponType.ares: + writer.writeByte(18); + case WeaponType.odin: + writer.writeByte(19); + } + } + + @override + int get hashCode => typeId.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is WeaponTypeAdapter && + runtimeType == other.runtimeType && + typeId == other.typeId; +} diff --git a/lib/hive/hive_adapters.g.yaml b/lib/hive/hive_adapters.g.yaml index abc02400..218c5438 100644 --- a/lib/hive/hive_adapters.g.yaml +++ b/lib/hive/hive_adapters.g.yaml @@ -1,7 +1,7 @@ # Generated by Hive CE # Manual modifications may be necessary for certain migrations # Check in to version control -nextTypeId: 38 +nextTypeId: 39 types: StrategyData: typeId: 0 @@ -55,7 +55,7 @@ types: index: 2 PlacedAgent: typeId: 2 - nextIndex: 7 + nextIndex: 8 fields: type: index: 0 @@ -71,6 +71,8 @@ types: index: 5 state: index: 6 + weapon: + index: 7 PlacedAbility: typeId: 3 nextIndex: 10 @@ -491,7 +493,7 @@ types: index: 18 PlacedViewConeAgent: typeId: 29 - nextIndex: 10 + nextIndex: 11 fields: presetType: index: 0 @@ -513,9 +515,11 @@ types: index: 8 visionElevation: index: 9 + weapon: + index: 10 PlacedCircleAgent: typeId: 30 - nextIndex: 9 + nextIndex: 10 fields: diameterMeters: index: 0 @@ -535,6 +539,8 @@ types: index: 7 position: index: 8 + weapon: + index: 9 AbilityVisualState: typeId: 32 nextIndex: 7 @@ -607,3 +613,47 @@ types: index: 5 images: index: 6 + WeaponType: + typeId: 38 + nextIndex: 20 + fields: + none: + index: 0 + classic: + index: 1 + shorty: + index: 2 + frenzy: + index: 3 + ghost: + index: 4 + bandit: + index: 5 + sheriff: + index: 6 + bulldog: + index: 7 + guardian: + index: 8 + phantom: + index: 9 + vandal: + index: 10 + bucky: + index: 11 + judge: + index: 12 + stinger: + index: 13 + spectre: + index: 14 + marshal: + index: 15 + outlaw: + index: 16 + operator: + index: 17 + ares: + index: 18 + odin: + index: 19 diff --git a/lib/hive/hive_registrar.g.dart b/lib/hive/hive_registrar.g.dart index a3e0419a..4fda4f8f 100644 --- a/lib/hive/hive_registrar.g.dart +++ b/lib/hive/hive_registrar.g.dart @@ -40,6 +40,7 @@ extension HiveRegistrar on HiveInterface { registerAdapter(StrategySettingsAdapter()); registerAdapter(TraversalSpeedProfileAdapter()); registerAdapter(UtilityTypeAdapter()); + registerAdapter(WeaponTypeAdapter()); } } @@ -77,5 +78,6 @@ extension IsolatedHiveRegistrar on IsolatedHiveInterface { registerAdapter(StrategySettingsAdapter()); registerAdapter(TraversalSpeedProfileAdapter()); registerAdapter(UtilityTypeAdapter()); + registerAdapter(WeaponTypeAdapter()); } } diff --git a/lib/migrations/agent_weapon_migration.dart b/lib/migrations/agent_weapon_migration.dart new file mode 100644 index 00000000..ef290df3 --- /dev/null +++ b/lib/migrations/agent_weapon_migration.dart @@ -0,0 +1,13 @@ +import 'package:icarus/providers/strategy_provider.dart'; + +/// Version 100 adds an optional firearm to every kind of placed agent, +/// including lineup origins. Hive and JSON readers supply WeaponType.none +/// when the field is absent. No positions, sizes, or lineup links change. +class AgentWeaponMigration { + static const int version = 100; + + static StrategyData migrate(StrategyData strategy) { + if (strategy.versionNumber >= version) return strategy; + return strategy.copyWith(versionNumber: version); + } +} diff --git a/lib/providers/action_provider.dart b/lib/providers/action_provider.dart index 5afc3b32..8c5775e4 100644 --- a/lib/providers/action_provider.dart +++ b/lib/providers/action_provider.dart @@ -2,6 +2,7 @@ import 'dart:ui'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:icarus/const/line_provider.dart'; +import 'package:icarus/const/weapons.dart'; import 'package:icarus/providers/ability_bar_provider.dart'; import 'package:icarus/providers/ability_provider.dart'; import 'package:icarus/providers/agent_provider.dart'; @@ -107,6 +108,20 @@ class UserAction { final actionProvider = NotifierProvider>(ActionProvider.new); +/// Records only the firearm, so undoing it never restores an older copy of an +/// agent's movement history or a lineup's graph. Shared by both agent groups. +class WeaponSelectionAction extends UserAction { + WeaponSelectionAction({ + required super.id, + required super.group, + required this.before, + required this.after, + }) : super(type: ActionType.edit); + + final WeaponType before; + final WeaponType after; +} + class ActionProvider extends Notifier> { static const List _clearableGroups = [ ActionGroup.agent, diff --git a/lib/providers/agent_provider.dart b/lib/providers/agent_provider.dart index 1682627f..d31d6fd2 100644 --- a/lib/providers/agent_provider.dart +++ b/lib/providers/agent_provider.dart @@ -3,6 +3,7 @@ import 'dart:ui'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:icarus/const/agents.dart'; +import 'package:icarus/const/weapons.dart'; import 'package:icarus/const/coordinate_system.dart'; import 'package:icarus/const/transition_data.dart'; import 'package:icarus/providers/action_provider.dart'; @@ -83,6 +84,26 @@ class AgentProvider extends Notifier> { state = newState; } + void setWeapon(String id, WeaponType weapon) { + final index = PlacedWidget.getIndexByID(id, state); + if (index < 0 || state[index].weapon == weapon) return; + final previous = state[index].weapon; + _applyWeapon(id, weapon); + ref.read(actionProvider.notifier).addAction(WeaponSelectionAction( + id: id, + group: ActionGroup.agent, + before: previous, + after: weapon, + )); + } + + void _applyWeapon(String id, WeaponType weapon) { + final index = PlacedWidget.getIndexByID(id, state); + if (index < 0) return; + state[index].weapon = weapon; + state = [...state]; + } + void updatePosition(Offset position, String id) { final newState = [...state]; @@ -218,6 +239,7 @@ class AgentProvider extends Notifier> { type: node.type, isAlly: node.isAlly, state: node.state, + weapon: node.weapon, presetType: presetType, rotation: rotation, length: length, @@ -244,6 +266,7 @@ class AgentProvider extends Notifier> { type: node.type, isAlly: node.isAlly, state: node.state, + weapon: node.weapon, )..isDeleted = node.isDeleted; ref.read(actionProvider.notifier).addAction( @@ -271,6 +294,7 @@ class AgentProvider extends Notifier> { type: node.type, isAlly: node.isAlly, state: node.state, + weapon: node.weapon, diameterMeters: diameterMeters, colorValue: colorValue, opacityPercent: opacityPercent, @@ -284,6 +308,10 @@ class AgentProvider extends Notifier> { } void undoAction(UserAction action) { + if (action is WeaponSelectionAction) { + _applyWeapon(action.id, action.before); + return; + } switch (action.type) { case ActionType.addition: removeAgent(action.id); @@ -320,6 +348,10 @@ class AgentProvider extends Notifier> { } void redoAction(UserAction action) { + if (action is WeaponSelectionAction) { + _applyWeapon(action.id, action.after); + return; + } final newState = [...state]; try { diff --git a/lib/providers/strategy_provider.dart b/lib/providers/strategy_provider.dart index 1897b02f..6e2433e0 100644 --- a/lib/providers/strategy_provider.dart +++ b/lib/providers/strategy_provider.dart @@ -19,6 +19,7 @@ import 'package:icarus/const/folder_icons.dart'; import 'package:icarus/const/hive_boxes.dart'; import 'package:icarus/const/settings.dart'; import 'package:icarus/migrations/ability_vision_cone_migration.dart'; +import 'package:icarus/migrations/agent_weapon_migration.dart'; import 'package:icarus/migrations/ability_scale_migration.dart'; import 'package:icarus/migrations/canonical_coordinates_migration.dart'; import 'package:icarus/migrations/custom_circle_wrapper_migration.dart'; @@ -647,10 +648,11 @@ class StrategyProvider extends Notifier { pageNameMigrated, force: needsCanonicalCoordinatesMigration, ); - return migrateSunsetScale( + final sunsetMigrated = migrateSunsetScale( canonicalMigrated, force: originalVersion < SunsetScaleMigration.version, ); + return AgentWeaponMigration.migrate(sunsetMigrated); } static StrategyData migrateSunsetScale( diff --git a/lib/widgets/draggable_widgets/agents/agent_weapon_badge.dart b/lib/widgets/draggable_widgets/agents/agent_weapon_badge.dart new file mode 100644 index 00000000..9c94b385 --- /dev/null +++ b/lib/widgets/draggable_widgets/agents/agent_weapon_badge.dart @@ -0,0 +1,56 @@ +import 'package:flutter/material.dart'; +import 'package:icarus/const/settings.dart'; +import 'package:icarus/const/weapons.dart'; +import 'package:icarus/widgets/draggable_widgets/agents/weapon_icon.dart'; + +class AgentWeaponBadge extends StatelessWidget { + const AgentWeaponBadge({ + super.key, + required this.weapon, + required this.agentSize, + this.previousWeapon, + this.transitionProgress = 1, + }); + + final WeaponType weapon; + final double agentSize; + final WeaponType? previousWeapon; + final double transitionProgress; + + @override + Widget build(BuildContext context) { + final width = agentSize * Settings.agentWeaponWidthRatio; + final height = agentSize * Settings.agentWeaponHeightRatio; + final previous = previousWeapon ?? weapon; + final progress = transitionProgress.clamp(0.0, 1.0); + final changing = previous != weapon; + + Widget icon(WeaponType value, double opacity) => Positioned.fill( + child: Opacity( + opacity: opacity, + child: WeaponIcon( + weapon: value, + width: width, + height: height, + outlineColor: Settings.tacticalVioletTheme.background, + outlineWidth: agentSize * Settings.agentWeaponOutlineWidthRatio, + ), + ), + ); + + return IgnorePointer( + child: SizedBox( + width: width, + height: height, + child: Stack( + children: [ + if (changing && previous != WeaponType.none && progress < 1) + icon(previous, 1 - progress), + if (weapon != WeaponType.none && (!changing || progress > 0)) + icon(weapon, changing ? progress : 1), + ], + ), + ), + ); + } +} diff --git a/lib/widgets/draggable_widgets/agents/agent_weapon_menu.dart b/lib/widgets/draggable_widgets/agents/agent_weapon_menu.dart new file mode 100644 index 00000000..067bf107 --- /dev/null +++ b/lib/widgets/draggable_widgets/agents/agent_weapon_menu.dart @@ -0,0 +1,39 @@ +import 'package:flutter/material.dart'; +import 'package:icarus/const/weapons.dart'; +import 'package:icarus/widgets/draggable_widgets/agents/weapon_icon.dart'; +import 'package:shadcn_ui/shadcn_ui.dart'; + +List buildAgentWeaponMenu({ + required WeaponType selectedWeapon, + required ValueChanged onSelected, +}) { + Widget selectionMark(WeaponType weapon) => SizedBox( + width: 16, + height: 16, + child: selectedWeapon == weapon + ? const Icon(LucideIcons.check, size: 16) + : null, + ); + + return [ + for (final category in WeaponCategory.values) + ShadContextMenuItem( + trailing: const Icon(LucideIcons.chevronRight, size: 16), + items: [ + for (final weapon in category.weapons) + ShadContextMenuItem( + leading: WeaponIcon(weapon: weapon, width: 36, height: 20), + trailing: selectionMark(weapon), + onPressed: () => onSelected(weapon), + child: Text(weapon.displayName), + ), + ], + child: Text(category.label), + ), + ShadContextMenuItem( + trailing: selectionMark(WeaponType.none), + onPressed: () => onSelected(WeaponType.none), + child: const Text('None'), + ), + ]; +} diff --git a/lib/widgets/draggable_widgets/agents/agent_widget.dart b/lib/widgets/draggable_widgets/agents/agent_widget.dart index 6be6ff9e..f13e0a17 100644 --- a/lib/widgets/draggable_widgets/agents/agent_widget.dart +++ b/lib/widgets/draggable_widgets/agents/agent_widget.dart @@ -1,6 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:icarus/const/agents.dart'; +import 'package:icarus/const/weapons.dart'; +import 'package:icarus/widgets/draggable_widgets/agents/agent_weapon_menu.dart'; +import 'package:icarus/widgets/draggable_widgets/agents/agent_weapon_badge.dart'; import 'package:icarus/const/coordinate_system.dart'; import 'package:icarus/const/line_provider.dart'; import 'package:icarus/const/maps.dart'; @@ -85,6 +88,10 @@ class AgentWidget extends ConsumerWidget { required this.isAlly, this.lineUpId, this.state = AgentState.none, + this.weapon = WeaponType.none, + this.previousWeapon, + this.weaponTransitionProgress = 1, + this.onWeaponSelected, this.forcedAgentSize, this.deadStateProgress, this.isInteractive = true, @@ -95,6 +102,12 @@ class AgentWidget extends ConsumerWidget { final bool isAlly; final AgentData agent; final AgentState state; + final WeaponType weapon; + final WeaponType? previousWeapon; + final double weaponTransitionProgress; + + /// Lineup drafts supply their own editor because they are not placed agents. + final ValueChanged? onWeaponSelected; final double? forcedAgentSize; final double? deadStateProgress; final bool isInteractive; @@ -299,6 +312,25 @@ class AgentWidget extends ConsumerWidget { .update(InteractionState.lineUpPlacing); }, ), + if (canInteract && + (placedAgentNode != null || + lineUpId != null || + onWeaponSelected != null)) + ...buildAgentWeaponMenu( + selectedWeapon: weapon, + onSelected: (selectedWeapon) { + if (onWeaponSelected != null) { + onWeaponSelected!(selectedWeapon); + } else if (lineUpId != null) { + ref.read(lineUpProvider.notifier).setOriginWeapon( + lineUpId!, + selectedWeapon, + ); + } else if (id != null) { + ref.read(agentProvider.notifier).setWeapon(id!, selectedWeapon); + } + }, + ), ...adjacentPageCopyItems, ]; @@ -334,6 +366,28 @@ class AgentWidget extends ConsumerWidget { ); } + // Only the square portrait participates in layout and hit testing. + // A positioned decoration can paint outside it without moving its anchor. + if (weapon != WeaponType.none || + (previousWeapon != null && previousWeapon != WeaponType.none)) { + agentCard = Stack( + clipBehavior: Clip.none, + children: [ + agentCard, + Positioned( + right: -scaledSize * Settings.agentWeaponRightOverhangRatio, + bottom: -scaledSize * Settings.agentWeaponBottomOverhangRatio, + child: AgentWeaponBadge( + weapon: weapon, + agentSize: scaledSize, + previousWeapon: previousWeapon, + transitionProgress: weaponTransitionProgress, + ), + ), + ], + ); + } + if (!canInteract) { return RepaintBoundary(child: agentCard); } diff --git a/lib/widgets/draggable_widgets/agents/placed_circle_agent_widget.dart b/lib/widgets/draggable_widgets/agents/placed_circle_agent_widget.dart index 336abb71..9b440556 100644 --- a/lib/widgets/draggable_widgets/agents/placed_circle_agent_widget.dart +++ b/lib/widgets/draggable_widgets/agents/placed_circle_agent_widget.dart @@ -3,6 +3,7 @@ import 'dart:math' as math; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:icarus/const/agents.dart'; +import 'package:icarus/const/weapons.dart'; import 'package:icarus/const/coordinate_system.dart'; import 'package:icarus/const/maps.dart'; import 'package:icarus/const/placed_classes.dart'; @@ -52,11 +53,15 @@ class CircleAgentComposite extends ConsumerWidget { super.key, required this.agent, this.forcedAgentSize, + this.previousWeapon, + this.weaponTransitionProgress = 1, this.isInteractive = true, }); final PlacedCircleAgent agent; final double? forcedAgentSize; + final WeaponType? previousWeapon; + final double weaponTransitionProgress; final bool isInteractive; @override @@ -103,6 +108,9 @@ class CircleAgentComposite extends ConsumerWidget { isAlly: agent.isAlly, id: agent.id, agent: AgentData.agents[agent.type]!, + weapon: agent.weapon, + previousWeapon: previousWeapon, + weaponTransitionProgress: weaponTransitionProgress, forcedAgentSize: agentSize, isInteractive: isInteractive, ), diff --git a/lib/widgets/draggable_widgets/agents/placed_lineup_agent_widget.dart b/lib/widgets/draggable_widgets/agents/placed_lineup_agent_widget.dart index 6a18c4b0..f2964947 100644 --- a/lib/widgets/draggable_widgets/agents/placed_lineup_agent_widget.dart +++ b/lib/widgets/draggable_widgets/agents/placed_lineup_agent_widget.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:icarus/const/agents.dart'; import 'package:icarus/const/coordinate_system.dart'; +import 'package:icarus/const/line_provider.dart'; import 'package:icarus/const/placed_classes.dart'; import 'package:icarus/const/settings.dart'; import 'package:icarus/const/transition_data.dart'; @@ -53,6 +54,7 @@ class PlacedLineupAgentWidget extends ConsumerWidget { isAlly: agent.isAlly, id: '', agent: AgentData.agents[agent.type]!, + weapon: agent.weapon, ), ), ), @@ -63,6 +65,9 @@ class PlacedLineupAgentWidget extends ConsumerWidget { isAlly: agent.isAlly, id: agent.id, agent: AgentData.agents[agent.type]!, + weapon: agent.weapon, + onWeaponSelected: + ref.read(lineUpProvider.notifier).setDraftAgentWeapon, ), ), ) @@ -72,6 +77,7 @@ class PlacedLineupAgentWidget extends ConsumerWidget { isAlly: agent.isAlly, id: agent.id, agent: AgentData.agents[agent.type]!, + weapon: agent.weapon, ), ), ); diff --git a/lib/widgets/draggable_widgets/agents/placed_view_cone_agent_widget.dart b/lib/widgets/draggable_widgets/agents/placed_view_cone_agent_widget.dart index 55de65a2..26b004a4 100644 --- a/lib/widgets/draggable_widgets/agents/placed_view_cone_agent_widget.dart +++ b/lib/widgets/draggable_widgets/agents/placed_view_cone_agent_widget.dart @@ -3,6 +3,7 @@ import 'dart:math' as math; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:icarus/const/agents.dart'; +import 'package:icarus/const/weapons.dart'; import 'package:icarus/const/coordinate_system.dart'; import 'package:icarus/const/placed_classes.dart'; import 'package:icarus/const/settings.dart'; @@ -50,6 +51,8 @@ class ViewConeAgentComposite extends ConsumerWidget { required this.rotation, required this.length, this.forcedAgentSize, + this.previousWeapon, + this.weaponTransitionProgress = 1, this.applyRotation = true, this.clipToGeometry = true, this.isInteractive = true, @@ -59,6 +62,8 @@ class ViewConeAgentComposite extends ConsumerWidget { final double rotation; final double length; final double? forcedAgentSize; + final WeaponType? previousWeapon; + final double weaponTransitionProgress; final bool applyRotation; final bool clipToGeometry; final bool isInteractive; @@ -117,6 +122,9 @@ class ViewConeAgentComposite extends ConsumerWidget { isAlly: agent.isAlly, id: agent.id, agent: AgentData.agents[agent.type]!, + weapon: agent.weapon, + previousWeapon: previousWeapon, + weaponTransitionProgress: weaponTransitionProgress, forcedAgentSize: agentSize, isInteractive: isInteractive, ), diff --git a/lib/widgets/draggable_widgets/agents/weapon_icon.dart b/lib/widgets/draggable_widgets/agents/weapon_icon.dart new file mode 100644 index 00000000..5a59e404 --- /dev/null +++ b/lib/widgets/draggable_widgets/agents/weapon_icon.dart @@ -0,0 +1,99 @@ +import 'dart:ui' as ui; + +import 'package:flutter/material.dart'; +import 'package:icarus/const/weapons.dart'; + +/// Fits the visible silhouette, rather than the transparent kill-feed canvas. +/// The bundled source images stay untouched; these bounds only affect painting. +class WeaponIcon extends StatelessWidget { + const WeaponIcon({ + super.key, + required this.weapon, + required this.width, + required this.height, + this.color = Colors.white, + this.outlineColor, + this.outlineWidth = 0, + }); + + final WeaponType weapon; + final double width; + final double height; + final Color color; + final Color? outlineColor; + final double outlineWidth; + + @override + Widget build(BuildContext context) { + if (weapon == WeaponType.none) return const SizedBox.shrink(); + final (size, bounds) = _artworkBounds[weapon]!; + final icon = SizedBox( + width: width, + height: height, + child: FittedBox( + fit: BoxFit.contain, + child: ClipRect( + child: SizedBox( + width: bounds.width, + height: bounds.height, + child: Stack( + children: [ + Positioned( + left: -bounds.left, + top: -bounds.top, + width: size.width, + height: size.height, + child: Image.asset( + weapon.iconPath, + color: color, + filterQuality: FilterQuality.medium, + excludeFromSemantics: true, + ), + ), + ], + ), + ), + ), + ), + ); + if (outlineColor == null || outlineWidth <= 0) return icon; + return Stack( + clipBehavior: Clip.none, + children: [ + ImageFiltered( + imageFilter: ui.ImageFilter.dilate( + radiusX: outlineWidth, + radiusY: outlineWidth, + ), + child: ColorFiltered( + colorFilter: ColorFilter.mode(outlineColor!, BlendMode.srcIn), + child: icon, + ), + ), + icon, + ], + ); + } +} + +const _artworkBounds = { + WeaponType.classic: (Size(256, 96), Rect.fromLTRB(72, 6, 183, 90)), + WeaponType.shorty: (Size(256, 96), Rect.fromLTRB(1, 12, 255, 90)), + WeaponType.frenzy: (Size(256, 96), Rect.fromLTRB(72, 6, 186, 92)), + WeaponType.ghost: (Size(256, 96), Rect.fromLTRB(1, 10, 256, 89)), + WeaponType.bandit: (Size(256, 140), Rect.fromLTRB(20, 5, 237, 134)), + WeaponType.sheriff: (Size(256, 96), Rect.fromLTRB(32, 3, 214, 94)), + WeaponType.bulldog: (Size(384, 96), Rect.fromLTRB(36, 1, 346, 95)), + WeaponType.guardian: (Size(384, 96), Rect.fromLTRB(2, 7, 382, 87)), + WeaponType.phantom: (Size(384, 96), Rect.fromLTRB(2, 4, 383, 92)), + WeaponType.vandal: (Size(384, 96), Rect.fromLTRB(34, 1, 342, 96)), + WeaponType.bucky: (Size(384, 96), Rect.fromLTRB(2, 10, 382, 84)), + WeaponType.judge: (Size(384, 96), Rect.fromLTRB(34, 0, 350, 95)), + WeaponType.stinger: (Size(256, 96), Rect.fromLTRB(3, 1, 251, 95)), + WeaponType.spectre: (Size(256, 96), Rect.fromLTRB(0, 3, 255, 94)), + WeaponType.marshal: (Size(512, 96), Rect.fromLTRB(1, 3, 510, 92)), + WeaponType.outlaw: (Size(512, 96), Rect.fromLTRB(35, 0, 480, 96)), + WeaponType.operator: (Size(512, 96), Rect.fromLTRB(18, 0, 494, 95)), + WeaponType.ares: (Size(512, 96), Rect.fromLTRB(18, 1, 495, 96)), + WeaponType.odin: (Size(384, 96), Rect.fromLTRB(18, 1, 361, 96)), +}; diff --git a/lib/widgets/draggable_widgets/placed_widget_builder.dart b/lib/widgets/draggable_widgets/placed_widget_builder.dart index 46510871..0defd84d 100644 --- a/lib/widgets/draggable_widgets/placed_widget_builder.dart +++ b/lib/widgets/draggable_widgets/placed_widget_builder.dart @@ -582,6 +582,7 @@ class _AgentListState extends ConsumerState<_AgentList> { isAlly: agent.isAlly, id: "", agent: AgentData.agents[agent.type]!, + weapon: agent.weapon, ), ), ), @@ -616,6 +617,7 @@ class _AgentListState extends ConsumerState<_AgentList> { isAlly: agent.isAlly, id: agent.id, agent: AgentData.agents[agent.type]!, + weapon: agent.weapon, ), ), ), diff --git a/lib/widgets/line_up_widget.dart b/lib/widgets/line_up_widget.dart index f4468529..f82c1e5e 100644 --- a/lib/widgets/line_up_widget.dart +++ b/lib/widgets/line_up_widget.dart @@ -57,6 +57,7 @@ class LineUpOriginAgentWidget extends ConsumerWidget { lineUpId: origin.id, agent: AgentData.agents[origin.agent.type]!, isAlly: origin.agent.isAlly, + weapon: origin.agent.weapon, id: origin.agent.id, isInteractive: interactive, ), diff --git a/lib/widgets/page_transition_overlay.dart b/lib/widgets/page_transition_overlay.dart index 4e7bc2b3..214c275a 100644 --- a/lib/widgets/page_transition_overlay.dart +++ b/lib/widgets/page_transition_overlay.dart @@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:icarus/const/abilities.dart'; import 'package:icarus/const/ability_vision.dart'; import 'package:icarus/const/agents.dart'; +import 'package:icarus/const/weapons.dart'; import 'package:icarus/const/coordinate_system.dart'; import 'package:icarus/const/maps.dart'; @@ -251,6 +252,8 @@ class _EntryRenderer { ); return _overlayItem( key: ValueKey('move_${entry.id}'), + previousWeapon: PageTransitionEntry.weaponOf(entry.from!), + weaponTransitionProgress: t, widget: entry.to!, pos: position, coordinatePosition: coordinatePosition, @@ -381,6 +384,8 @@ class _EntryRenderer { double? customWidth, double? customLength, double? deadStateProgress, + WeaponType? previousWeapon, + double weaponTransitionProgress = 1, }) { final displayRotation = rotation == null ? null @@ -398,6 +403,8 @@ class _EntryRenderer { customWidth: customWidth, customLength: customLength, deadStateProgress: deadStateProgress, + previousWeapon: previousWeapon, + weaponTransitionProgress: weaponTransitionProgress, agentSize: agentSize, abilitySize: abilitySize, ); // central factory (below) @@ -576,6 +583,8 @@ class PlacedWidgetPreview { double? customWidth, double? customLength, double? deadStateProgress, + WeaponType? previousWeapon, + double weaponTransitionProgress = 1, required double agentSize, required double abilitySize, }) { @@ -585,7 +594,10 @@ class PlacedWidgetPreview { id: w.id, agent: AgentData.agents[w.type]!, state: w.state, + weapon: w.weapon, deadStateProgress: deadStateProgress, + previousWeapon: previousWeapon, + weaponTransitionProgress: weaponTransitionProgress, forcedAgentSize: agentSize, isInteractive: false, ); @@ -599,6 +611,8 @@ class PlacedWidgetPreview { rotation: rotation ?? w.rotation, length: length ?? w.length, forcedAgentSize: agentSize, + previousWeapon: previousWeapon, + weaponTransitionProgress: weaponTransitionProgress, isInteractive: false, ); } @@ -606,6 +620,8 @@ class PlacedWidgetPreview { return CircleAgentComposite( agent: w.copyWith(diameterMeters: customDiameter ?? w.diameterMeters), forcedAgentSize: agentSize, + previousWeapon: previousWeapon, + weaponTransitionProgress: weaponTransitionProgress, isInteractive: false, ); } diff --git a/pubspec.yaml b/pubspec.yaml index df0e8d79..e555ca22 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: "A new Flutter project." publish_to: "none" # Remove this line if you wish to publish to pub.dev -version: 4.6.1+97 #version number +version: 4.6.1+100 #version number environment: sdk: ">=3.4.3 <4.0.0" @@ -93,6 +93,7 @@ flutter: - assets/maps/ - assets/maps/thumbnails/ - assets/agents/ + - assets/weapons/ - assets/agents/Omen/ - assets/agents/Killjoy/ - assets/agents/Sova/ diff --git a/test/agent_weapon_test.dart b/test/agent_weapon_test.dart new file mode 100644 index 00000000..c6b2ed28 --- /dev/null +++ b/test/agent_weapon_test.dart @@ -0,0 +1,408 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:archive/archive_io.dart'; +import 'package:cross_file/cross_file.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:hive_ce/hive.dart'; +import 'package:hive_ce/src/binary/binary_reader_impl.dart'; +import 'package:hive_ce/src/binary/binary_writer_impl.dart'; +import 'package:icarus/const/agents.dart'; +import 'package:icarus/const/app_provider_container.dart'; +import 'package:icarus/const/coordinate_system.dart'; +import 'package:icarus/const/hive_boxes.dart'; +import 'package:icarus/const/line_provider.dart'; +import 'package:icarus/const/maps.dart'; +import 'package:icarus/const/placed_classes.dart'; +import 'package:icarus/const/settings.dart'; +import 'package:icarus/const/utilities.dart'; +import 'package:icarus/const/weapons.dart'; +import 'package:icarus/hive/hive_adapters.dart'; +import 'package:icarus/hive/hive_registration.dart'; +import 'package:icarus/migrations/agent_weapon_migration.dart'; +import 'package:icarus/providers/action_provider.dart'; +import 'package:icarus/providers/agent_provider.dart'; +import 'package:icarus/providers/folder_provider.dart'; +import 'package:icarus/providers/strategy_page.dart'; +import 'package:icarus/providers/strategy_provider.dart'; +import 'package:icarus/providers/strategy_settings_provider.dart'; +import 'package:icarus/providers/user_preferences_provider.dart'; + +class _TestStrategyProvider extends StrategyProvider { + @override + StrategyState build() => StrategyState( + isSaved: true, + stratName: null, + id: 'weapon-test', + storageDirectory: null, + activePageId: null, + ); + + @override + void setUnsaved() => state = state.copyWith(isSaved: false); +} + +List _agents(WeaponType weapon) => [ + PlacedAgent( + id: 'plain', + type: AgentType.sova, + position: const Offset(200, 300), + weapon: weapon, + ), + PlacedViewConeAgent( + id: 'cone', + type: AgentType.sova, + position: const Offset(400, 300), + presetType: UtilityType.viewCone90, + length: 60, + rotation: 0.75, + weapon: weapon, + ), + PlacedCircleAgent( + id: 'circle', + type: AgentType.sova, + position: const Offset(600, 300), + diameterMeters: 12, + weapon: weapon, + ), + ]; + +StrategyData _strategy({int version = 100}) => StrategyData( + id: 'firearm-strategy', + name: 'Firearms', + mapData: MapValue.ascent, + versionNumber: version, + lastEdited: DateTime.utc(2026, 9, 13), + folderID: null, + pages: [ + StrategyPage( + id: 'page', + name: 'Armed agents', + sortIndex: 0, + isAttack: true, + drawingData: const [], + agentData: _agents(WeaponType.vandal), + abilityData: const [], + textData: const [], + imageData: const [], + utilityData: const [], + settings: StrategySettings(), + lineUpOrigins: [ + LineUpOrigin( + id: 'origin', + agent: (_agents(WeaponType.bandit).first as PlacedAgent) + .copyWith(id: 'lineup-agent', lineUpID: 'origin'), + ), + ], + lineUpLandings: [ + LineUpLanding( + id: 'landing', + ability: PlacedAbility( + id: 'lineup-ability', + lineUpID: 'landing', + data: AgentData.agents[AgentType.sova]!.abilities.first, + position: const Offset(700, 500), + ), + ), + ], + lineUpLinks: [ + LineUpLink(id: 'link', originId: 'origin', landingId: 'landing'), + ], + ), + ], + ); + +void _expectWeapons(StrategyData strategy) { + expect(strategy.pages.single.agentData.map((agent) => agent.weapon), + everyElement(WeaponType.vandal)); + expect(strategy.pages.single.lineUpOrigins.single.agent.weapon, + WeaponType.bandit); +} + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + setUpAll(() { + registerIcarusAdapters(Hive); + appProviderContainer = ProviderContainer(); + }); + tearDownAll(() => appProviderContainer.dispose()); + setUp(() => CoordinateSystem(playAreaSize: const Size(1920, 1080))); + + test('every firearm round-trips through JSON and copies for every agent kind', + () { + for (final weapon in WeaponType.values) { + for (final original in _agents(weapon)) { + final json = original.toJson(); + expect(json['weapon'], weapon.name); + final restored = PlacedAgentNode.fromJson(jsonDecode(jsonEncode(json))); + expect(restored.weapon, weapon); + expect(restored.toJson(), json); + final copy = original.snapshotCopy(); + expect(copy.weapon, weapon); + copy.weapon = WeaponType.none; + expect(original.weapon, weapon); + } + } + }); + + test('legacy JSON defaults to no firearm without changing agent geometry', + () { + for (final original in _agents(WeaponType.none)) { + final legacy = original.toJson()..remove('weapon'); + final restored = PlacedAgentNode.fromJson(legacy); + expect(restored.weapon, WeaponType.none); + expect(restored.toJson()..remove('weapon'), legacy); + expect( + () => PlacedAgentNode.fromJson({...legacy, 'weapon': 'invalid-weapon'}), + throwsArgumentError, + ); + } + }); + + test('new Hive adapters read the old field layouts with no firearm', () { + // Frozen pre-v100 field numbers, deliberately written without the new field. + final oldRecords = <(TypeAdapter, Map)>[ + ( + PlacedAgentAdapter(), + { + 0: AgentType.sova, + 1: true, + 2: 'plain', + 3: false, + 4: const Offset(200, 300), + 5: null, + 6: AgentState.none, + } + ), + ( + PlacedViewConeAgentAdapter(), + { + 0: UtilityType.viewCone90, + 1: 0.75, + 2: 60.0, + 3: AgentType.sova, + 4: true, + 5: AgentState.none, + 6: 'cone', + 7: false, + 8: const Offset(400, 300), + 9: null, + } + ), + ( + PlacedCircleAgentAdapter(), + { + 0: 12.0, + 1: 0xFFFFFFFF, + 2: 100, + 3: AgentType.sova, + 4: true, + 5: AgentState.none, + 6: 'circle', + 7: false, + 8: const Offset(600, 300), + } + ), + ]; + final expected = _agents(WeaponType.none); + for (var i = 0; i < oldRecords.length; i++) { + final (adapter, fields) = oldRecords[i]; + final writer = BinaryWriterImpl(Hive); + writer.writeByte(fields.length); + for (final field in fields.entries) { + writer + ..writeByte(field.key) + ..write(field.value); + } + final restored = adapter.read( + BinaryReaderImpl(writer.toBytes(), Hive), + ); + expect(restored.toJson(), expected[i].toJson()); + } + }); + + test('selection, removal, movement and deletion undo independently', () { + final container = ProviderContainer(overrides: [ + strategyProvider.overrideWith(_TestStrategyProvider.new), + ]); + addTearDown(container.dispose); + final notifier = container.read(agentProvider.notifier); + final actions = container.read(actionProvider.notifier); + for (final original in _agents(WeaponType.none)) { + actions.resetActionState(); + notifier.fromHive([original]); + notifier.setWeapon(original.id, WeaponType.phantom); + expect(container.read(strategyProvider).isSaved, isFalse); + notifier.updatePosition(const Offset(800, 500), original.id); + notifier.setWeapon(original.id, WeaponType.none); + actions.undoAction(); + expect(container.read(agentProvider).single.weapon, WeaponType.phantom); + actions.undoAction(); + expect( + container.read(agentProvider).single.position, + _agents(WeaponType.none) + .firstWhere((a) => a.id == original.id) + .position); + actions.undoAction(); + expect(container.read(agentProvider).single.weapon, WeaponType.none); + actions.redoAction(); + actions.redoAction(); + expect(container.read(agentProvider).single.position, + const Offset(800, 500)); + expect(container.read(agentProvider).single.weapon, WeaponType.phantom); + notifier.removeAgentAsAction(original.id); + actions.undoAction(); + expect(container.read(agentProvider).single.weapon, WeaponType.phantom); + final actionCount = container.read(actionProvider).length; + notifier.setWeapon(original.id, WeaponType.phantom); + notifier.setWeapon('missing', WeaponType.odin); + expect(container.read(actionProvider).length, actionCount); + } + }); + + test('duplication and agent conversions preserve the firearm', () { + final container = ProviderContainer(overrides: [ + strategyProvider.overrideWith(_TestStrategyProvider.new), + ]); + addTearDown(container.dispose); + final notifier = container.read(agentProvider.notifier); + notifier.fromHive(_agents(WeaponType.operator)); + for (final original in _agents(WeaponType.operator)) { + final id = notifier.duplicateAgentAt( + sourceId: original.id, + position: const Offset(900, 500), + ); + expect( + container.read(agentProvider).singleWhere((a) => a.id == id).weapon, + WeaponType.operator); + } + notifier.convertPlainAgentToViewCone( + id: 'plain', + presetType: UtilityType.viewCone90, + rotation: 0.5, + length: 60, + ); + expect(container.read(agentProvider).first.weapon, WeaponType.operator); + notifier.convertViewConeAgentToPlain(id: 'plain'); + expect(container.read(agentProvider).first.weapon, WeaponType.operator); + notifier.convertPlainAgentToCircle( + id: 'plain', + diameterMeters: 10, + colorValue: 0xFFFFFFFF, + opacityPercent: 60, + ); + expect(container.read(agentProvider).first.weapon, WeaponType.operator); + }); + + test( + 'lineup origins keep weapons through creation, selection, undo and copies', + () { + final container = ProviderContainer(overrides: [ + strategyProvider.overrideWith(_TestStrategyProvider.new), + ]); + addTearDown(container.dispose); + final notifier = container.read(lineUpProvider.notifier); + notifier.startFresh(); + notifier.setDraftAgent(_agents(WeaponType.guardian).first as PlacedAgent); + notifier.setDraftAbility( + _strategy().pages.single.lineUpLandings.single.ability); + final link = notifier.commitPlacement()!; + expect( + notifier.originById(link.originId)!.agent.weapon, WeaponType.guardian); + notifier.setOriginWeapon(link.originId, WeaponType.sheriff); + expect( + notifier.originById(link.originId)!.agent.weapon, WeaponType.sheriff); + container.read(actionProvider.notifier).undoAction(); + expect( + notifier.originById(link.originId)!.agent.weapon, WeaponType.guardian); + container.read(actionProvider.notifier).redoAction(); + expect( + notifier.originById(link.originId)!.agent.weapon, WeaponType.sheriff); + notifier.setOriginWeapon(link.originId, WeaponType.none); + expect(notifier.originById(link.originId)!.agent.weapon, WeaponType.none); + container.read(actionProvider.notifier).undoAction(); + expect( + notifier.originById(link.originId)!.agent.weapon, WeaponType.sheriff); + // Deleting and recreating the graph must not lose a weapon edit's redo. + notifier.deleteOrigin(link.originId); + final actions = container.read(actionProvider.notifier); + actions.undoAction(); + actions.undoAction(); + expect( + notifier.originById(link.originId)!.agent.weapon, WeaponType.guardian); + actions.redoAction(); + actions.redoAction(); + expect(notifier.originById(link.originId), isNull); + actions.undoAction(); + expect( + notifier.originById(link.originId)!.agent.weapon, WeaponType.sheriff); + final copied = _strategy().pages.single.copyWith(id: 'copied-page'); + expect( + copied.agentData.map((a) => a.weapon), everyElement(WeaponType.vandal)); + expect(copied.lineUpOrigins.single.agent.weapon, WeaponType.bandit); + }); + + test('v100 migration changes only the version and is idempotent', () { + final original = _strategy(version: 99); + final migrated = AgentWeaponMigration.migrate(original); + expect(migrated.versionNumber, 100); + expect(migrated.pages, same(original.pages)); + expect(migrated.lastEdited, original.lastEdited); + expect(migrated.id, original.id); + expect(AgentWeaponMigration.migrate(migrated), same(migrated)); + expect( + StrategyProvider.migrateToCurrentVersion(original).versionNumber, 100); + }); + + test('Hive reopen, real .ica export/import and library backup retain weapons', + () async { + final directory = await Directory.systemTemp.createTemp('icarus-firearms-'); + Hive.init(directory.path); + final container = ProviderContainer(); + addTearDown(() async { + container.dispose(); + await Hive.close(); + await directory.delete(recursive: true); + }); + var box = await Hive.openBox(HiveBoxNames.strategiesBox); + await Hive.openBox(HiveBoxNames.foldersBox); + await Hive.openBox(HiveBoxNames.mapThemeProfilesBox); + await Hive.openBox(HiveBoxNames.appPreferencesBox); + await Hive.openBox(HiveBoxNames.favoriteAgentsBox); + await MapThemeProfilesProvider.bootstrap(); + await box.put('firearm-strategy', _strategy()); + await box.close(); + box = await Hive.openBox(HiveBoxNames.strategiesBox); + _expectWeapons(box.get('firearm-strategy')!); + + final notifier = container.read(strategyProvider.notifier); + final exported = await notifier.zipStrategy( + id: 'firearm-strategy', + saveDir: directory, + ); + final result = await notifier.loadFromFileDrop([XFile(exported)]); + expect(result.issues, isEmpty); + expect(result.strategiesImported, 1); + for (final strategy in box.values) { + _expectWeapons(strategy); + } + + final backup = await notifier.buildLibraryExportDirectoryForTest(); + addTearDown(() => backup.delete(recursive: true)); + final backupFile = '${directory.path}/library.zip'; + final encoder = ZipFileEncoder()..create(backupFile); + await encoder.addDirectory(backup, includeDirName: false); + await encoder.close(); + final imported = await notifier.loadFromFileDrop([XFile(backupFile)]); + expect(imported.issues, isEmpty); + expect(imported.strategiesImported, 2); + expect(box.length, 4); + for (final strategy in box.values) { + _expectWeapons(strategy); + expect(strategy.versionNumber, Settings.versionNumber); + } + }); +} diff --git a/test/agent_weapon_widgets_test.dart b/test/agent_weapon_widgets_test.dart new file mode 100644 index 00000000..8e870422 --- /dev/null +++ b/test/agent_weapon_widgets_test.dart @@ -0,0 +1,469 @@ +import 'dart:io'; +import 'dart:ui' as ui; + +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:icarus/const/agents.dart'; +import 'package:icarus/const/coordinate_system.dart'; +import 'package:icarus/const/line_provider.dart'; +import 'package:icarus/const/maps.dart'; +import 'package:icarus/const/placed_classes.dart'; +import 'package:icarus/const/settings.dart'; +import 'package:icarus/const/transition_data.dart'; +import 'package:icarus/const/utilities.dart'; +import 'package:icarus/const/weapons.dart'; +import 'package:icarus/page_transition/transition_planner.dart'; +import 'package:icarus/providers/action_provider.dart'; +import 'package:icarus/providers/agent_provider.dart'; +import 'package:icarus/providers/hovered_delete_target_provider.dart'; +import 'package:icarus/providers/map_provider.dart'; +import 'package:icarus/providers/screen_zoom_provider.dart'; +import 'package:icarus/providers/strategy_provider.dart'; +import 'package:icarus/providers/strategy_settings_provider.dart'; +import 'package:icarus/widgets/draggable_widgets/agents/agent_weapon_badge.dart'; +import 'package:icarus/widgets/draggable_widgets/agents/agent_widget.dart'; +import 'package:icarus/widgets/draggable_widgets/agents/weapon_icon.dart'; +import 'package:icarus/widgets/draggable_widgets/placed_widget_builder.dart'; +import 'package:icarus/widgets/page_transition_overlay.dart'; +import 'package:icarus/widgets/line_up_placer.dart'; +import 'package:shadcn_ui/shadcn_ui.dart'; + +const _viewport = Size(1200, 800); +const _captureKey = ValueKey('weapon-test-capture'); + +class _TestStrategyProvider extends StrategyProvider { + @override + StrategyState build() => StrategyState( + isSaved: true, + stratName: null, + id: 'weapon-widget-test', + storageDirectory: null, + activePageId: null, + ); + + @override + void setUnsaved() => state = state.copyWith(isSaved: false); +} + +class _TestMapProvider extends MapProvider { + @override + MapState build() => MapState(currentMap: MapValue.ascent, isAttack: true); +} + +ProviderContainer _container() => ProviderContainer(overrides: [ + strategyProvider.overrideWith(_TestStrategyProvider.new), + mapProvider.overrideWith(_TestMapProvider.new), + ]); + +PlacedAgentNode _agent(String kind, {WeaponType weapon = WeaponType.none}) { + const position = Offset(600, 400); + return switch (kind) { + 'cone' => PlacedViewConeAgent( + id: kind, + type: AgentType.sova, + position: position, + presetType: UtilityType.viewCone90, + rotation: 0.75, + length: 60, + weapon: weapon, + ), + 'circle' => PlacedCircleAgent( + id: kind, + type: AgentType.sova, + position: position, + diameterMeters: 12, + weapon: weapon, + ), + _ => PlacedAgent( + id: kind, + type: AgentType.sova, + position: position, + weapon: weapon, + ), + }; +} + +Widget _harness(ProviderContainer container, + {Widget? child, double zoom = 1}) => + UncontrolledProviderScope( + container: container, + child: RepaintBoundary( + key: _captureKey, + child: ShadApp( + themeMode: ThemeMode.dark, + darkTheme: ShadThemeData( + brightness: Brightness.dark, + colorScheme: Settings.tacticalVioletTheme, + ), + home: Scaffold( + backgroundColor: Settings.tacticalVioletTheme.background, + body: Transform.scale( + scale: zoom, + alignment: Alignment.topLeft, + child: SizedBox.fromSize( + size: _viewport, + child: child ?? const PlacedWidgetBuilder(), + ), + ), + ), + ), + ), + ); + +Future _dispose(WidgetTester tester, ProviderContainer container) async { + await tester.pumpWidget(const SizedBox.shrink()); + await tester.pump(); + container.dispose(); +} + +Future _openCategory( + WidgetTester tester, TestGesture mouse, String category) async { + await tester.tapAt(tester.getCenter(find.byType(AgentWidget).first), + buttons: kSecondaryButton, kind: PointerDeviceKind.mouse); + await tester.pumpAndSettle(); + await mouse.moveTo(tester.getCenter(find.text(category))); + await tester.pumpAndSettle(); +} + +Future _capture(WidgetTester tester, String name) async { + final directory = Platform.environment['ICARUS_WEAPON_TEST_ARTIFACT_DIR']; + if (directory == null) return; + final boundary = tester.renderObject( + find.byKey(_captureKey), + ); + await tester.runAsync(() async { + final image = await boundary.toImage(pixelRatio: 2); + try { + final bytes = await image.toByteData(format: ui.ImageByteFormat.png); + await Directory(directory).create(recursive: true); + await File('$directory/$name.png') + .writeAsBytes(bytes!.buffer.asUint8List()); + } finally { + image.dispose(); + } + }); +} + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + setUp(() { + CoordinateSystem(playAreaSize: _viewport); + CoordinateSystem.instance.setIsScreenshot(false); + }); + + for (final kind in ['plain', 'cone', 'circle']) { + testWidgets('$kind agent selects, changes and removes a firearm by menu', + (tester) async { + tester.view + ..physicalSize = _viewport + ..devicePixelRatio = 1; + addTearDown(tester.view.reset); + final container = _container(); + addTearDown(() => _dispose(tester, container)); + container.read(agentProvider.notifier).fromHive([_agent(kind)]); + await tester.pumpWidget(_harness(container)); + await tester.pumpAndSettle(); + final originalRect = tester.getRect(find.byType(AgentWidget)); + final mouse = await tester.createGesture(kind: PointerDeviceKind.mouse); + await mouse.addPointer(location: const Offset(10, 10)); + addTearDown(mouse.removePointer); + + await _openCategory(tester, mouse, 'Sidearms'); + for (final weapon in WeaponCategory.sidearms.weapons) { + expect(find.text(weapon.displayName), findsOneWidget); + } + await _capture(tester, '$kind-sidearms-menu'); + await tester.tap(find.text('Bandit')); + await tester.pumpAndSettle(); + expect(container.read(agentProvider).single.weapon, WeaponType.bandit); + expect(tester.getRect(find.byType(AgentWidget)), originalRect); + expect(tester.widget(find.byType(WeaponIcon)).weapon, + WeaponType.bandit); + + await _openCategory(tester, mouse, 'Rifles'); + await tester.tap(find.text('Vandal')); + await tester.pumpAndSettle(); + expect(container.read(agentProvider).single.weapon, WeaponType.vandal); + expect(tester.getRect(find.byType(AgentWidget)), originalRect); + await _capture(tester, '$kind-vandal-badge'); + + await tester.tapAt(tester.getCenter(find.byType(AgentWidget)), + buttons: kSecondaryButton, kind: PointerDeviceKind.mouse); + await tester.pumpAndSettle(); + await tester.tap(find.text('None')); + await tester.pumpAndSettle(); + expect(container.read(agentProvider).single.weapon, WeaponType.none); + expect(find.byType(AgentWeaponBadge), findsNothing); + expect(tester.getRect(find.byType(AgentWidget)), originalRect); + container.read(actionProvider.notifier).undoAction(); + await tester.pumpAndSettle(); + expect(tester.widget(find.byType(WeaponIcon)).weapon, + WeaponType.vandal); + }); + + testWidgets( + '$kind firearm preserves drag anchor at different sizes and zooms', + (tester) async { + tester.view + ..physicalSize = _viewport + ..devicePixelRatio = 1; + addTearDown(tester.view.reset); + final container = _container(); + addTearDown(() => _dispose(tester, container)); + for (final size in [Settings.agentSizeMin, Settings.agentSizeMax]) { + for (final zoom in [1.0, 1.4]) { + container + .read(strategySettingsProvider.notifier) + .updateAgentSize(size); + container.read(screenZoomProvider.notifier).updateZoom(zoom); + container.read(agentProvider.notifier).fromHive([ + _agent(kind, weapon: WeaponType.operator), + ]); + await tester.pumpWidget(_harness(container, zoom: zoom)); + await tester.pumpAndSettle(); + final before = tester.getTopLeft(find.byType(AgentWidget)); + final start = + tester.getCenter(find.byType(AgentWidget)) - const Offset(2, 2); + final gesture = + await tester.startGesture(start, kind: PointerDeviceKind.mouse); + const delta = Offset(65, 45); + await gesture.moveBy(delta); + await tester.pumpAndSettle(); + expect(tester.widget(find.byType(AgentWidget)).weapon, + WeaponType.operator); + final feedback = tester.getTopLeft(find.byType(AgentWidget)); + expect((feedback - before - delta).distance, lessThan(0.01)); + await gesture.up(); + await tester.pumpAndSettle(); + final after = tester.getTopLeft(find.byType(AgentWidget)); + expect((after - before - delta).distance, lessThan(0.01)); + expect( + container.read(agentProvider).single.weapon, WeaponType.operator); + } + } + }); + } + + testWidgets('gun overhang paints outside the portrait and has no hit target', + (tester) async { + tester.view + ..physicalSize = _viewport + ..devicePixelRatio = 1; + addTearDown(tester.view.reset); + final container = _container(); + addTearDown(() => _dispose(tester, container)); + container.read(agentProvider.notifier).fromHive([ + _agent('plain', weapon: WeaponType.classic), + ]); + await tester.pumpWidget(_harness(container)); + await tester.pumpAndSettle(); + final agentRect = tester.getRect(find.byType(AgentWidget)); + final badgeRect = tester.getRect(find.byType(AgentWeaponBadge)); + expect(badgeRect.right, greaterThan(agentRect.right)); + expect(badgeRect.bottom, greaterThan(agentRect.bottom)); + + final mouse = await tester.createGesture(kind: PointerDeviceKind.mouse); + await mouse.addPointer(location: agentRect.center); + await tester.pumpAndSettle(); + expect(container.read(hoveredDeleteTargetProvider)?.id, 'plain'); + await mouse.moveTo(Offset(agentRect.right + 1, badgeRect.center.dy)); + await tester.pumpAndSettle(); + expect(container.read(hoveredDeleteTargetProvider), isNull); + await tester.tapAt(Offset(agentRect.right + 1, badgeRect.center.dy), + buttons: kSecondaryButton, kind: PointerDeviceKind.mouse); + await tester.pumpAndSettle(); + expect(find.text('Sidearms'), findsNothing); + await mouse.removePointer(); + + final boundary = + tester.renderObject(find.byKey(_captureKey)); + await tester.runAsync(() async { + final image = await boundary.toImage(); + final pixels = await image.toByteData(format: ui.ImageByteFormat.rawRgba); + var whitePixelsOutside = 0; + for (var y = badgeRect.top.floor(); y < badgeRect.bottom.ceil(); y++) { + for (var x = badgeRect.left.floor(); x < badgeRect.right.ceil(); x++) { + if (agentRect.contains(Offset(x.toDouble(), y.toDouble()))) continue; + final offset = (y * image.width + x) * 4; + if (pixels!.getUint8(offset) > 220 && + pixels.getUint8(offset + 1) > 220 && + pixels.getUint8(offset + 2) > 220) { + whitePixelsOutside++; + } + } + } + image.dispose(); + expect(whitePixelsOutside, greaterThan(0)); + }); + }); + + testWidgets('lineup origin offers the same firearm menu', (tester) async { + tester.view + ..physicalSize = _viewport + ..devicePixelRatio = 1; + addTearDown(tester.view.reset); + final container = _container(); + addTearDown(() => _dispose(tester, container)); + container.read(lineUpProvider.notifier).fromHive(LineUpGraph( + origins: [ + LineUpOrigin(id: 'origin', agent: _agent('plain') as PlacedAgent) + ], + landings: [ + LineUpLanding( + id: 'landing', + ability: PlacedAbility( + id: 'ability', + data: AgentData.agents[AgentType.sova]!.abilities.first, + position: const Offset(900, 500), + ), + ), + ], + links: [ + LineUpLink(id: 'link', originId: 'origin', landingId: 'landing') + ], + )); + await tester.pumpWidget(_harness(container)); + await tester.pumpAndSettle(); + final mouse = await tester.createGesture(kind: PointerDeviceKind.mouse); + await mouse.addPointer(location: const Offset(10, 10)); + addTearDown(mouse.removePointer); + await _openCategory(tester, mouse, 'Heavies'); + await tester.tap(find.text('Odin')); + await tester.pumpAndSettle(); + expect(container.read(lineUpProvider).origins.single.agent.weapon, + WeaponType.odin); + expect(tester.widget(find.byType(AgentWidget)).weapon, + WeaponType.odin); + }); + + testWidgets('lineup draft firearm edits do not change the source agent', + (tester) async { + tester.view + ..physicalSize = _viewport + ..devicePixelRatio = 1; + addTearDown(tester.view.reset); + final container = _container(); + addTearDown(() => _dispose(tester, container)); + final source = _agent('plain', weapon: WeaponType.vandal) as PlacedAgent; + container.read(agentProvider.notifier).fromHive([source]); + final lineups = container.read(lineUpProvider.notifier); + lineups.startFresh(); + lineups.setDraftAgent(source); + await tester + .pumpWidget(_harness(container, child: const LineupPositionWidget())); + await tester.pumpAndSettle(); + final mouse = await tester.createGesture(kind: PointerDeviceKind.mouse); + await mouse.addPointer(location: const Offset(10, 10)); + addTearDown(mouse.removePointer); + await _openCategory(tester, mouse, 'Shotguns'); + await tester.tap(find.text('Judge')); + await tester.pumpAndSettle(); + expect(container.read(lineUpProvider).placement!.draftAgent!.weapon, + WeaponType.judge); + expect(container.read(agentProvider).single.weapon, WeaponType.vandal); + expect(tester.widget(find.byType(AgentWidget)).weapon, + WeaponType.judge); + }); + + testWidgets( + 'shared page and video renderer fades weapon changes at one anchor', + (tester) async { + tester.view + ..physicalSize = _viewport + ..devicePixelRatio = 1; + addTearDown(tester.view.reset); + final container = _container(); + addTearDown(() => _dispose(tester, container)); + for (final kind in ['plain', 'cone', 'circle']) { + final from = _agent(kind, weapon: WeaponType.classic); + final to = _agent(kind, weapon: WeaponType.vandal); + final entries = TransitionPlanner.diff({kind: from}, {kind: to}); + expect(entries.single.kind, TransitionKind.move); + Rect? firstRect; + for (final t in [0.0, 0.5, 1.0]) { + await tester.pumpWidget(_harness(container, + child: TransitionEntriesLayer( + entries: entries, + agentPaths: const {}, + t: t, + direction: PageTransitionDirection.forward, + agentSize: Settings.agentSize, + abilitySize: Settings.abilitySize, + ))); + await tester.pumpAndSettle(); + final rect = tester.getRect(find.byType(AgentWidget)); + firstRect ??= rect; + expect(rect, firstRect); + final visible = tester + .widgetList(find.byType(WeaponIcon)) + .map((icon) => icon.weapon) + .toList(); + expect( + visible, + t == 0 + ? [WeaponType.classic] + : t == 1 + ? [WeaponType.vandal] + : [WeaponType.classic, WeaponType.vandal]); + } + } + }); + + testWidgets('every bundled firearm renders beside an unchanged portrait', + (tester) async { + tester.view + ..physicalSize = _viewport + ..devicePixelRatio = 1; + addTearDown(tester.view.reset); + final container = _container(); + addTearDown(() => _dispose(tester, container)); + await tester.pumpWidget(_harness(container, + child: GridView.count( + crossAxisCount: 5, + childAspectRatio: 1.5, + children: [ + for (final weapon in WeaponType.values) + Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + AgentWidget( + agent: AgentData.agents[AgentType.sova]!, + id: null, + isAlly: true, + isInteractive: false, + forcedAgentSize: 60, + weapon: weapon, + ), + const SizedBox(height: 16), + Text(weapon.displayName), + ], + ), + ], + ))); + await tester.pumpAndSettle(); + // Asset decoding can finish after pumpAndSettle on the software test engine. + // Await every image before inspecting or capturing the full catalogue. + await tester.runAsync(() async { + final context = tester.element(find.byType(Scaffold)); + for (final weapon + in WeaponType.values.where((w) => w != WeaponType.none)) { + await precacheImage(AssetImage(weapon.iconPath), context); + } + }); + await tester.pumpAndSettle(); + expect(tester.takeException(), isNull); + expect(find.byType(WeaponIcon), findsNWidgets(19)); + final sizes = tester + .elementList(find.byType(AgentWidget)) + .map( + (element) => (element.renderObject! as RenderBox).size, + ) + .toSet(); + expect(sizes, hasLength(1)); + await _capture(tester, 'all-firearms'); + }); +} diff --git a/test/view_cone_agent_drag_feedback_test.dart b/test/view_cone_agent_drag_feedback_test.dart index 4ffd13bb..17f02ce8 100644 --- a/test/view_cone_agent_drag_feedback_test.dart +++ b/test/view_cone_agent_drag_feedback_test.dart @@ -131,7 +131,8 @@ void main() { await tester.pump(); await tester.pump(const Duration(milliseconds: 250)); - expect(find.byType(ShadContextMenuItem), findsNWidgets(2)); + expect(find.text('Sidearms'), findsOneWidget); + expect(find.text('None'), findsOneWidget); expect(tester.getSize(find.byType(ShadContextMenuItem).first).height, 40); final menuItemRect = tester.getRect(find.byType(ShadContextMenuItem).first); final abilityButtons = find.byWidgetPredicate( From f07e440eb0b36d2175446f1707c0b5ff4e39ed6b Mon Sep 17 00:00:00 2001 From: Dara Adedeji Date: Sun, 13 Sep 2026 00:55:39 -0400 Subject: [PATCH 2/4] Record native firearm rendering verification --- docs/verification/agent-firearms/README.md | 20 ++++++++++++++ .../agent-firearms/all-firearms.png | Bin 0 -> 206726 bytes .../agent-firearms/sidearms-menu.png | Bin 0 -> 80217 bytes .../agent-firearms/windows-test-output.txt | 26 ++++++++++++++++++ 4 files changed, 46 insertions(+) create mode 100644 docs/verification/agent-firearms/README.md create mode 100644 docs/verification/agent-firearms/all-firearms.png create mode 100644 docs/verification/agent-firearms/sidearms-menu.png create mode 100644 docs/verification/agent-firearms/windows-test-output.txt diff --git a/docs/verification/agent-firearms/README.md b/docs/verification/agent-firearms/README.md new file mode 100644 index 00000000..003b035f --- /dev/null +++ b/docs/verification/agent-firearms/README.md @@ -0,0 +1,20 @@ +# Agent firearm verification + +Windows captures from commit `9a1c96ddc7416f5ce4f1cc29ad45113a67455126`, taken on 2026-09-13. The native test app uses in-memory providers and never opens a user's library. + +Run from PowerShell: + +```powershell +$env:ICARUS_WEAPON_TEST_ARTIFACT_DIR = "$PWD/firearm-captures" +flutter test integration_test/agent_weapon_test.dart -d windows +``` + +All 11 scenarios passed. [The native output](windows-test-output.txt) includes `gun overhang paints outside the portrait and has no hit target`. That scenario checks the badge bounds, moves and right-clicks outside the portrait, then requires actual white pixels outside the portrait in the rendered image. The pixel assertion is unconditional. + +The screenshots below were also inspected visually. Every gun is visible at the portrait's bottom-right, and all portraits keep the same dimensions. The white silhouette has a dark outline for contrast against the portrait. + +![All 19 firearm badges beside an agent without a firearm](all-firearms.png) + +![Right-click category menu with sidearms](sidearms-menu.png) + +The Windows CI run also passed all 493 unit/widget tests, including the overhang pixel assertion, with one existing skipped test: [CI run](https://github.com/SunkenInTime/icarus/actions/runs/34738623168). diff --git a/docs/verification/agent-firearms/all-firearms.png b/docs/verification/agent-firearms/all-firearms.png new file mode 100644 index 0000000000000000000000000000000000000000..57ca1fc2a9f68509034b92904c31c8884c6532f7 GIT binary patch literal 206726 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

CQL-!kn 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 Z29GaKLseI$;1BDE{|jA_^y~lt literal 0 HcmV?d00001 diff --git a/docs/verification/agent-firearms/sidearms-menu.png b/docs/verification/agent-firearms/sidearms-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..4a4e3e568efa16664b11822af22a50294fc9483c GIT binary patch literal 80217 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 Date: Sun, 13 Sep 2026 00:56:02 -0400 Subject: [PATCH 3/4] Trim console padding from verification output --- docs/verification/agent-firearms/windows-test-output.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/verification/agent-firearms/windows-test-output.txt b/docs/verification/agent-firearms/windows-test-output.txt index bbf102f1..b0715605 100644 --- a/docs/verification/agent-firearms/windows-test-output.txt +++ b/docs/verification/agent-firearms/windows-test-output.txt @@ -1,5 +1,5 @@ 00:00 +0: loading C:/Users/shawn/.codex/worktrees/icarus-release/agent-firearms/integration_test/agent_weapon_test.dart -Building Windows application... +Building Windows application... CMake Warning (dev) at flutter/ephemeral/.plugin_symlinks/flutter_inappwebview_windows/windows/CMakeLists.txt:31 (add_custom_command): The following keywords are not supported when using add_custom_command(TARGET): DEPENDS. From 388ad5edbccee832351e236aae392376a110a36f Mon Sep 17 00:00:00 2001 From: Dara Adedeji Date: Sun, 13 Sep 2026 01:01:40 -0400 Subject: [PATCH 4/4] Wait for firearm image decoding in isolated pixel test --- docs/verification/agent-firearms/README.md | 8 ++++++++ test/agent_weapon_widgets_test.dart | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/docs/verification/agent-firearms/README.md b/docs/verification/agent-firearms/README.md index 003b035f..97f311d7 100644 --- a/docs/verification/agent-firearms/README.md +++ b/docs/verification/agent-firearms/README.md @@ -18,3 +18,11 @@ The screenshots below were also inspected visually. Every gun is visible at the ![Right-click category menu with sidearms](sidearms-menu.png) The Windows CI run also passed all 493 unit/widget tests, including the overhang pixel assertion, with one existing skipped test: [CI run](https://github.com/SunkenInTime/icarus/actions/runs/34738623168). + +## Isolated pixel check + +Greptile's first review exposed a test timing issue. Running only the overhang test started with a cold image cache and captured before the firearm asset decoded. The full suite had already loaded it during the menu scenarios. The test now awaits `precacheImage` before inspecting pixels. This isolated command reproduces the original failure before that fix and passes after it: + +```powershell +flutter test test/agent_weapon_widgets_test.dart --plain-name 'gun overhang paints outside the portrait and has no hit target' +``` diff --git a/test/agent_weapon_widgets_test.dart b/test/agent_weapon_widgets_test.dart index 8e870422..86c24207 100644 --- a/test/agent_weapon_widgets_test.dart +++ b/test/agent_weapon_widgets_test.dart @@ -266,6 +266,14 @@ void main() { expect(badgeRect.right, greaterThan(agentRect.right)); expect(badgeRect.bottom, greaterThan(agentRect.bottom)); + // A filtered run starts with a cold image cache. Wait for the actual asset + // before inspecting pixels instead of relying on earlier menu tests. + await tester.runAsync(() => precacheImage( + AssetImage(WeaponType.classic.iconPath), + tester.element(find.byType(AgentWeaponBadge)), + )); + await tester.pumpAndSettle(); + final mouse = await tester.createGesture(kind: PointerDeviceKind.mouse); await mouse.addPointer(location: agentRect.center); await tester.pumpAndSettle();