From 6155a165768cb11b999247efa4379ea8c1637aef Mon Sep 17 00:00:00 2001 From: ozonexo3 Date: Thu, 11 Jul 2019 08:36:01 +0200 Subject: [PATCH] WIP9 v0.605 --- Assets/GFX/Terrain/ScmapTerrain.asset | Bin 551184 -> 144656 bytes Assets/GFX/UI/Lines/LineRed.mat | 77 ++++ Assets/GFX/UI/Lines/LineRed.mat.meta | 9 + Assets/MapEditor.unity | 338 +++++++++++++++--- Assets/Prefabs/Managers/Units.prefab | 48 +-- Assets/Scripts/Common/EditorVersion.cs | 2 +- .../GFX/GraphicLines/RenderUnitRanges.cs | 101 ++++++ .../GFX/GraphicLines/RenderUnitRanges.cs.meta | 11 + .../GetGamedataFile/GetGamedataFile_Unit.cs | 90 +++++ .../Ozone SCMAP Code/Lua/ScenarioLua.cs | 2 +- .../Scripts/Ozone SCMAP Code/ScmapEditor.cs | 5 + Assets/Scripts/Selection/SelectionManager.cs | 22 ++ .../UI/Tools/Decals/DecalsInfo_Selection.cs | 12 + .../UI/Tools/Markers/NewMarkersInfo.cs | 12 + Assets/Scripts/UI/Tools/Props/PropsInfo.cs | 2 + .../UI/Tools/Props/PropsInfo_Selection.cs | 10 + Assets/Scripts/UI/Tools/Units/UnitsInfo.cs | 6 +- .../Scripts/UI/Tools/Units/UnitsInfo_Units.cs | 191 ++++++---- 18 files changed, 801 insertions(+), 137 deletions(-) create mode 100644 Assets/GFX/UI/Lines/LineRed.mat create mode 100644 Assets/GFX/UI/Lines/LineRed.mat.meta create mode 100644 Assets/Scripts/GFX/GraphicLines/RenderUnitRanges.cs create mode 100644 Assets/Scripts/GFX/GraphicLines/RenderUnitRanges.cs.meta diff --git a/Assets/GFX/Terrain/ScmapTerrain.asset b/Assets/GFX/Terrain/ScmapTerrain.asset index 96fc45002521647d1adf0b200d6823b8fd529a92..c7cc04290f0ba2325749a9bfdca073756abebbed 100644 GIT binary patch delta 1963 zcmbPmNpZp}4t53x2^|I|(~a!k#F=E6HvboY#lghHxSf%UWk2I~0WOveqvU7^jE2By z2#kinXb6mk07eM7F*1c>sV=8Gd|@(YTs8gU3zpr4tI-BV8Ae711`uXoXs~Ail4sAH Ku?1pB5Dft34)%ut literal 551184 zcmeI5dz55Vb%$@iriY4xj5Eq;j1Kb9C}v9L0SE)5WQKhLfL5?K;MG$F3Um5?ZETt>_TV_3;bDvM0AOyV+s_>XZ(Bxm1yPgAe% z(^co5y7!#=Zm+J#-RH6QxA*>4RX?htXx*!#)st(ZC^{vI)@@PO(b;F7b?zBwopJ6p zXGK4G=9y=PhSa(H#PG~B-+9H?-}9%tPg?iZEyr&j{c-Ite^Z_Pw~;84A#%JfifU@g zGx42Td>LO1sSyv3M72L0ifW_kjEvWFWPsR9>iUAws3zCL@i}#o9z*I(U9J5RbzkPI zE!B*gx=aqSpP|-&rMkOXeJ6X=5~I45^z~jzzuEsaZT6w)A{F0fRnWrsM6uUom*i0X4V|U<$hX*q;n0>w z`$)|1g=!69Ga>evl%78l{i2$Co%$BPpVML=R--Rg=dM!Uvi?b8uc?dl5I)~gYhSDG zi(Tre**?&P#qzi|y(nJ#>A4PTd##i_~|ceJ+AJH{l)6K+1|`&z1Y8`F4ChlzZ=x~#{I?qeRWRw$okUf&FhcJO0^%U3t{_G z_1!#wRrDV!e{xdl=OS*^*t1=PmJ;H#C~FGf7ufDiPZk` zHhZ%FNy;w!|7@GRdH+`|Vb}Zr+!A)Zzvx`E|6_6gtyB98zgLO9rY_QBC|cFjf1A|# z=K39P>c2C@t|!O0$D`j?d?i0}{?%>vWdDun{%4B4rY_Q>b$_K(%kF=+*!AT2cJuz{ zwAmB=d2PDCXnphk&Gq?Ov2Rfq>CsxBKd;U=?mw)m<|1`M;{Ro3Q;%~^cInU8sQ!Md z8YB6CeVct%lRljr+iU7FITW8JeR_jB-Q3?}v3~4J*Z+mso=%Q$H?P0BZGQ9m#V|8Q#Gx`h4i)V^&A`=?X; z_73(dm4BaCc6sbMKen$|m&qY~?^pIm)A<*u)6M;p*#9E6U$}(*%c=cMOW41X+AnIe zk456&*OXoSlgH9d`)mJpEMeFFU9yB-`*-OQcJ1HJHhYrazfS#sb8J@^=^^=*$CrOe z?Qc=%)y>62+y67QU)E+%p8xzPwX5eEE%OumD)q!q>Tg#EyF5NWPuWG^c8k5HF4Cj* z@%eIfe!2d>LhO2Se0wy0{E+^Z{#ChZ$xp&ZKYqybpyvD~cCFuUUBa&Q` zJ5&4B>U=Zb#9m45l@9iKWqY^!7XJI%?8)=jm#FhnANyl_Oa9q z_3uvCug3Ota(uga{cGChH?J?xb33j7xpe)5v0YuHhxjM`qy3*$=bPs@udnK`#hyIA zeO;|D^?$wCYw99BTI+vGonNm04~bn*j&F}fPpY-0{!dr;r`zmfaew@K8sAK8U#~8c zL+h*VkHhM8bNways{7;Dmayyom~FEs{q=pdzvO=|wyTTu(2qa=o7(5q`R4eN`J*Gr z{39*)VWn@P&l9Qrh8DZTC$C>mN$v7lq;Y*ce_d)n+G1~=e`A|H(bt!y^WV{CPxAjN zWtaTlB=(xRNRQV1->l9LZP8ZowfXhcJH`I2IkuP8+LC|KpLey{ljk>=s4>!?x3t-t zpMTV1yIdxR#NYV({N3twbNwgz`LuFM@_TD+Pv**{e*Lj4jsG?|R})Kew8nqCIz6-{ zHOlRl_}>$sYqmGOKD(pM-u(LP&e&dCTtMotF~0Y<*yZ)rl=A(C)c^O1{n_b@@!gu* z-!Jwrsf+Yzjqd~M{BrSqQ0#hge0wxnpFV$AEfW2Dn?0$o52pKnNbEIrkshu4e^{Mg zZvO?b>&fx$(fIK}>Pzzb8*TPv|KCdY|A^RY>LNW__y4Fmzuf+JiCs^QZ#VD%u{L}1 z{Ns<*{^H-qm$3g?YX3wB`~51much{59qgk2f0x?t?qHYKum7a%(qHmAzF9w$$8W8# z_by@A`g-3IcCD|UY_VTnot>>rPM=?yuSAz!Hb1-hf&-KDGqV>Qov%*MP0mceF*>yO z!pW)X#pkOVmsREusvGgR%Vw+BRQ6pwJvU#O-d}xVwEOT>WnPxqSDCA-v90&hjV`U+ zSe>0qmS{XB`)r*$e6VtP_2~SO+3K9Wf2eYJS9NY?>d3tEMxETImfzWQ?)>U}Wpb)v z>$Vfh@BIhWl8GU{7wwxlGJQaH*dtI*t$M;#i4M%B zC#GZ(MJydWtL9Z_cg`HBMn~qVmuZ)FR_D~_lFj`Gw<`>4+vLvf%AvzkG5TGV=>s!| zcFoLJ1p8ccRpo}s>1*FKTbY}?d@`QUaAx+lhZpZN8?;2b7WjvHt8zr z#N`Jk_g_CX6%`4Y$YA+p#gd7#baowwCw`mq5L=LteRC9DBy=R0sqh;3)wVAY64PG6Dqw0^t%s0m98KkwL&r00l5JVgv-jC4d5in_D7-fSCXa zU}nS!2!u-j1qe5{LH(5*Y-{ z1W*7oBSt_VTmmRSxVa@V2$%_=0A@yvfIzqeP=IiAOJoo*6F>pXj2Hoda0#FQ;pUde zAYdkd0+<;w0s`R@Kmo$dEs;UMOaKKiGhze;!XXX3<72XD1ey}BOnki0TdwI+!7fC%mh#XGb2VoAY1|{ zK)AUjG6Dqw0^t%s0m98KkwL&r00l5JVgv-jC4d5i zn_D7-fSCXaU}nS!2!u-j1qe5{Lxg6JRs0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafK%jd9 z_0pyZn=d{)xO?WzfIv|QER=pYe*2is*DWWY0Y%9sen6mG0`=0vBazin8n2hS-IehW zfIu+_)Jr=?tpp(2g94y{5b%}&3Q!Cs#tR7KLjVQHhdaAMpcn*DfMVnUFCdT)0Tdt~ z?(7PIVh}(9ijfDrfIvP3P=I{6vnvFOK>!6PMjr420{IX?0rKI_t`H~&0TiGZdB6(@ z-y@B#w)5I_O);m)oQCfb0H816G;|#zCO}1p3kcXh8q-%8n3N34wm~ zKN_%-Y%m4_{Uy-P{ud44_X7RRFS|itIRgFef1U>{mkn$X=r4gh`X3GGZ;sgw0!tCd ztN+n}r82^K2=tFYp8byo^e@ls1c6Qj^6q~$pi@>j2Z8<&C_?|E0sYA}yFj3ofb_rp z`+rCW+aG&)C$Yl+zesESaNlnNMe2W15H!H=dcu3Z2o$aV(Ez{d2XFl*P{jU61N^Qj zy!VGdQTrba@TZ3G)L#P9|5?8OpY&~(2R{$+x3=)S_ymgH|Dq*mK=JDc5B((IL;s5g zl=$5szZ--=<^+7{f1U^U`S^m@#U|iW|DyrLt|h$lkAQFe&uanyY7CEyOTfqeM+1sm zPk81R0blzc4e+bZ@V1x)eC~fVpqMpjqSapRreh|o}|LfL&mym@YXn-FzhnK}6kVW5R^|yIh_<{x$ zr?&8<_yn@(xvctMXl3CK8c_VY!^2__$fDn}{!E`Nd_n_?QD1mbYyw&ITGst9#Io=U z4JdZ);a&a&vgk7x{f`FZUmJK3K7k_lKN=8z{Sjfl1d87OXh6R8!R}!b@S*?FfUs+j z=<*}rOaG$*`PB$Jhf6^E-}du=T>bp76ZI_gir))#BFni!B#=cv^|SvaM_Krc1`J}g z6LTwpEPAQm{f`E;W|8|4=#_x||K8=%{}OFB+GYR0OTCh39t83yP%qs+*8Bh7%gns` zU)W`#0T-@D1M;s!Jjjbcy|mWq9XRsr|7UaadC_NI2;@zmUb1-)p1k{C=-ECG zm_Y#)MZN}=fQOx2A}|R!5|apMFEP~|GjGf3NXm^Pwd?*KvDa@R}DY`=z>8e(5(U#x&M39 z02E-5>z~-WQ-GrPe=iz<0?-A6OrRSD@S*>^*8mh?kn5k=SFQlQ^nbS+fCA73gG^wh z3gA=!cc%d;z#!K@v9C-4eCz*iGynz2y9?^-FH=MQvgPZR%{L|a(UP%k~Y z%GLws=S#p=0Uk3vM!SygF0U0}(}eANAldT0-BJNc>VXMYsHu7~YrqX2YZ-ULtpyB@ZijRNFd|Ll(f*!8g8Y!rYF z%$ooTVAsQTvr&M&>!1Bm0J|Qxn~eg{fq4@^0qlC%ZZ-;#cm1tVauC;%OpHvwA(;Io5mG++~-9h`Rq828^X8ur&0Ek8Yc!z!12 zj*Y%yX!#U9G;Z_h*EZdo#oU`Fj*TuK-^Sr%PAl+-D)B&@W}EV^1bMm6MWTxO%tW@H!mMv^ysQ@Ot@scVA20l0SkfmhmAhk_7?NE zs_NQnP=F}%RRg5|4ehVYGpl^nH|iGx_5@a<0Dfw~%K9G#u&*Ij@R`8M6u>_XSZV*G z06teQzS|R6sRH<=0W0r+6u`cQSixrkD^~!2G@zUQM*)1UUVOJF(2WB4p#k0XKMG)9 zL#*I4f$kKb_!`h{|DymtS1-QX6X;d}imd_N_dg0?Uqh_mGlA|Eptu^)OaG$)K36Zk z+Y{(T0g9;sz4bo|U|&P5;4^{V6rgw-&};vr06teQzS|S%RRN;tlLh*Jf!_Nc1+cFn zR`8iX?+Q>H4Y28d6u{@|#dmuG_0n47e+Di6-!(;e9$?r1QM7^o46^+1Mf)mbh5QKA zOHW%UK>p7IZ2LcoN?yPJL4K9P&S4N(C|!Bt-0;$m@@7k(&jalH|JZ04c_a!5^h&^A z4alPZ7t}j&^h%C-5D0^SpBg~_hf#e*Q3L|^8qn|e5wh?9?~d~LUxeDjhhh-$O9Slt z{}}zxs~-q75%5O?=>K9oYT!j^1pLqd`aiU~Bc9?AD82^J|HY{mJPDCNu{D7H53%Nm zsaOOSO21?IH$tv{FF^knt5WbLR073(9zg$xT5rTvJObHhK$f2eRWGgN^M9868)kn0 zSG+pIqv8_CMgy|?JTCgbxRruup%N&L2GIYZ));XWn?P0?VE4(qy#6nCmEc{-1hUY8 zhsN((-TT+^)f-kV_v+qkzonI@n_n2>7T0^#34KCNcJlfNvT=|M#mh*k@1(_@n{!|DaSQarTpdFB(Aq z_p>V4Ymf-|paJy%AXOx>_M1S_HGux_cSW$@pb;pt2JrsBgI0~in+JiSY5@J8M>VkL zAQC8|2GIY5Sc$}(7lEQ_0R5j=C9vI{lKH@I|fxI+;{x3rI@c{x`OL=Gj z{ZHjVpg08j{kuW>zc{(a69@=_erf>yPt8G~cm(?OT7dp9UheS-0z#l4&jaXxY7GL# zCE!{E=>Ov89?u{k1YBwW{ZEZSp!ft_X#o9S{M_Rq1cZPK4WR$2EeQBSAZrbv|NY55 zoa=I6u_Tc;VA^NCx8NE z&y*D*;12;5z@J>a=I6u_Tc;VA^NCx8NE&y*D*;12;5z@J>a=I6u_Tc;VA^NCx8NE&y*D* z;12;5z@J>a=I6u_Tc;VA^NCx8NE&y*D*;12;5z@J>B|bTnPY#8E zw*=~?4XYj-w)whiHJ=`yy)v^R1o}l_p=9^fFF)A_0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_;0pn}PY#yZzC?>01~EC2!!@RR@w;D=J!8tBTsk<0XGCt05@D&6#{+`Kmq*76JA2V4FMFu4Odo$fFA@<06+4Cmk@A600nTv zl~p0&2LTkok38We1l$ln0o-t9RS5V&00rzk+;C-82>3w&1@I$J zcnJYF1W*7sTv-(Yeh@$b{KyktLck3H6u=EvR)v5c1W*7!@`RTVa6aoA z6u^%>;Uxsz5I_OkaAj2p_(1>#@FP!n2>~|*PyjbvSrr0)5I_O^$P->dzzqQuzztVc zg@7LfPyj#jgqIL-LjVPE!hrPB?R0MKmpuvWmO3HK>!8tBTsk<0XGCt z05@D&6#{+`Kmq*76JA2V4FMFu4Odo$fFA@<06+4Cmk@A600nTvl~p0&2LTkok38We z1l$ln0o-t9RS5V&00rzk+;C-82>3w&1@I$JcnJYF1W*7sTv-(Y zeh@$b{KyktLck3H6u=EvR)v5c1W*7!@`RTVa6aoA6u^%>;Uxsz5I_Ok zaAj2p_(1>#@FP!n2>~|*PyjbvSrr0)5I_O^$P->dzzqQuzztVcg@7LfPyj#jgqIL- zLjVPE!hrPB?R0MKmpuvWmO3HK>!8tBTsk<0XGCt05@D&6#{+`Kmq*7 z6JA2V4FMFu4Odo$fFA@<06+4Cmk@A600nTvl~p0&2LTkok38We1l$ln0o-t9RS5V& z00rzk+;C-82>3w&1@I$JcnJYF1W*7sTv-(Yeh@$b{KyktLck3H z6u=EvR)v5c1W*7!@`RTVa6aoA6u^%>;Uxsz5I_OkaAj2p_(1>#@FP!n z2>~|*PyjbvSrr0)5I_O^$P->dzzqQuzztVcg@7LfPyj#jgqIL-LjVPE!hrPB?R0MKmpuvWmO3HK>!8tBTsk<0XGCt05@D&6#{+`Kmq*76JA2V4FMFu4Odo$ zfFA@<06+4Cmk@A600nTvl~p0&2LTkok38We1l$ln0o-t9RS5V&00rD`8~-2w@3VWF|MbW+o3Fd>1?7`x zN6S|qf3hovPapruW|@EW$?M8j53ehqyl=F8@24K@xQ66Mf8VqJn)01bY$$*Em50k4 zx1CVF^MR-0b>6w_#pO%By{jy-2oF78t|dqM`}7}Q6wjY{$!+oco!dUTS=P{N$~a-F z$IEpmwpah)`Q_*C8jaTwKO`1er_%sC<8;>^GWxeaJyQe(& zkN1_Yc-s}_&zyQ)dHtIA#_Nbp_I&jhK2Uye>Y?)9N3JU0{KCEQSlLT#jeN!*cz5}a zzj>(XT%%pqk-ZwvHQrt-zU^PAmH+<4kHzyIoPMZ0d*knwue|MJ@wu}up z$v9b0&dE5rec{Ldp!_$Vy|?_C?>}08eC(0(O`m$C{JU$SXzeLqRlU}~Z|SqwAOBYD zliU{H9^QVvs=w>w^ZoQCkG+VW{8Rt*zv$i|>YqH%(Di@r*&mAa|IWwmFW+%nWgzrl zVwU)Iy!u)goIdi6zCIS`@%Z=j@pr}XKX$8nPWA04%KG~1AADjU;%}^fVIevovFkd> zBPV^`bL6Xw{eS6j^1AFhFFjKJuWfIL>!Gi{^znJG#47zQ`PSEK6$`m9vCFmegFFwG z>rgm!id*MhdcQG#iM^47=%lY4BsTpxr}Hg6uHzF1lIOi&d2+K{%XvLcbCCHb@4MaU zx#oWh_}eRrx8iCuoCa>s2? zExta~`{>6D{kW;mcY7_|WllHO61(14;?#K)7LDtOuE~9Q%ohfo;%=>Pd3@OW$dmCr ztqb~bLi;JP-}|YTCH3>bRf}~dJ~i&I$D6M8^U#%E|Ncil+cAEfXT6T@bBSMAtR#M! z(;B~CN3Sb9I>oP_PwH_ixt1}~XWd>41IfF@+-d&&@QW7nsOv!Dm)v#Yp!-7dr{kA% zx{q4@)6b(MX7QudzS8@x^_SIs>DyNQlh`FbiC@=)?hAchuC-1|T$)Q(e)W5uxySBX zsI%V#I5zP-~PJVuM-EUZOOOPs$7Q{cPmecS?XWn)w(A2p!>CTd}#L@ zbwSs=^nvub^hap%w#K6$FCM$~^YQZreJuaTYk5v3{ol$fwEMcxrT>M6 zTubco9BmNt-x$BveTkj;$v^cU{^KA0AI9%L<#9{;RbTh}aa!-Iui3wUf5RcHg}Z(o z)9L3KuJWN@7wf!hKjis?OFugOJhw4^?MJsiuWgK@v7b7f*FR5{ef7^p8hJeXbEBu4 z@?%#J8jtO` zR<5?|bvvK^!+!j;&2JX-b$`kAQuW!okKAw7AFWIBd!$a|wVvo}Jznpx@9TB-IJsWV zFFk*`am&qL$v#=lZ{?!bZ9K2zUy5TVPMy|i^C$VMe-d*we#fd0KWD3 L<7M@|Rj&UZU*17~ diff --git a/Assets/GFX/UI/Lines/LineRed.mat b/Assets/GFX/UI/Lines/LineRed.mat new file mode 100644 index 00000000..295213d6 --- /dev/null +++ b/Assets/GFX/UI/Lines/LineRed.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LineRed + m_Shader: {fileID: 4800000, guid: 076451eaaea463f458b1a4b7cb303499, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/GFX/UI/Lines/LineRed.mat.meta b/Assets/GFX/UI/Lines/LineRed.mat.meta new file mode 100644 index 00000000..f6c3b9b9 --- /dev/null +++ b/Assets/GFX/UI/Lines/LineRed.mat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 98d449f213042f641836633afaee53f5 +timeCreated: 1500298753 +licenseType: Pro +NativeFormatImporter: + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MapEditor.unity b/Assets/MapEditor.unity index ad806b3c..bfbf4207 100644 --- a/Assets/MapEditor.unity +++ b/Assets/MapEditor.unity @@ -4652,7 +4652,7 @@ PrefabInstance: - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} propertyPath: m_RootOrder - value: 15 + value: 16 objectReference: {fileID: 0} - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} @@ -4662,7 +4662,7 @@ PrefabInstance: - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} propertyPath: m_AnchoredPosition.y - value: -470 + value: -538 objectReference: {fileID: 0} - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} @@ -24857,6 +24857,7 @@ MonoBehaviour: NameInputField: {fileID: 1554188827} PrefixInputField: {fileID: 1287467229} SelectedUnitsGroup: {fileID: 8298913} + UnitStats: {fileID: 541542953} UnitName: {fileID: 262435834} UnitInstancePrefab: {fileID: 1017419612} UnitMaterial: {fileID: 2100000, guid: 45d596c0e62a2ba44b276b336c2b1a8b, type: 2} @@ -28564,7 +28565,7 @@ PrefabInstance: - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} propertyPath: m_RootOrder - value: 13 + value: 14 objectReference: {fileID: 0} - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} @@ -28574,7 +28575,7 @@ PrefabInstance: - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} propertyPath: m_AnchoredPosition.y - value: -422 + value: -490 objectReference: {fileID: 0} - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} @@ -45616,7 +45617,7 @@ Camera: serializedVersion: 2 m_Bits: 2560 m_RenderingPath: 1 - m_TargetTexture: {fileID: 974217652} + m_TargetTexture: {fileID: 737762683} m_TargetDisplay: 0 m_TargetEye: 3 m_HDR: 0 @@ -45739,6 +45740,88 @@ RectTransform: type: 3} m_PrefabInstance: {fileID: 540716262} m_PrefabAsset: {fileID: 0} +--- !u!1 &541542951 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 541542952} + - component: {fileID: 541542954} + - component: {fileID: 541542953} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &541542952 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 541542951} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1585456061} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -12, y: -8} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &541542953 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 541542951} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: ba878bb41b1a125448c85ae6644d5b6a, type: 3} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: ' + + +' +--- !u!222 &541542954 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 541542951} + m_CullTransparentMesh: 0 --- !u!1 &542123970 GameObject: m_ObjectHideFlags: 0 @@ -57756,7 +57839,7 @@ PrefabInstance: - target: {fileID: 224245749221985618, guid: b9c991c271c736249a3262b1b5a7d7d4, type: 3} propertyPath: m_RootOrder - value: 16 + value: 17 objectReference: {fileID: 0} - target: {fileID: 224245749221985618, guid: b9c991c271c736249a3262b1b5a7d7d4, type: 3} @@ -57766,7 +57849,7 @@ PrefabInstance: - target: {fileID: 224245749221985618, guid: b9c991c271c736249a3262b1b5a7d7d4, type: 3} propertyPath: m_AnchoredPosition.y - value: -497 + value: -565 objectReference: {fileID: 0} - target: {fileID: 224245749221985618, guid: b9c991c271c736249a3262b1b5a7d7d4, type: 3} @@ -61455,6 +61538,40 @@ MonoBehaviour: m_CallState: 2 m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!84 &737762683 +RenderTexture: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + serializedVersion: 3 + m_Width: 256 + m_Height: 256 + m_AntiAliasing: 1 + m_DepthFormat: 1 + m_ColorFormat: 8 + m_MipMap: 0 + m_GenerateMips: 1 + m_SRGB: 0 + m_UseDynamicScale: 0 + m_BindMS: 0 + m_EnableCompatibleFormat: 1 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 1 + m_MipBias: 0 + m_WrapU: 1 + m_WrapV: 1 + m_WrapW: 1 + m_Dimension: 2 + m_VolumeDepth: 1 --- !u!1 &739506503 GameObject: m_ObjectHideFlags: 0 @@ -69323,7 +69440,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 88} + m_SizeDelta: {x: 0, y: 52} m_Pivot: {x: 0.5, y: 1} --- !u!114 &843215760 MonoBehaviour: @@ -77140,7 +77257,7 @@ PrefabInstance: - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} propertyPath: m_RootOrder - value: 14 + value: 15 objectReference: {fileID: 0} - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} @@ -77150,7 +77267,7 @@ PrefabInstance: - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} propertyPath: m_AnchoredPosition.y - value: -446 + value: -514 objectReference: {fileID: 0} - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} @@ -81170,7 +81287,7 @@ PrefabInstance: - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} propertyPath: m_RootOrder - value: 18 + value: 19 objectReference: {fileID: 0} - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} @@ -81180,7 +81297,7 @@ PrefabInstance: - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} propertyPath: m_AnchoredPosition.y - value: -528 + value: -596 objectReference: {fileID: 0} - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} @@ -81702,40 +81819,6 @@ RectTransform: type: 3} m_PrefabInstance: {fileID: 973057752} m_PrefabAsset: {fileID: 0} ---- !u!84 &974217652 -RenderTexture: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: - m_ImageContentsHash: - serializedVersion: 2 - Hash: 00000000000000000000000000000000 - m_ForcedFallbackFormat: 4 - m_DownscaleFallback: 0 - serializedVersion: 3 - m_Width: 256 - m_Height: 256 - m_AntiAliasing: 1 - m_DepthFormat: 1 - m_ColorFormat: 8 - m_MipMap: 0 - m_GenerateMips: 1 - m_SRGB: 0 - m_UseDynamicScale: 0 - m_BindMS: 0 - m_EnableCompatibleFormat: 1 - m_TextureSettings: - serializedVersion: 2 - m_FilterMode: 1 - m_Aniso: 1 - m_MipBias: 0 - m_WrapU: 1 - m_WrapV: 1 - m_WrapW: 1 - m_Dimension: 2 - m_VolumeDepth: 1 --- !u!1 &974717913 GameObject: m_ObjectHideFlags: 0 @@ -105997,6 +106080,7 @@ RectTransform: - {fileID: 1357414973} - {fileID: 1243461029} - {fileID: 262435833} + - {fileID: 1273011422} - {fileID: 1444960705} - {fileID: 1431040489} - {fileID: 357301473} @@ -106011,7 +106095,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 598} + m_SizeDelta: {x: 0, y: 666} m_Pivot: {x: 0.5, y: 1} --- !u!114 &1259220780 MonoBehaviour: @@ -107181,6 +107265,63 @@ RectTransform: type: 3} m_PrefabInstance: {fileID: 1269818876} m_PrefabAsset: {fileID: 0} +--- !u!1 &1273011421 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1273011422} + - component: {fileID: 1273011423} + m_Layer: 5 + m_Name: UnitInfo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1273011422 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1273011421} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1585456061} + m_Father: {fileID: 1259220779} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -406} + m_SizeDelta: {x: 279.7, y: 64} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &1273011423 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1273011421} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 64 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!1001 &1273423064 PrefabInstance: m_ObjectHideFlags: 0 @@ -119141,7 +119282,7 @@ PrefabInstance: - target: {fileID: 224512380592174650, guid: ae1ebc3d810ad1047ad52b2d8c562cde, type: 3} propertyPath: m_RootOrder - value: 12 + value: 13 objectReference: {fileID: 0} - target: {fileID: 224512380592174650, guid: ae1ebc3d810ad1047ad52b2d8c562cde, type: 3} @@ -119151,7 +119292,7 @@ PrefabInstance: - target: {fileID: 224512380592174650, guid: ae1ebc3d810ad1047ad52b2d8c562cde, type: 3} propertyPath: m_AnchoredPosition.y - value: -384 + value: -452 objectReference: {fileID: 0} - target: {fileID: 224512380592174650, guid: ae1ebc3d810ad1047ad52b2d8c562cde, type: 3} @@ -120245,7 +120386,7 @@ PrefabInstance: - target: {fileID: 224245749221985618, guid: b9c991c271c736249a3262b1b5a7d7d4, type: 3} propertyPath: m_RootOrder - value: 11 + value: 12 objectReference: {fileID: 0} - target: {fileID: 224245749221985618, guid: b9c991c271c736249a3262b1b5a7d7d4, type: 3} @@ -120255,7 +120396,7 @@ PrefabInstance: - target: {fileID: 224245749221985618, guid: b9c991c271c736249a3262b1b5a7d7d4, type: 3} propertyPath: m_AnchoredPosition.y - value: -377 + value: -445 objectReference: {fileID: 0} - target: {fileID: 224245749221985618, guid: b9c991c271c736249a3262b1b5a7d7d4, type: 3} @@ -131503,6 +131644,81 @@ RectTransform: m_AnchoredPosition: {x: 86.3, y: -4.1499214} m_SizeDelta: {x: 467.3, y: 34.1} m_Pivot: {x: 0, y: 1} +--- !u!1 &1585456060 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1585456061} + - component: {fileID: 1585456063} + - component: {fileID: 1585456062} + m_Layer: 5 + m_Name: Field + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1585456061 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1585456060} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 541542952} + m_Father: {fileID: 1273011422} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1585456062 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1585456060} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.25, g: 0.25, b: 0.25, a: 0.347} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 004fcd85e90bb654392361e14a461b0a, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1585456063 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1585456060} + m_CullTransparentMesh: 0 --- !u!1001 &1585518667 PrefabInstance: m_ObjectHideFlags: 0 @@ -156404,6 +156620,10 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 2059390738} m_Modifications: + - target: {fileID: 1458385245393734, guid: 28c7721d937ebd84ba7bb1387b2c1696, type: 3} + propertyPath: m_Name + value: Units + objectReference: {fileID: 0} - target: {fileID: 4528861389940606, guid: 28c7721d937ebd84ba7bb1387b2c1696, type: 3} propertyPath: m_LocalPosition.x value: 0 @@ -156436,6 +156656,18 @@ PrefabInstance: propertyPath: m_RootOrder value: 4 objectReference: {fileID: 0} + - target: {fileID: 4528861389940606, guid: 28c7721d937ebd84ba7bb1387b2c1696, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4528861389940606, guid: 28c7721d937ebd84ba7bb1387b2c1696, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4528861389940606, guid: 28c7721d937ebd84ba7bb1387b2c1696, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 28c7721d937ebd84ba7bb1387b2c1696, type: 3} --- !u!1 &1906476526 @@ -159707,7 +159939,7 @@ PrefabInstance: - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} propertyPath: m_RootOrder - value: 17 + value: 18 objectReference: {fileID: 0} - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} @@ -159717,7 +159949,7 @@ PrefabInstance: - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} propertyPath: m_AnchoredPosition.y - value: -504 + value: -572 objectReference: {fileID: 0} - target: {fileID: 224414395284792190, guid: 0cbe5a6c3afdfd147a4011b19eead070, type: 3} diff --git a/Assets/Prefabs/Managers/Units.prefab b/Assets/Prefabs/Managers/Units.prefab index 7639034a..f659cdce 100644 --- a/Assets/Prefabs/Managers/Units.prefab +++ b/Assets/Prefabs/Managers/Units.prefab @@ -1,25 +1,16 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1001 &100100000 -Prefab: - m_ObjectHideFlags: 1 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: [] - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 0} - m_RootGameObject: {fileID: 1458385245393734} - m_IsPrefabParent: 1 --- !u!1 &1458385245393734 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 4528861389940606} - component: {fileID: 114404681229377448} + - component: {fileID: 1543444220} m_Layer: 0 m_Name: Units m_TagString: Untagged @@ -29,11 +20,12 @@ GameObject: m_IsActive: 1 --- !u!4 &4528861389940606 Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1458385245393734} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] @@ -42,12 +34,26 @@ Transform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &114404681229377448 MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1458385245393734} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: bc70eac0a340f6f40b6e013c33ddc070, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!114 &1543444220 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1458385245393734} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 17de1e203f60a13408f4ac004681d87e, type: 3} + m_Name: + m_EditorClassIdentifier: + lineMaterial: {fileID: 2100000, guid: 7781e3239d535304989c5a1b23ebbd67, type: 2} diff --git a/Assets/Scripts/Common/EditorVersion.cs b/Assets/Scripts/Common/EditorVersion.cs index 707ee692..9087981a 100644 --- a/Assets/Scripts/Common/EditorVersion.cs +++ b/Assets/Scripts/Common/EditorVersion.cs @@ -14,7 +14,7 @@ public class EditorVersion : MonoBehaviour //public const float VersionOffset = 0f; // Release // Prerelease - public const string EditorBuildTag = "WIP7"; + public const string EditorBuildTag = "WIP8"; public const float VersionOffset = -0.001f; // Prerelease public static string LatestTag = ""; diff --git a/Assets/Scripts/GFX/GraphicLines/RenderUnitRanges.cs b/Assets/Scripts/GFX/GraphicLines/RenderUnitRanges.cs new file mode 100644 index 00000000..befc7e28 --- /dev/null +++ b/Assets/Scripts/GFX/GraphicLines/RenderUnitRanges.cs @@ -0,0 +1,101 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Selection; + +public class RenderUnitRanges : MonoBehaviour +{ + + static RenderUnitRanges Instance; + + private void Awake() + { + Instance = this; + + for(int i = 0; i < MaxUnitRanges; i++) + { + UnitRanges[i] = new UnitRange(); + } + } + + const int MaxUnitRanges = 32; + static UnitRange[] UnitRanges = new UnitRange[MaxUnitRanges]; + static int Count = 0; + public Material lineMaterial; + + public class UnitRange + { + public Transform UnitTr; + public float Radius; + public float MinRadius; + } + + public static void CreateRanges() + { + //SelectionManager.Current.AffectedGameObjects[SelectionManager.Current.Selection.Ids[0]].GetComponent() + + Count = SelectionManager.Current.Selection.Ids.Count; + if (Count > MaxUnitRanges) + Count = MaxUnitRanges; + + for(int i = 0; i < Count; i++) + { + GameObject UIobj = SelectionManager.Current.AffectedGameObjects[SelectionManager.Current.Selection.Ids[i]]; + if (UIobj == null) + continue; + + UnitInstance UI = UIobj.GetComponent(); + if (UI == null) + { + UnitRanges[i].UnitTr = null; + UnitRanges[i].Radius = 0; + } + else + { + UnitRanges[i].UnitTr = UI.transform; + UnitRanges[i].Radius = ScmapEditor.ScmapPosToWorld(UI.UnitRenderer.BP.MaxRange); + UnitRanges[i].MinRadius = ScmapEditor.ScmapPosToWorld(UI.UnitRenderer.BP.MinRange); + } + } + } + + public static void Clear() + { + Count = 0; + } + + public void OnRenderObject() + { + if (Count <= 0) + return; + + + lineMaterial.SetPass(0); + + for (int i = 0; i < Count; i++) + { + if (UnitRanges[i].UnitTr == null) + continue; + + if(UnitRanges[i].Radius > 0) + DrawCircle(UnitRanges[i].UnitTr.position, UnitRanges[i].Radius, Color.red); + if(UnitRanges[i].MinRadius > 0) + DrawCircle(UnitRanges[i].UnitTr.position, UnitRanges[i].MinRadius, Color.blue); + } + } + + void DrawCircle(Vector3 center, float radius, Color col) + { + GL.PushMatrix(); + GL.Begin(GL.LINES); + GL.Color(col); + //float degRad = Mathf.PI / 180; + for (float theta = 0.0f; theta < (2 * Mathf.PI); theta += 0.01f) + { + Vector3 ci = (new Vector3(Mathf.Cos(theta) * radius + center.x, center.y, Mathf.Sin(theta) * radius + center.z)); + GL.Vertex3(ci.x, ci.y, ci.z); + } + GL.End(); + GL.PopMatrix(); + } +} diff --git a/Assets/Scripts/GFX/GraphicLines/RenderUnitRanges.cs.meta b/Assets/Scripts/GFX/GraphicLines/RenderUnitRanges.cs.meta new file mode 100644 index 00000000..dc173170 --- /dev/null +++ b/Assets/Scripts/GFX/GraphicLines/RenderUnitRanges.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 17de1e203f60a13408f4ac004681d87e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Ozone SCMAP Code/GetGamedataFile/GetGamedataFile_Unit.cs b/Assets/Scripts/Ozone SCMAP Code/GetGamedataFile/GetGamedataFile_Unit.cs index 169c0097..c32b6a90 100644 --- a/Assets/Scripts/Ozone SCMAP Code/GetGamedataFile/GetGamedataFile_Unit.cs +++ b/Assets/Scripts/Ozone SCMAP Code/GetGamedataFile/GetGamedataFile_Unit.cs @@ -73,6 +73,17 @@ public class UnitBluePrint public bool Wreckage_Layer_Sub; public bool Wreckage_Layer_Water; + public Weapon[] Weapons; + public float MinRange; + public float MaxRange; + + public class Weapon + { + public float MinRadius; + public float MaxRadius; + public string WeaponCategory = ""; + } + public void GenerateEmptyLod() { LODs = new BluePrintLoD[1]; @@ -332,6 +343,7 @@ public static UnitSource LoadUnit(string scd, string LocalPath) for (int t = 0; t < ToReturn.BP.Termacs.Length; t++) { ToReturn.BP.Termacs[t] = new Termac(AllTermacs[t]); + } LoadTermacs(ToReturn.BP); @@ -342,6 +354,82 @@ public static UnitSource LoadUnit(string scd, string LocalPath) ToReturn.BP.Size = Vector3.one * 0.1f; + ToReturn.BP.MinRange = 0; + ToReturn.BP.MaxRange = 0; + LuaTable WeaponsTable = BP.GetTable("UnitBlueprint.Weapon"); + if(WeaponsTable != null) + { + LuaTable[] AllWeapons = LuaParser.Read.TableArrayFromTable(WeaponsTable); + ToReturn.BP.Weapons = new UnitBluePrint.Weapon[AllWeapons.Length]; + for(int i = 0; i < ToReturn.BP.Weapons.Length; i++) + { + ToReturn.BP.Weapons[i] = new UnitBluePrint.Weapon(); + + if (AllWeapons[i] == null) + continue; + + CurrentValue = AllWeapons[i].RawGet("WeaponCategory"); + if (CurrentValue != null) + ToReturn.BP.Weapons[i].WeaponCategory = CurrentValue.ToString(); + else + ToReturn.BP.Weapons[i].WeaponCategory = ""; + + CurrentValue = AllWeapons[i].RawGet("MinRadius"); + if (CurrentValue != null) + ToReturn.BP.Weapons[i].MinRadius = LuaParser.Read.StringToFloat(CurrentValue.ToString()); + else + ToReturn.BP.Weapons[i].MinRadius = 0; + + CurrentValue = AllWeapons[i].RawGet("MaxRadius"); + if (CurrentValue != null) + ToReturn.BP.Weapons[i].MaxRadius = LuaParser.Read.StringToFloat(CurrentValue.ToString()); + else + ToReturn.BP.Weapons[i].MaxRadius = 0; + + ToReturn.BP.MinRange = Mathf.Max(ToReturn.BP.MinRange, ToReturn.BP.Weapons[i].MinRadius); + ToReturn.BP.MaxRange = Mathf.Max(ToReturn.BP.MaxRange, ToReturn.BP.Weapons[i].MaxRadius); + } + } + + LuaTable WreckageTable = BP.GetTable("UnitBlueprint.Wreckage"); + if (WreckageTable != null) + { + CurrentValue = WreckageTable.RawGet("MassMult"); + if (CurrentValue != null) + ToReturn.BP.Wreckage_MassMult = LuaParser.Read.StringToFloat(CurrentValue.ToString()); + else + ToReturn.BP.Wreckage_MassMult = 1; + + CurrentValue = WreckageTable.RawGet("EnergyMult"); + if (CurrentValue != null) + ToReturn.BP.Wreckage_EnergyMult = LuaParser.Read.StringToFloat(CurrentValue.ToString()); + else + ToReturn.BP.Wreckage_EnergyMult = 1; + + CurrentValue = WreckageTable.RawGet("HealthMult"); + if (CurrentValue != null) + ToReturn.BP.Wreckage_HealthMult = LuaParser.Read.StringToFloat(CurrentValue.ToString()); + else + ToReturn.BP.Wreckage_HealthMult = 1; + + CurrentValue = WreckageTable.RawGet("ReclaimTimeMultiplier"); + if (CurrentValue != null) + ToReturn.BP.Wreckage_ReclaimTimeMultiplier = LuaParser.Read.StringToFloat(CurrentValue.ToString()); + else + ToReturn.BP.Wreckage_ReclaimTimeMultiplier = 1; + + } + + LuaTable IntelTable = BP.GetTable("UnitBlueprint.Intel"); + if (IntelTable != null) + { + CurrentValue = IntelTable.RawGet("VisionRadius"); + if (CurrentValue != null) + ToReturn.BP.VisionRadius = LuaParser.Read.StringToFloat(CurrentValue.ToString()); + else + ToReturn.BP.VisionRadius = 1; + } + CurrentValue = UnitBlueprintTable.RawGet("SizeX"); if (CurrentValue != null) ToReturn.BP.Size.x = LuaParser.Read.StringToFloat(CurrentValue.ToString()); @@ -492,6 +580,8 @@ public static UnitSource LoadUnit(string scd, string LocalPath) //Debug.Log("BuildCostEnergy: " + ToReturn.BP.BuildCostEnergy + "\nBuildCostMass: " + ToReturn.BP.BuildCostMass); LoadedUnitObjects.Add(LocalPath, ToReturn); + BP.Dispose(); + return ToReturn; } diff --git a/Assets/Scripts/Ozone SCMAP Code/Lua/ScenarioLua.cs b/Assets/Scripts/Ozone SCMAP Code/Lua/ScenarioLua.cs index 65c77f86..63b648ea 100644 --- a/Assets/Scripts/Ozone SCMAP Code/Lua/ScenarioLua.cs +++ b/Assets/Scripts/Ozone SCMAP Code/Lua/ScenarioLua.cs @@ -373,7 +373,7 @@ public bool Load(string FolderName, string ScenarioFileName, string FolderParent //string MapPath = EnvPaths.GetMapsPath(); string loadedFile = ""; - Debug.Log("Load file:" + FolderParentPath + FolderName + "/" + ScenarioFileName + ".lua"); + Debug.Log("Load file: " + FolderParentPath + FolderName + "/" + ScenarioFileName + ".lua"); string loc = FolderParentPath + FolderName + "/" + ScenarioFileName + ".lua"; loadedFile = System.IO.File.ReadAllText(loc, encodeType); diff --git a/Assets/Scripts/Ozone SCMAP Code/ScmapEditor.cs b/Assets/Scripts/Ozone SCMAP Code/ScmapEditor.cs index beea7b31..aa00df8a 100644 --- a/Assets/Scripts/Ozone SCMAP Code/ScmapEditor.cs +++ b/Assets/Scripts/Ozone SCMAP Code/ScmapEditor.cs @@ -864,6 +864,11 @@ public static Vector3 ScmapPosToWorld(Vector3 MapPos) return ToReturn; } + public static float ScmapPosToWorld(float val) + { + return val / 10f; + } + /// /// Convert Editor world position to Scmap position /// diff --git a/Assets/Scripts/Selection/SelectionManager.cs b/Assets/Scripts/Selection/SelectionManager.cs index 964e3a44..7b8bfcf8 100644 --- a/Assets/Scripts/Selection/SelectionManager.cs +++ b/Assets/Scripts/Selection/SelectionManager.cs @@ -48,6 +48,16 @@ void Update() DestroySelectedObjects(); } + if (Input.GetKeyDown(KeyCode.C) && Input.GetKey(KeyCode.LeftControl)) + { + //Copy + CopyAction?.Invoke(); + } + else if (Input.GetKeyDown(KeyCode.V) && Input.GetKey(KeyCode.LeftControl)) + { + //Paste + PasteAction?.Invoke(); + } } @@ -356,6 +366,18 @@ public void SetCustomSnapAction(System.Action Action) CustomSnapAction = Action; } + static System.Action CopyAction; + public void SetCopyActionAction(System.Action Action) + { + CopyAction = Action; + } + + static System.Action PasteAction; + public void SetPasteActionAction(System.Action Action) + { + PasteAction = Action; + } + #endregion } } diff --git a/Assets/Scripts/UI/Tools/Decals/DecalsInfo_Selection.cs b/Assets/Scripts/UI/Tools/Decals/DecalsInfo_Selection.cs index 92a14e57..baf40800 100644 --- a/Assets/Scripts/UI/Tools/Decals/DecalsInfo_Selection.cs +++ b/Assets/Scripts/UI/Tools/Decals/DecalsInfo_Selection.cs @@ -17,6 +17,8 @@ private void OnEnable() SelectionManager.Current.SetRemoveAction(DestroyDetails); SelectionManager.Current.SetSelectionChangeAction(SelectDetails); SelectionManager.Current.SetCustomSnapAction(OzoneDecal.SnapToGround); + SelectionManager.Current.SetCopyActionAction(CopyAction); + SelectionManager.Current.SetPasteActionAction(PasteAction); GoToSelection(); } @@ -70,6 +72,16 @@ public void SelectDetails() DecalsList.UpdateSelection(); } + public void CopyAction() + { + Debug.Log("Copy"); + } + + public void PasteAction() + { + Debug.Log("Paste"); + } + public void DestroyDetails(List MarkerObjects, bool RegisterUndo = true) { if (RegisterUndo && MarkerObjects.Count > 0) diff --git a/Assets/Scripts/UI/Tools/Markers/NewMarkersInfo.cs b/Assets/Scripts/UI/Tools/Markers/NewMarkersInfo.cs index d04c44ad..bd20312b 100644 --- a/Assets/Scripts/UI/Tools/Markers/NewMarkersInfo.cs +++ b/Assets/Scripts/UI/Tools/Markers/NewMarkersInfo.cs @@ -27,6 +27,8 @@ void OnEnable() SelectionManager.Current.SetRemoveAction(DestroyMarkers); SelectionManager.Current.SetSelectionChangeAction(SelectMarkers); SelectionManager.Current.SetCustomSnapAction(SnapAction); + SelectionManager.Current.SetCopyActionAction(CopyAction); + SelectionManager.Current.SetPasteActionAction(PasteAction); if (CreationId >= 0) SelectCreateNew(CreationId); @@ -343,6 +345,16 @@ public void SnapAction(Transform marker, GameObject Connected) // marker.localRotation = Quaternion.identity; } + public void CopyAction() + { + Debug.Log("Copy"); + } + + public void PasteAction() + { + Debug.Log("Paste"); + } + MapLua.SaveLua.Marker.MarkerTypes GetCreationType() { switch (CreationId) diff --git a/Assets/Scripts/UI/Tools/Props/PropsInfo.cs b/Assets/Scripts/UI/Tools/Props/PropsInfo.cs index d393130f..1aa86639 100644 --- a/Assets/Scripts/UI/Tools/Props/PropsInfo.cs +++ b/Assets/Scripts/UI/Tools/Props/PropsInfo.cs @@ -154,6 +154,8 @@ void OnEnable() SelectionManager.Current.SetRemoveAction(DestroyProps); SelectionManager.Current.SetSelectionChangeAction(SelectProp); SelectionManager.Current.SetCustomSnapAction(SnapAction); + SelectionManager.Current.SetCopyActionAction(CopyAction); + SelectionManager.Current.SetPasteActionAction(PasteAction); if (Tabs[1].activeSelf) { diff --git a/Assets/Scripts/UI/Tools/Props/PropsInfo_Selection.cs b/Assets/Scripts/UI/Tools/Props/PropsInfo_Selection.cs index 80b6e2b0..101384dc 100644 --- a/Assets/Scripts/UI/Tools/Props/PropsInfo_Selection.cs +++ b/Assets/Scripts/UI/Tools/Props/PropsInfo_Selection.cs @@ -69,5 +69,15 @@ public void SnapAction(Transform tr, GameObject Connected) { //TODO Snap To Terrain } + + public void CopyAction() + { + Debug.Log("Copy"); + } + + public void PasteAction() + { + Debug.Log("Paste"); + } } } diff --git a/Assets/Scripts/UI/Tools/Units/UnitsInfo.cs b/Assets/Scripts/UI/Tools/Units/UnitsInfo.cs index eddb7a15..734c02a6 100644 --- a/Assets/Scripts/UI/Tools/Units/UnitsInfo.cs +++ b/Assets/Scripts/UI/Tools/Units/UnitsInfo.cs @@ -23,6 +23,7 @@ public partial class UnitsInfo : MonoBehaviour public UiTextField NameInputField; public UiTextField PrefixInputField; public Text SelectedUnitsGroup; + public Text UnitStats; public UiTextField UnitName; [Header("Objects")] @@ -39,6 +40,8 @@ private void OnEnable() SelectionManager.Current.SetRemoveAction(DestroyUnits); SelectionManager.Current.SetSelectionChangeAction(SelectUnit); SelectionManager.Current.SetCustomSnapAction(SnapAction); + SelectionManager.Current.SetCopyActionAction(CopyAction); + SelectionManager.Current.SetPasteActionAction(PasteAction); GoToSelection(); @@ -50,7 +53,8 @@ private void OnDisable() ClearRename(); ForceExitCreate(); PlacementManager.OnDropOnGameplay -= DropAtGameplay; - Selection.SelectionManager.Current.ClearAffectedGameObjects(); + SelectionManager.Current.ClearAffectedGameObjects(); + RenderUnitRanges.Clear(); } public static void UnloadUnits() diff --git a/Assets/Scripts/UI/Tools/Units/UnitsInfo_Units.cs b/Assets/Scripts/UI/Tools/Units/UnitsInfo_Units.cs index 61e977c5..cd4e79ed 100644 --- a/Assets/Scripts/UI/Tools/Units/UnitsInfo_Units.cs +++ b/Assets/Scripts/UI/Tools/Units/UnitsInfo_Units.cs @@ -68,7 +68,7 @@ public void DestroyUnits(List MarkerObjects, bool RegisterUndo = tru //DestroyImmediate(MarkerObjects[i]); SaveLua.Army.Unit u = MarkerObjects[i].GetComponent().Owner; u.ClearInstance(); - if(u.Parent != null) + if (u.Parent != null) u.Parent.RemoveUnit(u); } @@ -78,17 +78,27 @@ public void DestroyUnits(List MarkerObjects, bool RegisterUndo = tru public void SelectUnit() { - if(SelectionManager.Current.Selection.Ids.Count <= 0) + RenderUnitRanges.CreateRanges(); + + + if (SelectionManager.Current.Selection.Ids.Count <= 0) { - + } else { UnitInstance Uinst = SelectionManager.Current.AffectedGameObjects[SelectionManager.Current.Selection.Ids[0]].GetComponent(); - if (Uinst != null) { + if (Uinst != null) + { UnitName.SetValue(Uinst.Owner.Name); SelectedUnitsGroup.text = Uinst.Owner.Parent.Name + " (" + Uinst.Owner.Parent.Owner.Name + ")"; + + UnitStats.text = Uinst.UnitRenderer.BP.CodeName + "\n" + + "Reclaim: Mass: " + (Uinst.UnitRenderer.BP.BuildCostMass * Uinst.UnitRenderer.BP.Wreckage_MassMult) + + ", Energy: " + (Uinst.UnitRenderer.BP.BuildCostEnergy * Uinst.UnitRenderer.BP.Wreckage_EnergyMult) + + "\nVision radius: " + Uinst.UnitRenderer.BP.VisionRadius + + ((Uinst.UnitRenderer.BP.MaxRange > 0) ? ("\nWeapon range: " + Uinst.UnitRenderer.BP.MaxRange) : ""); return; } } @@ -97,6 +107,7 @@ public void SelectUnit() // Default UnitName.SetValue(""); SelectedUnitsGroup.text = ""; + UnitStats.text = ""; } public void OnNameChanged() @@ -128,7 +139,8 @@ public void OnNameChanged() { string[] Split = NewName.Split('_'); int OutInt = 0; - if(Split.Length > 1 && int.TryParse(Split[Split.Length - 1], out OutInt)){ + if (Split.Length > 1 && int.TryParse(Split[Split.Length - 1], out OutInt)) + { NewName = ""; for (int s = 0; s < Split.Length - 1; s++) @@ -290,7 +302,7 @@ public void Place(Vector3[] Positions, Quaternion[] Rotations, Vector3[] Scales, NewUnit.orders = ""; NewUnit.platoon = ""; NewUnit.Position = ScmapEditor.WorldPosToScmap(Positions[i]); - NewUnit.Orientation = Rotations[i].eulerAngles * Mathf.Deg2Rad; + NewUnit.Orientation = UnitInstance.ScmapRotationFromRotation(Rotations[i]); FirstSelected.Source.AddUnit(NewUnit); NewUnit.Instantiate(); @@ -375,7 +387,7 @@ public void SelectAllOfType() SelectionManager.Current.CleanSelection(); List NewSelection = new List(); - for(int i = 0; i < SelectionManager.Current.AffectedGameObjects.Length; i++) + for (int i = 0; i < SelectionManager.Current.AffectedGameObjects.Length; i++) { if (GatheredUnitTypes.Contains(SelectionManager.Current.AffectedGameObjects[i].GetComponent().UnitRenderer)) NewSelection.Add(SelectionManager.Current.AffectedGameObjects[i]); @@ -388,7 +400,7 @@ public void SelectAllOfType() public void ReplaceSelected() { - if(FirstSelected == null) + if (FirstSelected == null) { ShowGroupError(); @@ -441,16 +453,7 @@ public void ReplaceSelected() } #endregion - #region Import/Export - const string ExportPathKey = "UnitsExport"; - static string DefaultPath - { - get - { - return EnvPaths.GetLastPath(ExportPathKey, EnvPaths.GetMapsPath() + MapLuaParser.Current.FolderName); - } - } - + #region Storage [System.Serializable] public class UnitsStorage { @@ -468,30 +471,14 @@ public class Unit } } - static ExtensionFilter[] extensions = new[] - { - new ExtensionFilter("SC Units", "scunits") - }; - - public void ExportUnits() + static UnitsStorage GetUnitsStorage() { GameObject[] Objs = SelectionManager.Current.GetAllSelectedObjects(false); - if (Objs.Length == 0) - { - GenericInfoPopup.ShowInfo("No units selected"); - return; - } - - var path = StandaloneFileBrowser.SaveFilePanel("Export Units", DefaultPath, "", extensions); - - if (string.IsNullOrEmpty(path)) - return; - UnitsStorage Data = new UnitsStorage(); Data.Units = new UnitsStorage.Unit[Objs.Length]; - for(int i = 0; i < Objs.Length; i++) + for (int i = 0; i < Objs.Length; i++) { UnitInstance UnitI = Objs[i].GetComponent(); @@ -506,11 +493,78 @@ public void ExportUnits() } Data.Center /= Data.Units.Length; + return Data; + } + + GameObject[] ReadUnitsStorage(UnitsStorage Data) + { + List CreatedUnits = new List(); + for (int i = 0; i < Data.Units.Length; i++) + { + SaveLua.Army.Unit NewUnit = new SaveLua.Army.Unit(); + NewUnit.Name = SaveLua.Army.Unit.GetFreeName("UNIT_"); + NewUnit.type = Data.Units[i].ID; + NewUnit.orders = Data.Units[i].orders; + NewUnit.platoon = Data.Units[i].platoon; + + if (!ScmapEditor.Current.Teren.terrainData.bounds.Contains(ScmapEditor.Current.Teren.transform.InverseTransformPoint(Data.Units[i].pos))) + { + Vector3 Offset = ScmapEditor.Current.Teren.transform.TransformPoint(ScmapEditor.Current.Teren.terrainData.bounds.center) - Data.Center; + Offset.y = 0; + Data.Units[i].pos += Offset; + } + + NewUnit.Position = ScmapEditor.WorldPosToScmap(Data.Units[i].pos); + NewUnit.Orientation = UnitInstance.ScmapRotationFromRotation(Data.Units[i].rot); + + FirstSelected.Source.AddUnit(NewUnit); + NewUnit.Instantiate(); + + SnapAction(NewUnit.Instance.transform, NewUnit.Instance.gameObject); + CreatedUnits.Add(NewUnit.Instance.gameObject); + } + + return CreatedUnits.ToArray(); + } + #endregion + + #region Import/Export + const string ExportPathKey = "UnitsExport"; + static string DefaultPath + { + get + { + return EnvPaths.GetLastPath(ExportPathKey, EnvPaths.GetMapsPath() + MapLuaParser.Current.FolderName); + } + } + static ExtensionFilter[] extensions = new[] + { + new ExtensionFilter("SC Units", "scunits") + }; + + public void ExportUnits() + { + GameObject[] Objs = SelectionManager.Current.GetAllSelectedObjects(false); + + if (SelectionManager.Current.Selection.Ids.Count <= 0) + { + GenericInfoPopup.ShowInfo("No units selected"); + return; + } + + var path = StandaloneFileBrowser.SaveFilePanel("Export Units", DefaultPath, "", extensions); + + if (string.IsNullOrEmpty(path)) + return; + + UnitsStorage Data = GetUnitsStorage(); string DataString = JsonUtility.ToJson(Data); File.WriteAllText(path, DataString); EnvPaths.SetLastPath(ExportPathKey, Path.GetDirectoryName(path)); } + + public void ImportUnits() { if (FirstSelected == null) @@ -533,41 +587,58 @@ public void ImportUnits() Undo.RegisterUndo(new UndoHistory.HistoryUnitsRemove(), new UndoHistory.HistoryUnitsRemove.UnitsRemoveParam(new SaveLua.Army.UnitsGroup[] { FirstSelected.Source })); + GameObject[] CreatedUnits = ReadUnitsStorage(Data); - List CreatedUnits = new List(); - for (int i = 0; i < Data.Units.Length; i++) + if (CreatedUnits.Length > 0) { - SaveLua.Army.Unit NewUnit = new SaveLua.Army.Unit(); - NewUnit.Name = SaveLua.Army.Unit.GetFreeName("UNIT_"); - NewUnit.type = Data.Units[i].ID; - NewUnit.orders = Data.Units[i].orders; - NewUnit.platoon = Data.Units[i].platoon; - - if (!ScmapEditor.Current.Teren.terrainData.bounds.Contains(ScmapEditor.Current.Teren.transform.InverseTransformPoint(Data.Units[i].pos))) - { - Vector3 Offset = ScmapEditor.Current.Teren.transform.TransformPoint(ScmapEditor.Current.Teren.terrainData.bounds.center) - Data.Center; - Offset.y = 0; - Data.Units[i].pos += Offset; - } + FirstSelected.Refresh(); - NewUnit.Position = ScmapEditor.WorldPosToScmap(Data.Units[i].pos); - NewUnit.Orientation = Data.Units[i].rot.eulerAngles * Mathf.Deg2Rad; + GoToSelection(); - FirstSelected.Source.AddUnit(NewUnit); - NewUnit.Instantiate(); + SelectionManager.Current.SelectObjects(CreatedUnits); - SnapAction(NewUnit.Instance.transform, NewUnit.Instance.gameObject); - CreatedUnits.Add(NewUnit.Instance.gameObject); + GenericInfoPopup.ShowInfo("Imported " + CreatedUnits.Length + " units."); } + } + #endregion - FirstSelected.Refresh(); + #region Copy/Paste - GoToSelection(); + UnitsStorage CopyData = new UnitsStorage(); - SelectionManager.Current.SelectObjects(CreatedUnits.ToArray()); + void CopyAction() + { + Debug.Log("Copy"); + if (gameObject.activeSelf) + { + CopyData = GetUnitsStorage(); + } + } + + void PasteAction() + { + Debug.Log("Paste"); + if (gameObject.activeSelf && CopyData != null) + { + if (FirstSelected == null) + { + ShowGroupError(); + return; + } + Undo.RegisterUndo(new UndoHistory.HistoryUnitsRemove(), new UndoHistory.HistoryUnitsRemove.UnitsRemoveParam(new SaveLua.Army.UnitsGroup[] { FirstSelected.Source })); + + GameObject[] CreatedUnits = ReadUnitsStorage(CopyData); - GenericInfoPopup.ShowInfo("Imported " + CreatedUnits.Count + " units."); + if (CreatedUnits.Length > 0) + { + FirstSelected.Refresh(); + GoToSelection(); + SelectionManager.Current.SelectObjects(CreatedUnits); + GenericInfoPopup.ShowInfo("Pasted " + CreatedUnits.Length + " units."); + } + } } + #endregion } }