From 6023b9c9b4e3b26f7a82dc79b93fda562e7eb975 Mon Sep 17 00:00:00 2001 From: wserver/wangdisen <1065498738@qq.com> Date: Tue, 23 Aug 2022 13:58:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E5=B1=8B=E7=9B=B8=E5=85=B3=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Config/StructureConfigCategory.bytes | 5 +- Excel/Json/c/StructureConfig.txt | 1 + Excel/Json/s/StructureConfig.txt | 1 + Excel/StructureConfig.xlsx | Bin 19756 -> 19954 bytes Proto/OuterMessage.proto | 77 ++++++++- .../Cabin/Handler/C2M_ArriveCabinHandler.cs | 51 ++++++ .../Handler/C2M_CabinAddFarmlandHandler.cs | 52 ++++++ .../Cabin/Handler/C2M_CabinSeedHandler.cs | 53 ++++++ .../Demo/Cabin/Handler/C2M_GoCabinHandler.cs | 43 +++++ .../Handler/C2M_FarmlandSeedHandler.cs | 13 +- .../Gather/Handler/C2M_StopGatherHandler.cs | 11 +- Server/Hotfix/Server.Hotfix.csproj | 3 + Server/Model/Generate/ConfigEnum.cs | 2 + Server/Model/Generate/Message/OuterMessage.cs | 155 +++++++++++++++++- Server/Model/Generate/Message/OuterOpcode.cs | 9 + Server/Model/Server.Model.csproj | 8 + Unity/Animancer.FSM.csproj | 11 +- Unity/Animancer.csproj | 11 +- .../Config/StructureConfigCategory.bytes | 5 +- .../Hotfix/Demo/Building/BuildingSystem.cs | 17 ++ Unity/Codes/Hotfix/Demo/Cabin/CabinSystem.cs | 54 ++++++ .../Hotfix/Demo/Construct/ConstructSystem.cs | 20 +++ .../Hotfix/Demo/Farmland/FarmlandSystem.cs | 7 + .../Codes/Hotfix/Demo/Gather/GatherSystem.cs | 32 ++-- Unity/Codes/Hotfix/Demo/Helper/CabinHelper.cs | 107 ++++++++++++ .../Hotfix/Demo/Helper/FarmlandHelper.cs | 6 +- .../Codes/Hotfix/Demo/Helper/GatherHelper.cs | 2 +- .../Codes/Hotfix/Demo/Operate/CabinOperate.cs | 9 + .../Hotfix/Demo/Operate/ConstructOperate.cs | 18 +- .../Hotfix/Demo/Operate/FarmlandOperate.cs | 37 ++--- .../Hotfix/Demo/Operate/GatherOperate.cs | 50 +++--- .../Hotfix/Demo/Operate/PeopleOperate.cs | 40 +++-- .../Codes/Hotfix/Demo/People/PeopleSystem.cs | 6 + Unity/Codes/Hotfix/Demo/Unit/UnitFactory.cs | 2 +- Unity/Codes/Hotfix/Demo/Unit/UnitHelper.cs | 2 +- Unity/Codes/Hotfix/Demo/Unit/UnitSystem.cs | 19 +-- .../FUIFarmlandWindowComponentSystem.cs | 7 +- Unity/Codes/Model/Demo/Building/Building.cs | 2 +- Unity/Codes/Model/Demo/Cabin/Cabin.cs | 13 ++ Unity/Codes/Model/Demo/Common/GameUtil.cs | 5 + Unity/Codes/Model/Demo/ConstValue.cs | 2 + Unity/Codes/Model/Demo/Farmland/Farmland.cs | 6 +- Unity/Codes/Model/Generate/ConfigEnum.cs | 2 + .../Model/Generate/Message/OuterMessage.cs | 155 +++++++++++++++++- .../Model/Generate/Message/OuterOpcode.cs | 9 + Unity/Codes/Model/Module/Message/ErrorCode.cs | 3 + 46 files changed, 978 insertions(+), 165 deletions(-) create mode 100644 Server/Hotfix/Demo/Cabin/Handler/C2M_ArriveCabinHandler.cs create mode 100644 Server/Hotfix/Demo/Cabin/Handler/C2M_CabinAddFarmlandHandler.cs create mode 100644 Server/Hotfix/Demo/Cabin/Handler/C2M_CabinSeedHandler.cs create mode 100644 Server/Hotfix/Demo/Cabin/Handler/C2M_GoCabinHandler.cs create mode 100644 Unity/Codes/Hotfix/Demo/Cabin/CabinSystem.cs create mode 100644 Unity/Codes/Hotfix/Demo/Helper/CabinHelper.cs create mode 100644 Unity/Codes/Hotfix/Demo/Operate/CabinOperate.cs create mode 100644 Unity/Codes/Model/Demo/Cabin/Cabin.cs diff --git a/Config/StructureConfigCategory.bytes b/Config/StructureConfigCategory.bytes index 4e63870..b468c85 100644 --- a/Config/StructureConfigCategory.bytes +++ b/Config/StructureConfigCategory.bytes @@ -123,4 +123,7 @@ Build_4013 Build_4013武庄 A宗厅 (0d8dh Build_4014 -Build_4014宗厅 \ No newline at end of file +Build_4014宗厅 +Q 田间小屋 (0d8d@Hh +Build_4015 +Build_4015 田间小屋 \ No newline at end of file diff --git a/Excel/Json/c/StructureConfig.txt b/Excel/Json/c/StructureConfig.txt index 64d6fc2..87ec2b9 100644 --- a/Excel/Json/c/StructureConfig.txt +++ b/Excel/Json/c/StructureConfig.txt @@ -40,4 +40,5 @@ {"_t":"StructureConfig","_id":4012,"Name":"水车","Type":4,"Durable":2500,"DurableCoefficient":1,"FirmCoinNum":100,"CompleteMoneyNum":100,"Special":0,"Function":0,"DwellNumber":0,"PoultryNum":0,"Comfortable":0,"Boom":20,"UpgradeSequence":0,"State":0,"StateAffection":0,"SpecificPoint":0,"ON_OFF":0,"AtcFrequency":0,"Atc":0,"TargetNum":0,"Prefab":"Build_4012","CanMove":1,"Picture":"Build_4012","Describe":"水车","Remove":1}, {"_t":"StructureConfig","_id":4013,"Name":"武庄","Type":4,"Durable":2500,"DurableCoefficient":1,"FirmCoinNum":100,"CompleteMoneyNum":100,"Special":0,"Function":0,"DwellNumber":0,"PoultryNum":0,"Comfortable":0,"Boom":20,"UpgradeSequence":0,"State":0,"StateAffection":0,"SpecificPoint":0,"ON_OFF":0,"AtcFrequency":0,"Atc":0,"TargetNum":0,"Prefab":"Build_4013","CanMove":1,"Picture":"Build_4013","Describe":"武庄","Remove":1}, {"_t":"StructureConfig","_id":4014,"Name":"宗厅","Type":4,"Durable":2500,"DurableCoefficient":1,"FirmCoinNum":100,"CompleteMoneyNum":100,"Special":0,"Function":0,"DwellNumber":0,"PoultryNum":0,"Comfortable":0,"Boom":20,"UpgradeSequence":0,"State":0,"StateAffection":0,"SpecificPoint":0,"ON_OFF":0,"AtcFrequency":0,"Atc":0,"TargetNum":0,"Prefab":"Build_4014","CanMove":1,"Picture":"Build_4014","Describe":"宗厅","Remove":1}, +{"_t":"StructureConfig","_id":4015,"Name":"田间小屋","Type":4,"Durable":2500,"DurableCoefficient":1,"FirmCoinNum":100,"CompleteMoneyNum":100,"Special":7,"Function":5,"DwellNumber":0,"PoultryNum":0,"Comfortable":0,"Boom":20,"UpgradeSequence":0,"State":0,"StateAffection":0,"SpecificPoint":0,"ON_OFF":0,"AtcFrequency":0,"Atc":0,"TargetNum":0,"Prefab":"Build_4015","CanMove":1,"Picture":"Build_4015","Describe":"田间小屋","Remove":1}, ]} diff --git a/Excel/Json/s/StructureConfig.txt b/Excel/Json/s/StructureConfig.txt index 64d6fc2..87ec2b9 100644 --- a/Excel/Json/s/StructureConfig.txt +++ b/Excel/Json/s/StructureConfig.txt @@ -40,4 +40,5 @@ {"_t":"StructureConfig","_id":4012,"Name":"水车","Type":4,"Durable":2500,"DurableCoefficient":1,"FirmCoinNum":100,"CompleteMoneyNum":100,"Special":0,"Function":0,"DwellNumber":0,"PoultryNum":0,"Comfortable":0,"Boom":20,"UpgradeSequence":0,"State":0,"StateAffection":0,"SpecificPoint":0,"ON_OFF":0,"AtcFrequency":0,"Atc":0,"TargetNum":0,"Prefab":"Build_4012","CanMove":1,"Picture":"Build_4012","Describe":"水车","Remove":1}, {"_t":"StructureConfig","_id":4013,"Name":"武庄","Type":4,"Durable":2500,"DurableCoefficient":1,"FirmCoinNum":100,"CompleteMoneyNum":100,"Special":0,"Function":0,"DwellNumber":0,"PoultryNum":0,"Comfortable":0,"Boom":20,"UpgradeSequence":0,"State":0,"StateAffection":0,"SpecificPoint":0,"ON_OFF":0,"AtcFrequency":0,"Atc":0,"TargetNum":0,"Prefab":"Build_4013","CanMove":1,"Picture":"Build_4013","Describe":"武庄","Remove":1}, {"_t":"StructureConfig","_id":4014,"Name":"宗厅","Type":4,"Durable":2500,"DurableCoefficient":1,"FirmCoinNum":100,"CompleteMoneyNum":100,"Special":0,"Function":0,"DwellNumber":0,"PoultryNum":0,"Comfortable":0,"Boom":20,"UpgradeSequence":0,"State":0,"StateAffection":0,"SpecificPoint":0,"ON_OFF":0,"AtcFrequency":0,"Atc":0,"TargetNum":0,"Prefab":"Build_4014","CanMove":1,"Picture":"Build_4014","Describe":"宗厅","Remove":1}, +{"_t":"StructureConfig","_id":4015,"Name":"田间小屋","Type":4,"Durable":2500,"DurableCoefficient":1,"FirmCoinNum":100,"CompleteMoneyNum":100,"Special":7,"Function":5,"DwellNumber":0,"PoultryNum":0,"Comfortable":0,"Boom":20,"UpgradeSequence":0,"State":0,"StateAffection":0,"SpecificPoint":0,"ON_OFF":0,"AtcFrequency":0,"Atc":0,"TargetNum":0,"Prefab":"Build_4015","CanMove":1,"Picture":"Build_4015","Describe":"田间小屋","Remove":1}, ]} diff --git a/Excel/StructureConfig.xlsx b/Excel/StructureConfig.xlsx index dc8578f2deac98d5b689df1e3a61c68b432699f0..78b259f50c83e5a628b493778b37e621525ffb8d 100644 GIT binary patch delta 11994 zcma)iWmH_*wlx~uLI`dFf&~o{f(56L!XY>Wg1h@cLvVNZ;O-7V0>RxOxVzg|w7lEh z_w_d(KWgkjoqgt-OXgbpoGMC$K1qTu%YcTzwX%@%13YzFTS>Mxapnk^zRthB0gMV&=uVMMFs6U;+WC;RO}pOe-_ zG#R6fZ$XhTOkb-~y}>E=L6}mr67Z6F^}~tIEX0BQV_-Qh_wc;oh;C+`amofc-@;3E z#>K0bRsy{^lK^Jjn%62x{A|Ei(d-x4qb-dFP~u)0&}grnk`1{YE}mJ+;NKTfYBjzBFNV(2TQR$E4U8I_}?ju*PFo%3X?q`hIiIHt(;bu`cS>#8p<+ z(aKLx`{kqJyJcwo=Y%7rAH~+|o0`>`u;|6*ve#ZwRkG9mpsmmKZBoA4BG{dQ8`s+e z0#2)FTz`EAoz5T~BkBkpr1co2$x6b)MX^W_RAR$cLL=8RxAi{5hk}yIjT(ld2VPvl za=fNYKz8mAkPhZApG%u(35b$~jfYMB@$+_f=)ggJRP8xE?^|5h)shoq)BikccBTDh<#eNezq9tVbLQ+<9H&3R&|H!~6Q^U6|M~UG((Y#G zW7Ff(qw}TS>Dle+<++Qi4i-u35P;EYSsT_$Ldp+3w6wH3^Ud;$}nie5VQP*=~+9N!P@cdjsYl*%Z5GHdZ@zHhQH=X z{5*ZIeL)jZbeoj7^yqZg1;anP=F!;PxbUDU<;b6YKG}19yxKDo*0Y&4gt1QJ4L6}p zT3So`=(K2Ypw2m$)OmRrNN;s+clWRmr{4d`V;duNQhNv^>0CRB6s%23K+ASIcOJI6 zeCxA6U^#PRaqryt@Ttqj2?)n+w@ey1tUnsnDo{P^fq1KZX(kKp>h9?5NT<iZSxuh~9OYO^jLXOqI=Cqh% z?Z!#V(8Z=}PGg{~5zK;qs}{OCAb0*|I)`3uPGzd$gmT9L<&D~=%8oW=hJ{F(>0#;0 zTvp}IRC-J6*K1CTyT|nVhgXyLN>%jo#hyF2rtv^!nmbzQr}dAMyNuW^WQ(6@B;~rS z_vteam`s`0}nPS zijI3fS|(2{-EMc3`}-^Ey01BJp{lb)w{H3prl%G`vaZxl6vafQ+OE_s7X*fn%Oo}x zOm%ljHlHlRc2)+8Y>rd+EXB_&y9v{bTqkgW7WsYUm`}}paXXiXsT}<1W`ueo%5V74 zcCBk2>dt{)!D$zxxl)zZ#J6UkzH@U^9j0~1SL&6i`|JEmQ;Wop3663Sj1mE#XF)qO z*U?{Xydy0HM?ZkdNya{clthwdk^r-fxiMq1J&9%_hc&^gCc``v%xB73KBwb zRZ*kE?9EcfTbT|D1Pukv(O(!%`E!n^s(Y8oax&gvC=f`T(&S|DXj8FKM{in72sx)_ zvqf*df&5EGfuQg7X)*M)cm-K7JuT>-uBK)~>$9y?4cz;(JwK5y%*mhq3b>Z)OlgN{ z*10($L0(+UZ=XYJ;3XVImkncnw3$0wpLJ6{H0RzS~Ljwl16-G(>+8cM^#^hU37*i_*Ms=N)91>TmXt11q^!6qo#R1)kw zcS{+zN;ar`;dc=#43IvL@Lp_NyvU9`v3{s9pWp2g0yisXsq6Jy1F&2a(sRZq2vpv< zP=xF!kJN4BH9p~US|;=GQuh}x_F%L9bfCgJ(4kK#y2VH7(_c6hEep3xwdZ@kh2KPG ze4+6kFZuWh{@jr)L{A*4rcsgEYCXY&;EA?{qj8 zOI^5im~=RT0G-zroEMpwG4io<`AaVlB>Yyd{K9T=C0ga|t1sTg6YQtYxgw#vY;x$Z zJN%?>yZWMtfLGfTT}3EgFrTV(A3mb_8Iv`T3l*QgJM={pGPwvb3J2C3Y%{uPsj_+< zl=fKHm*ZhT9i54Ob=;nc-|jsMQ>`%vHbFuEhJW)j6aafZx>Z1HL7Lls`L)N&>Vw~? zw4zWkFS>!KjPHIk973}#cG3%xu3edR|A0&-YVqT z-}KsFdw=$phEGD`z%?VEwi$A}Z^|_;xp=;r`#YlE0RF`1(@rfPKO~DjjG9NU6ba|$ zye%Lm>>y@Tu8O&q2qRZ)uBK*edDt;k5HAUts~%ZbpFX6~bNl^MsP#>uv&)1$@2Yqr z&yZ>0N$B6nF)LUVEK9Z5d!xX|p+93686v08v*xocZJIBbkqY>xkwlt|xQkP)Ornyw zsx^z)p(^ws7j?Hn|9Cf^cDNs9J#N~M0(c*fS(NRIh`g}tgde?{LFPhB7h>bU{@J$Z z-@e#5PGTHp#P-OCOmp>NG$WfL+ilv>@0|x=91KG+BRncKnxFj^v>C}rspPO#9e ztmVr=V=*_C+CtQ^w_);HcI5dd4_mrDBs9ak2X0s;w&bz6FIn8;^pAVO_`}VQCqNZ?3-XT)4et)^EE2x-W~s@G zkft11LmY&P7|Yy zYvhS``D*&=H~|98j;r@bfI%dfDh2dD&W?P0RKYTilkF@9Hv>bWr#`!hsDmg@eq^JM zXj5?-`+W%yO6lIaJfg3uGf0pwAB$@&KqL(%J@t429JnDgkj_$m8N*Z z85=W7F%&&hUnwWr!R%O^Q2dgH1uV|`)ZGTefSY2Tub0m?No015vIVZf}G zqOfjjJtkMk{j+$0b-H~Rsa0V2t7EzQ8mE!D2ZaD>(%AB|NOUSx}FmCka!e`2$p z5ZXyc7*5A-X^i@1OUl3!4zKq21r5Wm-)ww&ut7Xkmk?1`IZaZ~mD#F2VQZ{dN^Y?V zynjcYm=p7eD7nTtyI<4%?W;FAV|cDZbV*nf7ohoo&c2DWcS7A1l#HBBZLB@|2kAxu z38P^>Gby`Q#;>;(M-#GbLAa5OylBCK7>x8x65~Ir^B{pPt^e*aq28D7Jdj^TeWvD2 zr!`{=)~?G|rUS->$ITbtrLVpQof`B6ss1{>b&8lUXoOSuo4 z7?i{k?*#z@LNwM-j<^l?A-~7>Z(RF=NtBhfqH&)~-~JZdsi)wYum3a!`|)N>Ipi%* zG;f^wNt&>$RjXfP5T2r+FlgRBW%jfwqcB*n6gn5xfthVY64WS8Q7X{7!QS9=R?cP5 z8*WFljcB~bj;9LrnUbYPNHf15`CBc2^gOtwXA(q+-c6M3>nHzdN{cg5`J0cA)E*Sh za@gsLO|>9y?oMN{bQWNSWz~O5>NWQ4h$&13V>`;`=&GRT<}c$-qO~J@$VNK9*RQCS zQ1TH0vXMSE=q)HOa*#4b5@-mw+s?U)m=bf_yxyfYq5?-CwegwBY}C=dMa; zu)}n@?|DiLsY70}5{Wmr;fS!>b*br$DiaZ$c@_lRE;cAa;dUN(qMh0dJhSsJ;K@13 z@GyxJa9P-Y(=6Tm5ynrzx)R8+zUV97Mo|iC3Jz~b^El3Xdj4@RS0T@y!(irlZpR-A30*x_P2Jagy|HsKsJ~rM$ z_BcB!$gb3w6-KpHrmf5>(-{e@1$-C@F8n6@hDsGC>4vIPs*Siz)>}8|D_-&kRyWfb zGvH?7>2|2mSnXPrJ0IvA`BsQ{s4VzCX?D~&#-Dw7M z&c>+d*2iI}F`B>nqFNa3RlQ?(S#h5p^u;{`s6NTsiLUOWFf(LO^H9HLY6~hBnX2Dc z0-4t1aY^qZ2z>al_y2*VHTClB=55~+{xhL|<7$M`Fjd-w+}~Uk+aLH=S79Nz^t36Wi2~0hqO{Iaxx$R}WG&FO^X1@1hZncN!OjE>#nsc^^0Jtl!LN z)1b(kt?26xLik-1i@Tz7clo+6*bV}+6S5UR|0BgkjxHA;opEAajTz!NusVxkqDL0T ziq`d~an&GQ2drAilj$&-nNS5zCL^NXmzdLvsfq=HqiJ2cZ8Z5CrNdUp`+3^{V}EWg1ODZLqHN@gS#KLs=NLQdwSfj;b;?N>|&c_->8s zbMcArtZGp5T*VSLVW}E*75!5VsWFPObbK%HgQO02+-bx@X_GS*s{w%<4~g4d&Iq6}D2)16Osx;aY^-fQ6Qk4F zn6RFi3`NpE;7zjfzQw3yU`tHZR|Vj0G-L;pg#5GzL+Wt1uM^nrE3v)lU>re^Qb(gk z-28C6U891dJIsMAt}q9hLIM|y>-i`4lypx1Y@Ft^A+8F==)av#HgWxfvpq9wBdILt zj{)Ux&9fi`m^tYye7 zB>Z1#i?aoS6y}z%O|h*i7Ryh25I#;#{os!>COb{%Y|R;au=X_7jc%86CxFz!H4JWi zO5Cb0_|fQH4eEE*HpN1HHFe*QBIp}?^Y2{#lTbB8Qi=bPP%NhFN&$lP7mDARTkFTa zur?4TEj@*}HD+@@<{mO7$Yo+sR}p|Q(L*n$pF&%k1swfcs*7<$ENUe@k0oYYkeTh?eBxhgtb#Cmvl>{wHf&uIWXqdf4J))l)7lI!c4PBmbUV2iS& z+m;%w&qe{or9R8)26pt;m7H1RiZxv6KEoKZ7(P*kzf12>m zBsJ9_Y4q$e&|vl{mgx@?!P4Z1(t+wEA}DX3wRpt*T>7c zr{kaT{vGyd$zMRo8r*Z$S56s_dB0%25t)+q3wB6UPj*775nHmBvq zVcE0Pa1Fc4DpgS&y-+E6QlQqDyfvk%T7^8Od(nQAeiTUBjG4_9Mtb;wwI6P;oG%CJ`in*7{^fQPyS$OU&MFKw1^#%za1l%4-5yWz%lh?K@v;0j@mZ~vYC`6fy%|`Sf}|$ZXT{MCPU_B< zVatQ~rrAxP37pcxEOF;0!2~J(LY=w7K<1`2-+yp=_kZA&K6q8iS@IXC9R1R7*#nkO zLbEgv?JUyD<-X17B50oSUf>-^bd7m^AETqZ?5ODKkN$>H@7WDA6rJIjtJ>P+}Pp` zmfyugq|r=qKUyGN245ko_q5PmA5c#kZ$ZYynSF{J7?P(mR#jf3Tvv-XNUmqqeN|K9 zE5xh+g&)+GlPy?Z@}kpi-P>1FPBXqV`OSLa>gM6@d5wK#v-9J@@y48s)#=&(#me=v z#r=evJa+g2ln*<4sG;b%jUY`YL2)*`OWKNaHWZ~iDvjq&vD%K>&u;filKF|z)k>dr z_V*XIyR^)oDWQ-$wvLIO-!*AOJ5*oQFmhI#=&O`$RG$Hl74rv6YPZK{>ifL=8>J_z zOE-FUBg&;jbCuoWt>-r7g%=aH?&aSmVJFxhfM`yiq{&SUrf(T zKPEr;3ESOLg>UJcUzIdy#lNM=ispK%!fk<&|8mEKFnZ`b&!)Oz_t8A$rg?+zN<&FI z36Q_sE&*oPv`hL#qQop2ms;W)+?*&>Mgfe&)1IZyq%h!av%RK7lvH%!7A@4$=;7{S z1H(UvX7N0=Z}YlV={{fW-t}6sb^bg@+T8g3<|AWk)3^;z7~^Z{tRNFAhTf?~ml=)u z`$dgVfQV&) zh$R>tPL_>`FBmF|H{2&?VIj?@ViU&Wm=zgEPF#0jUV$nuqv^O8X+=zUp_OaWcI(YWFP2GSCx5&NZx@;F8CGe zx$g^dp|2QT4YZGoq}%{%Z+ z1khf>!Kt)9?WB2Eko}fS>6L8}%b?E8lLZD43;dTU;QkvnLABzuh2ZT3a=A0{TOaix z_gn*1M_I8cyWCvU*;=uW^-}f`5rhGfzap+Ep+VxT6anI&B7G^Teu&#dc0@Y_RsaWy zt8c1XV*$;1;}304Wkch^)}dqU3$z87CV7bcN%YKX;ZzNWms>ORm=TdEEE^-RNO`$p^5J z$=D(?nsQi87dxOAk4&sNMx1EUgDU-lHdAb25Tx-u>^n7*xL_ncNcedaB_%CLG&1T% zZk14!eH(WM2!8(NOPNbF5G@A*=KUQwqO`{zQ=flgAeq&b(i+6`JdKhJ31mQt1(J#k z&!)r&f#u^z!EzUChuPm8_BVzJJ9b8D>I_h^fs8EE1_j0acp;epe1gD2b-oEFNj20URVXhaC2q6wUF>lgVn+ktW{pGz@u_og$5)zT5;zLWe2j!aMSnzkUz*xNh3hw`!`Z#4c8%D^7Du;LNkB#Wk zK=l}j8*^Y@1NmDq`)QCy!T-*lTa3%l(5C4GH1sdb0ki&jlyi@(iEU=fTLhJHXH24+wz+W?c)JHVv#W`_omf&>7vZL_ ztx9bHyO0@4zPN&vx6RS}DvnGO4@DD_c#==wGS@-kvmiM!n4r~%p4}MNbdBGBzZgsX z<#;xwt$O$A#>sUiJzF_0bRT(L8d3n-&g+AIo65uDHFACD$tyv=Nigq;>y;{r4Bt16 zoU}ryG#4)rF3ypBH#i3J6@^RgLmcy1HRLJUoVzRPMdDeh#pWLd{P>2C8^MD5$3~ z%gKz%)=1apv%Z3zjj@HH?bCoYfUmBg2D))Cyx{*RHNjU*v%xx}x;p+nT3x;RNA~L< zos*Nw$j9-r{aw5t92C}J(-G+q=}a&&zj|-HGSLq&yo={ra3557=tD4ev&tl3ws*A^jAX0NIeYKPXFEgS5C+Y;m6&5Fl4YUv8>{$`f3?{z(V zEC(r9qBhsbz*RTvjbRXeir-NM@L+i{73slh@cKvc=(}X#RimLB2W0L_TVl-;S28x- z$SWGFSTNX!wn!S00Bag$8Tb&D4#`|=ObI*w{MHmKD0V7ST)D`(O0gJlj70~7tv8+d zGPD;E5X$e8y@M+y{S^fj=3~lE6tJ37P@~XJZT&)Zl*5LGsHdE0MpN+~DThSx;iZg& zf)L#tv=WjZq5d`REGpDzm043NZJzVK^b(mCR#>{jNFB|4XDrU=r!w;nahF{(kv;oS z=8>CyuO#s!dEjS$=%SK-Z)2+%gD#n9uN}|_GD>jx!z&FgD?qik+L+JYpM@sCshjMr z5#01jc!g!-Hx3+p5}ap`8v2}5&-I8qvs2M$Y1e1jE|8~#W=9}qSa_4d^tyP=0oM|? z|ESs_%3`W0Wr2soEvGwt@bG|{&P`a7*6!{ld|32sV5~%0Pyc<)H(_*IL&swiuyjOw!v1!Znc{lh>(Rz{37WU&Y;vAGjj@u>!?0776_HNv(57FEz76=!IGsHqD-ctyRZND13LvE7Po8 zszY&q z)m~@Q|>=(r7FuPgJt)DhoFm&M7WH=+uwXrx(y%CKh4uaRjm@%%z4 zr-8Dvuka39nMO;g|L|B@B;Q>}-UP+GsXFY}F6C|yF8md&RB?1i9takG+-Qp)dHxqp z`UYGf#_%nu>@O;s8lWXpZ)J@``L#WXnF{tE5*s-~QX(h+>&rxBZnITgq@6#*ot0`N4f{0 zI~}C5#5ha}`qlCjC58KNJp|!*?Ndy6CgBP-}tAW9TrYi_E4X|3i>qErLL4J z;~*vTjH*(TX*|OW$aIO}i?RQaK3*7;rF{oIOF%C+Ttc?7g^^M$fH2AdOOrUoLD+P~ zJBL{9E0Pmy=1t|<)T0?4grP!km9DNkMj3Gt9r?JMq&(Ia>0h=;+c0G*&moUR(EY@D!(x~p#F5>#XsmfLe_%+(1MoQ8QsWO~ok=YpAzhE;dZe~5X}QW%zd zCc#&`lvGW%fvnI8iE>{`={!4R36$eoW|(XI_zfW#cXduXX`vWe3aw9sF@L;*CgMY$ zc}`96Clm<=L0}A^htEO=O_lKnbvQ>h2pbA$DOWfP@D-irsStehbw*-Mbeld1Vv0p1 zCe4-;l1qfTHVn`2GUE-i|GFyI|%gXoJ1e!_Ur$xZ1icS;ULZlAjuJsFv z(3fvkGt1uWt)Q@buP6xFKi^q@%><_i(x5rX<8}BX(hH>Xcrv~AdO3@yW5E)tE2un|<8h+y3)S93HU4ogh^dY=#&KBf z8&k{jLsHOWi=ua2DQ?{3l0!;sd843|O2!7hW&YM=w~ijv;U#bvwV7*fuTzXbzo0IA z>Pc+OI10R*!aX^I&cT414e2*J9yNqI2tQyOx=43@yh$#-JDclvOyw#>YjJMtK?$R5 zjg`U{YWfJbu~hwQK$C_r%!)np#?i=`q>P}eP$XHkrJgJY?nbb-@eRol!*bZd5Z=v6 zw0Xe{Cu~^&nD-g!+Y)}HEwLjxVLT76kl^!&8w(&+?=6doK?|13ib}zD$!@V^!t8id zqd+(zkvTNRD<^NZFzXg{Nf*5LD>$ffeo^*Noq-C6zDZ{4p%imvU9yRD&oFcwbU@K< z5-vx&8K%PUES%C zAxdBf>z0nKerjqb_F^){euS;W5L$zWK8iXM{{SZ|0tFQ{DDg513?hKB6NxebMgH+4 zaA*ldm{XW2ELfZ41$v1@m95Nwu zCKNOj8RYY4l$fLd3^QX?pd=TJBz07mBs+`^brcpgP860D9rQ#Lj}#AdV3e~IInjT9 wLJb9l_jCuy-|si6fs2YD#);~e!Xf(4^TB^!bV3Zdh#=~vH0HA~(9_=k2b`Eo_y7O^ delta 11764 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 + { + protected async override ETTask Run(Unit unit, C2M_ArriveCabin request, M2C_ArriveCabin response, Action reply) + { + try + { + + var people = unit.GetComponent().GetChild(request.PeopleId); + if (people == null) + { + response.Error = ErrorCode.ERR_PeopleNotFound; + } + else + { + var cabin = unit.GetGrandChild(request.CabinId); + if (cabin == null) + { + response.Error = ErrorCode.ERR_CabinNotFound; + } + else + { + + if (cabin.PeopleArrive(request.PeopleId)) + { + people.SetBehaveType(ConstBehaveType.BEHAVE_CABIN); + response.Error = ErrorCode.ERR_Success; + } + else + { + response.Error = ErrorCode.ERR_ArriveCabinFail; + } + + } + } + reply(); + } + catch (Exception e) + { + response.Message = e.ToString(); + response.Error = ErrorCode.ERR_OperateFail; + reply(); + } + + await ETTask.CompletedTask; + } + } +} \ No newline at end of file diff --git a/Server/Hotfix/Demo/Cabin/Handler/C2M_CabinAddFarmlandHandler.cs b/Server/Hotfix/Demo/Cabin/Handler/C2M_CabinAddFarmlandHandler.cs new file mode 100644 index 0000000..a8a8d93 --- /dev/null +++ b/Server/Hotfix/Demo/Cabin/Handler/C2M_CabinAddFarmlandHandler.cs @@ -0,0 +1,52 @@ +using System; + +namespace ET +{ + + public class C2M_CabinAddFarmlandHandler: AMActorLocationRpcHandler + { + protected async override ETTask Run(Unit unit, C2M_CabinAddFarmland request, M2C_CabinAddFarmland response, Action reply) + { + try + { + + var farmland = unit.GetGrandChild(request.FarmlandId); + if (farmland == null) + { + response.Error = ErrorCode.ERR_FarmlandNotFound; + } + else + { + var cabin = unit.GetGrandChild(request.CabinId); + if (cabin == null) + { + response.Error = ErrorCode.ERR_CabinNotFound; + } + else + { + + if (cabin.AddFarmland(request.FarmlandId)) + { + farmland.SetCabinId(request.CabinId); + response.Error = ErrorCode.ERR_Success; + } + else + { + response.Error = ErrorCode.ERR_OperateFail; + } + + } + } + reply(); + } + catch (Exception e) + { + response.Message = e.ToString(); + response.Error = ErrorCode.ERR_OperateFail; + reply(); + } + + await ETTask.CompletedTask; + } + } +} \ No newline at end of file diff --git a/Server/Hotfix/Demo/Cabin/Handler/C2M_CabinSeedHandler.cs b/Server/Hotfix/Demo/Cabin/Handler/C2M_CabinSeedHandler.cs new file mode 100644 index 0000000..befa4e6 --- /dev/null +++ b/Server/Hotfix/Demo/Cabin/Handler/C2M_CabinSeedHandler.cs @@ -0,0 +1,53 @@ +using System; + +namespace ET +{ + [FriendClass(typeof (Farmland))] + [FriendClass(typeof (Cabin))] + public class C2M_CabinSeedHandler: AMActorLocationRpcHandler + { + protected async override ETTask Run(Unit unit, C2M_CabinSeed request, M2C_CabinSeed res, Action reply) + { + try + { + res.Error = ErrorCode.ERR_Success; + var farmland = unit.GetGrandChild(request.FarmlandId); + if (GameUtil.IsErrorSuc(res.Error) && farmland == null) + { + res.Error = ErrorCode.ERR_PeopleNotFound; + } + + var cabin = unit.GetGrandChild(farmland.CabinId); + if (GameUtil.IsErrorSuc(res.Error) && cabin == null) + { + res.Error = ErrorCode.ERR_CabinNotFound; + } + + if (GameUtil.IsErrorSuc(res.Error) && cabin.ResidentState == 0) + { + res.Error = ErrorCode.ERR_CabinNotPeople; + } + + if (GameUtil.IsErrorSuc(res.Error) && farmland.FarmlandState != FarmlandState.FARMLAND_STATE_FREE) + { + res.Error = ErrorCode.ERR_FarmlandNotFree; + } + + if (GameUtil.IsErrorSuc(res.Error)) + { + res.Error = FarmlandOperate.FarmlandSeed(unit, farmland, request.CropCfgId); + } + + reply(); + } + catch (Exception e) + { + res.Message = e.ToString(); + res.Error = ErrorCode.ERR_OperateFail; + reply(); + } + + await ETTask.CompletedTask; + } + } +} \ No newline at end of file diff --git a/Server/Hotfix/Demo/Cabin/Handler/C2M_GoCabinHandler.cs b/Server/Hotfix/Demo/Cabin/Handler/C2M_GoCabinHandler.cs new file mode 100644 index 0000000..b3bf8a3 --- /dev/null +++ b/Server/Hotfix/Demo/Cabin/Handler/C2M_GoCabinHandler.cs @@ -0,0 +1,43 @@ +using System; + +namespace ET +{ + public class C2M_GoCabinHandler: AMActorLocationRpcHandler + { + protected async override ETTask Run(Unit unit, C2M_GoCabin request, M2C_GoCabin response, Action reply) + { + try + { + var people = unit.GetComponent().GetChild(request.PeopleId); + if (people == null) + { + response.Error = ErrorCode.ERR_PeopleNotFound; + } + else + { + var cabin = unit.GetGrandChild(request.CabinId); + if (cabin == null) + { + response.Error = ErrorCode.ERR_CabinNotFound; + } + else + { + PeopleOperate.ChangeBehave(unit, people, ConstBehaveType.BEHAVE_PREPARE_CABIN, request.CabinId); + cabin.PeoplePrepare(request.PeopleId); + response.Error = ErrorCode.ERR_Success; + } + } + + reply(); + } + catch (Exception e) + { + response.Message = e.ToString(); + response.Error = ErrorCode.ERR_OperateFail; + reply(); + } + + await ETTask.CompletedTask; + } + } +} \ No newline at end of file diff --git a/Server/Hotfix/Demo/Farmland/Handler/C2M_FarmlandSeedHandler.cs b/Server/Hotfix/Demo/Farmland/Handler/C2M_FarmlandSeedHandler.cs index 208196e..aa7d110 100644 --- a/Server/Hotfix/Demo/Farmland/Handler/C2M_FarmlandSeedHandler.cs +++ b/Server/Hotfix/Demo/Farmland/Handler/C2M_FarmlandSeedHandler.cs @@ -8,8 +8,17 @@ namespace ET { try { - (response.FarmlandIds, response.CropCfgIds) = FarmlandOperate.FarmlandSeed(unit, request.FarmlandIds, request.CropCfgIds); - response.Error = ErrorCode.ERR_Success; + Farmland farmland = unit.GetGrandChild(request.FarmlandId); + if (farmland == null) + { + response.Error = ErrorCode.ERR_FarmlandNotFound; + } + else + { + response.Error = FarmlandOperate.FarmlandSeed(unit, farmland, request.CropCfgId); + response.Error = ErrorCode.ERR_Success; + } + reply(); } catch (Exception e) diff --git a/Server/Hotfix/Demo/Gather/Handler/C2M_StopGatherHandler.cs b/Server/Hotfix/Demo/Gather/Handler/C2M_StopGatherHandler.cs index 25b83fa..397eb4f 100644 --- a/Server/Hotfix/Demo/Gather/Handler/C2M_StopGatherHandler.cs +++ b/Server/Hotfix/Demo/Gather/Handler/C2M_StopGatherHandler.cs @@ -11,7 +11,16 @@ namespace ET { try { - response.Error = GatherOperate.StopGather(unit, request.GatherId, request.PeopleId); + + var people = unit.GetComponent().GetChild(request.PeopleId); + if (people == null) + { + response.Error= ErrorCode.ERR_PeopleNotFound; + } + else + { + response.Error = PeopleOperate.StopBehave(unit, people); + } reply(); } catch (Exception e) diff --git a/Server/Hotfix/Server.Hotfix.csproj b/Server/Hotfix/Server.Hotfix.csproj index 4c39e2e..cd16d06 100644 --- a/Server/Hotfix/Server.Hotfix.csproj +++ b/Server/Hotfix/Server.Hotfix.csproj @@ -34,6 +34,9 @@ Demo\Building\BuildingSystem.cs + + Demo\Cabin\CabinSystem.cs + Demo\Construct\ConstructComponentSystem.cs diff --git a/Server/Model/Generate/ConfigEnum.cs b/Server/Model/Generate/ConfigEnum.cs index 5f136d3..f1cb1b9 100644 --- a/Server/Model/Generate/ConfigEnum.cs +++ b/Server/Model/Generate/ConfigEnum.cs @@ -909,6 +909,8 @@ namespace ET MAKINGMEDICINE = 5, // 粮仓 GRANARY = 6, + // 田间小屋 + FARM_CABIN = 7, } public enum StructureSpecificPointEnum { diff --git a/Server/Model/Generate/Message/OuterMessage.cs b/Server/Model/Generate/Message/OuterMessage.cs index e9817f5..19e5780 100644 --- a/Server/Model/Generate/Message/OuterMessage.cs +++ b/Server/Model/Generate/Message/OuterMessage.cs @@ -146,6 +146,9 @@ namespace ET [ProtoMember(7)] public int IsUpgrade { get; set; } + [ProtoMember(8)] + public CabinProto Cabin { get; set; } + } [Message(OuterOpcode.PeopleProto)] @@ -2591,10 +2594,10 @@ namespace ET public int RpcId { get; set; } [ProtoMember(1)] - public List FarmlandIds = new List(); + public long FarmlandId { get; set; } [ProtoMember(2)] - public List CropCfgIds = new List(); + public int CropCfgId { get; set; } } @@ -2611,12 +2614,6 @@ namespace ET [ProtoMember(92)] public string Message { get; set; } - [ProtoMember(1)] - public List FarmlandIds = new List(); - - [ProtoMember(2)] - public List CropCfgIds = new List(); - } [ResponseType(nameof(M2C_ChangeBehave))] @@ -2795,4 +2792,146 @@ namespace ET } + [Message(OuterOpcode.CabinProto)] + [ProtoContract] + public partial class CabinProto: Object + { + [ProtoMember(1)] + public long Id { get; set; } + + [ProtoMember(2)] + public long PeopleId { get; set; } + + [ProtoMember(3)] + public List FarmlandIds = new List(); + + [ProtoMember(4)] + public int ResidentState { get; set; } + + } + + [ResponseType(nameof(M2C_GoCabin))] + [Message(OuterOpcode.C2M_GoCabin)] + [ProtoContract] + public partial class C2M_GoCabin: Object, IActorLocationRequest + { + [ProtoMember(90)] + public int RpcId { get; set; } + + [ProtoMember(1)] + public long PeopleId { get; set; } + + [ProtoMember(2)] + public long CabinId { get; set; } + + } + + [Message(OuterOpcode.M2C_GoCabin)] + [ProtoContract] + public partial class M2C_GoCabin: Object, IActorLocationResponse + { + [ProtoMember(90)] + public int RpcId { get; set; } + + [ProtoMember(91)] + public int Error { get; set; } + + [ProtoMember(92)] + public string Message { get; set; } + + } + + [ResponseType(nameof(M2C_ArriveCabin))] + [Message(OuterOpcode.C2M_ArriveCabin)] + [ProtoContract] + public partial class C2M_ArriveCabin: Object, IActorLocationRequest + { + [ProtoMember(90)] + public int RpcId { get; set; } + + [ProtoMember(1)] + public long PeopleId { get; set; } + + [ProtoMember(2)] + public long CabinId { get; set; } + + } + + [Message(OuterOpcode.M2C_ArriveCabin)] + [ProtoContract] + public partial class M2C_ArriveCabin: Object, IActorLocationResponse + { + [ProtoMember(90)] + public int RpcId { get; set; } + + [ProtoMember(91)] + public int Error { get; set; } + + [ProtoMember(92)] + public string Message { get; set; } + + } + + [ResponseType(nameof(M2C_CabinAddFarmland))] + [Message(OuterOpcode.C2M_CabinAddFarmland)] + [ProtoContract] + public partial class C2M_CabinAddFarmland: Object, IActorLocationRequest + { + [ProtoMember(90)] + public int RpcId { get; set; } + + [ProtoMember(1)] + public long FarmlandId { get; set; } + + [ProtoMember(2)] + public long CabinId { get; set; } + + } + + [Message(OuterOpcode.M2C_CabinAddFarmland)] + [ProtoContract] + public partial class M2C_CabinAddFarmland: Object, IActorLocationResponse + { + [ProtoMember(90)] + public int RpcId { get; set; } + + [ProtoMember(91)] + public int Error { get; set; } + + [ProtoMember(92)] + public string Message { get; set; } + + } + + [ResponseType(nameof(M2C_CabinSeed))] + [Message(OuterOpcode.C2M_CabinSeed)] + [ProtoContract] + public partial class C2M_CabinSeed: Object, IActorLocationRequest + { + [ProtoMember(90)] + public int RpcId { get; set; } + + [ProtoMember(1)] + public long FarmlandId { get; set; } + + [ProtoMember(2)] + public int CropCfgId { get; set; } + + } + + [Message(OuterOpcode.M2C_CabinSeed)] + [ProtoContract] + public partial class M2C_CabinSeed: Object, IActorLocationResponse + { + [ProtoMember(90)] + public int RpcId { get; set; } + + [ProtoMember(91)] + public int Error { get; set; } + + [ProtoMember(92)] + public string Message { get; set; } + + } + } diff --git a/Server/Model/Generate/Message/OuterOpcode.cs b/Server/Model/Generate/Message/OuterOpcode.cs index 539d4ca..5d81e7c 100644 --- a/Server/Model/Generate/Message/OuterOpcode.cs +++ b/Server/Model/Generate/Message/OuterOpcode.cs @@ -166,5 +166,14 @@ namespace ET public const ushort M2C_FarmlandRipe = 10163; public const ushort M2C_NtfFarmlandRipe = 10164; public const ushort M2C_NtfFarmlandRipeProgress = 10165; + public const ushort CabinProto = 10166; + public const ushort C2M_GoCabin = 10167; + public const ushort M2C_GoCabin = 10168; + public const ushort C2M_ArriveCabin = 10169; + public const ushort M2C_ArriveCabin = 10170; + public const ushort C2M_CabinAddFarmland = 10171; + public const ushort M2C_CabinAddFarmland = 10172; + public const ushort C2M_CabinSeed = 10173; + public const ushort M2C_CabinSeed = 10174; } } diff --git a/Server/Model/Server.Model.csproj b/Server/Model/Server.Model.csproj index f26a115..7a3178a 100644 --- a/Server/Model/Server.Model.csproj +++ b/Server/Model/Server.Model.csproj @@ -46,6 +46,14 @@ Demo\Building\Building.cs + + Demo\Cabin\Cabin.cs + + + + Demo\Common\GameUtil.cs + + Demo\Config\SynthesisConfig.cs diff --git a/Unity/Animancer.FSM.csproj b/Unity/Animancer.FSM.csproj index 8c724c1..10f0251 100644 --- a/Unity/Animancer.FSM.csproj +++ b/Unity/Animancer.FSM.csproj @@ -53,7 +53,7 @@ 2021.3.7f1c1 - + @@ -310,9 +310,6 @@ C:\Program Files\Unity\Hub\Editor\2021.3.7f1c1\Editor\Data\Managed\UnityEditor.Graphs.dll - - C:\Program Files\Unity\Hub\Editor\2021.3.7f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\UnityEditor.Android.Extensions.dll - C:\Program Files\Unity\Hub\Editor\2021.3.7f1c1\Editor\Data\PlaybackEngines\WindowsStandaloneSupport\UnityEditor.WindowsStandalone.Extensions.dll @@ -349,12 +346,6 @@ Assets\ThirdParty\NCalc\NCalc.dll - - C:\Program Files\Unity\Hub\Editor\2021.3.7f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Unity.Android.Types.dll - - - C:\Program Files\Unity\Hub\Editor\2021.3.7f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Unity.Android.Gradle.dll - C:\Program Files\Unity\Hub\Editor\2021.3.7f1c1\Editor\Data\UnityReferenceAssemblies\unity-4.8-api\mscorlib.dll diff --git a/Unity/Animancer.csproj b/Unity/Animancer.csproj index 779372b..d329335 100644 --- a/Unity/Animancer.csproj +++ b/Unity/Animancer.csproj @@ -53,7 +53,7 @@ 2021.3.7f1c1 - + @@ -447,9 +447,6 @@ C:\Program Files\Unity\Hub\Editor\2021.3.7f1c1\Editor\Data\Managed\UnityEditor.Graphs.dll - - C:\Program Files\Unity\Hub\Editor\2021.3.7f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\UnityEditor.Android.Extensions.dll - C:\Program Files\Unity\Hub\Editor\2021.3.7f1c1\Editor\Data\PlaybackEngines\WindowsStandaloneSupport\UnityEditor.WindowsStandalone.Extensions.dll @@ -486,12 +483,6 @@ Assets\ThirdParty\NCalc\NCalc.dll - - C:\Program Files\Unity\Hub\Editor\2021.3.7f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Unity.Android.Types.dll - - - C:\Program Files\Unity\Hub\Editor\2021.3.7f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Unity.Android.Gradle.dll - C:\Program Files\Unity\Hub\Editor\2021.3.7f1c1\Editor\Data\UnityReferenceAssemblies\unity-4.8-api\mscorlib.dll diff --git a/Unity/Assets/Bundles/Config/StructureConfigCategory.bytes b/Unity/Assets/Bundles/Config/StructureConfigCategory.bytes index 4e63870..b468c85 100644 --- a/Unity/Assets/Bundles/Config/StructureConfigCategory.bytes +++ b/Unity/Assets/Bundles/Config/StructureConfigCategory.bytes @@ -123,4 +123,7 @@ Build_4013 Build_4013武庄 A宗厅 (0d8dh Build_4014 -Build_4014宗厅 \ No newline at end of file +Build_4014宗厅 +Q 田间小屋 (0d8d@Hh +Build_4015 +Build_4015 田间小屋 \ No newline at end of file diff --git a/Unity/Codes/Hotfix/Demo/Building/BuildingSystem.cs b/Unity/Codes/Hotfix/Demo/Building/BuildingSystem.cs index a47df3d..7d3ee0e 100644 --- a/Unity/Codes/Hotfix/Demo/Building/BuildingSystem.cs +++ b/Unity/Codes/Hotfix/Demo/Building/BuildingSystem.cs @@ -17,6 +17,12 @@ namespace ET var farmland = self.AddChildWithId(buildingProto.Farmland.id); farmland.FromMessage(buildingProto.Farmland); } + + if (buildingProto.Cabin != null) + { + var cabin = self.AddChildWithId(buildingProto.Cabin.Id); + cabin.FromMessage(buildingProto.Cabin); + } } public static BuildingProto ToMessage(this Building self) @@ -39,6 +45,17 @@ namespace ET } } + if (self.Config.Special == (int) StructureSpecialEnum.FARM_CABIN) + { + foreach (var v in self.Children.Values) + { + if (v.GetType() == typeof (Cabin)) + { + proto.Cabin = ((Cabin) v).ToMessage(); + } + } + } + return proto; } diff --git a/Unity/Codes/Hotfix/Demo/Cabin/CabinSystem.cs b/Unity/Codes/Hotfix/Demo/Cabin/CabinSystem.cs new file mode 100644 index 0000000..d6b1b4b --- /dev/null +++ b/Unity/Codes/Hotfix/Demo/Cabin/CabinSystem.cs @@ -0,0 +1,54 @@ +namespace ET +{ + [FriendClass(typeof(Cabin))] + public static class CabinSystem + { + public static void FromMessage(this Cabin self, CabinProto proto) + { + self.Id = proto.Id; + self.PeopleId = proto.PeopleId; + self.FarmlandIds = proto.FarmlandIds; + } + + public static CabinProto ToMessage(this Cabin self) + { + var proto = new CabinProto(); + proto.Id = self.Id; + proto.PeopleId = self.PeopleId; + proto.FarmlandIds = self.FarmlandIds; + return proto; + } + + public static void PeoplePrepare(this Cabin self,long peopleId) + { + self.PeopleId = peopleId; + } + + public static bool PeopleArrive(this Cabin self,long peopleId) + { + if (self.PeopleId != peopleId) + { + return false; + } + self.ResidentState = 1; + return true; + } + public static void PeopleLeave(this Cabin self) + { + self.ResidentState = 0; + self.PeopleId = 0; + } + + public static bool AddFarmland(this Cabin self,long farmlandId) + { + if (self.FarmlandIds.Contains(farmlandId)) + { + return false; + } + self.FarmlandIds.Add(farmlandId); + return true; + } + + + } +} \ No newline at end of file diff --git a/Unity/Codes/Hotfix/Demo/Construct/ConstructSystem.cs b/Unity/Codes/Hotfix/Demo/Construct/ConstructSystem.cs index 120e10e..563052f 100644 --- a/Unity/Codes/Hotfix/Demo/Construct/ConstructSystem.cs +++ b/Unity/Codes/Hotfix/Demo/Construct/ConstructSystem.cs @@ -57,6 +57,26 @@ namespace ET return labor; } + + public static void GoConstruct(this Construct self, long peopleId) + { + self.PreparePeopleIdList.Add(peopleId); + } + + public static void StartConstruct(this Construct self, long peopleId) + { + if (self.PreparePeopleIdList.Contains(peopleId)) + { + self.PreparePeopleIdList.Remove(peopleId); + self.PeopleIdList.Add(peopleId); + } + } + + public static void StopConstruct(this Construct self, long peopleId) + { + self.PreparePeopleIdList.Remove(peopleId); + self.PeopleIdList.Remove(peopleId); + } } } \ No newline at end of file diff --git a/Unity/Codes/Hotfix/Demo/Farmland/FarmlandSystem.cs b/Unity/Codes/Hotfix/Demo/Farmland/FarmlandSystem.cs index 8b86b31..1f35ffb 100644 --- a/Unity/Codes/Hotfix/Demo/Farmland/FarmlandSystem.cs +++ b/Unity/Codes/Hotfix/Demo/Farmland/FarmlandSystem.cs @@ -102,6 +102,13 @@ namespace ET Game.EventSystem.Publish(new FarmlandStateChanged(){Farmland = self}); #endif } + + public static void SetCabinId(this Farmland self, long cabinId) + { + self.CabinId = cabinId; + } + + } diff --git a/Unity/Codes/Hotfix/Demo/Gather/GatherSystem.cs b/Unity/Codes/Hotfix/Demo/Gather/GatherSystem.cs index 90fd1c8..f3fe5b1 100644 --- a/Unity/Codes/Hotfix/Demo/Gather/GatherSystem.cs +++ b/Unity/Codes/Hotfix/Demo/Gather/GatherSystem.cs @@ -24,6 +24,11 @@ return proto; } + public static bool GoGather(this Gather self, long peopleId) + { + self.PreparePeopleIdList.Add(peopleId); + return true; + } public static bool StartGather(this Gather self, long peopleId) { if (self.PreparePeopleIdList.Contains(peopleId) && !self.PeopleIdList.Contains(peopleId)) @@ -38,31 +43,16 @@ public static bool StopGather(this Gather self, long peopleId) { - foreach (var v in self.PeopleIdList) + bool result = self.PeopleIdList.Remove(peopleId) || self.PreparePeopleIdList.Remove(peopleId); + if (self.PeopleIdList.Count == 0 && self.PreparePeopleIdList.Count == 0) { - if (v == peopleId) - { - self.PeopleIdList.Remove(peopleId); - return true; - } + self.Dispose(); } - return false; + return result; } - public static bool StopReadGather(this Gather self, long peopleId) - { - foreach (var v in self.PreparePeopleIdList) - { - if (v == peopleId) - { - self.PreparePeopleIdList.Remove(peopleId); - return true; - } - } - - return false; - } + public static bool IsOver(this Gather self) { @@ -105,8 +95,6 @@ { self.GatherTime += tick; ResourcePoint res = unit.GetComponent().GetChild(self.ResPointId); - ResourcesPointConfig pointConfig = res.Config; - ResourcesConfig config = ResourcesConfigCategory.Instance.Get(self.ResConfigId); int amount = 0; if (config.OutInterval == 0 && self.PeopleIdList.Count > 0) diff --git a/Unity/Codes/Hotfix/Demo/Helper/CabinHelper.cs b/Unity/Codes/Hotfix/Demo/Helper/CabinHelper.cs new file mode 100644 index 0000000..305ee2d --- /dev/null +++ b/Unity/Codes/Hotfix/Demo/Helper/CabinHelper.cs @@ -0,0 +1,107 @@ +using System; + +namespace ET +{ + public static class CabinHelper + { + public static async ETTask GoCabin(Unit unit,People people,Cabin cabin) + { + try + { + C2M_GoCabin msg = new C2M_GoCabin() { PeopleId = people.Id,CabinId = cabin.Id}; + M2C_GoCabin resp = await unit.ZoneScene().GetComponent().Session.Call(msg) as M2C_GoCabin; + if (resp.Error == ErrorCode.ERR_Success) + { + cabin.PeoplePrepare(people.Id); + PeopleOperate.ChangeBehave(unit, people, ConstBehaveType.BEHAVE_PREPARE_CABIN, cabin.Id); + } + else + { + Log.Error(resp.Error.ToString()); + } + + return resp.Error; + } + catch (Exception e) + { + Log.Error(e.ToString()); + throw; + } + } + + public static async ETTask ArriveCabin(Unit unit,People people,Cabin cabin) + { + try + { + C2M_ArriveCabin msg = new C2M_ArriveCabin() { PeopleId = people.Id,CabinId = cabin.Id}; + M2C_ArriveCabin resp = await unit.ZoneScene().GetComponent().Session.Call(msg) as M2C_ArriveCabin; + if (resp.Error == ErrorCode.ERR_Success) + { + cabin.PeopleArrive(people.Id); + people.SetBehaveType(ConstBehaveType.BEHAVE_CABIN); + } + else + { + Log.Error(resp.Error.ToString()); + } + + return resp.Error; + } + catch (Exception e) + { + Log.Error(e.ToString()); + throw; + } + + + } + public static async ETTask AddFarmland(Unit unit,Cabin cabin,Farmland farmland) + { + try + { + C2M_CabinAddFarmland msg = new C2M_CabinAddFarmland() { CabinId = cabin.Id,FarmlandId = farmland.Id}; + M2C_CabinAddFarmland resp = await unit.ZoneScene().GetComponent().Session.Call(msg) as M2C_CabinAddFarmland; + if (resp.Error == ErrorCode.ERR_Success) + { + cabin.AddFarmland(farmland.Id); + farmland.SetCabinId(cabin.Id); + } + else + { + Log.Error(resp.Error.ToString()); + } + + return resp.Error; + } + catch (Exception e) + { + Log.Error(e.ToString()); + throw; + } + } + + public static async ETTask CabinSeed(Unit unit,Farmland farmland,int cropCfgId) + { + try + { + C2M_CabinSeed msg = new C2M_CabinSeed() { CropCfgId = cropCfgId,FarmlandId = farmland.Id}; + M2C_CabinSeed resp = await unit.ZoneScene().GetComponent().Session.Call(msg) as M2C_CabinSeed; + if (resp.Error == ErrorCode.ERR_Success) + { + FarmlandOperate.FarmlandSeed(unit, farmland, cropCfgId); + } + else + { + Log.Error(resp.Error.ToString()); + } + + return resp.Error; + } + catch (Exception e) + { + Log.Error(e.ToString()); + throw; + } + } + } +} \ No newline at end of file diff --git a/Unity/Codes/Hotfix/Demo/Helper/FarmlandHelper.cs b/Unity/Codes/Hotfix/Demo/Helper/FarmlandHelper.cs index 0879354..1b9319b 100644 --- a/Unity/Codes/Hotfix/Demo/Helper/FarmlandHelper.cs +++ b/Unity/Codes/Hotfix/Demo/Helper/FarmlandHelper.cs @@ -5,15 +5,15 @@ namespace ET { public static class FarmlandHelper { - public static async ETTask FarmlandSeed(Unit unit, List farmlandIds, List cropCfgIds) + public static async ETTask FarmlandSeed(Unit unit, Farmland farmland, int cropCfgId) { try { - C2M_FarmlandSeed msg = new C2M_FarmlandSeed() { FarmlandIds = farmlandIds, CropCfgIds = cropCfgIds }; + C2M_FarmlandSeed msg = new C2M_FarmlandSeed() { FarmlandId = farmland.Id, CropCfgId = cropCfgId }; M2C_FarmlandSeed resp = await unit.ZoneScene().GetComponent().Session.Call(msg) as M2C_FarmlandSeed; if (resp.Error == ErrorCode.ERR_Success) { - FarmlandOperate.FarmlandSeed(unit, resp.FarmlandIds, resp.CropCfgIds); + FarmlandOperate.FarmlandSeed(unit, farmland, cropCfgId); } else { diff --git a/Unity/Codes/Hotfix/Demo/Helper/GatherHelper.cs b/Unity/Codes/Hotfix/Demo/Helper/GatherHelper.cs index 2e7bf2f..7b88a66 100644 --- a/Unity/Codes/Hotfix/Demo/Helper/GatherHelper.cs +++ b/Unity/Codes/Hotfix/Demo/Helper/GatherHelper.cs @@ -74,7 +74,7 @@ namespace ET return resp.Error; } - GatherOperate.StopGather(unit, gatherId, peopleId); + // GatherOperate.StopGather(unit, gatherId, peopleId); } catch (Exception e) { diff --git a/Unity/Codes/Hotfix/Demo/Operate/CabinOperate.cs b/Unity/Codes/Hotfix/Demo/Operate/CabinOperate.cs new file mode 100644 index 0000000..ca9b9c7 --- /dev/null +++ b/Unity/Codes/Hotfix/Demo/Operate/CabinOperate.cs @@ -0,0 +1,9 @@ +namespace ET +{ + [FriendClass(typeof(People))] + [FriendClass(typeof(Cabin))] + public static class CabinOperate + { + + } +} \ No newline at end of file diff --git a/Unity/Codes/Hotfix/Demo/Operate/ConstructOperate.cs b/Unity/Codes/Hotfix/Demo/Operate/ConstructOperate.cs index f9714e0..91f282d 100644 --- a/Unity/Codes/Hotfix/Demo/Operate/ConstructOperate.cs +++ b/Unity/Codes/Hotfix/Demo/Operate/ConstructOperate.cs @@ -174,13 +174,21 @@ namespace ET build.Position.x = construct.X; build.Position.y = construct.Y; build.ConfigId = construct.Config.MixtureID; - //如果是农场 - if (build.Config.Special == (int)StructureSpecialEnum.FARMLAND) + switch (build.Config.Special) { - var farmland = build.AddChild(); - farmland.SetFarmlandState(FarmlandState.FARMLAND_STATE_FREE); - unit.AddGrandChild(farmland); + case (int)StructureSpecialEnum.FARMLAND: //如果是农场 + var farmland = build.AddChild(); + farmland.SetFarmlandState(FarmlandState.FARMLAND_STATE_FREE); + unit.AddGrandChild(farmland); + break; + case 7 : + //var cabin = build.AddChild(); + // unit.AddGrandChild(cabin); + break; } + + + } StructureConfig structureConfig = StructureConfigCategory.Instance.Get(build.ConfigId); diff --git a/Unity/Codes/Hotfix/Demo/Operate/FarmlandOperate.cs b/Unity/Codes/Hotfix/Demo/Operate/FarmlandOperate.cs index d763cbf..b5806b8 100644 --- a/Unity/Codes/Hotfix/Demo/Operate/FarmlandOperate.cs +++ b/Unity/Codes/Hotfix/Demo/Operate/FarmlandOperate.cs @@ -12,8 +12,8 @@ namespace ET { return ErrorCode.ERR_FarmlandNotSeed; } - - PeopleOperate.ChangeBehave(unit,people, ConstBehaveType.BEHAVE_PREPARE_PLANT, farmland.Id); + + PeopleOperate.ChangeBehave(unit, people, ConstBehaveType.BEHAVE_PREPARE_PLANT, farmland.Id); farmland.PeopleId = people.Id; return ErrorCode.ERR_Success; } @@ -38,7 +38,7 @@ namespace ET return ErrorCode.ERR_FarmlandNotSeed; } - PeopleOperate.ChangeBehave(unit,people,ConstBehaveType.BEHAVE_PREPARE_HARVEST,farmland.Id); + PeopleOperate.ChangeBehave(unit, people, ConstBehaveType.BEHAVE_PREPARE_HARVEST, farmland.Id); farmland.PeopleId = people.Id; return ErrorCode.ERR_Success; } @@ -65,34 +65,17 @@ namespace ET return ErrorCode.ERR_FarmlandNotRipe; } - public static (List, List) FarmlandSeed(Unit unit, List farmlandIds, List CropCfgIds) + public static int FarmlandSeed(Unit unit, Farmland farmland, int CropCfgId) { - List sucFarmlandList = new List(); - List sucCropList = new List(); - for (int i = 0; i < farmlandIds.Count; i++) + var cropCfg = CropConfigCategory.Instance.Get(CropCfgId); + var sc = unit.GetComponent(); + if (sc.Remove(cropCfg.SeedNeed, cropCfg.SeedNum)) { - Farmland farmland = unit.GetGrandChild(farmlandIds[i]); - if (farmland == null) - { - continue; - } - - if (farmland.FarmlandState == FarmlandState.FARMLAND_STATE_FREE) - { - var cropCfg = CropConfigCategory.Instance.Get(CropCfgIds[i]); - var sc = unit.GetComponent(); - if (sc.Remove(cropCfg.SeedNeed, cropCfg.SeedNum)) - { - farmland.Seed(cropCfg.Id); - sucCropList.Add(cropCfg.Id); - sucFarmlandList.Add(farmlandIds[i]); - } - } + farmland.Seed(cropCfg.Id); + return ErrorCode.ERR_Success; } - return (sucFarmlandList, sucCropList); + return ErrorCode.ERR_OperateFail; } - - } } \ No newline at end of file diff --git a/Unity/Codes/Hotfix/Demo/Operate/GatherOperate.cs b/Unity/Codes/Hotfix/Demo/Operate/GatherOperate.cs index d6d6d84..ceb8b56 100644 --- a/Unity/Codes/Hotfix/Demo/Operate/GatherOperate.cs +++ b/Unity/Codes/Hotfix/Demo/Operate/GatherOperate.cs @@ -74,36 +74,26 @@ namespace ET return ErrorCode.ERR_OperateFail; } - public static int StopGather(Unit unit, long gatherId, long peopleId) - { - People people = unit.GetComponent().GetChild(peopleId); - if (people == null) - { - return ErrorCode.ERR_PeopleNotFound; - } - - Gather gather = unit.GetComponent().GetChild(gatherId); - if (gather == null) - { - return ErrorCode.ERR_GatherNotFound; - } - - var behaveType = people.GetBehaveType(); - if ( (behaveType == ConstBehaveType.BEHAVE_PREPARE_GATHER && gather.PreparePeopleIdList.Remove(peopleId) ) - ||(behaveType == ConstBehaveType.BEHAVE_GATHER && gather.PeopleIdList.Remove(peopleId)) ) - { - if (gather.IsOver()) - { - - gather.Dispose(); - - } - people.SetBehaveType(ConstBehaveType.BEHAVE_IDLE); - people.SetTargetId(0); - return ErrorCode.ERR_Success; - } - return ErrorCode.ERR_OperateFail; - } + // public static int StopGather(Unit unit, People people,Gather gather) + // { + // + // + // var behaveType = people.GetBehaveType(); + // if ( (behaveType == ConstBehaveType.BEHAVE_PREPARE_GATHER && gather.PreparePeopleIdList.Remove(peopleId) ) + // ||(behaveType == ConstBehaveType.BEHAVE_GATHER && gather.PeopleIdList.Remove(peopleId)) ) + // { + // if (gather.IsOver()) + // { + // + // gather.Dispose(); + // + // } + // people.SetBehaveType(ConstBehaveType.BEHAVE_IDLE); + // people.SetTargetId(0); + // return ErrorCode.ERR_Success; + // } + // return ErrorCode.ERR_OperateFail; + // } public static int CancelGather(Unit unit, long gatherId) { diff --git a/Unity/Codes/Hotfix/Demo/Operate/PeopleOperate.cs b/Unity/Codes/Hotfix/Demo/Operate/PeopleOperate.cs index 7a75c3b..423d2c5 100644 --- a/Unity/Codes/Hotfix/Demo/Operate/PeopleOperate.cs +++ b/Unity/Codes/Hotfix/Demo/Operate/PeopleOperate.cs @@ -2,39 +2,53 @@ namespace ET { - [FriendClass(typeof(People))] + [FriendClass(typeof (People))] + [FriendClass(typeof (Gather))] public static class PeopleOperate { public static int StopBehave(Unit unit, People people) { - if (people == null) - { - return ErrorCode.ERR_PeopleNotFound; - } - var peopleBehave = people.GetBehaveType(); var targetId = people.GetTargetId(); switch (peopleBehave) { case ConstBehaveType.BEHAVE_GATHER: case ConstBehaveType.BEHAVE_PREPARE_GATHER: - GatherOperate.StopGather(unit, targetId, people.Id); + var gather = unit.GetComponent().GetChild(targetId); + if (gather == null) + { + return ErrorCode.ERR_GatherNotFound; + } + + gather.StartGather(people.Id); break; case ConstBehaveType.BEHAVE_CONSTRUCT: case ConstBehaveType.BEHAVE_PREPARE_CONSTRUCT: - ConstructOperate.StopConstruct(unit, targetId, people.Id); + var construct = unit.GetComponent().GetChild(targetId); + if (construct == null) + { + return ErrorCode.ERR_ConstructNotFound; + } + construct.StopConstruct(people.Id); + break; + case ConstBehaveType.BEHAVE_PREPARE_CABIN: + case ConstBehaveType.BEHAVE_CABIN: + var canbin = unit.GetGrandChild(targetId); + if (canbin == null) + { + return ErrorCode.ERR_CabinNotFound; + } + canbin.PeopleLeave(); break; + } - people.SetBehaveType(ConstBehaveType.BEHAVE_IDLE); - people.SetTargetId(0); + people.BehaveIdle(); return ErrorCode.ERR_Success; } - public static int ChangeBehave(Unit unit, People people,int behaveType,long targetId=0 ) + public static int ChangeBehave(Unit unit, People people, int behaveType, long targetId = 0) { - - var result = StopBehave(unit, people); if (result != ErrorCode.ERR_Success) { diff --git a/Unity/Codes/Hotfix/Demo/People/PeopleSystem.cs b/Unity/Codes/Hotfix/Demo/People/PeopleSystem.cs index 234d06b..fc9719f 100644 --- a/Unity/Codes/Hotfix/Demo/People/PeopleSystem.cs +++ b/Unity/Codes/Hotfix/Demo/People/PeopleSystem.cs @@ -78,6 +78,12 @@ namespace ET return self.BehaveType; } + public static void BehaveIdle(this People self) + { + self.TargetId = 0; + self.SetBehaveType(ConstBehaveType.BEHAVE_IDLE); + } + public static void SetBehaveType(this People self, int val) { self.BehaveType = val; diff --git a/Unity/Codes/Hotfix/Demo/Unit/UnitFactory.cs b/Unity/Codes/Hotfix/Demo/Unit/UnitFactory.cs index c853c70..5a4a105 100644 --- a/Unity/Codes/Hotfix/Demo/Unit/UnitFactory.cs +++ b/Unity/Codes/Hotfix/Demo/Unit/UnitFactory.cs @@ -110,7 +110,7 @@ namespace ET unitComponent.Add(unit); unit.AddComponent(); - unit.InitFarmlandDic(); + unit.InitGrandChildren(); Game.EventSystem.Publish(new EventType.AfterUnitCreate() {Unit = unit}); return unit; diff --git a/Unity/Codes/Hotfix/Demo/Unit/UnitHelper.cs b/Unity/Codes/Hotfix/Demo/Unit/UnitHelper.cs index dd17fca..1e3fc9e 100644 --- a/Unity/Codes/Hotfix/Demo/Unit/UnitHelper.cs +++ b/Unity/Codes/Hotfix/Demo/Unit/UnitHelper.cs @@ -73,7 +73,7 @@ namespace ET List nightEvents = null; if (unit.EventSeed > 0) { - SeasonConfig lastSeasonConfig = UnitOperate.GetSeasonConfigByDay(unit.Day-1, unit.Season); + SeasonConfig lastSeasonConfig = UnitOperate.GetSeasonConfigByDay(unit.Day-1,unit.Season); int nightTime = UnitOperate.CheckMoonNightTime(unit.Day-1, lastSeasonConfig.DayTime[1]); nightEvents = UnitOperate.NightEvent(unit, nightTime, unit.SeasonConfig.DayTime[0]); diff --git a/Unity/Codes/Hotfix/Demo/Unit/UnitSystem.cs b/Unity/Codes/Hotfix/Demo/Unit/UnitSystem.cs index a4347b2..3f7262c 100644 --- a/Unity/Codes/Hotfix/Demo/Unit/UnitSystem.cs +++ b/Unity/Codes/Hotfix/Demo/Unit/UnitSystem.cs @@ -148,7 +148,7 @@ namespace ET self.UpdateValleyTime = TimeHelper.ServerUnix(); self.SeasonConfig = SeasonConfigCategory.Instance.Get(self.Season); self.InitPeopleNumberic(); - self.InitFarmlandDic(); + self.InitGrandChildren(); } public static void updateSeason(this Unit self) @@ -272,19 +272,18 @@ namespace ET } } - public static void InitFarmlandDic(this Unit self) + public static void InitGrandChildren(this Unit self) { + // var bc = self.GetComponent(); - if (bc == null) + if (bc != null) { - return; - } - - foreach (var v in self.GetComponent().Children.Values) - { - foreach (var c in v.Children.Values) + foreach (var v in self.GetComponent().Children.Values) { - self.AddGrandChild(c); + foreach (var c in v.Children.Values) + { + self.AddGrandChild(c); + } } } } diff --git a/Unity/Codes/HotfixView/Demo/FUI/Logic/Building/FUIFarmlandWindowComponentSystem.cs b/Unity/Codes/HotfixView/Demo/FUI/Logic/Building/FUIFarmlandWindowComponentSystem.cs index 3c0038f..da501c3 100644 --- a/Unity/Codes/HotfixView/Demo/FUI/Logic/Building/FUIFarmlandWindowComponentSystem.cs +++ b/Unity/Codes/HotfixView/Demo/FUI/Logic/Building/FUIFarmlandWindowComponentSystem.cs @@ -279,13 +279,10 @@ namespace ET Log.Error($"Building [{self.Building.Id}] dosen't have a Farmland"); return; } - List farmlandList = new List(); - farmlandList.Add(farmland.Id); - List cropList = new List(); - cropList.Add(self.CurSelectCrop.Id); + Unit unit = UnitHelper.GetMyUnitFromZoneScene(self.ZoneScene()); - int result = await FarmlandHelper.FarmlandSeed(unit, farmlandList, cropList); + int result = await FarmlandHelper.FarmlandSeed(unit, farmland, self.CurSelectCrop.Id); if (result != ErrorCode.ERR_Success) { diff --git a/Unity/Codes/Model/Demo/Building/Building.cs b/Unity/Codes/Model/Demo/Building/Building.cs index 7ff618f..33b3dbf 100644 --- a/Unity/Codes/Model/Demo/Building/Building.cs +++ b/Unity/Codes/Model/Demo/Building/Building.cs @@ -11,7 +11,7 @@ namespace ET Upgrade = 3, } - [ChildType(typeof(Farmland))] + [ChildType] public class Building: Entity, IAwake, ISerializeToEntity { public int ConfigId; diff --git a/Unity/Codes/Model/Demo/Cabin/Cabin.cs b/Unity/Codes/Model/Demo/Cabin/Cabin.cs new file mode 100644 index 0000000..894108d --- /dev/null +++ b/Unity/Codes/Model/Demo/Cabin/Cabin.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using MongoDB.Bson.Serialization.Attributes; + +namespace ET +{ + public class Cabin: Entity,IAwake,IUpdate, IDestroy,ISerializeToEntity + { + public long PeopleId; + public List FarmlandIds = new List(); + public int ResidentState; //是不是有居民常驻 0表示没有,1表示有 + + } +} \ No newline at end of file diff --git a/Unity/Codes/Model/Demo/Common/GameUtil.cs b/Unity/Codes/Model/Demo/Common/GameUtil.cs index 3290d03..1c10140 100644 --- a/Unity/Codes/Model/Demo/Common/GameUtil.cs +++ b/Unity/Codes/Model/Demo/Common/GameUtil.cs @@ -7,5 +7,10 @@ { return (int)time; } + + public static bool IsErrorSuc(int err) + { + return err == ErrorCode.ERR_Success; + } } } \ No newline at end of file diff --git a/Unity/Codes/Model/Demo/ConstValue.cs b/Unity/Codes/Model/Demo/ConstValue.cs index 3c3af51..8db58dd 100644 --- a/Unity/Codes/Model/Demo/ConstValue.cs +++ b/Unity/Codes/Model/Demo/ConstValue.cs @@ -35,6 +35,8 @@ namespace ET public const int BEHAVE_PLANT = 6; //正在种植 public const int BEHAVE_PREPARE_HARVEST = 7;//去收割 public const int BEHAVE_HARVEST = 8;//正在收割 + public const int BEHAVE_PREPARE_CABIN = 9; //去小屋 + public const int BEHAVE_CABIN = 10; //驻扎小屋 } diff --git a/Unity/Codes/Model/Demo/Farmland/Farmland.cs b/Unity/Codes/Model/Demo/Farmland/Farmland.cs index 422ce14..98542db 100644 --- a/Unity/Codes/Model/Demo/Farmland/Farmland.cs +++ b/Unity/Codes/Model/Demo/Farmland/Farmland.cs @@ -10,7 +10,11 @@ namespace ET public int ExProduct; //额外产量 public int FarmlandState; //农田状态 public int PlanCropCfgId; //计划种植的东西 - public long PeopleId; //农民id + public long PeopleId; //农民id + + public long CabinId; //小屋id + + [BsonIgnore] public CropConfig Config =>CropConfigCategory.Instance.Get(this.CropCfgId); diff --git a/Unity/Codes/Model/Generate/ConfigEnum.cs b/Unity/Codes/Model/Generate/ConfigEnum.cs index 5f136d3..f1cb1b9 100644 --- a/Unity/Codes/Model/Generate/ConfigEnum.cs +++ b/Unity/Codes/Model/Generate/ConfigEnum.cs @@ -909,6 +909,8 @@ namespace ET MAKINGMEDICINE = 5, // 粮仓 GRANARY = 6, + // 田间小屋 + FARM_CABIN = 7, } public enum StructureSpecificPointEnum { diff --git a/Unity/Codes/Model/Generate/Message/OuterMessage.cs b/Unity/Codes/Model/Generate/Message/OuterMessage.cs index e9817f5..19e5780 100644 --- a/Unity/Codes/Model/Generate/Message/OuterMessage.cs +++ b/Unity/Codes/Model/Generate/Message/OuterMessage.cs @@ -146,6 +146,9 @@ namespace ET [ProtoMember(7)] public int IsUpgrade { get; set; } + [ProtoMember(8)] + public CabinProto Cabin { get; set; } + } [Message(OuterOpcode.PeopleProto)] @@ -2591,10 +2594,10 @@ namespace ET public int RpcId { get; set; } [ProtoMember(1)] - public List FarmlandIds = new List(); + public long FarmlandId { get; set; } [ProtoMember(2)] - public List CropCfgIds = new List(); + public int CropCfgId { get; set; } } @@ -2611,12 +2614,6 @@ namespace ET [ProtoMember(92)] public string Message { get; set; } - [ProtoMember(1)] - public List FarmlandIds = new List(); - - [ProtoMember(2)] - public List CropCfgIds = new List(); - } [ResponseType(nameof(M2C_ChangeBehave))] @@ -2795,4 +2792,146 @@ namespace ET } + [Message(OuterOpcode.CabinProto)] + [ProtoContract] + public partial class CabinProto: Object + { + [ProtoMember(1)] + public long Id { get; set; } + + [ProtoMember(2)] + public long PeopleId { get; set; } + + [ProtoMember(3)] + public List FarmlandIds = new List(); + + [ProtoMember(4)] + public int ResidentState { get; set; } + + } + + [ResponseType(nameof(M2C_GoCabin))] + [Message(OuterOpcode.C2M_GoCabin)] + [ProtoContract] + public partial class C2M_GoCabin: Object, IActorLocationRequest + { + [ProtoMember(90)] + public int RpcId { get; set; } + + [ProtoMember(1)] + public long PeopleId { get; set; } + + [ProtoMember(2)] + public long CabinId { get; set; } + + } + + [Message(OuterOpcode.M2C_GoCabin)] + [ProtoContract] + public partial class M2C_GoCabin: Object, IActorLocationResponse + { + [ProtoMember(90)] + public int RpcId { get; set; } + + [ProtoMember(91)] + public int Error { get; set; } + + [ProtoMember(92)] + public string Message { get; set; } + + } + + [ResponseType(nameof(M2C_ArriveCabin))] + [Message(OuterOpcode.C2M_ArriveCabin)] + [ProtoContract] + public partial class C2M_ArriveCabin: Object, IActorLocationRequest + { + [ProtoMember(90)] + public int RpcId { get; set; } + + [ProtoMember(1)] + public long PeopleId { get; set; } + + [ProtoMember(2)] + public long CabinId { get; set; } + + } + + [Message(OuterOpcode.M2C_ArriveCabin)] + [ProtoContract] + public partial class M2C_ArriveCabin: Object, IActorLocationResponse + { + [ProtoMember(90)] + public int RpcId { get; set; } + + [ProtoMember(91)] + public int Error { get; set; } + + [ProtoMember(92)] + public string Message { get; set; } + + } + + [ResponseType(nameof(M2C_CabinAddFarmland))] + [Message(OuterOpcode.C2M_CabinAddFarmland)] + [ProtoContract] + public partial class C2M_CabinAddFarmland: Object, IActorLocationRequest + { + [ProtoMember(90)] + public int RpcId { get; set; } + + [ProtoMember(1)] + public long FarmlandId { get; set; } + + [ProtoMember(2)] + public long CabinId { get; set; } + + } + + [Message(OuterOpcode.M2C_CabinAddFarmland)] + [ProtoContract] + public partial class M2C_CabinAddFarmland: Object, IActorLocationResponse + { + [ProtoMember(90)] + public int RpcId { get; set; } + + [ProtoMember(91)] + public int Error { get; set; } + + [ProtoMember(92)] + public string Message { get; set; } + + } + + [ResponseType(nameof(M2C_CabinSeed))] + [Message(OuterOpcode.C2M_CabinSeed)] + [ProtoContract] + public partial class C2M_CabinSeed: Object, IActorLocationRequest + { + [ProtoMember(90)] + public int RpcId { get; set; } + + [ProtoMember(1)] + public long FarmlandId { get; set; } + + [ProtoMember(2)] + public int CropCfgId { get; set; } + + } + + [Message(OuterOpcode.M2C_CabinSeed)] + [ProtoContract] + public partial class M2C_CabinSeed: Object, IActorLocationResponse + { + [ProtoMember(90)] + public int RpcId { get; set; } + + [ProtoMember(91)] + public int Error { get; set; } + + [ProtoMember(92)] + public string Message { get; set; } + + } + } diff --git a/Unity/Codes/Model/Generate/Message/OuterOpcode.cs b/Unity/Codes/Model/Generate/Message/OuterOpcode.cs index 539d4ca..5d81e7c 100644 --- a/Unity/Codes/Model/Generate/Message/OuterOpcode.cs +++ b/Unity/Codes/Model/Generate/Message/OuterOpcode.cs @@ -166,5 +166,14 @@ namespace ET public const ushort M2C_FarmlandRipe = 10163; public const ushort M2C_NtfFarmlandRipe = 10164; public const ushort M2C_NtfFarmlandRipeProgress = 10165; + public const ushort CabinProto = 10166; + public const ushort C2M_GoCabin = 10167; + public const ushort M2C_GoCabin = 10168; + public const ushort C2M_ArriveCabin = 10169; + public const ushort M2C_ArriveCabin = 10170; + public const ushort C2M_CabinAddFarmland = 10171; + public const ushort M2C_CabinAddFarmland = 10172; + public const ushort C2M_CabinSeed = 10173; + public const ushort M2C_CabinSeed = 10174; } } diff --git a/Unity/Codes/Model/Module/Message/ErrorCode.cs b/Unity/Codes/Model/Module/Message/ErrorCode.cs index bbd49b0..66a315a 100644 --- a/Unity/Codes/Model/Module/Message/ErrorCode.cs +++ b/Unity/Codes/Model/Module/Message/ErrorCode.cs @@ -96,5 +96,8 @@ namespace ET public const int ERR_SeedNotEnough = 210205;// 农场没有找到 public const int ERR_FarmlandNotRipe = 210206;//没有成熟 public const int ERR_FarmlandNotSeed = 210207;//没有播种 + public const int ERR_CabinNotFound = 210208;//没有找到小屋 + public const int ERR_ArriveCabinFail = 210209;//到达小屋失败 + public const int ERR_CabinNotPeople = 210210;//小屋没有常驻人 } } \ No newline at end of file