From 367a08b2c276834a809312f22f2ce78c7f0940da Mon Sep 17 00:00:00 2001 From: iTNTPiston Date: Mon, 20 Jun 2022 22:47:31 -0700 Subject: [PATCH] inventory corruption working --- Justfile | 3 ++ src/App.css | 9 +++--- src/App.tsx | 45 ++++++++++++++++++++++++--- src/assets/img/HyruleBass.png | Bin 0 -> 10449 bytes src/assets/img/LizalfosHorn.png | Bin 0 -> 8640 bytes src/assets/img/LizalfosTalon.png | Bin 0 -> 7675 bytes src/assets/img/Rushroom.png | Bin 0 -> 14585 bytes src/assets/img/Screw.png | Bin 0 -> 6047 bytes src/components/CommandItem.tsx | 6 ++-- src/core/Command.ts | 51 ++++++++++++++++++++++++++++++- src/core/Inventory.ts | 34 +++++++++++++++++++++ src/core/Item.ts | 25 +++++++++++++-- src/core/Parser.ts | 18 +++++++++-- src/core/Slots.ts | 15 ++++++--- src/surfaces/DisplayPane.tsx | 15 +++++---- 15 files changed, 193 insertions(+), 28 deletions(-) create mode 100644 src/assets/img/HyruleBass.png create mode 100644 src/assets/img/LizalfosHorn.png create mode 100644 src/assets/img/LizalfosTalon.png create mode 100644 src/assets/img/Rushroom.png create mode 100644 src/assets/img/Screw.png diff --git a/Justfile b/Justfile index 54b9248..8621159 100644 --- a/Justfile +++ b/Justfile @@ -2,3 +2,6 @@ deploy: rm -rf docs/ npm run build mv -T build docs + git add . + git commit -m "Local Build Deployment" + git push diff --git a/src/App.css b/src/App.css index ab0651e..9b85622 100644 --- a/src/App.css +++ b/src/App.css @@ -19,8 +19,9 @@ h1 { background-color: #eeaaaa; } -.CommandItemError{ - color: red; +.CommandItemComment{ + color: green; + font-size: 10pt; } .CommandItem { @@ -29,7 +30,7 @@ h1 { } .CommandItem:hover { - border: 1px solid black + background-color: #eeeeee; } .InputError { @@ -77,4 +78,4 @@ h1 { left:8px; color:#eeeeee; float: left; -} \ No newline at end of file +} diff --git a/src/App.tsx b/src/App.tsx index f99d461..70ac03c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -55,6 +55,9 @@ export const App: React.FC = () => { const [contextMenuY, setContextMenuY] = useState(0); const [contextMenuShowing, setContextMenuShowing] = useState(false); const [contextIndex, setContextIndex] = useState(-1); + + const uploadRef = useRef(null); + const contextMenuRef = useRef(null); // compute props const inventories = useMemo(()=>{ const inventories: Inventory[] = []; @@ -85,7 +88,16 @@ export const App: React.FC = () => { }, [commands]); - const uploadRef = useRef(null); + useEffect(()=>{ + if(contextMenuRef.current && contextMenuShowing){ + const rect = contextMenuRef.current.getBoundingClientRect(); + if (rect.bottom > window.innerHeight){ + setContextMenuY(contextMenuY-rect.height); + } + } + }, [contextMenuRef, contextMenuShowing]) + + return (
{ key={i} isSelected={displayIndex===i} isContextSelected={contextIndex===i} - error={inventories[i].isInaccurate()} + comment={c.getDisplayString().startsWith("#")} > {c.getDisplayString()} @@ -140,12 +152,21 @@ export const App: React.FC = () => { const arrCopy = [...commands]; arrCopy.push(new CommandNothing()); setCommands(arrCopy); + }} onContextMenu={()=>{ + const arrCopy = [...commands]; + arrCopy.push(new CommandNothing()); + setCommands(arrCopy); }}>(new) { setContextIndex(-1); setContextMenuX(x); setContextMenuY(y); setContextMenuShowing(true); + }} onContextMenu={(x,y)=>{ + setContextIndex(-1); + setContextMenuX(x); + setContextMenuY(y); + setContextMenuShowing(true); }}>(options) @@ -154,7 +175,8 @@ export const App: React.FC = () => { { setContextIndex(-1); e.preventDefault(); }}> -
{ setContextMenuShowing(false); setContextIndex(-1); }}>Insert Above - { + { + if(contextIndex > 0){ + const arrCopy = [...commands]; + const temp = arrCopy[contextIndex]; + arrCopy[contextIndex] = arrCopy[contextIndex-1]; + arrCopy[contextIndex-1] = temp; + setCommands(arrCopy); + setContextMenuShowing(false); + setContextIndex(-1); + } + + + }}>Move Up + { if(confirm("Delete?")){ setCommands(commands.filter((_,i)=>i!==contextIndex)); if(displayIndex >= commands.length){ diff --git a/src/assets/img/HyruleBass.png b/src/assets/img/HyruleBass.png new file mode 100644 index 0000000000000000000000000000000000000000..6775618bfcc7fbdf1cc248c083273fa7550814a4 GIT binary patch literal 10449 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 V+dT`G|G8wSEUzI~Cu14)e*g-JCA0tl literal 0 HcmV?d00001 diff --git a/src/assets/img/LizalfosHorn.png b/src/assets/img/LizalfosHorn.png new file mode 100644 index 0000000000000000000000000000000000000000..da8dbaf506c4709bb9711950ba572319584879a8 GIT binary patch literal 8640 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 literal 0 HcmV?d00001 diff --git a/src/assets/img/LizalfosTalon.png b/src/assets/img/LizalfosTalon.png new file mode 100644 index 0000000000000000000000000000000000000000..a6c7f6ff96fe6c3927010a1e8b8c67f6f852a39e GIT binary patch literal 7675 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 B>b?K~ literal 0 HcmV?d00001 diff --git a/src/assets/img/Rushroom.png b/src/assets/img/Rushroom.png new file mode 100644 index 0000000000000000000000000000000000000000..a73e6fa61cad73efa64efd1c5b4bd31561f2f9ac GIT binary patch literal 14585 zcmbVzbxn8eD@1mjEBGL4reo&F{W@-)?Qa+CO%x zX1e>#u|85Y-90BpMM)YNfdByv3=COTMndgxYx2(x2lMy2pXJ5#x50Op)NxmLvUK+{ zbp?WnS~!^j$z&Z&t$=DkQwtxL??3@CFi3A34IOtKMFl={CkH0ee{h(*9i0DCgMkSM zdpnz&+X3Cl%z#!lj)D}|y#o|vHWq>u+MJ3kiq7IdYa1C~SD?DDl7_jjojI=sg|HBr zfH&V?1`a@XQ!;M{dq+1uZ$XNG@#Xv5{|C%WLG~{ccRN9f|58dvQH4z0$rVV($;1UP zXW`-|cn(;ASLaV`1fFW?^S$X92LW^Kr27aj=p7`=aayZt7?b{Euv#zq0>L z%liMMm*=yBRl|8Jn3I2M3Ua z;@|WZ|GySw{;L%8KjHF!gwKCKe`E5W?tdr4-@$*U6VUN*4!QnK7B!aXPB1V|Tv-WG z4e!m%0NAvAZI3IVpiigV237HlUSJ4$GciswnhmuNT8c=pOnAGPd^7PN+LHX>TCzwL zOm5bCvWl4ZJcbKNxU`XsC<-|TKZpFdPKHDKS?5Pz-d%sd2Y)1*eXLZ6(f*GfI}Y~F zcfZ2BU)Nhl2E}P5Q3E7B%m=2J0++#2#5XrKZ@~8=V+3-gho=PYb(~($U$|SD z9dYmMZ!0@}e$(nN$h*uNd&2&ozce_W3k3ZX`nPw9Hywa&TMh>ro`a}8F{BnZ>Nc=V zKfHczQr{LVpNfs{biSL*6AZbV=CHfu6;^~7C!QQ|w{P(y_J3Y&_fCHrdk)fHfEmr6 z6bAL1mRED?H&&9IRf1hKkcGW}}VH7G>cp3}3d94J*=aIei zka`X(!*Gv>K=x|%0uGH0-v@%wkNY~{67Cj7OIp660aev>Wxh;72%oUAm$BvaOE&0K zWsl1nzfBByQ1YX3zcfJx4r_iEcV6o{b*~my4F}Gdu(GE(>h#FnhW zeNDrUU}M0X=aN`LH|KmCr<*apuMB$KPyb>fe9yo4LFCL9hNCmZH16bf&u8Y|yGu6B z@HiL(c}{uVf98{M;13|xnI|NXO~V^?ooSiM}c0K`#y_K=< zySf^(cevFU@Ft&FfY1y2@CXqz1$(f&t9_DG}&?u2J7s_1rnPd2nhLX?N zy{mv~%@zD5I49lkaj}*Y`OxET%{OFbusQfD+iR&eOtIDUJ@mHry#@q_d;OD)9PkAo zY4a5_F>4Xn#G$2}k}*PNTc2C^&O}Lg9opyTmHAoj6%2ujt20(;7c|Fbgv!K@eDY-- z$fiV*e&T~5aQ#J%tepF+GWXzp=&%_h9YtL;s)=`>Cj zSndUtT?PM;%lN$eRrt{jjc@2cGZ$f#QcZ`X@l^urWQqZyd5Gl_xk29mw1E=gsTApu ze8i`LNAta(aa)bRV~Yz3m}Ve_SNM}%@L+27&|W4$HeaMYHqc%hA)^ZBaEY+62UaT zcTMor3PP|Ae5YoJj=rd84^sV+l`-iYs~Dx=24|4V(5az`(wu6Z0xXdor&NId`R?$i zVU!EKs7Q`KDja#~p!ZN(_mGT5-nxUp+I9eQp(n;;9taCYa#WpV#;XdqxaB+F`}E9K z70?^K1Yl#1tz%>iMBviX9bQISuz_2!VEIf@w@L&9m9rp1R#!>D zYev9zHZsVPiKcG65ufI#(pngQ45&|)iT*4V#UVqZ#e&R@EGm~RsOry-WAAWaBy8xq znRV*FBt$Le;-TkA>*Ne#E`5Duo9-Cg%maa0i55Y9TQ3lOsE~f>k>;GICQS}?vM?{l z{UZXU8WANibD*h!e>7?zm7O?F)FomDY#nhm8E6{}WV{LD0T#LPk$6}$U6R3BrA?(N zn5H;&9S&_29Kmx}y7DL}E@3efu{NkXBIYGS@?ci~(kV;IEQ$aYfRVD9#6Sc>`jRQ- z0t&~+?G9fCJxm559E1IHP1>h*L*mJ?DOs5BB!Em5VMuLaH#qj%SomGVs zts9og16h_McatXHUqD8$$5X64->Ft%JetbrdnK1VxA8nFLO%;0d)5L>JS7swg79JU zgx&ggw1HZG1Twz3(5>PNp)&OAmcqmvKM4{L)~dS=(>8_#pUc;*Kqqhma%_1y!rtP! z4G8WGZ8tcl&@*OUQJ|vIE%PoiTRgnOen<>i#{RoyGsY5 zGo|>_#_I!eZpXv1GsonF3q59j^Zqen9{59WG9ZVvfH&0TtLMMk*(5Tb*>WgivpRr`5@h!UeaAs*Tf70~@*Zn&KtFd(|y6&Av#cQ}}{rK?zp_fufiiy3esDssnq1 zF&B-A;S9o8#w!im)hkN(k@X@>NhA@J`Q}5y-Wy^04&wvGFYY>1&fr>ZgKw4p<4=aH zId1z_FMHtpThsGn`_@sIq@uDEl1i;8vPsJzGnsrad}tLA9AR*q(4+7VjPvgBtjlC0 zKgW*kqE4w2(`n^aQ6t zggwE;a2?AbQeAcnrP7MNIpiz#^n4RCW6tzi?@E70mDpb@wFfTeowC{bE*fgC-+73V zhtT(H9yRR|UrbudFx>|G&j}ayQGj%P+0dcYA%-TyD$WQ<^WTirz=^DMz^TCr*(Tk= zsXp34&wJWOu=H9HU2x1I-cTDRtea4EX zy93VQu|R=}25V~AEYm05qLz+TcoWSI`K1b4OAA%05rsOWu(<2n5mZjKCuAp|BWdB^ zOgxxUf08R!9oJ zwXuWAR{l7ijpkR9%@wG#;x9eWlHkqAOj`SmRz(auI_Q+6{*mR{i+J1%cmED&H5 z=)B@;dl__4D|9obJ@DFd$79uIH(#Jh;%|EmCiC{g6L7^5L5#)bM5kjwEjNia{(I;p zWb9S0$Qu4Wjd-{>m?54zlwJLYK?{MDK(N&0-|xwAln!dn@nCC5#klryo+~@qUp#Pv z0xA|G28s+HKhe|MHAQ_xs#!zaVt>J_$kao`bDvC;-{)2rq{Wxs};hlE+VxCA{) zRR*#G$vcCodn8%DpGn#N4QzzLa5A(b24f_vaqy>nMBy!W&@e=*Yccf~LZo3K;`Ja} z;{JdFUwOzK4~|P1_qY0|1&3W8F~n_fBig78kN~;~szMFBK}ByE@OAMg@qK zwjTQR62)#EK60;VOOKYQ3R0rS>=juMxXfm6EyuLxz6Iz zFC>b+aFKSj!{!^ZIIaSg+Y8lPdowg$(xeVl^p_geKO+k`AdxieC#&kIq>v!8VG3kT z&)G6lw58t$Q3_CYyN_tv(Pm9$bB5>vckEGTAnioT$iZUoViv@r6v(OKL|@-vZeGzo3lXMP4EsH`r0KIqm; zGV~@p6>WKbuq=kevu;>Ia35`zyFk;`_*GrQ)1@#RlQM@9#99&$(MhUm0F7f2Sf?R-u;vr7H#I?7Bx`#f6ppbpCf`^#CrNpT%)LO zp_~~^5|%<%8Nnaf#xo$MniuR^G1?m!K@6s7rG6KBCy9>LQtKw1VY;0u2`I)!0A*Wo zS#Od~*jc%6uEVgfW#UA6$B#V$=-AQJCFH`)qB}Lz;GPLbSqn&&QX*79eTkeO4`1$j zx7K?zr_|@bYmGk^uES@CFzC#}D4jDv5W(+@I6s9#SCSs4^GK0KTk>LmSx`$5-UL9# z^INLLz5$5w)vk49rlsH9zYWNU;@i?y^J~6_7Dr^QjSK>_#k?bu^|`J^@QhA1=R9Bo ziRp{l_HJOpb(S96TSEmRDD``?)PoZ?OvL{f>6Er&>XhK+lMV2Qh_1$-SlYNK@$b z`-zN{wZ}}a<*iVz-kjXwLb7s!qhi9cZ3liu!tnHP6=Tf%cfmN7t#hhas%(JzKRI#xIpcOp+I$(v;ffDX$|VPDYNTUaC3&UN_zy zI75LpKpG6Ld*cfgy=NxGUrHL~OFQ@#!EPci@5a^6e(TL++x*S*s$a+>0`EkH0~=dw z{97SEv6zT>tY(1~FEzZ^7l|~o$uS!h_~PM3#z`4sIT+A2Tu&JyJCyjN=|Y~K&e6A) zfRQB>x*LAj8_p|pO}~Rd?<9l0J&#*{9&>ZI6rQWJyk8^b$SF`R6ypbK#1@J_J1u_) z!10>}7ZDx^9xp>)$aZth)-%aXMKYY_A(#2x! z{Yr3`?pPqVr~qqhYE_h}v-hQ>yi0zYT+25Y8$s*P%xitI0;^yIqHw!VUTxFk8J+5|v8d6WZw zD@>=DABAp0nns{kC2JrMBVr|j`9}~g5-aQ>o);hjvk!%&feY7fi8;T$0PU;wU6ikg zAl}iuv%Cv+EhV58h30qxXEe=;`Ys1PKKOc3^}@iN(ZDmcu)nAVXCk4ectP_=xQbV1MA)1f zprnD{6kxhy3$a^rhkP>D`16dplFt=U@Do)xhRxX4hS(*0iH=aHtob!8`rT zeD(Ti81fvVSpf3keP4*IGo{Il|KgQ%`pAUwQE;c)n?`CR2^$5XbI z&_$9^H`ZL>M|tB1s59RFTD!5|*UP`8p2==MIQtiS=;QgY!o>16N(IJGvB`ixd6lwe z`Hg#r246>rVnn5Msqy78Loh@$p++#xL^jKXoO9fg^JIZI=7T&HTFryjBWv$c9p=G? zD;(*+#&L=$SFkd3+i2`BGhCE~Va;loVurCj3ZK)d=goV?UqC6;`mo zk5Sy3?gJJb@sWsP!kunlM3{TAIg0iWM+{Rd2NYza)1omv4#8IbC=)Uv~l2e`L9Pr zr)SyxCK}eFK4mXlm8)eTXarvkm&SfGL*3IvSS~8spTj)Ej;HF(7iQ@$;sCd2CM1Yh zgs*8MBD^QR+gZCAHlx%96mi+P2tdOg#eTeKaHAM_ISJPyf*a9|w692Xc&ffEiXd0e-=8v5(o z8DNfcGxp;!ULucE7mdEZU<)V4PsrX?piRdNe+;YyP8Fe@2ZhA6{t%UrbL9HbH8%$m zLs|=r3J#9gQx#Ff?V7D6sYOX^9o_oc<%Y=+u(^vgwzVJ@&#PH%1C&B1!U@rX=^Dew zOWiH2mXdFDo_I9Tk$~qJgh*(=`GhiKfE0Kr4uqv=utVu$shpp&k3H^TUzeO|5b@bN zjJHErkHDW`);($}+gGTr#)VbiB9|~%OS7!!1cVKjvuX<@B{aDl{Ip%w5IAK#wd~Q= zB3BKlV?hh#rKglmXJ(pl>(SA;PS~RkW5qsbaV($84q}I(Wcn4joQ@`gR-G0nU<90ZcBuw0m3N)E z8Al6=8=TA`I-Qj5+tA*&b@WQ1dOZyoKS_wgxdo`>A@>a3T%9AK$S4Yi6+f{k88=L5 zoBtHlA#>-PjEo(q=LTsg(3?J&mlr}=+(Ax<`jDX+&4b=+qg(59?epd_@HTb**znc2 zXuOWIyja@>xqX&(*;`%vF=+hDauy}y7__@3DWvli)wDZIOIZyS{6pPaxLUZ<9QKiS zDLm88SZrfAlWs?S?|BxR>ogzj0@04upi2Qc2=NXibHr8Tt37C8W`Gsi5XqzzW%sCT znsW-WCFEO^4U6_tmKk`hnpki$dY0IJ#WUkRVqNB+6hjT7WGF*ion64>Do~V1vj;T7 zybmc_1k-@?5lVHDa)hNPr%yobzB+AI;tg7lWIE>s*h_a&xQRp=> zcNMuOZ1;=_(9Z=QIa?O5(GWKr8Hun>JR}b8TOKFpEh=;CShYpt2~kBgl6a&s0_iV2 z?)BXzVlV(BKe7tk)|=LO%mJFAJxa3x8-|F!x=>tq#05$HE{w@pa72mi{veUrYLh5~q&2Q7=# z-*hW-%ZWH&q&_|r#owKzfCrp!pmtVn=frUMAI|gHNE+uN|Iapev^N8SOUGYT}uZ<{~ljh|Z9`l`Pi zU$T*6Q5&RRZH~`9&h3*neheS-tM!2NIHP6Q}M z^7Td?%2UjkQg381p)`t#Ek*izW?fqJ)PJ&xnhwZ^4`vevw=AwS4Veek_3*aOMsg@@ z%aujoFkF+zS4r!3vqe=FWEY@atcARpuLQZhdRz_jvsQBXv`~a&t?Q%Q5S4?x-ZBu8J2MgW0I%*l5?i#KHdo zM^LM1el!dSPGX}cuTbNG{lpdQQ^U`|n+mV%x#{Yk;r*yHk*2tzux17e6j|R;YcoCY z<`VRPiRepYXpUQN;ytBL4UN%5sZvocE9@ z)h(@-O|rBccVuS2Wv-9e-0r8n3IXf;1$6R1_#lN5wd;YrA`F*5JJDd|YP_>Tn0Bv+ zSPZ+|Y9y<6XmEZ^qvfg-ky>AGCQMIPN0ZO_Lm>txz)Y`hhF_G6SQKixpP zHlM?+da?5P2v<@8J$6cqj|sV_KDa{pB!Ulcv#~t#*%=`X_SAWapiu>-o{(uU1Hc5N zo*u74l9AU=Rk9lAr>hyW=5tg&+ITTSO0+cM4Er1rrd1xN-+S$*w$bC1{LZ`9Dz+L; zEP0e)8j)!{g;}|O926N|=J;jC#ukG4{z`j{Vy|VVy-&(Xwlw4PcJAo@Qa7*H&4ZJ5 zQcg$Odb9bQ-mj&NPN&_ZWt+YVly%;7vT2LkaF02>B{|hJ@$Juf-uKqk_ES!ldsn;# zuZ-g}hNm5P@l5x*Wxm&!dMilBoScBs*xp0?-+~L%bW1iC4am+WX^b&wMBNJ?#B}Fd z$EXY0OO>jSct&IkG=o=k2@_jY_ma7fUPN(Q=2-W| zm571{nHgf|LxZ8P5ZPbSXz1u4cJ4cH{b7VZ4Bt`+|Ck*ZJVrVFY51|_(DHbF@*14{ z_V^=dTeLHSRb(E4$or&tDG^t`)5(SFg}13C(*w$iFE0L85TcRWJtx?wXBl7h${qAg zIV3;Tc?W&qx4Q}r4>Qd4>2Q;2_+XX=-#gj~e7KeZ>`-#7J@f@<1SYrW%PX1>++5%) zya;+ZkSb|i=aVgb<0$BPLYs6X*4>)~^f2Hxau8Sc6u|>=#_e6Uu!5IwcTDN-1s#pi zmPN0`Z)HYu@3ZB%a~HZ()8o+D$Y$zYcSS1r;<;!Jc4Is;KN!pO+jRo2r2UZ7|*=nt){1a#aK-agab3nbKo zmg?pg?T)M58IRY6#Q^z;nx0Nraoz*J4;X;x|)*=dbiYZ0xxWP?*&>X?=;Sd{en*mOBctg)NHPC6Ni zCX0^%mz~E~2gsG4CvDSJYOp8J8}8Dv{LOipEyxq zBEQ;f?_AW&@QLH#-M%yvZ=%$4!nxTUzY61GRlqJM8>{dT61KGA$ncxu1-;5Qboz)r z7&qXePNP z((sLe*n{vov*@U{U7JM^x8!&fbXJihS4>?M3M&>!qyc6G$oX@}QyI&%;TrA3EctsS z2v2>P%}8$%U#TBz3tuk>0{QNTrW^Vm={vRhoXk6K=`@xp*%#~Y{E-qD#KSdvA+^bo z!m1tcHj?~)#5v~Jb`~}t(>mh|SMR-e6Ohb+C~f=wU%3N6RtX0_=H-pQG>R{15|SJd z=ywz>>P(43{TJ-bKRQXFD8i~CmUtpNM~$Cr#>)60`;D( za0Z@8!j*E?hy{LU*ed>>ts5&!t36n@{`{v4LZI*uL3a6q^fKPh{mG}bGh6);4A{$* zIMF)VaDYOp{0K#UgBEBf3$wMGR5t_5^sg)uELJAku;f= z&l*H59Du+C(%Np9H~OgJGkFl9ssFw6Sf0<|@(j~j_bbn1g3c9#7nf8O_w&5YXHMDa z$jAoDz)@EAbOHCe_yfF3eR4hB2WnZg!H=Ieb6(RNHOXmN@31Scn{nt({9GD6elHo( zGff1*e4l83B;C{Ze)WMqHC|~mqa!^MJsp+76zuw_;bj;s8LA<#@!_|x;gp-E6on>b%AJPTwP~;L;te07GjNF_LR#*%x-wthCQF?N`QeRd z_fQ=RQO-3rgFgUDGfqI5k~9>_47s*|cDvgfC1>+YH6F~cG5vKE8yVpnnRiEgI=E+? z`D(}-nE?}N&>*{UhY)wPK6TTghmX3mYW|A=?8(ZGC6EFtyTVR}eyGlu7z%HC>AR4n zNXtU%VNa9XYgfKOl$}8zk<{vOwU#ey;H|Qq&+`)M7`qTg7XDnq_50!5{_^VyV-c~3 zf!?&MJZ6h$)}ulsDhcZOPrZ=6pD~b zSfcZ>R0h6RvD>22;BzQF)hnO*-Om(-!??xtsydhFJG+V_o^M6&op)rqRMIccf=E{M ze7_$K-0vUzwK8tOlFc%gbxu?p`OEZX%Qs>4lSrG3TuoS%+B{+tNl*!XH-xBK_0b!m znp~a)`5O^&Z{jQoW=3{G&kqW*~ zmrE+~x3+rU8$C7fzvS3dAChFzsNSQS%I!HYlz$?U1@+CkKY z5b5y!EGnNcu4Zd7)f&tCVgm~qnt1*^*c*L zK@dp~t(s^zQ#@Wi#2Nge)bgu(;M+s9-S^0NSe^G*r-#!?ppS|`hs^$>*E5fRxD{=; z?P%>vC>cTP#KYK@PPR+3nibQc)k`#0xhV6p^zsZ~?jkS;FTSb`EgD=l!2@Ns;78eJ zSN*(SZh?+8;d57Z%1rj}uhZ&`lEb{OrCI50pI$r;VUk&{(2C-c9-BC* z(awe<=cb~F+y#KD3Nl5!pKP^1=!78Zm$a94;fsD!1{mno+AORhqX_=4W97T9v(Xbi zvLUe7FEKcyRXP5?R9l?T9#Z^fF6!$SQ1#9`Z%5Nf%P^#cPvbgcgNH20F|>Yx!HwcR zjHl04Dgw@jPyjDOmmZ0dqD!Eyk$lkxvoB&p*|ln8yYzP*l4RF0M@yHXb7q=(k8Y_O zstI31FecxI*C4`)N*{b%%28hKEmCRh?RhrVaSHu)QeHkhy0lN`lmgi;DF6HDXE%Ee zanmLzqtsZCV^Zem3A$!j=)fc5mi56Uosfr*-GPw62zICkty<$N8-zZ+fQlb!Tk3qqfoWWtSW_ufJKxw-9UoHh7nX%e(XbXv{A2FjT?CO>uZX4nPyI94{6x-ZX^vQvk9}Drf;^mYlX9(xAcMh6$zzCp8P> z)vN-N83i`{Cf$S(MXo^!!C3>2r^*#nnFV!bU#a@V-Uy@4pZ)9jRBhLBUTSz)Mg1{z z?DR}O&0&#mNnmB8yGq@I?CODwHiR_O<7M&;+k5}0?|U;Cat;SkmpgxFDlfo@h4atEU4 zCitG)i;>62`o~WdHD45dhEAS{-*lsscm~^a^Jz)=ud+LWpKQAfI0nhQi?Z;|D4(^4 zKNBqsgIF~%M#`-*G@ibDWslIxU(u>Dj)o6ma|WP%6=EbkKJM^V&CjCN!lhSM!Rby! zLg}Q-AkXi&3AIg>cbP+*z#oWSEGen>=Y!+o7{k|=j_LtQWkI`_wMClVv|a|+NHskj z!m(-%{?xlo;TC$zvD>}b)7MUWiTS3b&m3En9Kk^wE4!zvDSu=dO`ilLI6bnE=l+hP zTb=z?7tSzc=EZGMs(|~tHrdnvjV%ctJiL1(KLx ztJwhGA&-1SBIU1q6Cw5Z@a6lwRKx;1@iDQ$du&Eii)O>kl}XGQ<4F&>2%AiEcE>9> zb2LRqkyomPxD83Y2%duHM^utDzRft9!G7=y@-e{ICWh_H;uasJ2ZJY_N#NGIxe1f* zaUGMzogR}ss7NZDFgm{5YXZ0{26r0KWB!7=0zYzub!6Bh2^3-rev5hbw~pAoRWZyX zELF#QA+i;UhMa-IGwMY5vWL>HB+DGoUm%o9j|aWE44`(3wx}Bj5eywtdB&f}o@RO# z$OFGeg)?lQQ!FK?3?Wdv)U9xPS<48`1z%uiEPr_!B#x56LvEU!ssHszVzvB6sf6(N zhcQiythrzb9&I7leEN%d4;o;{Sp0Gr4?R;R;EDXG=S=r$hyw5!HhK(gvD_- z*RDZYf=&w_t|eWlhEWz0Nz;!LrK~pet{a5ZbkxgB>cu{evm)*-2bo`tX_-+)M@uSN zI&ZLO1M@9Xi8pOG^{Ludk{Uz>nU?Q%EXDUUBdy{!i1~*)4-8=n7JgrlN+lwa1gy?T z+3aEd3FoY~b4N)Ug|xgn2Htkr`V6~qBY%4h>%&B2bbag3t;(Mm-1(r1CE+(2tM}>j z0u$!)13AD^w{j}t4fM%*$c3cd=_VNA@;H-8K{HnU!lE-iZo7!vw$HhQA;Lox%cyS_ zg_r>zMAQiy8f=%ufJyVjLFu4F?)~i1nN%*hly%i!n4zI1Padrq92*1A;?omS%?r(o zP=9a69IW8&FuTuGuzQ8w0$xaK!{| z6KjQ#+a1(xAMWkI2}3y4>dh|GnH|sZW92f*i$!_k*4}|vd>+&uNY5l8G+Ks(i8Qzj zQzHT*A|JBEnzp#(dj-kV;4m94k2YBmg*j3ij7<4=?5|T|Gmbh|c|NNd&=Wa5%>!81 zX!&D^zvHnZC>3EmNp#ibFA1?3{DVSg$pq!Ugw<+p$1+q-X`)ngHY@vCwo9Y6J8=8>bZ%HiT?aZ z*ETAK2`ha~6(?!Sxp{gD4lH_ao_!(vCQbvKbrbyX<{VNPq|Lu!A*qC*cz`hrml`v2~Wh-!!{AE>;8Hu<*z= z?D%k@ON#TML}~}*-kJf4Btqb+@SZP~mg*HlB$_G23H_NgG|FY4RpzF&1>wtI#6f)O zYEhh;&<*vTE}Ih_5dj=&FJBK_9S`dO3Ou#o8sCngAAhb}DKzRjo!X*WGp&@ei!VPj zLZ=T&wD9>S!CtBbU}#qC(J+~9;NLHkA;rghhreLOHB^~v*ll7~y6pVeTGM;e5;lru zzWn`o1n0Fs!m=ve(0_RzH^%dhQulj?J~K>pKcD&u9sgwz!}+3@?2eJ#dcJ2?5H>Wp(w;!qfIVOh=}1 z;Bt%^|HjY0@%HPJ@FNOdU(9|^tA1KYZy}PHoXV8{xB&+6^8vDm9hnx5iw1( zZmpmDYqoxA^#kGKea{^KrqlZ`$X$o)W2J*PCb>4RHpNZR-&2q22C^#Gem~wStiSow z++SQ<$ojYxq=~J~b>COHM7ak_KUw07xr$0@f}0)&pC9nL69t>@5xozI8SEd1p}4ZI zDGv4n)wes-ueaO=mj+P|GnxDL7rR#|8I%uI65IbU$`Zde`1~@Sp<;X4ayLC{ z)@|rUY4i@`--f8t`asL4**_l#yy&t6}Tj~DhG0R}po_;_1_J_Bz>WEtOCquVa} zy+L-enddK^pk&!v=Ai&C8%fD(4X;X z%h|5Np&E$}y^TgsTA}e{$6lznIY6AhCcbCF;_Sn`f$B1)!{;bnJEJx}%uh8gA>tzC zf=X+VBVvt1uypL`oM(F6a3UYAVxvi8V{e|uOi=O@R?%1fn}@$Jxej$iq@6*0`j_*0DM6BT-V%Ys;S4bBeF zeJld`>rs^cpA9;cBR5JMT_387J(q&?g~ZNkLUURPG*Y9eLi>i7>&+uS|DHU2f6l|X zCG~`BxA|;%e|mR(d;I(<)vvd^-tWcF9Dc1xDo|EP-ilL5&n(5T^o{x8ZIIOPZTI)Z q#H+%~-zucPkpHU+>ERO!5A5rS>C4bWZsI@1h_aGO5)EP|q5lh(U7kMx literal 0 HcmV?d00001 diff --git a/src/assets/img/Screw.png b/src/assets/img/Screw.png new file mode 100644 index 0000000000000000000000000000000000000000..08d7f16f43c2bdeaf7846f17a6c5ca0d89faf968 GIT binary patch literal 6047 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 literal 0 HcmV?d00001 diff --git a/src/components/CommandItem.tsx b/src/components/CommandItem.tsx index 4ac4921..daeee45 100644 --- a/src/components/CommandItem.tsx +++ b/src/components/CommandItem.tsx @@ -3,15 +3,15 @@ import { PropsWithChildren } from "react"; type CommandItemProps = PropsWithChildren<{ isSelected?: boolean, + comment?:boolean, isContextSelected?: boolean, - error?: boolean, onClick: (x: number, y: number)=>void, onContextMenu?: (x: number, y: number)=>void }>; -export const CommandItem: React.FC = ({isSelected, isContextSelected,error, children, onClick, onContextMenu}) => { +export const CommandItem: React.FC = ({isSelected, isContextSelected, comment,children, onClick, onContextMenu}) => { return
  • { onClick(e.clientX, e.clientY); }} diff --git a/src/core/Command.ts b/src/core/Command.ts index 24f0911..146b5ee 100644 --- a/src/core/Command.ts +++ b/src/core/Command.ts @@ -322,4 +322,53 @@ export class CommandUnequip implements Command { const slotString = this.noSlot ? "" : ` In Slot ${this.slot+1}` return `Unequip ${this.item}${slotString}`; } -} \ No newline at end of file +} + +export class CommandSetTag implements Command { + private name: string; + constructor(name: string){ + this.name = name; + } + public execute(inv: Inventory): void { + inv.save(); + inv.setTag(this.name); + } + public getDisplayString(): string { + return `Save As ${this.name}` + } +} + +export class CommandApplyTag implements Command { + private name: string; + constructor(name: string){ + this.name = name; + } + public execute(inv: Inventory): void { + inv.applyTag(this.name); + } + public getDisplayString(): string { + return `Use ${this.name}` + } +} + +export class CommandCloseGame implements Command { + public execute(inv: Inventory): void { + inv.closeGame(); + } + public getDisplayString(): string { + return `Close Game`; + } +} + +export class CommandComment implements Command { + private name: string; + constructor(name: string){ + this.name = name; + } + public execute(inv: Inventory): void { + + } + public getDisplayString(): string { + return `# ${this.name}`; + } +} diff --git a/src/core/Inventory.ts b/src/core/Inventory.ts index 7d4a004..33c5803 100644 --- a/src/core/Inventory.ts +++ b/src/core/Inventory.ts @@ -6,10 +6,12 @@ import { Slots } from "./Slots"; export class Inventory { private slots: Slots = new Slots([]); private savedSlots: Slots = new Slots([]); + private namedSlots: {[name: string]: Slots} = {}; private numBroken = 0; private isInitialSort = false; private isAltered = true; private inaccurate = false; + private turnedInOrbs = 0; public deepClone(): Inventory { const other = new Inventory(); other.slots = this.slots.deepClone(); @@ -18,6 +20,11 @@ export class Inventory { other.isInitialSort = this.isInitialSort; other.isAltered = this.isAltered; other.inaccurate = this.inaccurate; + other.turnedInOrbs = this.turnedInOrbs; + other.namedSlots = {}; + for(const name in this.namedSlots){ + other.namedSlots[name] = this.namedSlots[name].deepClone(); + } return other; } @@ -37,6 +44,10 @@ export class Inventory { return this.inaccurate; } + public getTurnedInOrbs(): number { + return this.turnedInOrbs; + } + public init(stacks: ItemStack[]) { this.slots = new Slots([]); stacks.forEach(s=>{ @@ -48,10 +59,30 @@ export class Inventory { this.inaccurate = false; } + public closeGame() { + this.numBroken = 0; + this.isInitialSort = false; + this.isAltered = true; + this.inaccurate = false; + this.slots = new Slots([]); + } + public addBrokenSlots(num: number) { this.numBroken+=num; } + public setTag(name: string){ + this.namedSlots[name] = this.savedSlots.deepClone(); + } + + public applyTag(name: string){ + if(name in this.namedSlots){ + this.savedSlots = this.namedSlots[name].deepClone(); + }else{ + this.savedSlots = new Slots([]); + } + } + public save() { if(this.isAltered){ this.savedSlots = this.slots.deepClone(); @@ -150,6 +181,9 @@ export class Inventory { public remove(item: Item, count: number, slot: number) { this.slots.remove(item, count, slot); + if(item===Item.SpiritOrb){ + this.turnedInOrbs+=count; + } this.isAltered=true; } diff --git a/src/core/Item.ts b/src/core/Item.ts index 83ecfaf..13a970f 100644 --- a/src/core/Item.ts +++ b/src/core/Item.ts @@ -3,8 +3,8 @@ import ImageGlider from "assets/img/Glider.png"; import ImageSpiritOrb from "assets/img/SpiritOrb.png"; import ImageLotus from "assets/img/Lotus.png"; import ImageSilentPrincess from "assets/img/SilentPrincess.png"; -import ImageHoney from "assets/img/Lotus.png"; -import ImageAcorn from "assets/img/SilentPrincess.png"; +import ImageHoney from "assets/img/Honey.png"; +import ImageAcorn from "assets/img/Acorn.png"; import ImageFaroshScale from "assets/img/FaroshScale.png"; import ImageFaroshClaw from "assets/img/FaroshClaw.png"; import ImageFaroshHorn from "assets/img/FaroshHorn.png"; @@ -27,6 +27,11 @@ import ImageShockArrow from "assets/img/ShockArrow.png"; import ImageBombArrow from "assets/img/BombArrow.png"; import ImageAncientArrow from "assets/img/AncientArrow.png"; import ImageShield from "assets/img/PotLid.png"; +import ImageRushroom from "assets/img/Rushroom.png"; +import ImageScrew from "assets/img/Screw.png"; +import ImageHyruleBass from "assets/img/HyruleBass.png"; +import ImageLizalfosHorn from "assets/img/LizalfosHorn.png"; +import ImageLizalfosTalon from "assets/img/LizalfosTalon.png"; export enum ItemType { Weapon = 0, @@ -76,6 +81,12 @@ export enum Item { Core = "Core", Wood = "Wood", + Rushroom = "Rushroom", + Screw = "Screw", + HyruleBass = "HyruleBass", + LizalfosHorn = "LizalfosHorn", + LizalfosTalon = "LizalfosTalon", + SpeedFood = "SpeedFood", Weapon = "Weapon", Bow = "Bow", @@ -122,6 +133,9 @@ const register = (id: number, item: Item, type: ItemType, image: string, options sortOrder, ...(options||{}) }; + if(id in IdToData){ + console.error("Multiple items registered to the same id: "+id+", ("+item+")"); + } IdToData[id] = data; ItemToData[item] = data; } @@ -137,6 +151,7 @@ register(0x01, Item.Glider, ItemType.Key, ImageGlider, { register(0x02, Item.SpiritOrb, ItemType.Key, ImageSpiritOrb); register(0x11, Item.Lotus, ItemType.Material, ImageLotus); +register(0x20, Item.Rushroom, ItemType.Material, ImageRushroom); register(0x12, Item.SilentPrincess, ItemType.Material, ImageSilentPrincess); register(0x13, Item.Honey, ItemType.Material, ImageHoney); register(0x14, Item.Acorn, ItemType.Material, ImageAcorn); @@ -144,10 +159,14 @@ register(0x15, Item.FaroshScale, ItemType.Material, ImageFaroshScale); register(0x16, Item.FaroshClaw, ItemType.Material, ImageFaroshClaw); register(0x17, Item.FaroshHorn, ItemType.Material, ImageFaroshHorn); register(0x18, Item.HeartyBass, ItemType.Material, ImageHeartyBass); +register(0x21, Item.HyruleBass, ItemType.Material, ImageHyruleBass); register(0x19, Item.Beetle, ItemType.Material, ImageBeetle); register(0x1a, Item.Opal, ItemType.Material, ImageOpal); register(0x10, Item.Diamond, ItemType.Material, ImageDiamond); +register(0x23, Item.LizalfosHorn, ItemType.Material, ImageLizalfosHorn); +register(0x24, Item.LizalfosTalon, ItemType.Material, ImageLizalfosTalon); register(0x1b, Item.Tail, ItemType.Material, ImageTail); +register(0x22, Item.Screw, ItemType.Material, ImageScrew); register(0x1c, Item.Spring, ItemType.Material, ImageSpring); register(0x1d, Item.Shaft, ItemType.Material, ImageShaft); register(0x1e, Item.Core, ItemType.Material, ImageCore); @@ -170,7 +189,7 @@ register(0x72, Item.IceArrow, ItemType.Arrow, ImageIceArrow); register(0x73, Item.ShockArrow, ItemType.Arrow, ImageShockArrow); register(0x74, Item.BombArrow, ItemType.Arrow, ImageBombArrow); register(0x75, Item.AncientArrow, ItemType.Arrow, ImageAncientArrow); -register(0x60, Item.Shield, ItemType.Shield, ImageShield, { +register(0x80, Item.Shield, ItemType.Shield, ImageShield, { stackable: false }); diff --git a/src/core/Parser.ts b/src/core/Parser.ts index d74f4a0..3d570eb 100644 --- a/src/core/Parser.ts +++ b/src/core/Parser.ts @@ -1,7 +1,10 @@ -import { Command, CommandAddMaterial, CommandBreakSlots, CommandEquip, CommandEquipArrow, CommandInitialize, CommandNothing, CommandReload, CommandRemoveMaterial, CommandRemoveUnstackableMaterial, CommandSave, CommandSortKey, CommandSortMaterial, CommandUnequip } from "./Command"; +import { Command, CommandAddMaterial, CommandApplyTag, CommandBreakSlots, CommandCloseGame, CommandComment, CommandEquip, CommandEquipArrow, CommandInitialize, CommandNothing, CommandReload, CommandRemoveMaterial, CommandRemoveUnstackableMaterial, CommandSave, CommandSetTag, CommandSortKey, CommandSortMaterial, CommandUnequip } from "./Command"; import { Item, ItemStack } from "./Item"; export const parseCommand = (cmdString: string): Command | undefined => { + if(cmdString.startsWith("# ")){ + return new CommandComment(cmdString.substring(2)); + } const tokens = cmdString.split(" ").filter(i=>i); if(tokens.length===0){ return new CommandNothing(); @@ -39,6 +42,9 @@ export const parseCommand = (cmdString: string): Command | undefined => { if(tokens.length===2 && tokens[0] === "Sort" && tokens[1] === "Material"){ return new CommandSortMaterial(); } + if(tokens.length===2 && tokens[0] === "Close" && tokens[1] === "Game"){ + return new CommandCloseGame(); + } // break if (tokens.length > 2 && tokens[0] === "Break" && tokens[2]=== "Slots" ){ const slots = parseInt(tokens[1]); @@ -138,6 +144,14 @@ export const parseCommand = (cmdString: string): Command | undefined => { } return undefined; } - + // Multi Save + if (tokens.length === 3 && tokens[0] === "Save" && tokens[1] === "As"){ + const name = tokens[2]; + return new CommandSetTag(name); + } + if (tokens.length === 2 && tokens[0] === "Use"){ + const name = tokens[1]; + return new CommandApplyTag(name); + } return undefined; }; diff --git a/src/core/Slots.ts b/src/core/Slots.ts index b5f52fb..87acff9 100644 --- a/src/core/Slots.ts +++ b/src/core/Slots.ts @@ -55,13 +55,20 @@ export class Slots { } public remove(item: Item, count: number, slot: number) { let s = 0; - for(let i = 0; i 0;i++){ if(this.internalSlots[i].item === item){ if(s = ({command,editCommand,displayIndex, slots, savedSlots, numBroken, overlaySave})=>{ +export const DisplayPane: React.FC = ({command,orbs,editCommand,displayIndex, slots, savedSlots, numBroken, overlaySave})=>{ const [commandString, setCommandString] = useState(""); const [hasError, setHasError] = useState(false); const listProps = stacksToItemListProps(slots, numBroken, false); @@ -78,7 +79,9 @@ export const DisplayPane: React.FC = ({command,editCommand,dis setHasError(true); } }}> - + + Orbs: {orbs} +
  • {overlaySave ?
    = ({command,editCommand,dis (()=>{ const doubleSlots: JSX.Element[] = []; for(let i=0;i=slots.length-numBroken, isSave:false}} />); } if(savedSlots.length>slots.length){ for(let i=slots.length;i); } }else if(slots.length > savedSlots.length){ for(let i=savedSlots.length;i=slots.length-numBroken, isSave:false}} />); } @@ -128,7 +131,7 @@ export const DisplayPane: React.FC = ({command,editCommand,dis height: "calc( ( 99vh - 60px ) / 2)", overflowY: "auto" } }> -
    Inventory of (Hard) Save
    +
    Inventory of Save