From c8d26ea555dd0a248693d336b7fc92ea232f2e7d Mon Sep 17 00:00:00 2001 From: Felix Date: Mon, 4 Jan 2016 18:35:21 -0800 Subject: [PATCH 1/5] Holiday break updates --- .DS_Store | Bin 6148 -> 6148 bytes Core/Game/Agents/AgentController.cs | 10 ++--- Core/Game/Managers/LockstepManager.cs | 1 + Core/Game/Player/Commands/Command.cs | 10 +++-- .../Raycast/Test/RaycastTestScene.unity | Bin 30508 -> 21949 bytes Core/Utility/MessageSystem/Editor.meta | 9 +++++ Database/Editor/EditorLSDatabase.cs | 13 +++---- Database/Scripts/DefaultLSDatabase.cs | 9 +++-- Example/.DS_Store | Bin 6148 -> 6148 bytes .../ExampleDatabase/Example_Database.asset | Bin 4616 -> 1315 bytes Example/ExampleScene.unity | Bin 20696 -> 14540 bytes Example/ExampleSpawner.cs | 36 ++++++++++++++++++ Example/ExampleSpawner.cs.meta | 12 ++++++ Example/Manager.prefab | Bin 5572 -> 1918 bytes Example/TestAgent.prefab | Bin 16456 -> 11046 bytes Integration/Editor/Database.meta | 9 +++++ Integration/Editor/untitled folder.meta | 9 +++++ .../DefaultLockstepFrameworkSettings.asset | Bin 4208 -> 466 bytes 18 files changed, 99 insertions(+), 19 deletions(-) create mode 100644 Core/Utility/MessageSystem/Editor.meta create mode 100644 Example/ExampleSpawner.cs create mode 100644 Example/ExampleSpawner.cs.meta create mode 100644 Integration/Editor/Database.meta create mode 100644 Integration/Editor/untitled folder.meta diff --git a/.DS_Store b/.DS_Store index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..a679ea481574ca317ecaab86dc9e865cdd394e51 100644 GIT binary patch delta 117 zcmZoMXfc=|&e%3FQEZ}~q9`K+0|O8XFfbG_%22_O z$dHRHnV+*UF_9f4znPnZhl8eKJh@*W_At%4o20D8^1G8<`+@q1WGX^ TfYeMj;Zfe4AhLvcVgm~RE=&+7 diff --git a/Core/Game/Agents/AgentController.cs b/Core/Game/Agents/AgentController.cs index 744e9a44..958df8d5 100644 --- a/Core/Game/Agents/AgentController.cs +++ b/Core/Game/Agents/AgentController.cs @@ -293,17 +293,15 @@ public void Execute(Command com) public static Command GenerateSpawnCommand(AgentController cont, string agentCode, int count, Vector2d position) { - //Temporarily disabled - //TODO: reimplement with BehaviourHelper system - /* - Command com = new Command(InputCode.Spawn); + Command com = new Command (InputCodeManager.GetCodeID ("Spawn")); com.ControllerID = cont.ControllerID; com.Position = position; + Debug.Log (com.HasPosition); + com.Target = (ushort)AgentController.GetAgentCodeIndex(agentCode); com.Count = count; return com; - */ - throw new System.NotImplementedException(); + } public LSAgent CreateAgent( diff --git a/Core/Game/Managers/LockstepManager.cs b/Core/Game/Managers/LockstepManager.cs index b021233c..b8be2352 100644 --- a/Core/Game/Managers/LockstepManager.cs +++ b/Core/Game/Managers/LockstepManager.cs @@ -77,6 +77,7 @@ internal static void Setup() DefaultMessageRaiser.EarlySetup(); LSDatabaseManager.Setup(); + Command.Setup (); UnityInstance = GameObject.CreatePrimitive(PrimitiveType.Quad).AddComponent(); GameObject.Destroy(UnityInstance.GetComponent()); diff --git a/Core/Game/Player/Commands/Command.cs b/Core/Game/Player/Commands/Command.cs index d71cb6b9..566da764 100644 --- a/Core/Game/Player/Commands/Command.cs +++ b/Core/Game/Player/Commands/Command.cs @@ -1,12 +1,12 @@ using System; using System.Collections.Generic; - +using UnityEngine; namespace Lockstep { public partial class Command { - static Command () { + public static void Setup () { RegisterDefaults (); RegisterBackwards (); } @@ -116,7 +116,11 @@ public void Add(TData item) where TData : ICommandData public TData GetData (int index = 0) where TData : ICommandData { - return (TData)this.ContainedData [RegisteredData [typeof(TData)]] [index]; + TData item; + if (TryGetData (out item, index)) { + return item; + } + return default(TData); } public bool TryGetData (out TData data, int index = 0) where TData : ICommandData { diff --git a/Core/Simulation/Physics/Raycast/Test/RaycastTestScene.unity b/Core/Simulation/Physics/Raycast/Test/RaycastTestScene.unity index 3794a0ee964c9c298b6d5e5c32d79c9f62c3e101..2643e319910bd4ddcdec4a1f69ad8aa235f1fe3d 100644 GIT binary patch literal 21949 zcmeHPS##USwSMQXKpx_{sj^sT?9iJQ+oP0at3-K{sZ>hU0GcAML4X$oWouIRzvnx> zVBuofmK-upG&MBY-2hIXeQW&jx0B1a78|qCA8$_HSbtdk!D{&3@v6+52R9q1)%>Mn zGj=>WIy$0RC$?U&(Ige6n24sy%e&?A$g<|Q@00%(Y4b~-iPr_kpk>S9t6wMQyy3@| z`K8t^PwJXK99w_;yBWW#>V_9<yHgZWO>SN2tt-A4F zszLyWv7?3)o_?J2RNTyJv7A*!c5E@*HoIcBXT5Mn*P_IozG7cXQRlqKe;3)Wq9*u` ztw3(%b#-TUj<07`Q30@j;D3AUzqDwM{!R41KnweSbKPZ?0btksJQw8>G@z9>lY?*b zQt%qLoiw~|Ffkl`Rbo#r_C(Y;nJ2j@o5{zA9t=!EfKNOhpWV~->R11_;!RceuCT|9 zc^Yo!7|5CHZn^qRU9HM&aIx)$`eNI|C34%gi`#5G`l4*ie${3*ND3)xPuNUSeZJ(4 zL_W|u%?ojHer!3QB>wQIRSq0X-6#-tY!Srsc<29i6Ggtxo& z6ckGZWL0gio7f=7*=pHT^KQYGjjr&B{_eHHV18)5@J4U*yIC{mi>C>pyN?{HSl7bovueO^>0@T1flJ<@FJir0KDApGFhKA#N$ zqnkj%E0t_W^Exki@rE}bOn2Mf;5CPqT+uUo8|rv{a8H6(!vyHbw4E%M0+$X!0$OoH zQ0eUI!-plm!^UBVj7Y?R^}-*$mdNS^oxK;B){{HrG7MS7e;W z$}Gx3Lo`JRIW#FMQjuP7)mf3xr3P0dFGO}H&g*JnuGTEVKmU0JLZ)@KTy|7flRQmV zHT3sY0ZU9$(2^rBuf-j-)JZL18x$a^D2fSeEJ4cx`4=i);pGZ~)=f*AXml!XqfZTk zbvQ1rZ4+=FVAabv2z@2jkjAXRX6uZwg`$MN`7Lpk;&l8x zvb^4f8cgPq2|2P{cgvis<^q4qoHT4lmb2|T>2DlaFzZ_`lqP1^q^}IxTmE3gXny++ zXgs#gR*A6w$N7`o*A0h%QcKDHP{NhG6PX;pNXZ8E=|Wi0L>t@`?oE@YN{bDA$&2L) zEZ#ky$XZciaNG>O?9pXaR;Oad@AGO^|6t0_Z+lGCZLH-ng)XJD;VUS+q;|F8B~Q{i zU-Xp-W4?3)jFaHI@TG)^rXu7#ntDzgdO;c_wr~=U1>86Zk}V8fB;M5%&kDX=USwe7 ze3}#eFn6CXAx2jf+)U{o{Npnu?WIL7=S%B%e9{iuX?(XVS|PvCB7A}BF$+#t)2U&M z>xxJSdT(45_`XY?^6kASs+9cOjU{wnvT;{cUN%rwGDLUUcEy*?n>x?B_1%cM&Wv=|cOz!a?V`@BTKVGyAAd-3=hpd`xR`NLne_Ey zc~j@$d~I%e+znrGs*NXn(SRH>8ZtW6jJ0Z-ZZ@A+_v98R9=cseH+)fp_WH)VT=fDVLmt0DaO)Fly?F9Ht}TDR3CmFxQohBK|pJ!PRctHg(#NDF;MPy4(GQMJRbH)N+E@d#Ha1(`&#A> z+Dt&;cg*UHPOHxdXbU7Y4ue+>&-DaeQ*BM4%=cFv}n6M(RQV1zs?J~<`4v%G))gt@a=79mt1}!=+;~9`5E4*)4YeU(V<@6 zB-cypQ%lpKnwM*%v5k~WYxa-qaiHA@xmX9k!~{qMwLBsX4BXfmA`rO8Z7T1zjp8^zpleOpZ9@A2MllcGvLUIE+F z9QJ}DX;SWL_;v9hM@ZGFk%@}STRq3D7p@;N&yBt4u%jUjrY{xUdT?U)5bq35Cj4I1 zQcCv_nY7>?0&g2&qGydvGLd>5|JiJcglph?@idMj9>$4dBkK!KNM&2UB{I1cU83x? z%5r!$px}{(@6bQ3W--35FrOGY{Kbi0?2DU7ieyW6$y2zzGgKW23W)XC&I$dmy)tpUpsy>dN0*J?#v& z*{Qp4L%p`qCmU)Hp+pfpa-TKBJL2k$>S@hZ)<;gH}U%(Q_< z^Xq|_X#-WbcQb7uG5C3IGi~l4?b}QnK=ekRXr_Y`thfRUL5qDU28(G?xtw z@0QY#YGu8VO_Hi$*z4*uqR+)U`WTji|OrRe>^#bm0}$ zq8gn7L3INS8`X{oE?LHFJ2%b9Y0gohMAAz2E+JQf3OO&#uxVI(hhAFrA(d3JAFE>6 zMxUlO%;z=#L`|NibST?Ed+ex}sj7C@(1*Bdh1wx{{P^-C5&jF!S!hGdso4RI9bO!S zPE5dey>APd%~wTI)vvgLZB?CaBR_e$8q-);NT&v?jiO&aiD`Ic?@HGI(pQab`c@UW z#-1HHER0oM3WY1j_52_Xk#wg1l`*qXWnn>xmS0rB>~R$Oo)g%{PakwV$U8z6dq{C2 zgwnV8q487K#e^!D9S5Er+Gq*swG~M!stoi-&(PERBesbCe_ z9yE5gO`1fgGiX6G_tlxuh;6%ccPjLf=cRRqcC?yHr1gqDG}W8=F^y;uV&HcB_UL4l z<<(m>z2cn2zN+CZM{U%5bS8v3RDNv{KiYTa+@k=;P7hvmXY9Gt?@@Riy9cj3QcSoX z7r>A?*jD}9q6oA_Ea=3EI?tm#fm58L*>ci@#SZg>$Q<`@Z59VMG^uJB4n5zd(h*vF zshEVRF!HoBt*o;=N|TFEbP5RVR?Q>kQg{6I3VWY)M>>SxvSy|W9lz+zjFlGo!de(> zPo3}6wNW~fLBqKyGOL=RIa0u61T+SaX4PHI7qdK7E?ZBLi1vSP?_v9Ju zzj7&H{Hf00-u8yqccR&OH+SKKDBawZRXljR@z@todjr+ zLMM-?&Z-g>bTp64?tOJPH8T+l^yI7NQP9;m$)K|!z7MU zX8VaJGOQaM2Hbg=0|y8_FZQEInyoDc^Ks8vZ&MjQ)E9=XvzgT`1ZxL042pF5VaKeg zTnrC)m}^ZcW&5n8_j-GkA&rvKowM3!-wu_h&slEC(p>Tqr;X}8h_~uIG?)nvp*_ps z+STFdAWMUOUU{l-BMN-<FZXmSwEU!mO$1`2sofb^b=Deu@i@7 zQ=i3A7I?zti4#Y06edmJ0!MfP+z6i}5N@0b9ws*8=Wp$n-HJjSv-)XODo^5o zJAUBDe9FDl@nSddS(vzP>IBS(6Z@?ww5$eJ3rC0=c@mPU2e4i=rkjstXFU$E(_1&% z7T~sthV@#Qwvq=ORzEFyf+P!E!9p?3aMpp_JYj*$vxH|X%EUDN9`a0P z6~)}Z^IJiuIaOUq{WeD@>DN2BAgZ`Q$HolmWfo4Gch5x~uEe_y=tVD2$;?9Sd7)30 zg|Cb=03LX%|KgFaj5T(hV%+7h5F(Izdg?Jo9hd*RoJdr={;5tR5*bb4Zag_keD))K z(mgnPx;Css|K6cU$$e6TnOAqn5s1OyH|6}GuJ}UD(z5Ei1S#D?&60pdx7!o$ zFu%otR=ns1FSc0V%oHUfwIowc#>nxrqz|cB=zP5h|48xOmVN9K`jInyF})|K?fgU~ z)U#vy>*pt*|D=XvD1+=d>R(-sWTbT47fKylGAJs2jFd56QIPiDAAsbwIp_|KMrhfy zv{FkE&-E{p!a{NZUPhw4xBLkNC-uF+>rQaM{Xu2pbw1aK==if1n0sEVz_uWX9;oE2 z(eOeU^8Lkf0dtgwSIS|a6TCMBmyF$AOV%3duDhH@)#IIOpIgC%w?vfr+et`0fy+N zqZ<=UjPG4vi4e2v8nSBC#K&fZM6+u)CaXzYjhm>+YO)$l6pcxYEBpU->fEk-nSsG| zzc2eOg*AQauezsBRh?JWz1d2vQee*wmcFXl=ee{#dKY(_NkQ2xUBuwSQ z##C_IE);P^JYoK}##HV^-C#g$Cz*eZc^vo%d=5fp+XSwj#+`?u%=R@NJ{5G1LV1|0 zllBR7@gP%q$k7?%wfE@^^>Clg0U@3+GeBp(qr*PZeeg5f!+kmjhIqnk0iPcO9ggrI zpXO#-xpoK2Loq{&%;QI3GVlc)eGq?1pRHG!}&jic*V9)oQU~k zCO(RIig=Bk=lA0t@-v#a%{68@+Mb8Z@|X}$7}B5a=#M2{;XQ*Q^baMTA|9pB_3VrO z;UO;bHqn)jz^7^CJqgR_@hFl{$|VJW_*U>Z%i-^f;c17z-{DP7<>G1c+Oy?Cao)yq zkS}Em`C8M}GC!LO8XIuYlqq-OqPerM!7L6I6tnFsd%FW%E)23Aon^DM&>l2rHwESo zn8j@uJ#fi`BM<7Dae1-(xk-QVo_`rJWIBlr|){IOGQ`L&7Ri#!WtQHM2zBQpW7d&A|=PYE>ITBg4 zE=p${;J)b4N)sQb)|G=&xhYdDXUkB_l3}r~(4GxSLSe$nVkTc&Qz&-Tno=3zFQ&&@mU%)1ue@XyVyvqp@(y8Z3% z{bla#t@r=t;$y(lxnv7@zpCz6)&GgAQpKpQR54FgBfF>S?k1{Y)i|!kU?&%K@8*&ro#<|nu1)FF1ThZfuI*@Knu39< zc1vfF>kf*lymdimW_`BMQ(S0aDtdQjL%tqcGIyEoD)i*b<}J)EyYkcRukXD1mu-uB zM=d?})Y)C^^hX)gyHU4PbSz-Bwu3R524I4`6m`MV2SZ#!vM-{{`J~Me zI??$&HpHXz$+eL7HReuSYe+UJ#H0RVvWNR2*>MgZsNMFWEbQNV8}n-lrX{F`UXe}x z;%2s~HT-K z@uM*!Pq#N@zjfJP|MZn{*B&|co2T7#Yt2EQe`-?GcjsJldei4Fd}QV~PNA5d!l5JY z5BtPv?Kg{*hp3tj#4K{&tU5xLY?y&#x`C=wOKYysww5Q;YqI(FY`()9gE4cDzU(9a zdRXT_O*vrnrZMv#95ZtB;n#0IYShWcZ~wrIPrUNbQuMSIqPt&u^%2hgM>2`jJCj~Y zE;k%>W>$LPz4&N~PU2KxD0+`%1fSz@I(0Un{UDvW$fQ%j>)74E&d{acHF72b%fKFX;4PwX-ox0$% z8B>1f)O}p}p;H%J<}HgN`5|wDM}q)5b-|6xe@Z)U+VB_F`U5==}^A3J+0*}DAIPFM0}yh5AoX^KAkv(fO7RT0>%4K zBpn8fN{4c?LyG3)7|sn3#Kz2w;ZHdH!ye9lpFx@Y%p&gkCH|trXL~sLc^zf)!w5q8 z;o1!X5w0WGU-0NUGI$m|x{h22#r<`x4e{tYQqQEl;JS{f5KmbB9RYqg4`~k{3+#i) z46^G&Jo?b59=HoeBSCgUh$jr`oZ{%r>xa(#u)XLz^_KiB2yv1BWuQYnT8J#;irNh< zNd(vNE(&p>gNKin&gmf@rL#DOE1e|{AE?(3gVdI8jbd$-TGW`;MYD);P0RWKEW=dr~ie9}WoA(NtjbY&|zviqZsA(y6X7J#;C0klq z%yx7HMbnbY^zx%KlUs9Uw!PdbmoC(9DQ4QUJzyo<)m2!ZY0U+uF}!MN&6I+sVzy8u zkKh*1=-TjDP6Ki~C;sEPaLk!p_|VR@=+J#|aiNVPc5%Kfg;70L%6xs?(0e{Ia^kH! zch(ipn>F^w6pt)2RqLxzGpK2W>VzV$#2oxzdDFx{3ltTkF^igm;TTrh8o8)BIMBn7 z!kZ)KVf0jwgF;;Pb~ga$Tv3&U&R{bE?GJ?MB6e_yNB7Wt(?r@w_t1RPL~wbdhvt^_ z**8-H|NJ*lMiHzKkB-Z}X_6uy9oHB%=eiSLjypLnmdA#;(5IQ?y7MfyFZwnpPwh_s za5V3WKEoQp6XpTT56ukchnqkqhC4Ltq|5O#tdaInv-SQEm-*qN5VmJnqx31Cui*_E z;zuGIlR{m>EC&5^P-44r?sK5#rmLmC(A8bY26#e4IX=IF(KCgn1tGpF)we zt+MseuT?e=*M6yNK7H+%%I4E=LXq^TY<_#jJmkkJTOahP6n=Z9Pi0g3Gu_K>UHo>C@SyVQ~{evtjo8SpUI-Mw!jwoBguH)0Ds^oMw zM7h2`on(kh?70qQ&d+#@4}512MWy=-9UcROO=bfXIN}yvxfyK(RMvN9bM3`|+B_ep z0&wbGEh`Fz^0Hz(uDN)RzPxMxgU6-b_r{#qXI6>~k7Kx9!&|GV7edDY*7lkv&`m(kiltmt1?R$R6J7aI44`m-i|w4!4Tz z;g>s{ip<2d*^2qO3D+F2^_ma>;){X*y=~*(L`zlM-|yN}k(rdvBe*6VDl!x20drsZ zF|LVootZcfl-pn6nz$%(%F>}+z2I;vG85_l5uXP`7r3@bWG2$_<#4>k1o!3n=nxmh zKN57JfPp{Yl9#@x;5jH z(Js?L^4e5nUHh}kv_bvZWy&MvCT^G6-@e#or4zTyN@t*US?LT%|7k0&VwaVUZK$(Fa!T4W;GjL_eA)oZwuuHDHo&rYG~l3JX5ubn zo)>V~0L$VMaOk+~ZpPuX7do!$ZbqKuor^Z)hjy9cfZd6_`9ZrZc$6R7WyL8E+!b+s zDN}+=K+}!#2;}N+M(mpMNxSU&wE>Ot$pA~~aQ-iJWowsHtP{I-6>#>ec9}Q>sjmQI zzrJ0jJ=K22E|X4l-6g;h`diWdUPnKPPi&BoWqtp}mNmet;!iqU>~a;SjpumSex9Pu9mcGUd3$G9rrXvBrJ%SzIAaz2Y3#@siuRlfe9SKt>pSsccSBGX!fb$D zZLyrmmlrgmgmbQJS5KF1Wxt2f)spTh7tUCPGcVY2w6pd&#M1c=gv@rvlm)zD4zGxj zm*^69M*%jYM|cvuN48%JaexHa6!QAU&R1s_hiyClnT5}9Yf6uyfPSh~e5Kj@08iv8dk%(_`hJidVz-FRAkvC=!i#p%HRLt+ zt2N3`)sRQ|u>rQFBd6fXj}5Rbo-hoGHzSi539u{V#|E@pfpJ_k$`mJxd(*1shD@0u6t3J`3h81I(T9~$)$zW*lVopUs0BswZV4k4 zsj4+0P?uTjcilH$LL8UF7cFcpw~q=eEI@Hu5dp5rv;`|Wi?Be2T)W-k{`d>eeD9Oj zp0xSC8(-S~U)MePLoN!B_kH1?fwCqpdVf(21*5+xW<2UR$rOIl;G$5dD2V$K#VDP4 z6r*$o8pSA`cod^_4g_Cm$LVxj*CJD>I7Zn;ikDD2tn(kCC>;tvaaw(RGYzI{z&77X z5$~e}@e>RgbH}3-e=+S(%g_DLRagGv7ps2r5Us&_WNU5kNo%zfpEgxwvin;wGTq;T z9gVua7VJ3S`?6q4C%#}xXP^tFbm9x9bo>RQz&0ZHwO~pozF(_>z!;(P7`g8#2eA=+n!?O;z*2=@zI^0?-iwpfO;N)Gb z)$a7gT2*nSFUJ8@TWL=!{Ii1T8_T2z3I`vYFc#IQ;p~T{*2BKztGLm%|zy`Gf|=^$tA9c_iuu@ zO8rUn1l08<(Z>Vd7l~Fnafwzs1C?l{GaUV=?Wn{gDji><84sw$9fbD$0&=>iJzH3e zKnZSX;A?g^?!Nt^mSunU$Hy-!T|M;M@7;0tr#a&%kt#CNzRWne>~F@CsOxLSxtjYj z<4Pw!<4R|sGp=;vGp=;@Hsj%2>jT!1PK@-eCu+vO`O!yymwEhvwiANGPM|w^08`D; zFmblOE|+_iZ(1a4anODc?^!7NunIUepH|1lm&1}+O|d*lU|a=e|A100p*_I$+N)gJ z+4k@cIU07hEiN0$i4NzAiffbuL`oF<93I2xI-IlZw{LPdrf_UEw)EL35?^S#rElIzqHssuKm(t`?&VY zb@TiEG|KEZZn2ZV*e@-%Pe=P@B;e!PuN)L4Q77`C{mMZBaape$9ew`*m-~U+9c~W_ zQtTsP4^sXSIM>7;6kzd5pY4C(+K^ zUj>bO9i3^UgA^a{i5A;^yy`JzqvLIi<`?*k8h_(Q&4BFjsjY0_Pd4Bc6z|<01Vd!rx}FT)F^{4CF?ZOs5#fgR=jb_BK(@88QR5df z9{T|aoF8X$1w4BX@*Vcf8fWUoAYPuI!LLbl2LTyo`|8Pbb9bR!Uns22%DMNNOivC+ z?0VkfxM&Ds_==!Z$o1Ga;&~vh&FgT4FQ+pbl8`)mdHuz3^X24I`mL!ODRfcZ}9;8rbZtC>qFkD zjlSpNJkpZWL;26t8Qrq|NMzq5&vLl+P}akW#XiO1q~*6i&EfP=f{R71bvQi~6ZzZ< zJ{RGd{mP!Aim!0E-BWm$`5cGKo?ap-bOqWaj`r)5A;yJMfyt=*)Q*5Vtev) z1+IzHLoq3SBd&?lLoq3SGp>nOJ(SS7!{J;{CXV+GtjRZV%{7T1WwRaWj6;T)Tl(|} zDnHgkSzPvj-*N4d_|%B&QC$8Mne@jaGwD1ieR`u~Wac zhuVVnGXH#^ll@L1aZ|;YJKTCG;MVXAICh5lian~V8akN7Ox_+*)4IyZFx%70+I^;+ zjC)S0dQ={NCyBU0Y`Q-0*!x_tNKM!uN0IqUM|8OflV?`QG>K97FRb zpV(P<)w7+iXD>PHrR!gxwT{N|tfOx6G9*;!}`+_{+?qkRFaZ20Z3cHQ!um*+hH!`dOgzU!&+^j)Vz7P;I^6vuYC z#Fb2If8xkkhSS68P;urm5I@@C6i1U1AH^NO9Aw4;yhrHEv}&v|ggBB;_i9|Tt@5XM z-r*ESCdFys*q$QKM4bFzhil>#M<(JFm%Hq>D8G;Yi^Hurrl?j4^Bk~0A#)rQ4O6Lv z{qp+`q;F$4Q^m(Sd?edDobz*%!>Q6fo_4quM~{yBMiED$Pdd5_6mhKf%kTe@9}!2v z&j)r5GI4M;laqa@nx#XJZV{OjcH-Y0nd%B?f6MxL%Hg-#qj;Qf7 zz{!uqZdLqu4wu-Cc)}bEVfr94`IOkL+Fto&%%uGId@^?PAG6N}9rim8nMr-A=js?faU6U(pa86j;lx%rHW2CKD5J#-9X7T}g5znrd^_07N%8I6QtwDRCu23j(r@AuW zBkfGCzCa^@omutiT33trU1iGwyuD*+UY_5|;6uIkkT*~hnBN;IXS?JHJvMTsaE$W9 z5gx;O^KKQ97>E5t0Jk@lZ;o&f_N^-S?GbF5mqnkzH)Y!GS5+ATb#)AN8>xJvd?Used=0YWo^8q|PRqQ<@8# zDiqDWA4V{Q=e_iHMETI9$wW6_1+JDz08o z%xM)bIXYra1*e*C1`f>?bDFBQzrnSqclY_Z)#28hIzCC~PT-_NRX3JS!h8#tKXRCu zQ??N^@^j#Wk!enOA91Sxi?}9_b}Nie_f>~b_FcKI2d__uAVTR#885Nq%g%M$YbWCN zx;asuU&GtqmnJ?~FcWV-p%7wK}zD2}oW;zeel z%;jNLoXbP6&*h;w>ay|O6b8PeZ-dPW>uM4wf-`2~HrTYdyxXBaR!dq!XE0yRw(q8} zJ-xf|ImGmW&$TF%Pl}_oA8Ml$<&)y5xX&l=5qyaKN>dSK(zn58g>^$Cd|Gi#5kJ7v zS3Xr7i7&^P&O;_$s=81A6DX5Dy}R%qrBCmkNbOFa>mzic^y%G|KIh?6D058W-B}l% z2l4KL`}1&kNN13Jm*^Ul$tS(L(2uScy}RJi^`duIocwSe$Pc}{^2umM*G0TL>*OnF zDnH`giOVL2W`%U<-Gz>r38lm6R&jq^$q<)K!@aINo}Vdvi=&A1)mC`l?3!$wzSbKn zhTm?4C$oCJn?~X_437f7%n4(G?@#vnsKFUFUQ9OKuFk%~ygrlb2~5HMs2xsYB~+jX z3h)KZ0Iy`buY1|oifr$~Fq$-$G3pPs~HJK@e>79kohisO*Q4RlL{m4eteGNE1kfm<4tDA<7hoOSfMD1c4M8VDvLE)>+s=^;Zj$(5tBeZ`9oVpHW8jac7i}y6uk7klql{UJI{xnlif)HKBKt!+ zMRP6c9)hi4bn`+D<`XhvCkY?V_TJ7WR`c{4%|d*zcTIbxZOFA=lS{pZDumY%;qaPW zY8y-&{znO^Uw!_!w_LL9$_4-Qjc4y1i}MAhpMT}nm!3Fr$>zIf&%SnY^RqVz`tssM ziw;?K`l_pM+Pvw$L8QBa zXz4ju+}&3D-P`Wz7WDq?>PzPa$D6h52rO9Pmi)pUOwi~ zg^Ra;Z`)7K{z0MFjWz6`&x4JIQHtCY}8r;Mz`J^h_R<6f%}R>ryEN_z9C@Mjcy4D!8P+ z3LSgV@1JTr?USFlUn)|@B*P$vwj<3HmZ9$Zk353$MpA0q zS0=}?NP~ERdS=1&0lT-3BYIaH-*eetmva|O>7rWsyqN(L5-CTiS4%p_ zZ0BFI{7#cU50o|b1~+ErPVAc^>#H1Tn+m@}NgQ*+yb@!O$?De9tpMq8?0MA6+#+K%e@kd6mcVq552LS<+EkynZHKpm> zf=IJI3d&Eksxp^8VBya)x0+BE2Vh zkO(+>cf91wgYJV=9(2#7@}T=Gl?UC6ktTJAueiM%x~coWKNmSrej;=C4&*@T?5iB; zeUbiQ2QK?|u!GpTIg|0(zg;+hjrNj!JFI)xoV!Q&xh!JKV;bzUB%Bgwa!LEh1lYT= z?z-2u>(0(1W76>@)5g4loJ^BvvBC6hi{~&d#OGe)K;9!ZkTf+ZeJ%I@seHbgc&v8B z^zH{LHP6m@>HX)G^#KO%a{`>9dCRRqeFy(YbGD()~R5&rG`aKVOPQ z&k2^hvYsih$W!GdnQT7keuIJgN0wcYO?FEI;g>h*xyGMkd-C+1hZ<^cxc>Uu*LLo# z-MVFq+gFiuS*z=>yAHCmslk};I--;@)NQA{FbP)uOPePFWiq{b_T3)6YMZ{Ube>)x zd~zs%JHzWO=#!~``H}iP|K)g9e)Oz{cW}L{|5uWCM{o6nJ#XTenKXxBI_&HFYB}%IoZD)9|;N_I6({nsS`c zyY}ASCfq}tef-oJ(`GZx{4h$@)K9l$Qo7 S_f59f{6n6%bo@Tt>isug_Gr5R diff --git a/Core/Utility/MessageSystem/Editor.meta b/Core/Utility/MessageSystem/Editor.meta new file mode 100644 index 00000000..15e5a0d2 --- /dev/null +++ b/Core/Utility/MessageSystem/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 25786b64018524328ac069428e4b67dc +folderAsset: yes +timeCreated: 1449883316 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Database/Editor/EditorLSDatabase.cs b/Database/Editor/EditorLSDatabase.cs index eab12782..7ef3aceb 100644 --- a/Database/Editor/EditorLSDatabase.cs +++ b/Database/Editor/EditorLSDatabase.cs @@ -75,7 +75,6 @@ private void InitializeData() } } - public bool IsValid { get; private set; } public LSDatabase Database { get; private set; } @@ -95,20 +94,20 @@ public void Initialize(EditorLSDatabaseWindow window, LSDatabase database, out b Database = database; InitializeData(); - IsValid = true; + bool isValid = true; for (int i = 0; i < DataItemInfos.Count; i++) { DataItemInfo info = DataItemInfos [i]; - bool isValid; - CreateDataHelper(info, out isValid); - if (!isValid) + bool bufferValid; + CreateDataHelper(info, out bufferValid); + if (!bufferValid) { Debug.LogError("Database does not match database type described by the database editor. Make sure Lockstep_Database.asset is the correct database type."); - IsValid = false; + isValid = false; break; } } - valid = IsValid; + valid = isValid; } public void RegisterData(Type targetType, string dataName, string dataFieldName, params SortInfo[] sorts) diff --git a/Database/Scripts/DefaultLSDatabase.cs b/Database/Scripts/DefaultLSDatabase.cs index d2342f74..ae4ea050 100644 --- a/Database/Scripts/DefaultLSDatabase.cs +++ b/Database/Scripts/DefaultLSDatabase.cs @@ -3,7 +3,9 @@ namespace Lockstep.Data { + //PROTECTED NOT PRIVATE... private dun serialize in derived class [System.Serializable] + public class DefaultLSDatabase : LSDatabase { #region Agents @@ -22,7 +24,7 @@ public class DefaultLSDatabase : LSDatabase "OrderBuildingsFirst" )] - + protected AgentInterfacer[] _agentData; @@ -34,7 +36,7 @@ protected AgentInterfacer[] #region Input [SerializeField] [RegisterData ("Input")] - private InputDataItem[] _inputData = new InputDataItem[] { + protected InputDataItem[] _inputData = new InputDataItem[] { new InputDataItem("Special1", KeyCode.Q), new InputDataItem("Special2", KeyCode.W), new InputDataItem("Special3", KeyCode.E), @@ -46,7 +48,8 @@ protected AgentInterfacer[] new InputDataItem("Item1", KeyCode.Z), new InputDataItem("Item2",KeyCode.X), new InputDataItem("Item3",KeyCode.C), - new InputDataItem("Item4",KeyCode.V) + new InputDataItem("Item4",KeyCode.V), + new InputDataItem("Spawn",KeyCode.None) }; public InputDataItem[] InputData {get {return _inputData;}} #endregion diff --git a/Example/.DS_Store b/Example/.DS_Store index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..fd373bcb9a251df81a49cdcdd723a7af81ff1873 100644 GIT binary patch delta 133 zcmZoMXfc=|&e%3FQEZ}~q9`K+0|O8XFfbG_f#j5Qgvkip?QC0rD=kDZWucDN<;ol1o)pXm)oD+uFO9y+lP-|9f{#QrRMv zDkU5&cxLAHJ0DzsnQv|xAM?TW{d~o)j#tdXK08|DPZK>>t{jSp^K390jVQ`_%-)1Y zM4!RNS@#YP@L=4r&IXK?yHD~vD*wS~d|$x6$yn6lyBc$lcTl7C=ah{7%1wdmn~?Im zle4xSYYW9?d<7-`t9EHY7N|4ETdAcs-qjZ_wyHLj?RHxO!Jvcl6V?L3D?u7mISr5GqyTjdfQg03=}lmzkVN?c!o`$VR4r&T#Y?3 z0zD-HJsAQ$jkU+Jr$L~nL7=BWfHcC$99?NRzjh7m>o=m9=K*#JNK=GA!o{vO?t!)( zYW{ys=XKJ`+d@T`@fq`s-8%K7@mP&Xb;#yTgQYA^qs8_Bb#;DCVM2yo({dJ0hnqWN rV{=!R;KPxuz#r(qdL!8?u&?ivRA20~x0tPWkBz?OJW2J%KBK`OQyGpO literal 4616 zcmeH~OKcle6o$_vcG5!2BM@F~X@LSQB%x_iUM(eQnkFVG4RuO+1v7T88@GOGJXDPY zk{1ZNtJEa|i4_ka1focQ*dWA$9TF03kPvKGfV$$bK!Wi9ckJ6aW!ybdM!LRdzB%*H zx#!%ucPz3lBht45C;;{U)va;fN0O(h?2McFEIse+Z-Cv#CQ0!WB z=GXMew@+t&{%CO5Py5WK-@mEBZvxKr@Aag4pGcGU;S?6RCvSF3^Fv%q0nsmN{1y2Y zd>#5OH2Qk5e!!jA;hg^6F+K#H%{XV&kydoa%U#m^vZa%b`Nws7Vmz+X>$oSQ&^g)C z;WNe);#nKxah=N?_v8)4xd0uG@NzV7JQ^GGFayrmIp%gAmhjwPTF+e%&g0@dTwz(n z+cOCpKRn;laG;i+dOZ;J&dQ1+_r9c48F(Fcz%uJo=|_J zrGG7XllOEf{eJQ>a;?vLCh1@AxF_3S-;c&PZ$K}n|Eqta<68eFaukiv{kRoBbv8Kv zl#PD^=j0n5PpkMhfqT=`=~4N)ncV94sQhp~Mm*BTTV?gPppW9$`nLcl>EBA8pnsd= zDR~_BA{yt;R1=o0lb2whMPoki zLZ4KxyB*i{8X&jh)%6;5{<>a6j_Z8h1D=%69pnl5#Cy=yuhCeq{pgeGHR-sn*8%c`dQCZhU9V}!b-nn0 zC(XA<$gRH4=ZxdJUb7wa4|dRh)ahvbLyqfu%~3z0URc{(aq2uDc3jsh+d*gE`D>jc zj(hSw?DJ@>7uT+&dL4CK*Xs%LgnB*c{B^yaa$MKzY4D_aJwu*QuLZ|-y`Jr$pX;Fi zoYT?u@*UUp%7Z7>tKj@~p1BW1@u%c3*z2*mGS7zmG@7LCe%IgPMaO&8es_#~n*P0N zzgr@=`RP^rUCHq%Kbu?n+*6|Z>inOeztz|KY1!%M{8SuI*?4w9KLu7rV}9o5!eGzj zVkxWzlcz#cZIo)&y;8{?D3wiSKa4p)T!Jxv%v8fnH8erdFPK1bKEZxJ^d(pID@JmQ zrcnq=^$-G)>eg&MD1~OP)hf7}#8@Oog1eqJ)w`tw#Q6PgOV+ov)Y)aZ#& z_@L-&T``#~7U6N>vT^4!o-dV4;j#)kLN@G)vfpUTFW1dsQ#6687BGfr1d=Q88o1=j zr3SKMBb=x$!lhI#)`E)9VNM}6NCh$~W52z}gxX^bzP&kh0-o_A8;&2B-?u$3i)^gS zZaezL%sa21`y5)+SU$n0F%IeQ*239lhzt2ExDX>dI zdp+P^%gIxIrCv5Uu1tBq!ClAttVKU>8lhc&2`@UhKz#Q~q{_b^SkWb0H-(a49*)^N zWA;eQ9!k9uD5M|qSNL&-1ev4_NU$Ur)@v!;m?E18@HWQ_XKRHMSZM1*bQst&-e{OgzPvm*kzMkG`h^&%&(TsVTk!2J2Gbo%iw>92;uzX- TWy2btq7SVFhf8QN2R!}-!^3!y diff --git a/Example/ExampleScene.unity b/Example/ExampleScene.unity index 30724348b0feaa778eed200f37eadc6bb5d54c4d..669c848210f88c9a86dc05ce18e6c961b10d8695 100644 GIT binary patch literal 14540 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 literal 20696 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 Z%27}8dq?OzWpVq*{JO3`$%Yd7{{^XdfS>>X diff --git a/Example/ExampleSpawner.cs b/Example/ExampleSpawner.cs new file mode 100644 index 00000000..4e2b44a1 --- /dev/null +++ b/Example/ExampleSpawner.cs @@ -0,0 +1,36 @@ +using UnityEngine; +using System.Collections; + +namespace Lockstep.Example +{ + public class ExampleSpawner : BehaviourHelper + { + public override ushort ListenInput { + get { + return InputCodeManager.GetCodeID("Spawn"); + } + } + /* + * Command com = new Command (InputCodeManager.GetCodeID ("Spawn")); + com.ControllerID = cont.ControllerID; + com.Position = position; + com.Target = (ushort)AgentController.GetAgentCodeIndex(agentCode); + com.Count = count; + return com; + */ + protected override void OnExecute (Command com) + { + Debug.Log (com.HasPosition + " After"); + byte conID = com.ControllerID; + Vector2d pos = com.Position; + ushort target = com.Target; + int count = com.Count; + + AgentController ac = AgentController.InstanceManagers [conID]; + string agentCode = AgentController.GetAgentCode (target); + for (int i = 0; i < count; i++) { + ac.CreateAgent (agentCode, pos); + } + } + } +} \ No newline at end of file diff --git a/Example/ExampleSpawner.cs.meta b/Example/ExampleSpawner.cs.meta new file mode 100644 index 00000000..0c94c609 --- /dev/null +++ b/Example/ExampleSpawner.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2b8e45aac0ed34738af48e82d20bce73 +timeCreated: 1451959915 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Example/Manager.prefab b/Example/Manager.prefab index 6ef81489737755633ddad222ca559df83b34df86..a4af0846567f693f8aa788e5e92dcb43c715d8fe 100644 GIT binary patch literal 1918 zcmc&#-*1~R5Ps*ca39*I5&@%4;Vnyl3@NlxXj)Cv6gl94C$KByq`%bvePGBC_8iv@E!(!0*F{I} zneVv1b%iT(v;09)8CnQc3-kL6&B$em^EyP1Hctgv;pG$y!ekSUURSgv(K&>?bz&kW ziD0-4cYfD#;0qrWR}(>TNnc2IM?_6I3z4snk9qaL8RS=m*vRiB@J~(y?^K<(k?T1f z5B&3oCqwP478CqTL|gJTbQYo*Gn^BlZ@9&IA_Zl6h~^CN$w{W|QL3uww{wj*F{z7p zITMK`O)oMkxp;?9RF6_gH*lfbV(g8Zh19N24Npkj zBpnyD%z#ZH`u1J7e~D$GhSwj%jB|M-GBekfzMcaFZbolSC?hk%AOwPRu00a}2ZS#e zUX~ZHr9=i!UT*@+xXgF=ez`S2{icv1mnNw3d8+7vraM zTEmGH9M0fGqp)?2Sgwe77HD%@C1@820$>Zp?STr{gDmJ(*MeqXHP$WplsvX;&`zhn zH;VtZ=6rWS8qRl0fH06k325BYOcn-0gn-5G{#Of_t&n40!W{IO4+Yd~Tq0j$K*|gJ z;B@E(3Kv!M1-L$v_<+;dT8$pcn^Zxv4II_zPq?v_!o->l#V+OJBl7BSE0il#=5 znyR;|Y2G^hsr8S+ShbQU`;1h4L!jyAjnevHe)s?}X#h62Rs~ap?N3zo_e%RHQqKn9ge=s)9K(Y&w?iIsl(vE3^MKK7=2=ow;cAc5kIbp zm$aQ{qYv#|VrqK|F^_lxik?LV1dgLqqEUZ+sEmw0hrUBq=OsoT+$^P+re6BqtlAd~+z z+~?!xdd|mx265er{7aj-r{08rZi7t!oQcM(b)TH2F~ME`oZZC5Kbs-bKj*aIznJ}b zE^wuK!SAUd%;avPcb>VAjAY3z>nmXvC+lakAWFkHTBGXsYzU`jH-AZEXNUUoBWyKAgx)A!L+ZOg)@OR^82OLcYkMTx@O}7r)uy3^o_%CZ;}v&BfOkoWUkI#)bcTA(C4M+dSjyU~_OgE`!bG zx8pL{T>cS=j|7`HC&-!ni8AHTvbWUk}+8dvJy z2klT?_NPYU%+C5&Ifu3gv8v{Uc*lviR?Vw` zG06B%9QgND)AF=dP0Qm}&A$s|%X1vY?Q<5+^0dueJK>s%dcU2L>9~Ft3^tIMcxB8wRrQ$SKO&$w0Qa zYiC|H#h(uuJqEJ%=MjwgI7E)iK;}jNGhko9Gsl&xNxV3&t(rDqt$!qtg=atbUjqmE zyV0-((8QkiwQK`9$3HRn1ugo&8=Uj@dPSf1FTmu(yrU!igK@l-d~_W|H-z^)|TD>(P_W5Bt8$j3m2 zKMSX~tDAUnKleB|3l{ee?Y~Cj-Qa0g`++@W?76lD-)r#YE%?(0zpjaU>RDhfqcMh7 zXk6Q=`QI@5D_ih)49@uGyxQ<@EA08u;5Rh&OZqF~GlL^vD$mjX(%`F(p?{OnxBKcl z=;Oa)LFP3SM!{$hAzdS3|NCmu@2A;V&9B7wr^x-IK{>$5EeD4EEJ#9siZ91@PNYFL z7*)b@pkx-%=f!br%gb_dS>lh$Oc`lxd0vyALI0Wl6 zuRbdqKnf5-hVdVGcK5)*tjo=Gf&@&XKZsNU$w%+e6Rr+`E`A6X#GMy(Dhm4Qm^b+ zD!GKeopGj^56Hv%EOvINU9fWpWZJoixNe>LU}f#p_1WOAo$Mp}9r~*?flPj$S%kl{ zU?=Odug}Hx%IkBxUKg9c^RHU@mB6kG>$CNbyDqHH zg3Gz@dB~iXTc24cEl*ybrH_@vaZj) zI4>u`q(3nnSHj7#EN5}#rlPnd@uPGSi4Dm>zOv_jgS%Z)u*TCtlI?O)g+x&eGBs`9 z@$+5H_)|Lr6;EtOmP8gtRgknd8r0*N0C~iG*)ze)=wdKLCi9KRf17n@0E4N#GgdOf zaUDc9uou5p#7XkA*^%EE)=GakRB&gPc5EMFpBy^CoB9Inb+lRCFXMPno=?A(Z>|n)X!;7zudH+X*yntuEn@F> V4vn=;4!rCb_HH$gb+`Va{$E*&QLq32 diff --git a/Example/TestAgent.prefab b/Example/TestAgent.prefab index e31cf8a56f560e4d39ea61b090eaaff0f043b69b..1259551849ecbf8362d45b2a504d5ccb11de5db5 100644 GIT binary patch literal 11046 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 Jws&Ka{{kk6(t7{^ diff --git a/Integration/Editor/Database.meta b/Integration/Editor/Database.meta new file mode 100644 index 00000000..b1066284 --- /dev/null +++ b/Integration/Editor/Database.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: cecd0bacae0864fc4b77fd02d5240393 +folderAsset: yes +timeCreated: 1448496893 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Integration/Editor/untitled folder.meta b/Integration/Editor/untitled folder.meta new file mode 100644 index 00000000..00914e3f --- /dev/null +++ b/Integration/Editor/untitled folder.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 94b52cbb7ed96455c91435c9f1ac44f5 +folderAsset: yes +timeCreated: 1449254212 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Resources/DefaultLockstepFrameworkSettings.asset b/Resources/DefaultLockstepFrameworkSettings.asset index 07937f179ce4648c173956b85fd72000d082439a..4acf87f460e8854d87869f69379423a951c833d9 100644 GIT binary patch literal 466 zcmZ{gOK-w35QOjf73M%sfb3w5;~OoHB0-BpFFheYHmOU9k>j*NRsVYp2!w>{gAY5i zqi?7EK3Xmi>5-)UHkzSU(?UTOqN!{+^i5B@T_?qah@{)?9#ujpdWauBzGUet_Xr>I z%euyk1fkvLRegdE&(^@SltnENK8;r%a;a9*Llw>zfqrsZ!h9Spzc-$F6~I@ryw_)P z2mkF(Dyd2^0+CbH#Mt2c9mQIEyALmTL-_bJ{n9Va7p{ zA;!ZF3Wq%i)ISryL?VI4@wBE43#Yerfc@0R>9_OSHH2WRqP`(|DrH^IO)SCY7Q8@F q+ZY+7l66eFHgakB!Ufte${{6$VNO#;Gs*@m!(4KfDRSjXf0I8Chm8XO literal 4208 zcmeHKyK59d9RAI%=8TVM;yWp{h!C5DBN0I)+`;7`UU8CAk7V^W-kIFPz46s;Au6O3 zK|us738;v%vJ`A=1Pco-B&83q5w!FCzS+HH6Y>XG%)oEvH{X2o&CEBu#fUg{kzFkj z*@+g7$g#|5COe;%znxA;DFA3Y!=Ii#Ix5Sb&y{{Ieao+&ef49c{BmmGLH^I}BOl&P z-5mn2fFM7uBseY-a2~qIh%0&GNU(yjO@PP?gSE&<;M>ur5acRkUodkY`s6zaJOiCW z=x>R}LcWq)DGA<2I-3*xq)tx)PwJ#&T*(-8u0}dsBfr6ZdJ}k3XKRcrd5nFQp~Dky zL#TXsHu`WHIM2m1cYUa0-S5%5JAkvS_o2^VA)Z_pw-@V7L;ops=s&Mi1%|J(@RLEj zpLmYAV|*UM9PVd;xCuwjfO`qS{_Yr8LjBQ5e-H71b5d*c_Y%($U#rji+(>_aj4K&I zegZ*n4j_2Z>wP!~SVef!hrtLhm9&3yqEgdMf8x6K8tq!MF)sDl$=afKs(_^A>M9b$ z8!pZiTf@6K5H z{@1~Di{Gxu`})mHf6w&Fy^7bnTz!4nP|b*~tOM2o>wtB@I$#~J4p;}Q1J(iSz<=Zb wpE@jTyKkMt$P3=Qdu34<^+G|bvZr!`q^cQA4t!s^oZBWdUzWavy2U1g Date: Mon, 4 Jan 2016 20:13:35 -0700 Subject: [PATCH 2/5] Merge --- Core/Game/Player/Commands.meta | 9 + Core/Game/Player/Commands/Command.cs | 221 ++++++++++++++ Core/Game/Player/Commands/Command.cs.meta | 12 + Core/Simulation/Math/Pan-Line-Algorithm.meta | 9 + Core/Simulation/Physics/Core/Editor.meta | 9 + .../Physics/Core/Editor/EditorLSBody.cs | 285 ++++++++++++++++++ .../Physics/Core/Editor/EditorLSBody.cs.meta | 12 + Example/ExampleSpawner.cs | 37 +++ Example/ExampleSpawner.cs.meta | 12 + 9 files changed, 606 insertions(+) create mode 100644 Core/Game/Player/Commands.meta create mode 100644 Core/Game/Player/Commands/Command.cs create mode 100644 Core/Game/Player/Commands/Command.cs.meta create mode 100644 Core/Simulation/Math/Pan-Line-Algorithm.meta create mode 100644 Core/Simulation/Physics/Core/Editor.meta create mode 100644 Core/Simulation/Physics/Core/Editor/EditorLSBody.cs create mode 100644 Core/Simulation/Physics/Core/Editor/EditorLSBody.cs.meta create mode 100644 Example/ExampleSpawner.cs create mode 100644 Example/ExampleSpawner.cs.meta diff --git a/Core/Game/Player/Commands.meta b/Core/Game/Player/Commands.meta new file mode 100644 index 00000000..c2b99586 --- /dev/null +++ b/Core/Game/Player/Commands.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4dc29c294927c4f7ea44f31559a4b98c +folderAsset: yes +timeCreated: 1451622230 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Core/Game/Player/Commands/Command.cs b/Core/Game/Player/Commands/Command.cs new file mode 100644 index 00000000..aedacf2f --- /dev/null +++ b/Core/Game/Player/Commands/Command.cs @@ -0,0 +1,221 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +namespace Lockstep +{ + public sealed class Command + { + + public static void Setup () { + RegisterDefaults (); + } + + private const int CompressionShift = FixedMath.SHIFT_AMOUNT - 7; + private const int FloatToInt = 100; + private const float IntToFloat = 1f / FloatToInt; + + + private static readonly FastList serializeList = new FastList(); + private static readonly Writer writer = new Writer(serializeList); + private static readonly Reader reader = new Reader(); + + private static ushort RegisterCount; + + private static BiDictionary RegisteredData = new BiDictionary(); + + static void RegisterDefaults () { + Register (); + Register (); + Register (); + Register (); + Register (); + } + + public static void Register() where TData : ICommandData + { + if (RegisterCount > ushort.MaxValue) + { + throw new System.Exception(string.Format("Cannot register more than {0} types of data.", ushort.MaxValue + 1)); + } + if (RegisteredData.ContainsKey(typeof(TData))) return; + RegisteredData.Add(typeof(TData), RegisterCount++); + } + + public byte ControllerID; + public ushort LeInput; + private Dictionary> ContainedData = new Dictionary>(); + private ushort ContainedTypesCount; + + + public Command() + { + } + + public Command(ushort inputCode) + { + this.Initialize(); + LeInput = inputCode; + } + + public Command(ushort inputCode, byte controllerID) + { + this.Initialize(); + this.LeInput = inputCode; + this.ControllerID = controllerID; + } + + public void Initialize() + { + ContainedData.Clear(); + ContainedTypesCount = 0; + } + + public void Add(params TData[] addItems) where TData : ICommandData + { + for (int i = 0; i < addItems.Length; i++) + Add(addItems [i]); + } + + public void Add(TData item) where TData : ICommandData + { + ushort dataID; + if (RegisteredData.TryGetValue(typeof(TData), out dataID)) + { + FastList items = GetItemsList(dataID); + if (items.Count == ushort.MaxValue) + { + throw new Exception("No more than '{0}' of a type can be added to a Command."); + } + if (items.Count == 0) + ContainedTypesCount++; + items.Add(item); + } else + { + throw new System.Exception(string.Format("Type '{0}' not registered.", typeof(TData))); + } + } + + public bool ContainsData () + { + return GetDataCount () > 0; + } + + public int GetDataCount () + { + ushort dataID; + if (!RegisteredData.TryGetValue(typeof(TData), out dataID)) + return 0; + FastList items; + if (!ContainedData.TryGetValue(dataID, out items)) + { + return 0; + } + return items.Count; + } + + public TData GetData (int index = 0) where TData : ICommandData + { + TData item; + if (TryGetData (out item, index)) { + return item; + } + return default(TData); + } + public bool TryGetData (out TData data, int index = 0) where TData : ICommandData + { + data = default(TData); + ushort dataID; + if (!RegisteredData.TryGetValue (typeof (TData), out dataID)) return false; + FastList items; + if (!this.ContainedData.TryGetValue(dataID, out items)) return false; + if (items.Count <= index) return false; + data = (TData)items[index]; + return true; + } + + public void SetData (TData value, int index = 0) where TData : ICommandData + { + this.ContainedData[RegisteredData[typeof(TData)]][index] = value; + } + + public bool SetFirstData (TData value) where TData : ICommandData + { + ushort dataID; + if (!RegisteredData.TryGetValue (typeof (TData), out dataID)) return false; + FastList items; + if (!this.ContainedData.TryGetValue(dataID, out items)) return false; + if(items.Count == 0) + items.Add(value); + else + items[0] = value; + return true; + } + public void ClearData () { + this.ContainedData[RegisteredData[typeof(TData)]].Clear(); + } + + /// + /// Reconstructs this command from a serialized command and returns the size of the command. + /// + public int Reconstruct(byte[] Source, int StartIndex = 0) + { + reader.Initialize(Source, StartIndex); + ControllerID = reader.ReadByte(); + LeInput = reader.ReadUShort(); + this.ContainedTypesCount = reader.ReadUShort(); + + for (int i = 0; i < this.ContainedTypesCount; i++) + { + ushort dataID = reader.ReadUShort(); + ushort dataCount = reader.ReadUShort(); + FastList items = GetItemsList(dataID); + Type dataType = RegisteredData.GetReversed(dataID); + for (int j = 0; j < dataCount; j++) + { + ICommandData item = Activator.CreateInstance(dataType) as ICommandData; + item.Read(reader); + items.Add(item); + } + } + + return reader.Position - StartIndex; + } + + + public byte[] Serialized + { + get + { + writer.Reset(); + + + //Essential Information + writer.Write(ControllerID); + writer.Write(LeInput); + writer.Write(ContainedTypesCount); + foreach (KeyValuePair> pair in ContainedData) + { + writer.Write(pair.Key); + writer.Write((ushort)pair.Value.Count); + for (int i = 0; i < pair.Value.Count; i++) + { + pair.Value [i].Write(writer); + } + } + + return serializeList.ToArray(); + } + } + + FastList GetItemsList(ushort dataID) + { + FastList items; + if (!ContainedData.TryGetValue(dataID, out items)) + { + items = new FastList(); + ContainedData.Add(dataID, items); + } + return items; + } + } +} \ No newline at end of file diff --git a/Core/Game/Player/Commands/Command.cs.meta b/Core/Game/Player/Commands/Command.cs.meta new file mode 100644 index 00000000..2ef38517 --- /dev/null +++ b/Core/Game/Player/Commands/Command.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4ee076bd6d81e4c73acafb5e265b93aa +timeCreated: 1451963492 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Core/Simulation/Math/Pan-Line-Algorithm.meta b/Core/Simulation/Math/Pan-Line-Algorithm.meta new file mode 100644 index 00000000..5528fd62 --- /dev/null +++ b/Core/Simulation/Math/Pan-Line-Algorithm.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 615fb633fad344682aca5d2d92a83eb5 +folderAsset: yes +timeCreated: 1451067379 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Core/Simulation/Physics/Core/Editor.meta b/Core/Simulation/Physics/Core/Editor.meta new file mode 100644 index 00000000..3ae0977b --- /dev/null +++ b/Core/Simulation/Physics/Core/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9a122c7608a3c4f509daa4f384619ffa +folderAsset: yes +timeCreated: 1450833968 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Core/Simulation/Physics/Core/Editor/EditorLSBody.cs b/Core/Simulation/Physics/Core/Editor/EditorLSBody.cs new file mode 100644 index 00000000..65336d52 --- /dev/null +++ b/Core/Simulation/Physics/Core/Editor/EditorLSBody.cs @@ -0,0 +1,285 @@ +using UnityEngine; +using System.Collections; +using UnityEditor; + +namespace Lockstep.Integration +{ + [CustomEditor(typeof(LSBody), true),UnityEditor.CanEditMultipleObjects] + public class EditorLSBody : Editor + { + + SerializedProperty Shape; + //Enum + SerializedProperty IsTrigger; + //bool + SerializedProperty Layer; + //int + SerializedProperty HalfWidth; + //long + SerializedProperty HalfHeight; + //long + SerializedProperty Radius; + //long + SerializedProperty Immovable; + //bool + SerializedProperty Vertices; + //Vector2d[] + SerializedProperty Height; + //long + SerializedProperty PositionalTransform; + //transform + SerializedProperty RotationalTransform; + //transform + + SerializedObject so { get { return base.serializedObject; } } + + bool MoreThanOne; + + void OnEnable() + { + MoreThanOne = targets.Length > 1; + Shape = so.FindProperty("_shape"); + IsTrigger = so.FindProperty("_isTrigger"); + Layer = so.FindProperty("_layer"); + HalfWidth = so.FindProperty("_halfWidth"); + HalfHeight = so.FindProperty("_halfHeight"); + Radius = so.FindProperty("_radius"); + Immovable = so.FindProperty("_immovable"); + Vertices = so.FindProperty("_vertices"); + Height = so.FindProperty("_height"); + PositionalTransform = so.FindProperty("_positionalTransform"); + RotationalTransform = so.FindProperty("_rotationalTransform"); + } + + public override void OnInspectorGUI() + { + if (Application.isPlaying == false) + { + + EditorGUI.BeginChangeCheck(); + if (GUILayout.Button("Reset Transforms")) { + for (int i = 0; i < targets.Length; i++) { + SerializedObject ser = new SerializedObject(targets[i]); + ser.FindProperty("_positionalTransform").objectReferenceValue = ((LSBody)targets[i]).transform; + ser.FindProperty("_rotationalTransform").objectReferenceValue = ((LSBody)targets[i]).transform; + ser.ApplyModifiedProperties(); + } + so.Update(); + } + if (targets.Length == 1) + { + PositionalTransform.Draw(); + RotationalTransform.Draw(); + } + + Shape.Draw(); + ColliderType shape = (ColliderType)Shape.intValue; + if (shape != ColliderType.None) + { + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("General Collider Settings", EditorStyles.boldLabel); + Layer.Draw(); + IsTrigger.Draw(); + if (IsTrigger.boolValue == false) + Immovable.Draw(); + Height.Draw(); + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Collider Settings", EditorStyles.boldLabel); + if (shape == ColliderType.Circle) + { + Radius.Draw(); + } else if (shape == ColliderType.AABox) + { + HalfWidth.Draw(); + HalfHeight.Draw(); + } else if (shape == ColliderType.Polygon) + { + EditorGUIUtility.LookLikeControls(); + + + Vertices.Draw(); + } + } + SceneView.RepaintAll(); + if (true)//EditorGUI.EndChangeCheck()) + { + so.ApplyModifiedProperties(); + } + } else + { + //Debug view when playing + EditorGUILayout.LabelField("Runtime Debugging", EditorStyles.boldLabel); + base.OnInspectorGUI(); + } + } + + void OnSceneGUI() + { + + if (MoreThanOne) + return; + + //Have to reinitialize everything because can't apply modified properties on base.serializedObject + SerializedObject so = new SerializedObject(target); + so.Update(); + SerializedProperty Shape = so.FindProperty("_shape"); + SerializedProperty IsTrigger = so.FindProperty("_isTrigger"); + SerializedProperty Layer = so.FindProperty("_layer"); + SerializedProperty HalfWidth = so.FindProperty("_halfWidth"); + SerializedProperty HalfHeight = so.FindProperty("_halfHeight"); + SerializedProperty Radius = so.FindProperty("_radius"); + SerializedProperty Immovable = so.FindProperty("_immovable"); + SerializedProperty Vertices = so.FindProperty("_vertices"); + SerializedProperty Height = so.FindProperty("_height"); + SerializedProperty PositionalTransform = so.FindProperty("_positionalTransform"); + SerializedProperty RotationalTransform = so.FindProperty("_rotationalTransform"); + + ColliderType shape = (ColliderType)Shape.intValue; + if (shape == ColliderType.None) + return; + Handles.color = Color.blue; + Vector3 targetPos = (target as LSBody).transform.position; + const int ImprecisionLimit = 100000; + if (Mathf.Abs(targetPos.x) >= ImprecisionLimit || + Mathf.Abs(targetPos.y) >= ImprecisionLimit || + Mathf.Abs(targetPos.z) >= ImprecisionLimit) + return; + const float dragHandleSize = .5f; + const float spread = .02f; + int spreadMin = -1; + int spreadMax = 1; + Handles.DrawCapFunction dragCap = Handles.SphereCap; + + float xModifier = 0f; + if (shape == ColliderType.Circle) + { + //targetPos.x - Radius.longValue.ToFloat (): + //Minus so the move handle doesn't end up on the same axis as the transform.position move handle + Radius.longValue = + FixedMath.Create( + Mathf.Abs( + (Handles.FreeMoveHandle( + new Vector3(targetPos.x - Radius.longValue.ToFloat(), targetPos.y, targetPos.z) + , Quaternion.identity, + dragHandleSize, + Vector3.zero, + Handles.SphereCap)) + .x - targetPos.x) + ); + Handles.DrawLine(targetPos, new Vector3(targetPos.x + Radius.longValue.ToFloat(), targetPos.y, targetPos.z)); + float baseHeight = targetPos.y; + for (int i = spreadMin; i <= spreadMax; i++) + { + Handles.CircleCap( + 1, + new Vector3(targetPos.x, baseHeight + (float)i * spread, targetPos.z) + , Quaternion.Euler(90, 0, 0), Radius.longValue.ToFloat()); + } + baseHeight = targetPos.y + Height.longValue.ToFloat(); + for (int i = spreadMin; i <= spreadMax; i++) + { + Handles.CircleCap( + 1, + new Vector3(targetPos.x, baseHeight + (float)i * spread, targetPos.z) + , Quaternion.Euler(90, 0, 0), Radius.longValue.ToFloat()); + } + xModifier = Radius.longValue.ToFloat(); + + } else if (shape == ColliderType.AABox) + { + HalfWidth.longValue = + FixedMath.Create( + (double)Mathf.Abs( + Handles.FreeMoveHandle( + new Vector3(targetPos.x - (float)HalfWidth.longValue.ToFormattedDouble(), targetPos.y, targetPos.z), + Quaternion.identity, + dragHandleSize, + Vector3.zero, + dragCap) + .x - targetPos.x) + ); + HalfHeight.longValue = + FixedMath.Create( + (double)System.Math.Abs( + Handles.FreeMoveHandle( + new Vector3(targetPos.x, targetPos.y, targetPos.z - (float)HalfHeight.longValue.ToFormattedDouble()), + Quaternion.identity, + dragHandleSize, + Vector3.zero, + dragCap) + .z - targetPos.z) + ); + float halfWidth = HalfWidth.longValue.ToFloat(); + float halfHeight = HalfHeight.longValue.ToFloat(); + for (int i = 0; i < 1; i++) + { + float height = targetPos.y + (float)i * spread; + Vector3[] lines = new Vector3[] + { + new Vector3(targetPos.x + halfWidth, height, targetPos.z + halfHeight), + new Vector3(targetPos.x + halfWidth, height, targetPos.z - halfHeight), + + new Vector3(targetPos.x + halfWidth, height, targetPos.z - halfHeight), + new Vector3(targetPos.x - halfWidth, height, targetPos.z - halfHeight), + + new Vector3(targetPos.x - halfWidth, height, targetPos.z - halfHeight), + new Vector3(targetPos.x - halfWidth, height, targetPos.z + halfHeight), + + new Vector3(targetPos.x - halfWidth, height, targetPos.z + halfHeight), + new Vector3(targetPos.x + halfWidth, height, targetPos.z + halfHeight) + }; + Handles.DrawLines(lines); + } + for (int i = 0; i < 1; i++) + { + float height = targetPos.y + (float)i * spread + Height.longValue.ToFloat(); + Vector3[] lines = new Vector3[] + { + new Vector3(targetPos.x + halfWidth, height, targetPos.z + halfHeight), + new Vector3(targetPos.x + halfWidth, height, targetPos.z - halfHeight), + + new Vector3(targetPos.x + halfWidth, height, targetPos.z - halfHeight), + new Vector3(targetPos.x - halfWidth, height, targetPos.z - halfHeight), + + new Vector3(targetPos.x - halfWidth, height, targetPos.z - halfHeight), + new Vector3(targetPos.x - halfWidth, height, targetPos.z + halfHeight), + + new Vector3(targetPos.x - halfWidth, height, targetPos.z + halfHeight), + new Vector3(targetPos.x + halfWidth, height, targetPos.z + halfHeight) + }; + Handles.DrawLines(lines); + } + + xModifier = halfWidth; + } + Handles.DrawLine( + new Vector3(targetPos.x + xModifier, targetPos.y, targetPos.z), + new Vector3(targetPos.x + xModifier, targetPos.y + Height.longValue.ToFloat(), targetPos.z)); + + Vector3 movePos = targetPos; + movePos.x += xModifier; + movePos.y += (float)Height.longValue.ToFormattedDouble(); + movePos = + Handles.FreeMoveHandle( + movePos, + Quaternion.identity, + dragHandleSize, + Vector3.zero, + dragCap + ); + Height.longValue = FixedMath.Create(Mathf.Max(Mathf.Abs(movePos.y - targetPos.y))); + so.ApplyModifiedProperties(); + } + } + + internal static class SerializedPropertyDraw + { + public static void Draw(this SerializedProperty prop) + { + EditorGUILayout.PropertyField(prop, true); + + } + } +} \ No newline at end of file diff --git a/Core/Simulation/Physics/Core/Editor/EditorLSBody.cs.meta b/Core/Simulation/Physics/Core/Editor/EditorLSBody.cs.meta new file mode 100644 index 00000000..65561b25 --- /dev/null +++ b/Core/Simulation/Physics/Core/Editor/EditorLSBody.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4841998ebf12542f6aee7f629e9194fa +timeCreated: 1451963492 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Example/ExampleSpawner.cs b/Example/ExampleSpawner.cs new file mode 100644 index 00000000..723a4cbf --- /dev/null +++ b/Example/ExampleSpawner.cs @@ -0,0 +1,37 @@ +using UnityEngine; +using System.Collections; + +namespace Lockstep.Example +{ + public class ExampleSpawner : BehaviourHelper + { + public override ushort ListenInput { + get { + return InputCodeManager.GetCodeID("Spawn"); + } + } + /* + * Command com = new Command (InputCodeManager.GetCodeID ("Spawn")); + com.ControllerID = cont.ControllerID; + com.Position = position; + com.Target = (ushort)AgentController.GetAgentCodeIndex(agentCode); + com.Count = count; + return com; + */ + protected override void OnExecute (Command com) + { + byte conID = com.ControllerID; + Vector2d pos = com.GetData(0); + Vector2d rot = com.GetData(1); + ushort target = (ushort)com.GetData(0).Value; + ushort count = (ushort)com.GetData(1).Value; + + AgentController ac = AgentController.InstanceManagers [conID]; + string agentCode = AgentController.GetAgentCode (target); + Debug.Log(rot); + for (int i = 0; i < count; i++) { + ac.CreateAgent (agentCode, pos, rot); + } + } + } +} \ No newline at end of file diff --git a/Example/ExampleSpawner.cs.meta b/Example/ExampleSpawner.cs.meta new file mode 100644 index 00000000..0ad585f9 --- /dev/null +++ b/Example/ExampleSpawner.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2b8e45aac0ed34738af48e82d20bce73 +timeCreated: 1451963492 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 587c1ff5f3314c31135e5426d78d21d5ba1b4dda Mon Sep 17 00:00:00 2001 From: SnpM Date: Mon, 4 Jan 2016 20:17:18 -0700 Subject: [PATCH 3/5] Merge remote-tracking branch 'origin/master' Conflicts: Core/Game/Player/Commands/Command.cs Core/Simulation/Physics/Core/Editor/EditorLSBody.cs Core/Simulation/Physics/Core/Editor/EditorLSBody.cs.meta Example/ExampleSpawner.cs (reverted from commit cc5068e56c9677d3109fb820d08ce995a60176e7) --- .DS_Store | Bin 6148 -> 6148 bytes .gitmodules | 3 - Core/Game/Abilities/Ability.cs | 174 +-- Core/Game/Abilities/ActiveAbility.cs | 4 +- .../BehaviourHelper/BehaviourHelper.cs | 148 +- .../BehaviourHelper/BehaviourHelperManager.cs | 9 +- .../Abilities/BuildAbil.meta} | 4 +- Core/Game/Abilities/BuildAbil/Build.cs | 48 + .../BuildAbil/Build.cs.meta} | 4 +- Core/Game/Abilities/BuildAbil/BuildManager.cs | 31 + .../BuildAbil/BuildManager.cs.meta} | 4 +- Core/Game/Abilities/BuildAbil/BuildMenu.cs | 57 + .../BuildAbil/BuildMenu.cs.meta} | 4 +- .../Game/Abilities/BuildAbil/BuildMenuTile.cs | 51 + .../Abilities/BuildAbil/BuildMenuTile.cs.meta | 12 + Core/Game/Abilities/BuildAbil/BuildNode.cs | 73 + .../Abilities/BuildAbil/BuildNode.cs.meta | 12 + .../Game/Abilities/BuildAbil/BuildNodeType.cs | 5 + .../Abilities/BuildAbil/BuildNodeType.cs.meta | 12 + .../BuildAbil/RegularBuildNode.prefab | 127 ++ .../BuildAbil/RegularBuildNode.prefab.meta | 4 +- Core/Game/Abilities/Essential/Move.cs | 50 +- Core/Game/Abilities/Essential/Scan.cs | 119 +- Core/Game/Abilities/Essential/SetHeight.cs | 4 +- Core/Game/Abilities/Essential/Turn.cs | 92 +- Core/Game/Agents/AgentController.cs | 56 +- Core/Game/Agents/LSAgent.cs | 41 +- Core/Game/Agents/Teams/Team.cs | 2 +- Core/Game/Agents/Visuals/AbilityInterfacer.cs | 38 +- .../Visuals/InterfaceManager.cs} | 92 +- .../Visuals/InterfaceManager.cs.meta} | 0 Core/Game/Determinism/LSVariable.cs | 57 +- Core/Game/Determinism/LSVariableManager.cs | 13 +- Core/Game/Determinism/LockstepAttribute.cs | 6 - Core/Game/Grouping/MovementGroup.cs | 4 +- Core/Game/Grouping/MovementGroupHelper.cs | 6 +- Core/Game/Grouping/ScanGroupHelper.cs | 4 +- Core/Game/Managers/ClientManager.cs | 38 +- Core/Game/Managers/CommandManager.cs | 131 ++ .../CommandManager.cs.meta | 0 Core/Game/Managers/FrameManager.cs | 24 +- Core/Game/Managers/GameManager/GameManager.cs | 164 +- Core/Game/Managers/Input/InputCode.cs | 30 + Core/Game/Managers/Input/InputCode.cs.meta | 12 + Core/Game/Managers/Input/InputCodeManager.cs | 47 - Core/Game/Managers/Input/InputManager.cs | 55 + Core/Game/Managers/Input/InputManager.cs.meta | 12 + Core/Game/Managers/Input/MetaActionCode.cs | 3 + .../Managers/Input/MetaActionCode.cs.meta | 12 + Core/Game/Managers/LockstepManager.cs | 329 ++-- Core/Game/Managers/Network/NetworkHelper.cs | 68 +- Core/Game/Managers/ReplayManager.cs | 226 ++- Core/Game/Managers/ServerSimulator.cs | 2 +- Core/Game/Networking/NetworkHelperTester.cs | 3 +- Core/Game/Player/Command.cs | 281 ++++ .../Command.cs.meta~HEAD => Command.cs.meta} | 4 +- Core/Game/Player/CommandCard.cs | 71 + Core/Game/Player/CommandCard.cs.meta | 12 + Core/Game/Player/CommandTile.cs | 65 + Core/Game/Player/CommandTile.cs.meta | 12 + Core/Game/Player/Commands/BackwardsCommand.cs | 120 -- Core/Game/Player/Commands/Command.cs | 8 - Core/Game/Player/Commands/Command.cs.meta | 4 +- Core/Game/Player/Commands/CommandManager.cs | 107 -- Core/Game/Player/Commands/Default.meta | 9 - .../Commands/Default/BaseSerializableValue.cs | 35 - .../Player/Commands/Default/DefaultData.cs | 119 -- .../Commands/Default/DefaultData.cs.meta | 12 - .../Commands/Default/SerializableValue.cs | 64 - .../Default/SerializableValue.cs.meta | 12 - Core/Game/Player/Commands/ICommandData.cs | 22 - .../Game/Player/Commands/ICommandData.cs.meta | 12 - .../{RTSInterfacing.cs => Interfacing.cs} | 18 +- ...nterfacing.cs.meta => Interfacing.cs.meta} | 0 Core/Game/Player/InterfacingHelper.cs | 56 - Core/Game/Player/InterfacingHelper.cs.meta | 12 - .../Game/Player/{OrderMarker.cs => Marker.cs} | 2 +- .../{OrderMarker.cs.meta => Marker.cs.meta} | 0 Core/Game/Player/PlayerManager.cs | 70 +- Core/Game/Player/SelectionManager.cs | 16 +- .../Game/Player/UI/EnvironmentUIController.cs | 25 + .../Player/UI/EnvironmentUIController.cs.meta | 12 + Core/Game/Player/UI/StatsBar.cs | 4 +- Core/Game/Player/Utility/Selection.cs | 82 +- Core/Game/Player/Utility/Selector.cs | 7 + Core/Game/Projectiles/LSProjectile.cs | 4 +- Core/Simulation/.DS_Store | Bin 6148 -> 0 bytes Core/Simulation/Grid/Core/GridManager.cs | 1 - .../Grid/Utility/Tools/Blocker/Blocker.cs | 4 +- Core/Simulation/Math/Coordinate.cs | 61 +- Core/Simulation/Math/FixedMath.cs | 11 +- Core/Simulation/Math/Pan-Line-Algorithm | 1 - Core/Simulation/Math/Vector2d.cs | 725 ++++----- Core/Simulation/Math/Vector2dHeight.cs | 30 +- Core/Simulation/Math/VectorRotation.cs | 1 - Core/Simulation/Physics/Core/CollisionPair.cs | 203 +-- .../Physics/Core/Editor/EditorLSBody.cs | 3 - .../Physics/Core/Editor/EditorLSBody.cs.meta | 4 - Core/Simulation/Physics/Core/LSBody.cs | 1324 ++++++++--------- .../Physics/Core/LSBodyOverlapCheck.cs | 86 -- .../Physics/Core/LSBodyOverlapCheck.cs.meta | 12 - Core/Simulation/Physics/Core/Partition.cs | 193 +-- Core/Simulation/Physics/Core/PartitionNode.cs | 132 +- .../Simulation/Physics/Core/PhysicsManager.cs | 122 +- .../Physics/Core/Settings/PhysicsSettings.cs | 11 - .../Core/Settings/PhysicsSettings.cs.meta | 12 - .../Physics/{Raycast.meta => Extra.meta} | 6 +- Core/Simulation/Physics/Extra/Raycaster.cs | 197 +++ .../{Raycast => Extra}/Raycaster.cs.meta | 6 +- Core/Simulation/Physics/Raycast/Raycaster.cs | 63 - Core/Simulation/Physics/Raycast/Test.meta | 9 - .../Physics/Raycast/Test/RaycastTestHelper.cs | 59 - .../Raycast/Test/RaycastTestHelper.cs.meta | 12 - .../Raycast/Test/RaycastTestScene.unity | 826 ---------- .../Raycast/Test/RaycastTestScene.unity.meta | 8 - Core/Utility/Array2D.cs | 258 ++-- Core/Utility/Fast/BiDictionary.cs | 26 - Core/Utility/Fast/BiDictionary.cs.meta | 12 - Core/Utility/Fast/FastList.cs | 4 +- Core/Utility/Fast/Tests.meta | 9 - Core/Utility/Fast/Tests/Array2DTester.cs | 49 - Core/Utility/Fast/Tests/Array2DTester.cs.meta | 12 - Core/Utility/Serialization/Writer.cs | 3 - Database/Editor/DataHelper.cs | 2 +- Database/Editor/EditorLSDatabase.cs | 13 +- Database/Editor/EditorLSDatabaseWindow.cs | 2 +- Database/Scripts/DataItem.cs | 3 - Database/Scripts/DataItemAttribute.cs | 2 +- .../DataItemTemplates/InputDataItem.cs | 16 - .../DataItemTemplates/InputDataItem.cs.meta | 12 - Database/Scripts/DefaultLSDatabase.cs | 25 +- Example/.DS_Store | Bin 6148 -> 6148 bytes .../ExampleDatabase/Example_Database.asset | 72 +- Example/ExampleGameManager.cs | 13 +- Example/ExampleNetworkHelper.cs | 13 +- Example/ExampleScene.unity | 705 ++++++++- Example/ExampleSpawner.cs | 13 - Example/ExampleSpawner.cs.meta | 4 +- Example/ExampleSpawner.cs.meta~HEAD | 12 - Example/Manager.prefab | 78 +- Example/TestAgent.prefab | 36 +- Integration/Editor/LSBodyEditor.cs | 264 ++++ Integration/Editor/LSBodyEditor.cs.meta | 12 + Integration/Editor/LSEditorUtility.cs | 8 +- Integration/Environment/DefaultSaver.cs | 4 +- .../Environment/EnvironmentBodyInfo.cs | 4 +- Integration/Environment/EnvironmentHelper.cs | 4 +- .../ElementAdderMenuBuilder.cs | 2 +- .../ElementAdderMenuCommandAttribute.cs | 2 +- .../Element Adder Menu/ElementAdderMeta.cs | 2 +- .../GenericElementAdderMenu.cs | 2 +- .../GenericElementAdderMenuBuilder.cs | 2 +- .../Element Adder Menu/IElementAdder.cs | 2 +- .../Element Adder Menu/IElementAdderMenu.cs | 2 +- .../IElementAdderMenuBuilder.cs | 2 +- .../IElementAdderMenuCommand.cs | 2 +- .../Editor/GenericListAdaptor.cs | 2 +- .../Editor/IReorderableListAdaptor.cs | 2 +- .../Editor/IReorderableListDropTarget.cs | 2 +- .../Editor/Internal/GUIHelper.cs | 2 +- .../Internal/ReorderableListResources.cs | 2 +- .../Internal/SerializedPropertyUtility.cs | 2 +- .../Editor/ReorderableListControl.cs | 4 +- .../Editor/ReorderableListEvents.cs | 2 +- .../Editor/ReorderableListGUI.cs | 2 +- .../Editor/ReorderableListStyles.cs | 4 +- .../Editor/SerializedPropertyAdaptor.cs | 4 +- .../ReorderableList/ReorderableListFlags.cs | 2 +- README.md | 75 +- Resources.meta | 9 - .../DefaultLockstepFrameworkSettings.asset | 14 - Settings/LSFSettingsManager.cs | 42 +- 172 files changed, 4760 insertions(+), 5043 deletions(-) rename Core/{Simulation/Physics/Core/Settings.meta => Game/Abilities/BuildAbil.meta} (67%) create mode 100644 Core/Game/Abilities/BuildAbil/Build.cs rename Core/Game/{Managers/Input/InputCodeManager.cs.meta => Abilities/BuildAbil/Build.cs.meta} (75%) create mode 100644 Core/Game/Abilities/BuildAbil/BuildManager.cs rename Core/Game/{Player/Commands/Default/BaseSerializableValue.cs.meta => Abilities/BuildAbil/BuildManager.cs.meta} (75%) create mode 100644 Core/Game/Abilities/BuildAbil/BuildMenu.cs rename Core/Game/{Player/Commands/BackwardsCommand.cs.meta => Abilities/BuildAbil/BuildMenu.cs.meta} (75%) create mode 100644 Core/Game/Abilities/BuildAbil/BuildMenuTile.cs create mode 100644 Core/Game/Abilities/BuildAbil/BuildMenuTile.cs.meta create mode 100644 Core/Game/Abilities/BuildAbil/BuildNode.cs create mode 100644 Core/Game/Abilities/BuildAbil/BuildNode.cs.meta create mode 100644 Core/Game/Abilities/BuildAbil/BuildNodeType.cs create mode 100644 Core/Game/Abilities/BuildAbil/BuildNodeType.cs.meta create mode 100644 Core/Game/Abilities/BuildAbil/RegularBuildNode.prefab rename Resources/DefaultLockstepFrameworkSettings.asset.meta => Core/Game/Abilities/BuildAbil/RegularBuildNode.prefab.meta (64%) rename Core/Game/{Player/RTSInterfacingHelper.cs => Agents/Visuals/InterfaceManager.cs} (53%) rename Core/Game/{Player/RTSInterfacingHelper.cs.meta => Agents/Visuals/InterfaceManager.cs.meta} (100%) create mode 100644 Core/Game/Managers/CommandManager.cs rename Core/Game/{Player/Commands => Managers}/CommandManager.cs.meta (100%) create mode 100644 Core/Game/Managers/Input/InputCode.cs create mode 100644 Core/Game/Managers/Input/InputCode.cs.meta delete mode 100644 Core/Game/Managers/Input/InputCodeManager.cs create mode 100644 Core/Game/Managers/Input/InputManager.cs create mode 100644 Core/Game/Managers/Input/InputManager.cs.meta create mode 100644 Core/Game/Managers/Input/MetaActionCode.cs create mode 100644 Core/Game/Managers/Input/MetaActionCode.cs.meta create mode 100644 Core/Game/Player/Command.cs rename Core/Game/Player/{Commands/Command.cs.meta~HEAD => Command.cs.meta} (84%) create mode 100644 Core/Game/Player/CommandCard.cs create mode 100644 Core/Game/Player/CommandCard.cs.meta create mode 100644 Core/Game/Player/CommandTile.cs create mode 100644 Core/Game/Player/CommandTile.cs.meta delete mode 100644 Core/Game/Player/Commands/BackwardsCommand.cs delete mode 100644 Core/Game/Player/Commands/CommandManager.cs delete mode 100644 Core/Game/Player/Commands/Default.meta delete mode 100644 Core/Game/Player/Commands/Default/BaseSerializableValue.cs delete mode 100644 Core/Game/Player/Commands/Default/DefaultData.cs delete mode 100644 Core/Game/Player/Commands/Default/DefaultData.cs.meta delete mode 100644 Core/Game/Player/Commands/Default/SerializableValue.cs delete mode 100644 Core/Game/Player/Commands/Default/SerializableValue.cs.meta delete mode 100644 Core/Game/Player/Commands/ICommandData.cs delete mode 100644 Core/Game/Player/Commands/ICommandData.cs.meta rename Core/Game/Player/{RTSInterfacing.cs => Interfacing.cs} (89%) rename Core/Game/Player/{RTSInterfacing.cs.meta => Interfacing.cs.meta} (100%) delete mode 100644 Core/Game/Player/InterfacingHelper.cs delete mode 100644 Core/Game/Player/InterfacingHelper.cs.meta rename Core/Game/Player/{OrderMarker.cs => Marker.cs} (96%) rename Core/Game/Player/{OrderMarker.cs.meta => Marker.cs.meta} (100%) create mode 100644 Core/Game/Player/UI/EnvironmentUIController.cs create mode 100644 Core/Game/Player/UI/EnvironmentUIController.cs.meta delete mode 100644 Core/Simulation/.DS_Store delete mode 160000 Core/Simulation/Math/Pan-Line-Algorithm delete mode 100644 Core/Simulation/Physics/Core/LSBodyOverlapCheck.cs delete mode 100644 Core/Simulation/Physics/Core/LSBodyOverlapCheck.cs.meta delete mode 100644 Core/Simulation/Physics/Core/Settings/PhysicsSettings.cs delete mode 100644 Core/Simulation/Physics/Core/Settings/PhysicsSettings.cs.meta rename Core/Simulation/Physics/{Raycast.meta => Extra.meta} (57%) create mode 100644 Core/Simulation/Physics/Extra/Raycaster.cs rename Core/Simulation/Physics/{Raycast => Extra}/Raycaster.cs.meta (69%) delete mode 100644 Core/Simulation/Physics/Raycast/Raycaster.cs delete mode 100644 Core/Simulation/Physics/Raycast/Test.meta delete mode 100644 Core/Simulation/Physics/Raycast/Test/RaycastTestHelper.cs delete mode 100644 Core/Simulation/Physics/Raycast/Test/RaycastTestHelper.cs.meta delete mode 100644 Core/Simulation/Physics/Raycast/Test/RaycastTestScene.unity delete mode 100644 Core/Simulation/Physics/Raycast/Test/RaycastTestScene.unity.meta delete mode 100644 Core/Utility/Fast/BiDictionary.cs delete mode 100644 Core/Utility/Fast/BiDictionary.cs.meta delete mode 100644 Core/Utility/Fast/Tests.meta delete mode 100644 Core/Utility/Fast/Tests/Array2DTester.cs delete mode 100644 Core/Utility/Fast/Tests/Array2DTester.cs.meta delete mode 100644 Database/Scripts/DataItemTemplates/InputDataItem.cs delete mode 100644 Database/Scripts/DataItemTemplates/InputDataItem.cs.meta delete mode 100644 Example/ExampleSpawner.cs.meta~HEAD create mode 100644 Integration/Editor/LSBodyEditor.cs create mode 100644 Integration/Editor/LSBodyEditor.cs.meta mode change 100644 => 100755 Integration/Rotorz/ReorderableList/Editor/Element Adder Menu/ElementAdderMenuBuilder.cs mode change 100644 => 100755 Integration/Rotorz/ReorderableList/Editor/Element Adder Menu/ElementAdderMenuCommandAttribute.cs mode change 100644 => 100755 Integration/Rotorz/ReorderableList/Editor/Element Adder Menu/ElementAdderMeta.cs mode change 100644 => 100755 Integration/Rotorz/ReorderableList/Editor/Element Adder Menu/GenericElementAdderMenu.cs mode change 100644 => 100755 Integration/Rotorz/ReorderableList/Editor/Element Adder Menu/GenericElementAdderMenuBuilder.cs mode change 100644 => 100755 Integration/Rotorz/ReorderableList/Editor/Element Adder Menu/IElementAdder.cs mode change 100644 => 100755 Integration/Rotorz/ReorderableList/Editor/Element Adder Menu/IElementAdderMenu.cs mode change 100644 => 100755 Integration/Rotorz/ReorderableList/Editor/Element Adder Menu/IElementAdderMenuBuilder.cs mode change 100644 => 100755 Integration/Rotorz/ReorderableList/Editor/Element Adder Menu/IElementAdderMenuCommand.cs mode change 100644 => 100755 Integration/Rotorz/ReorderableList/Editor/GenericListAdaptor.cs mode change 100644 => 100755 Integration/Rotorz/ReorderableList/Editor/IReorderableListAdaptor.cs mode change 100644 => 100755 Integration/Rotorz/ReorderableList/Editor/IReorderableListDropTarget.cs mode change 100644 => 100755 Integration/Rotorz/ReorderableList/Editor/Internal/GUIHelper.cs mode change 100644 => 100755 Integration/Rotorz/ReorderableList/Editor/Internal/ReorderableListResources.cs mode change 100644 => 100755 Integration/Rotorz/ReorderableList/Editor/ReorderableListEvents.cs mode change 100644 => 100755 Integration/Rotorz/ReorderableList/Editor/ReorderableListStyles.cs delete mode 100644 Resources.meta delete mode 100644 Resources/DefaultLockstepFrameworkSettings.asset diff --git a/.DS_Store b/.DS_Store index a679ea481574ca317ecaab86dc9e865cdd394e51..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 100644 GIT binary patch delta 67 zcmZoMXfc=|&Zs)EP;8=}A_oHyFfuR*Y}^>eKJh@*W_At%4o20D8^1G8<`+@q1WGX^ TfYeMj;Zfe4AhLvcVgm~RE=&+7 delta 117 zcmZoMXfc=|&e%3FQEZ}~q9`K+0|O8XFfbG_%22_O z$dHRHnV+*UF_9f4znPnZhl8(); + if (_agent == null) return this.GetComponent (); #endif - return _agent; - } - } - - public string MyAbilityCode { get; private set; } - - public AbilityInterfacer Interfacer { get; private set; } - - public int ID { get; private set; } - - public Transform CachedTransform { get { return Agent.CachedTransform; } } - - public GameObject CachedGameObject { get { return Agent.CachedGameObject; } } - - public int VariableContainerTicket { get; private set; } - - private LSVariableContainer _variableContainer; - - public LSVariableContainer VariableContainer { get { return _variableContainer; } } - - public bool IsCasting - { - get - { - return isCasting; - } - protected set - { - if (value != isCasting) - { - if (value == true) - { + return _agent; + } + } + public string MyAbilityCode {get; private set;} + public AbilityInterfacer Interfacer {get; private set;} + + public int ID {get; private set;} + public Transform CachedTransform {get {return Agent.CachedTransform;}} + public GameObject CachedGameObject {get {return Agent.CachedGameObject;}} + public int LSVariableContainerTicket {get; private set;} + + public bool IsCasting { + get { + return isCasting; + } + protected set { + if (value != isCasting) { + if (value == true) { Agent.CheckCasting = false; - } else - { + } else { Agent.CheckCasting = true; } isCasting = value; @@ -67,116 +46,77 @@ protected set - internal void Setup(LSAgent agent, int id) - { + public void Setup(LSAgent agent, int id) { System.Type mainType = this.GetType(); - if (mainType.IsSubclassOf(typeof(ActiveAbility))) - { - while ( mainType.BaseType != typeof(ActiveAbility)) - { - mainType = mainType.BaseType; - } - Interfacer = AbilityInterfacer.FindInterfacer(mainType); - if (Interfacer == null) - { - throw new System.ArgumentException("The Ability of type " + mainType + " has not been registered in database"); - } - this.MyAbilityCode = Interfacer.Name; - } else - { - this.MyAbilityCode = mainType.Name; + while (mainType.BaseType != typeof (Ability) && mainType.BaseType != typeof (ActiveAbility)) { + mainType = mainType.BaseType; + } + Interfacer = AbilityInterfacer.FindInterfacer(mainType); + if (Interfacer == null) { + throw new System.ArgumentException("The Ability of type " + mainType + " has not been registered in database"); } + this.MyAbilityCode = Interfacer.Name; _agent = agent; - ID = id; - TemplateSetup(); + ID = id; + TemplateSetup (); OnSetup(); - this.VariableContainerTicket = LSVariableManager.Register(this); - this._variableContainer = LSVariableManager.GetContainer(VariableContainerTicket); + this.LSVariableContainerTicket = LSVariableManager.Register(this); } - protected virtual void TemplateSetup() - { + protected virtual void TemplateSetup () { - } + } - protected virtual void OnSetup() - { - } + protected virtual void OnSetup() {} - internal void Initialize() - { - VariableContainer.Reset(); + public void Initialize() { IsCasting = false; OnInitialize(); } - protected virtual void OnInitialize() - { - } + protected virtual void OnInitialize() {} - internal void Simulate() - { + public void Simulate() { OnSimulate(); - if (isCasting) - { + if (isCasting) { OnCast(); } } + protected virtual void OnSimulate() {} - protected virtual void OnSimulate() - { - } + public void LateSimulate () { + OnLateSimulate (); + } + protected virtual void OnLateSimulate () { - internal void LateSimulate() - { - OnLateSimulate(); - } + } - protected virtual void OnLateSimulate() - { + protected virtual void OnCast() {} - } - - protected virtual void OnCast() - { - } - - internal void Visualize() - { + public void Visualize() { OnVisualize(); } - protected virtual void OnVisualize() - { - } + protected virtual void OnVisualize() {} - public void BeginCast() - { + public void BeginCast() { OnBeginCast(); } - protected virtual void OnBeginCast() - { - } + protected virtual void OnBeginCast() {} - public void StopCast() - { + public void StopCast() { OnStopCast(); } - protected virtual void OnStopCast() - { - } + protected virtual void OnStopCast() {} - public void Deactivate() - { + public void Deactivate() { IsCasting = false; OnDeactivate(); } - protected virtual void OnDeactivate() - { - } + protected virtual void OnDeactivate() {} } } \ No newline at end of file diff --git a/Core/Game/Abilities/ActiveAbility.cs b/Core/Game/Abilities/ActiveAbility.cs index c609312b..7ef077f3 100644 --- a/Core/Game/Abilities/ActiveAbility.cs +++ b/Core/Game/Abilities/ActiveAbility.cs @@ -3,11 +3,11 @@ namespace Lockstep { public abstract class ActiveAbility : Ability { - public ushort ListenInput {get; private set;} + public InputCode ListenInput {get; private set;} protected sealed override void TemplateSetup () { - ListenInput = Interfacer.ListenInputID; + ListenInput = Interfacer.ListenInput; } public void Execute(Command com) { diff --git a/Core/Game/Abilities/BehaviourHelper/BehaviourHelper.cs b/Core/Game/Abilities/BehaviourHelper/BehaviourHelper.cs index 5d84f373..8f1f6ef8 100644 --- a/Core/Game/Abilities/BehaviourHelper/BehaviourHelper.cs +++ b/Core/Game/Abilities/BehaviourHelper/BehaviourHelper.cs @@ -3,104 +3,76 @@ using Lockstep; using System.Collections.Generic; using System; - public abstract class BehaviourHelper : MonoBehaviour, IBehaviourHelper { - public BehaviourHelper() - { - - } - - private static FastList behaviourHelpers = new FastList(); - private static HashSet createdTypes = new HashSet(); - - public ushort CachedListenInput {get; private set;} + public BehaviourHelper () { - public virtual ushort ListenInput - { - get { return 0; } } - public void Initialize() - { - CachedListenInput = ListenInput; - OnInitialize(); - } + private static FastList behaviourHelpers = new FastList (); + private static HashSet createdTypes = new HashSet (); + - protected virtual void OnInitialize() - { + public virtual InputCode ListenInput { + get {return InputCode.None;} } - public void LateInitialize() - { + public void Initialize () + { + OnInitialize (); + } + + protected virtual void OnInitialize () + { + } + public void LateInitialize () { this.OnLateInitialize(); } - - protected virtual void OnLateInitialize() - { - - } - - public void Simulate() - { - OnSimulate(); - } - - protected virtual void OnSimulate() - { - } - - public void LateSimulate() - { - OnLateSimulate(); - } - - protected virtual void OnLateSimulate() - { - - } - - public void Visualize() - { - OnVisualize(); - } - - protected virtual void OnVisualize() - { - } - - public void Execute(Command com) - { - OnExecute(com); - } - - protected virtual void OnExecute(Command com) - { - } - - public void RawExecute (Command com) { - OnRawExecute (com); - } - protected virtual void OnRawExecute (Command com) { - - } - - public void GameStart () { - OnGameStart (); - } - - protected virtual void OnGameStart () { - - } - - public void Deactivate() - { - OnDeactivate(); - } - - protected virtual void OnDeactivate() - { + protected virtual void OnLateInitialize () { + + } + public void Simulate () + { + OnSimulate (); + } + + protected virtual void OnSimulate () + { + } + public void LateSimulate () { + OnLateSimulate (); + } + protected virtual void OnLateSimulate (){ + + } + + public void Visualize () + { + OnVisualize (); + } + + protected virtual void OnVisualize () + { + } + + public void Execute (Command com) + { + OnExecute (com); + } + + protected virtual void OnExecute (Command com) + { + } + + public void Deactivate () + { + OnDeactivate (); + } + + protected virtual void OnDeactivate () + { - } + + } } \ No newline at end of file diff --git a/Core/Game/Abilities/BehaviourHelper/BehaviourHelperManager.cs b/Core/Game/Abilities/BehaviourHelper/BehaviourHelperManager.cs index 3e5adb49..90088d5c 100644 --- a/Core/Game/Abilities/BehaviourHelper/BehaviourHelperManager.cs +++ b/Core/Game/Abilities/BehaviourHelper/BehaviourHelperManager.cs @@ -18,12 +18,6 @@ public static void LateInitialize () { } } - public static void GameStart () { - foreach (var helper in Helpers) { - helper.GameStart(); - } - } - public static void Simulate () { foreach (BehaviourHelper helper in Helpers) { helper.Simulate (); @@ -38,10 +32,9 @@ public static void LateSimulate () { public static void Execute (Command com) { foreach (BehaviourHelper helper in Helpers) { - if (helper.CachedListenInput == com.LeInput) { + if (helper.ListenInput == com.LeInput) { helper.Execute (com); } - helper.RawExecute(com); } } diff --git a/Core/Simulation/Physics/Core/Settings.meta b/Core/Game/Abilities/BuildAbil.meta similarity index 67% rename from Core/Simulation/Physics/Core/Settings.meta rename to Core/Game/Abilities/BuildAbil.meta index d50f79c5..ce6ce64f 100644 --- a/Core/Simulation/Physics/Core/Settings.meta +++ b/Core/Game/Abilities/BuildAbil.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 -guid: d1d0be0a5b6fd46f0949436686f2e114 +guid: f6f80e1c64dfa4d279adedd519dad128 folderAsset: yes -timeCreated: 1450914524 +timeCreated: 1442625300 licenseType: Pro DefaultImporter: userData: diff --git a/Core/Game/Abilities/BuildAbil/Build.cs b/Core/Game/Abilities/BuildAbil/Build.cs new file mode 100644 index 00000000..2963b16e --- /dev/null +++ b/Core/Game/Abilities/BuildAbil/Build.cs @@ -0,0 +1,48 @@ +using UnityEngine; +using System.Collections; + +namespace Lockstep +{ + public class Build : ActiveAbility + { + [SerializeField] + private BuildNode[] _tiles; + public BuildNode[] Tiles {get {return _tiles;}} + + public bool Disabled {get; set;} + + protected override void OnSetup () + { + for (ushort i = 0; i < Tiles.Length; i++) { + Tiles[i].Setup (i, this); + } + + } + + protected override void OnInitialize () + { + for (int i = 0; i < Tiles.Length;i ++) { + Tiles[i].Initialize(); + } + Disabled = false; + /*foreach (BuildNode node in _tiles) { + node.SendBuild(1); + }*/ + } + + protected override void OnExecute (Command com) + { + if (com.HasCount && com.HasTarget) + { + Tiles[com.Target].Execute (com); + } + } +#if UNITY_EDITOR + protected override void OnAfterSerialize () + { + BuildNode[] tempTiles = Agent.GetComponentsInChildrenOrderered (); + if (tempTiles .IsNotNull ()) _tiles = tempTiles; + } +#endif + } +} \ No newline at end of file diff --git a/Core/Game/Managers/Input/InputCodeManager.cs.meta b/Core/Game/Abilities/BuildAbil/Build.cs.meta similarity index 75% rename from Core/Game/Managers/Input/InputCodeManager.cs.meta rename to Core/Game/Abilities/BuildAbil/Build.cs.meta index dfed0a15..f80b88fc 100644 --- a/Core/Game/Managers/Input/InputCodeManager.cs.meta +++ b/Core/Game/Abilities/BuildAbil/Build.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: 67093f6f3e6244268b1f69ea9966972e -timeCreated: 1451427394 +guid: c649ae167a6174026949df8e16b8ba4c +timeCreated: 1442352430 licenseType: Pro MonoImporter: serializedVersion: 2 diff --git a/Core/Game/Abilities/BuildAbil/BuildManager.cs b/Core/Game/Abilities/BuildAbil/BuildManager.cs new file mode 100644 index 00000000..ccbbfb30 --- /dev/null +++ b/Core/Game/Abilities/BuildAbil/BuildManager.cs @@ -0,0 +1,31 @@ +using UnityEngine; +using System.Collections; +using Lockstep; +public static class BuildManager { + public static void Visualize () { + BuildNode buildNode; + if (InputManager.GetInformationDown ()) { + + } + if (Interfacing.CachedDidHit) + { + if (Interfacing.MousedObject.tag == "BuildTile") + {/* + if (InputManager.GetInformationDown()) + { + CurrentBuildTile = Interfacing.MousedObject.GetComponent(); + if (CurrentBuildTile.CanBuild == false) + { + CurrentBuildTile = null; + } else + { + if (CurrentBuildTile.Agent.Controllable) + { + GUIManager.EnvironmentUI.BuildingMenu.Open(CurrentBuildTile); + } + } + }*/ + } + } + } +} diff --git a/Core/Game/Player/Commands/Default/BaseSerializableValue.cs.meta b/Core/Game/Abilities/BuildAbil/BuildManager.cs.meta similarity index 75% rename from Core/Game/Player/Commands/Default/BaseSerializableValue.cs.meta rename to Core/Game/Abilities/BuildAbil/BuildManager.cs.meta index 21425307..5751d1ab 100644 --- a/Core/Game/Player/Commands/Default/BaseSerializableValue.cs.meta +++ b/Core/Game/Abilities/BuildAbil/BuildManager.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: 2e109c9a7def0460faf8705eb304cddf -timeCreated: 1451622839 +guid: 002aed10254514e258572af0e241a59c +timeCreated: 1446832266 licenseType: Pro MonoImporter: serializedVersion: 2 diff --git a/Core/Game/Abilities/BuildAbil/BuildMenu.cs b/Core/Game/Abilities/BuildAbil/BuildMenu.cs new file mode 100644 index 00000000..5aee1b7b --- /dev/null +++ b/Core/Game/Abilities/BuildAbil/BuildMenu.cs @@ -0,0 +1,57 @@ +using UnityEngine; +using System.Collections; +using UnityEngine.UI; +using Lockstep; +public class BuildMenu : CerealBehaviour { + private LSUIWindow window; + public BuildNode CurrentBuildNode {get; private set;} + [SerializeField] + private BuildMenuTile[] _tiles; + BuildMenuTile[] Tiles {get {return _tiles;}} + private static BuildMenu instance; + public void Setup () { + window = GetComponent (); + instance = this; + for (int i = 0; i < _tiles.Length; i++) { + _tiles[i].Setup (i); + } + } + public void Initialize () { + StartCoroutine (StartClose ()); + } + IEnumerator StartClose () { + yield return null; + Close (); + } + public void Open (BuildNode node) + { + + CurrentBuildNode = node; + window.Show (); + + for (int i = 0; i < node.SpawnableAgents.Length; i++) { + Tiles[i].Open (node.SpawnableAgents[i]); + } + } + public void Close () { + window.Hide (); + foreach (BuildMenuTile tile in Tiles) { + tile.Close (); + } + + } + public static void Press (int index) { + instance.LocalPress (index); + } + private void LocalPress (int index) { + CurrentBuildNode.SendBuild (index); + Close (); + } + +#if UNITY_EDITOR + protected override void OnAfterSerialize () + { + _tiles = this.GetComponentsInChildrenOrderered () ?? _tiles; + } +#endif +} diff --git a/Core/Game/Player/Commands/BackwardsCommand.cs.meta b/Core/Game/Abilities/BuildAbil/BuildMenu.cs.meta similarity index 75% rename from Core/Game/Player/Commands/BackwardsCommand.cs.meta rename to Core/Game/Abilities/BuildAbil/BuildMenu.cs.meta index 8128dd25..7015d78d 100644 --- a/Core/Game/Player/Commands/BackwardsCommand.cs.meta +++ b/Core/Game/Abilities/BuildAbil/BuildMenu.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: 9641815bce2ca4e15b97ae138609a4f2 -timeCreated: 1451677754 +guid: cd5bddb94befd42d3a9ff0bdfab9f58c +timeCreated: 1442352555 licenseType: Pro MonoImporter: serializedVersion: 2 diff --git a/Core/Game/Abilities/BuildAbil/BuildMenuTile.cs b/Core/Game/Abilities/BuildAbil/BuildMenuTile.cs new file mode 100644 index 00000000..1aeadcc7 --- /dev/null +++ b/Core/Game/Abilities/BuildAbil/BuildMenuTile.cs @@ -0,0 +1,51 @@ +using UnityEngine; +using System.Collections; +using Lockstep; +using UnityEngine.UI; +using Lockstep.Data; +#if UNITY_EDITOR +using UnityEditor; +#endif +namespace Lockstep +{ + public class BuildMenuTile : CerealBehaviour + { + [SerializeField] + private Image _image; + Image Imager {get{return _image;}} + [SerializeField] + private Button _button; + Button Buttoner {get {return _button;}} + [SerializeField] + private Text _text; + Text Texter {get {return _text;}} + + public int ID {get; private set;} + public void Setup (int id) { + this.ID = id; + if (Buttoner.IsNotNull ()) + _button.onClick.AddListener(Press); + } + + + public void Open (string agentCode) { + AgentInterfacer agentInfo = AgentController.GetAgentInterfacer (agentCode); + Imager.sprite = agentInfo.Icon; + Texter.text = agentCode.ToString (); + gameObject.SetActiveIfNot (true); + } + public void Close () { + gameObject.SetActiveIfNot (false); + } + public void Press () { + BuildMenu.Press(ID); + } +#if UNITY_EDITOR + protected override void OnAfterSerialize () { + _image = _image ?? this.GetComponentInChildrenOrderered (); + _button = _button ?? this.GetComponentInChildrenOrderered