From b63d3831c283d305c58c854d35722ee7115d3b74 Mon Sep 17 00:00:00 2001 From: Mili Date: Sat, 1 Oct 2022 22:11:12 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=96=B0=E6=9E=B6=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- FunGame.Console/FunGame.Console.csproj | 29 ++ FunGame.Console/Main.cs | 2 + FunGame.Console/images/logo.ico | Bin 0 -> 16958 bytes FunGame.Core.Api/Interface/Events.cs | 223 ------------ FunGame.Core.Api/Interface/Interface.cs | 39 --- FunGame.Core.Api/Util/Utility.cs | 323 ------------------ FunGame.Core/Api/Factory/CharacterFactory.cs | 14 + FunGame.Core/Api/Factory/ItemFactory.cs | 13 + FunGame.Core/Api/Factory/RoomFactory.cs | 15 + FunGame.Core/Api/Factory/SkillFactory.cs | 13 + FunGame.Core/Api/Factory/StockFactory.cs | 14 + FunGame.Core/Api/Factory/UserFactory.cs | 13 + FunGame.Core/Api/Proxy/SQLProxy.cs | 12 + FunGame.Core/Api/Utility/EnumHelper.cs | 60 ++++ FunGame.Core/Api/Utility/General.cs | 81 +++++ FunGame.Core/Api/Utility/INIHelper.cs | 108 ++++++ FunGame.Core/Api/Utility/ReflectionHelper.cs | 86 +++++ .../Entity}/Enum/CommonEnums.cs | 8 +- .../Entity}/Enum/FunGameEnums.cs | 2 +- .../Entity/Event/GeneralEventHandler.cs | 13 + .../Entity/General}/ActiveItem.cs | 2 +- .../Entity/General}/ActiveSkill.cs | 2 +- .../Entity/General}/Character.cs | 2 +- .../Entity/General}/CharacterStatistics.cs | 2 +- .../Entity/General}/GameStatistics.cs | 2 +- .../Entity/General}/Item.cs | 2 +- .../Entity/General}/PassiveItem.cs | 2 +- .../Entity/General}/PassiveSkill.cs | 2 +- .../Entity/General}/Room.cs | 2 +- .../Entity/General}/Skill.cs | 2 +- .../Entity/General}/Stock.cs | 2 +- .../Entity/General}/User.cs | 2 +- .../Entity/General}/UserStatistics.cs | 2 +- FunGame.Core/FunGame.Core.csproj | 13 +- FunGame.Core/Interface/Event/Events.cs | 118 +++++++ FunGame.Core/Interface/Example.cs | 22 ++ FunGame.Core/Interface/General/IClient.cs | 14 + FunGame.Core/Interface/General/IServer.cs | 14 + FunGame.Core/Others/Config/Config.cs | 13 + FunGame.Core/Service/MySQLManager.cs | 12 + FunGame.Core/Service/PluginManager.cs | 12 + FunGame.Core/Service/RedisManager.cs | 12 + FunGame.Core/Service/ResourceManager.cs | 12 + FunGame.Core/Service/SocketManager.cs | 12 + FunGame.Core/Service/ThreadManager.cs | 12 + .../Component/ExitButton.Designer.cs | 2 +- .../Component/ExitButton.cs | 6 +- .../Component/ShowMessage.Designer.cs | 8 +- .../Component/ShowMessage.cs | 4 +- .../Component/ShowMessage.resx | 0 .../Component/TextArea.Designer.cs | 2 +- .../Component/TextArea.cs | 2 +- .../Component/TextArea.resx | 0 .../Component/TransparentRect.Designer.cs | 2 +- .../Component/TransparentRect.cs | 2 +- FunGame.Desktop/FunGame.Desktop.csproj | 9 +- FunGame.Desktop/Images/favicon.ico | Bin 67646 -> 0 bytes .../{Models => Others}/Config/Config.cs | 6 +- .../{Models => Others}/Config/Usercfg.cs | 6 +- .../Properties/Resources.Designer.cs | 12 +- FunGame.Desktop/Properties/Resources.resx | 3 - FunGame.Desktop/UI/Main/Main.Designer.cs | 32 +- FunGame.Desktop/UI/Main/Main.cs | 16 +- FunGame.Desktop/UI/Start.cs | 2 +- FunGame.Desktop/Utils/SocketHelper.cs | 12 +- .../FunGame.Implement.csproj | 15 +- FunGame.Plugin/FunGame.Plugin.csproj | 8 +- FunGame.sln | 17 +- 69 files changed, 836 insertions(+), 692 deletions(-) create mode 100644 FunGame.Console/FunGame.Console.csproj create mode 100644 FunGame.Console/Main.cs create mode 100644 FunGame.Console/images/logo.ico delete mode 100644 FunGame.Core.Api/Interface/Events.cs delete mode 100644 FunGame.Core.Api/Interface/Interface.cs delete mode 100644 FunGame.Core.Api/Util/Utility.cs create mode 100644 FunGame.Core/Api/Factory/CharacterFactory.cs create mode 100644 FunGame.Core/Api/Factory/ItemFactory.cs create mode 100644 FunGame.Core/Api/Factory/RoomFactory.cs create mode 100644 FunGame.Core/Api/Factory/SkillFactory.cs create mode 100644 FunGame.Core/Api/Factory/StockFactory.cs create mode 100644 FunGame.Core/Api/Factory/UserFactory.cs create mode 100644 FunGame.Core/Api/Proxy/SQLProxy.cs create mode 100644 FunGame.Core/Api/Utility/EnumHelper.cs create mode 100644 FunGame.Core/Api/Utility/General.cs create mode 100644 FunGame.Core/Api/Utility/INIHelper.cs create mode 100644 FunGame.Core/Api/Utility/ReflectionHelper.cs rename {FunGame.Core.Api/Model => FunGame.Core/Entity}/Enum/CommonEnums.cs (91%) rename {FunGame.Core.Api/Model => FunGame.Core/Entity}/Enum/FunGameEnums.cs (97%) create mode 100644 FunGame.Core/Entity/Event/GeneralEventHandler.cs rename {FunGame.Core.Api/Model/Entity => FunGame.Core/Entity/General}/ActiveItem.cs (86%) rename {FunGame.Core.Api/Model/Entity => FunGame.Core/Entity/General}/ActiveSkill.cs (94%) rename {FunGame.Core.Api/Model/Entity => FunGame.Core/Entity/General}/Character.cs (96%) rename {FunGame.Core.Api/Model/Entity => FunGame.Core/Entity/General}/CharacterStatistics.cs (96%) rename {FunGame.Core.Api/Model/Entity => FunGame.Core/Entity/General}/GameStatistics.cs (96%) rename {FunGame.Core.Api/Model/Entity => FunGame.Core/Entity/General}/Item.cs (91%) rename {FunGame.Core.Api/Model/Entity => FunGame.Core/Entity/General}/PassiveItem.cs (86%) rename {FunGame.Core.Api/Model/Entity => FunGame.Core/Entity/General}/PassiveSkill.cs (94%) rename {FunGame.Core.Api/Model/Entity => FunGame.Core/Entity/General}/Room.cs (95%) rename {FunGame.Core.Api/Model/Entity => FunGame.Core/Entity/General}/Skill.cs (90%) rename {FunGame.Core.Api/Model/Entity => FunGame.Core/Entity/General}/Stock.cs (91%) rename {FunGame.Core.Api/Model/Entity => FunGame.Core/Entity/General}/User.cs (96%) rename {FunGame.Core.Api/Model/Entity => FunGame.Core/Entity/General}/UserStatistics.cs (96%) create mode 100644 FunGame.Core/Interface/Event/Events.cs create mode 100644 FunGame.Core/Interface/Example.cs create mode 100644 FunGame.Core/Interface/General/IClient.cs create mode 100644 FunGame.Core/Interface/General/IServer.cs create mode 100644 FunGame.Core/Others/Config/Config.cs create mode 100644 FunGame.Core/Service/MySQLManager.cs create mode 100644 FunGame.Core/Service/PluginManager.cs create mode 100644 FunGame.Core/Service/RedisManager.cs create mode 100644 FunGame.Core/Service/ResourceManager.cs create mode 100644 FunGame.Core/Service/SocketManager.cs create mode 100644 FunGame.Core/Service/ThreadManager.cs rename FunGame.Desktop/{Models => Entities}/Component/ExitButton.Designer.cs (94%) rename FunGame.Desktop/{Models => Entities}/Component/ExitButton.cs (91%) rename FunGame.Desktop/{Models => Entities}/Component/ShowMessage.Designer.cs (97%) rename FunGame.Desktop/{Models => Entities}/Component/ShowMessage.cs (99%) rename FunGame.Desktop/{Models => Entities}/Component/ShowMessage.resx (100%) rename FunGame.Desktop/{Models => Entities}/Component/TextArea.Designer.cs (96%) rename FunGame.Desktop/{Models => Entities}/Component/TextArea.cs (98%) rename FunGame.Desktop/{Models => Entities}/Component/TextArea.resx (100%) rename FunGame.Desktop/{Models => Entities}/Component/TransparentRect.Designer.cs (95%) rename FunGame.Desktop/{Models => Entities}/Component/TransparentRect.cs (98%) delete mode 100644 FunGame.Desktop/Images/favicon.ico rename FunGame.Desktop/{Models => Others}/Config/Config.cs (97%) rename FunGame.Desktop/{Models => Others}/Config/Usercfg.cs (76%) rename FunGame.Core.Api/FunGame.Core.Api.csproj => FunGame.Implement/FunGame.Implement.csproj (69%) diff --git a/.gitignore b/.gitignore index bcf2cce..b63da7a 100644 --- a/.gitignore +++ b/.gitignore @@ -363,4 +363,4 @@ MigrationBackup/ FodyWeavers.xsd # FunGame Implement -FunGame.Core/Implement/*.cs \ No newline at end of file +FunGame.Implement/Implement/*.cs \ No newline at end of file diff --git a/FunGame.Console/FunGame.Console.csproj b/FunGame.Console/FunGame.Console.csproj new file mode 100644 index 0000000..d472074 --- /dev/null +++ b/FunGame.Console/FunGame.Console.csproj @@ -0,0 +1,29 @@ + + + + Exe + net6.0 + enable + enable + Milimoe + Milimoe + FunGame + FunGame.Console + images\logo.ico + ..\bin\ + FunGame + + + + embedded + + + + embedded + + + + + + + diff --git a/FunGame.Console/Main.cs b/FunGame.Console/Main.cs new file mode 100644 index 0000000..0794a3d --- /dev/null +++ b/FunGame.Console/Main.cs @@ -0,0 +1,2 @@ +Console.WriteLine("Hello, FunGame's Console!"); +Console.ReadKey(); diff --git a/FunGame.Console/images/logo.ico b/FunGame.Console/images/logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..4082874accbeb80cd336bcb14ff9004ad35920ff GIT binary patch literal 16958 zcmeI4S94=|dfvxh!q>jk$58nzxXR_StSVhd)@~`6v|B2dEUz{v?ey$U=$=l~fz4)< zY~~CCB#4}I&KY3Nc^?1%hl3gJlzin&d$vv=-~a^9o1gc2U+f1T{5$^lhky71|Ne&$ z{@_1;@WH?T;DZnTfP+gP{D8w;xBmOXyVL!DZQhc+slII9vTU10xdK(?>)Ud;Gb*?C zmCSXOOf=N1@2TJ3RW?&sw^>!MT~@8$RJ*&YL4RBQZkMB>onA|O-IjJcP3>^>n{74f z4V7w5RZ0~l<5?Xap6mAdTJ_qtQt53~%G=uCKhp93iN3tK(dprty4*uH+mgecRwh|i zDp{1r9aSn;P`%tywbbJCx+<4CDsg`G&ZQ@#UVT2|)264aU}m8H!L`!)t_FjBou6IG zAI&ROXe(1_$lcyU%j=Z9= znsx_$^_n%c8+El>E%iEGj8Nh6b&Q`kk7(?WSrCmr*UZ<`B z^6zx2yw15-vvkm`)#P->)u;|MHR;jz;21w@DHiK!cjr`xd&fFIztqjuwFaGCZMP2; zk2JO2J5@5>RI9P8VyLP`l|D}k$7DZA>nUFups$M3>6SKK89CNd z@_Gx(XPR1E2qGu8{R>&n)|2U)@-GFuqpGHsxH;s^8dGsocXZ8KvVDbz8(*dq>%H6~8H~TI{G* z>Bz@@r?GQ5+LFs%)USU#tz^pBq_4yMW9&top$pqqNj6VL^Y)Y`7o*w?bu=;+l*e0C z1mEBE6_qG76~IS=@rI6$&s8t=k(uxC6#1?lRdYQh5-pYUCFC^rCLgrQlfzOHDrg#VbB;y%a&vkPHmi+y>+bp`w-O-%Wh|3ks$Qj7U?#*e9>waHeZdXp7#AYF5o!TCH*t+1yI{mlSqR$hrK5X5M{D><93JhHB-$LLu&X zE~Wj0Q~du>x7hw<|4g0guC~?_3J{0;y*(Z7o}rfuZEmGiA#ZiCz2Bc!JXTi0ivK2g zu&?K%9(=e%ZtH1tGi$x}%a2AhAkM?+DweFv&);m2+cv`m@?9Q(*~PvWT1Q{+mm|oW zASWhebHx>k@p`(VT)v|IrW^7u+xwr9!ZZFTogwdzQdhj;Y! z^`b^bSIO6Pe7P!bqNaGUt7xvRY>oRMzui!4#uj37Mmw592b%%nVm71#HLi%C1%fq2 zkT+lG>Ixej9bYLxUOGO$lyf7YTr#X;DyR)7_ltcZ=-3x3Yh+?enQTXebX`s2^4;qV zD|QaZ!`WwXjHdC)%A)>cvPU%%4A z%!H1QPRQL?R!zS=KeuXG&D1IUrBR~Bt|fJVZ4UAAH1;e~OHYrebIl#?^^d5PyXd?l z$7&LtQCB+D>(g^xkQ1WRd;5Ca@?}4=Z|39=)wN6=Yf>+E_znm8 z`nQjl^s^7A^{^>!hoFW$KoN;K7IgK4m5f&6adUnIWmVnZ}5`E7thRLtn z>h$*%0t;lRVWm=AZQ|SEEGigj$>uC6Roc-2`Dd16`sAryKYcK*AN_htKYK8%w=;eX z_6~J(eFMg;Xcv1J|1W^+mbS{uHV#$n9?BK1YRi=(-*mOQ8qwlvl+UkHR}2Pg5eFAK zKD{FM?kX9nXw#9f>bAjc=6(;zXHD)S8m{2u7u2>3^m3yw(Y5*RJUYw~8)fXci=F$_ z_6|O_1@4IWi|1#tM;`M~!zzUiw%^5< z&#c(Ey}1VOHt>m>3aOe7uxGEnW9g&O+_P{_t8Hv_t;_Rk@_a=tu*k{5vE`HXT36fT zkUn|{hO?@-cGTl}f;#$cK1B`OBL^I-e{?~t?`xJ?^1}z?dj8I#3;gf;`qsh|RpRdY zOZ*l2N9Gb%{IB@ya)zr4a9_?yRueN`WXP*VzO3T2X=HMP{d)MT(cO0clG?Mau(30K zeT!a<4vgJ8*wv4YEA$RIe8wLtTK9c^c1=z#kpIB%=&nir&XdpW%VC|9Q?IWtt=xLa zXPi)D(qK=6^$vE9l_BR9v3ZZ0(8KS0{bQxTN!#Sl9eg=f*p`!A-P{A~@w`KiQ3Gd2 z$YWmegR$8F`?|nN=JEBH_~e&gYS~rM>sfMth@K!+wRACS59;|FyBuJJc%-aKzJ>mq z)BZ?&`<#$NOTDZZDQ;PZitz>Xzks}bWVeBzRvcYAY-eaRi3JT~f6=a0ZfhuG>| zheuZy#>>%<+3}wTkEXQgj_dO3l3aPA5SX(|{0HbeS8QO9U|I1vIw5avIn#V!R4XfB zi_Hkw)AT6Rh;l=9>X*U&S>kEHcX#O3^2BP3T$`mfROlWDj;)+$d^|{%tTg zvi$z`_D+5ec>Mhu*goE&XEbp{J#=LC$+KyV(o?3X;Q{)=SgfQ3_cb*iP(Hpf~(Z$OSL_3%q_ zK<7yDOplztOFl2lL$9#zYvTJ|@Gky;b!+Ls*gsA!Hg^ZHH=Uu_3)|?ef|3mx7ir`9Y zHor-4kMGvE&$Jb3>(gfrIDxWqkil$GJ=Q%kDUiYh+P1Q#}&JO)Sl@Xdvd zn3lKbfl~Cek;Yg4N6jMt=Xh@pTxfDb1WeP!pQF^1HE_lJdWQR;U*@~kiNCq|u+>*b zsWYFyG(ATSEY;GwJw^=g!42RO)KRB1XYnb%NKcvSu~s%K`sBG!0s5XQJ&ujn{l1Jm z1BFEYEPBkuLv%Phv6ycmrXp`9XTy5r>GbB3HO;#H8nl$RDyaC3ZxaqAJX*m zJurU*KP+I2Iyo-~zi>%Dj?wqoxUUsoLy^ReocQhq7~uBHTk_wniuhgxKT45XTGW{m zy}>5;6-{^K=U9SA@Zm!aM^rD~IF$n@dJ{dp2OAq3rNM~?BRMy+n&Uo4CPUznyps8S zO)bG2_&XLp@l#)>=E7QC2j@^n-i~k5SM=l#6s%gizUHUaka2Rfi z8Wko#)`<5exOJRdV8;(r^l3hCTt)g7(;t+L+<7=T^pHoM6M76Uxog>#SFC)*=fD$y zvyI(N?3;6v_h-Ol!AK4qf36ZaDo8GL;m>7yj|lZ-VLhtF`4AX8WAQ?Zjv{s=S8+cn zazKFEWa>*e0-rD$!6y!>A?Pqi|Ct=XyEHZWCV-#h!BONRcSU3GeAJgXb?Zz!$2V|I z+i+N6dY&TkmsG2?$%%$L+_q|`hul~~rW$^*ycW~QTPMBJ9VciwiWcw7BTEH7q=-#= zV85u^P!)eE2ZHG`qT;|`|v2jujKLJI5?z=fBC=)9k9Eba|QjE@Q)3Do}SK0 zZv`*IeS86jmx5O;!#l>P$;OTzZ(UDEf?9Mo$-TQ;an{rXBQ4v@dh&%=^K(V{;8)*_ zcs08eqYpXIF4*`0*|(2wHQ?Mo1V1zm=;bQZs*I9`tHY*#bX_7oE9B84dCg5eUWMnH zhxZ8js5|&goxEq{uag79#Lsr`fOzR^d@iJF7d%04lqEK9Z@!V;%KvalIciRV7}(g# zz>zlK$H@8QJ`)=`Fxumhd3-poEo7fxB_8RqW8{?rwbgJjA!2tc(A0w`euXmo)cKm~ zJ@j2V(6bj_J%1I@+zi-f91euOVGm4jaCEKx<6G@=-ZQcvTxoE4tsdvy6S(2tnLN~% z)wLjb7tBFC8xACA_%puSK~MSknVp;oFIlCh;x&WO>fCP_j-%hfmekf<{YVWs(NL1y zM$a|0`|vzxi_y0egR@R8+2cxP2jr(Ly>*}1ENg7qripnMF^(VEGsJitpC*^UDTE_M z3#<5p;Kuc`UW~{1zEdUe`%>o&zNw~1FXMXjY(pE~D)L?7>(|J4qg`bF`Z&4O9@lm_ z573Eu-vQ4L(Ze=))h0Y~ak5bk(` zJmMu5(x&d?V;)z6JZ$n)QPT_f1v)6y>3MU^32KL6=m2;(t8x=OfNz^P-!XEYf)|n1 z9OhabU)@3GJ+AMaeyM|V{Nn6J2WPiBHpl7BUF>b8$PE>X_gkm0n_rC3|I(x3`%&&A zkNhS07RP3sz7YT4KUW}4E~FPK5c@{vq1?v)=J7IEVsSmDceB(pu+rP95SXulU5onk z$rLgyX>4YTdP_{wPldqiY4VcO8Kd680nsnbE=BR5B%C5OxwMb3b*OtM`tYGm>l@4i zj&8J%td_lv%p4}(jr``EqGl(kdxywbmKka?fui022$e#EhRNZ(5QdFe?v9Q5VO zL5+?3kTqxJ{unkl+^DI+336l~*@Mhhveg|G!O2J9(4o)Y*TK?8SW}CB&8`F$23tOU zvtjieVX)rAmrLLr7qK6J!%2~k=xa?bqSmag2dHB?`0T1)jJoKv3wpN{=R14gXzE&G zTVr!MxxLIq_TlvpusgEuV&l8x#*%Z_=!I)WKL^!T!MOpv)yE$q=P%r57w>)WZP>HxNTD`sL`@-qIVsK9_deLgba6Q*w%RkhEIlHM{ zv$n8i*CKGFC3rx%dan7wU@s>f^a3IBaS{2;Rxcie<112wH{4go4smXL-8|n%{sSKG6C1|o&0%z~$I&Av zR>-A=y2+4dN8hwTKN-mOG_g{ES1y3R4#=r{s&|ep84rw2k-cwpfb7QCO}rbKjlGX9IEVpr zZ3p>V`!~w9ZWJwC%b&ag%O7ZRDNSx~=;Oy5ngo+BfQhHz$X4htbJ)fQUzy17Sr{d2 z`lRab_q_MzFCc#yc^2pmy{39 zY+_)K+;84f=I@f#ONF!7^s!fb$E7}gx(TPzgyVFPx8Z5v^XBl|<;@JU8){PyUf7Y+ zIhvs?(~r3O`sQtuVP^%H@wgET3!G1XKUQc2{i~VuW+Tt_MOk) z+27RvJD>kXZleS8{>5EB?C;;wKO8cnIm5RP@#lST#|3hp>BU4?Bkx0cHR^`{r@wV( znC%rUE@yf*W^uG9@DoY$ahLh`?N{|~DEshiba2B_ulJM$W0|~B--E*j18*e+gzGk=D}}2YKHF{%6tE8WH*PIJs!dr=HL;`-<09bD)4Dl zd|}E)FP_;`V~5@dUZuT*{*f`tykwT#^YG~k`Z-sIUe(97O=eZz1U=d!wZzU$GI6Di z(3Qrf+T;V~TXy(M69-@dQwN4J5B4rBJbZvp7@V+wLe8hpo_qN~kACG6rG+;^>W^HrWC{~^DN9@P(Cj+xyTdOSD$ z*cx%r!uAFDts2~|$Mo%!UcDL%ssztz<|lb@Zk&8$^TDZZ)HO4k*B6gR+%(;A-*Pnrc%irtAKD|o-SIp_9o)%& zql?Q6dRJyE*fd{0)F~Y0HGJd+^DQ%|{|3hyd{DYqSa+*?VaJBj%OGVoCkoZEFsefcG+- z=rwub25zW<{$|;UnSswqvS$!rCTn&hMrWhQPj6><0cKJm{B9l0Vdh2#Yv#c?3G}c; zo%{_mx4-$jkM!W@AL%E5{YU!2cmI=~|Mb7>i=X|4{^@)FpdbF?HM!fT2M;&l!#l`- zsdD{7D_dQ-w>JHxiGg$WnxgO>%z7Fp@RY|EH}mKV7ct(2i)4ofo+6gnW@c4Hk2}=D zy!_fn|Hg%NCqcn3d{g=hl(e`(B#A@pT7XU3B$oUsWYG9vq|z~ z7QQJ7{}p1sm8!rs;3q-)E)TiW$F)W5@c3Pb9@4LW{_&K4{I65`&fk2b@BPy&II=Wc zONF^iQNR3fp7|@>88{+xRjoW|-dmtnm^zXt|JBX@ zfa&+?9SoNnp^sc;K5KR-Ch@sdzB@x*@g zg?oj=9-T^q+f(4SxYnKEY%o=|bfkCFAuT!z3eYop(VZ&>zr}eL|DRl@f5gxINp`ma z?A)=_*4e($GWTF+G~=`624-hA=KTw{1odvm>UrYyUq&V~?~F088`is_4vtSwz;N`g zMdrZ7Lzn!OB5xaRu*SU6vX9$=hVPlo#BhllbrA6W!< zyG@RuZ(P_+&<97EBSn!nr+4HhceJf3eAWjpnp{ZZ_euD}1NNOxz&B0391pX9Y38mq zupYY{%mZfGX_>Xbt+3az#@^c67P~&+unhWs2liZH{_<+ljV;nzgnu`^UzELtHR9IH zBg`Dp^!$0a(P7>*@*8<;b#@X4)c8^f?02J1@7T%%H`EFA9KizaVWnz@9nX3u+2`P*-_j(;59QBr$(YL zYqrn1&wRPVoHWO7S%$vG%z{?ElbH3BW+&cSUCgxYzryFN?!^Z1t%qEvM;(AX% z`W`;z*_cNkKey|*57(G+#HjH>UMB`7f_nK5z6HD(4mYgb)feL~y<-mIz{jTHJk1Pt zin-?^{xpw$XV;U&q1iv{5;Jkj{x9FIGh^`MQ(o|&2i)C2$5FWDz9oy{Fu(DA@Xpx@ zvq5IoM=iD3Umey(YZm#H{N}OQlZdA(%qzFy``D8+JBaWANn+fNzm3hfk+rN%;$xYa z*z0Kz&+%7B5c~z_H|Mo%`0=wf_AqSv@beXY{DmDq_rk9vkSnUEaKW1|p}?ui+CT6Pw6wWcT4OK4P=ZoODBV z_At)R$?42NzP3Gbb=cQDJYr9*U17I~odx{i+p=5NxIWm~w{l>dykBNd$ME2WkM|M> zHh9RFlRnwuzgCg^#pDL_!x%RAavyG9b6GRThc9h<#!l5|&ux11o?aci_>$eWC3Z<4 zz1)I#WQGNw^6HHn8z<=LJjk9S_s5yR#=!FMGV2k1KWgoAIK1#Vygt3m?kf5incPBe zLB11yojJ!k+}{*@U6Z71 zYvxmBA36cY5oa&WMQwOH18)d-zKZ={yDW_$x_i%-eU)!0tCdp4OYCuGvy>Mup zx%pfCWQw`P+i9QW3p1-JYbG>8FF!|)on@D3jC}ca-be0>fQ5*A`pYH5F`%FKi^M(q zD)Y8HGsPsI9R~B0OUM_S>>cZVV)KD)bCmQ^aWCtY$hfo3A7U96s)RVN?{Qv_k8I1D=zn>Xy$WF5O2JmCOmzF&;%9#y@ZEm=TEZ8*-_BQuZsDR)2n+P#`&a7i-Q-gO> znUuQxKB0{t+}DeFJbd5qZ0Uu+F*-PApD%0nn3%s;nW5#_RmoP_DW<&Q-edXw_==x6j*f#$Gi=!MJvL5opKs^z1^oW?TR4muxschc zlOFl)d`t`YLkdh5q=)tMcNV6!=QKK=0DrRA!A`E5++k+-DfT1MytmywLw07MVA=aJ z8ad*rq?P{~cz z{p7(2^=_S7%v@sD3-0l1#t}mYX}J<@y{CRh@tbN=ICjWZ_KEFdc9&c1qutef zBg37HUxM!n=!f}GrO374?+5S8fB*4NKgaNBHTuW~_`B9;w~BomFLgN0EHlfzd;$FT z2|n=Yi$!{;1oetqfF4%C2BY)LM8KBIo;os+Lre6I>=@YS8~yygV--0^-Upex!ad=? zQQn&8N zoCOauD*(f+kh4AD*hTsWH+)!tJ|>W7_m1S%PjCQ_XW92FzIP}` zquoJA)V}Qja+nzSCf^NZ{#sx7{O>>h(%MI?8D0fH%W{7q{5VW(TK5dcxQri+b zoghb=y{icC39-ku;$gpp`;U+_%sHCxsmLD5Dm|NvU85=Rz!JSy23bSwi6zj{8a;HF zIkM^R1NcO|a)kYvH-I_km{%@S7dP3Jh@(q8{Xsm{vv{y;YtF^}-;>|y!0@4oY(YB* zW){4c4(DTZ;pN^$?GQ91=%@qGedR2V=U9x z2bgCh(9Im!&<6&aW*2P=v%Is#})pc{f|JJOdzYVV6VLuQ4r@`+I zdi}e($WYGTxA`}9!CW`;U$N(1W4AC1Z@CP2x5`Y+$voZ`q_!~+p8&HjIN+n$At)iA z$;o;6(`=o6-7I@X#C{mrjr=iu+T^x5dY*7@TQkTXAdXBA=q4{X*}Ix!XK{i3u>f@; zP5zz6|CjNTIcn?jR-9eE9FJ4XZsFkZIaB9`vKSo z&GY-8F?>9H{Q#b*%DrUJ!36tF^IP;h%nz4cX9$plTy~vKs7(L+{bGF_yPd9kaXXaDobStT>RE$by!zlo+sqk;at-A+b{@(+yk?#cubbWH zVv*e-dLtKmFK_0(^gkPVJqZSWZ`U(=f#>56WMem#9GAo{S>9`6#tWC^fm_{*H`zC@ zz<01~!Q6hFe#pFk4&Pa44&?wR&49aK&V=NEJ6LA6YIY8vjXKdU`$Ovibe;eYf*

DfcfT*o|4Dvp4n%GkuzQ$cS7`V*Lz#!qhkrl3e*gI?zezH`12y|UD`3{=$o_a_ zP7hzr=;>R2cQft8M*LP2|Ie_0;EBK)!p+&p&vxYAU_al%+0Jh920hd~HFKJIP7;KC|?j~{>;Uz&bz(E~ON;0u2GK!YLpO#->i%s7mVhW9xm7kPiFOabXlMC+oLe? zoT7I7m?fJTvWI?uhCRVGxB|l)thkZOi|p9*;Ts3BP}7U|K6?KkwZyI8y;vbOvKoOm zm|9D~d(a=Q_=vNx-qU|Mn0cJBQ*Y*+W(V8c?@)%J-1mL|{_=ge=Unr7#Q-fMK)rH8NQt^Owori(E{S!YMX)ULOSG5Uc3HjG%D zjg>RzT>9+wDzP2W2zGrSb5RB>stFF_-xtUQs8+TeU^5UJ1oiUC{hn|3)NBEpMF!NI$fBJHseY#ole~KE3 zUg)L2;P*yT^Fh5w{s7p^{3h%E{oTL!p{?&<`@eZ?zUS-j;_)^8RhZgmW+P>Kka>EV zcT;ZqZ+c^TZx7hM22Or68=%&M5y|(4EAS9Ai}bXQk@3kJ;siOLjDnpxKOeJ^`||qT z^Eo|#y9!6LXz^c9Upd&jSl2il%4=p$W)JO*T5sy{(09Kr+tBvI^ZnQFUmNCt`>zil ze=RR@Wv-drX}yN;o8RcHQMWwQo-V($*Z|L)+4$rlzYV6gOu+&B110tc1L&ek%{Q2^ zYVlf*Aiu9!48e)b>(i(2;Y;TA6dk-6TZ11=;^RR+o8Mj1+mG{m=~w)IaDqLLPnda` mU9*#~`kQaxpLLJe#+>iV`0eMz*Ub6;{};gjfBgTR2L3nSWUmeY literal 0 HcmV?d00001 diff --git a/FunGame.Core.Api/Interface/Events.cs b/FunGame.Core.Api/Interface/Events.cs deleted file mode 100644 index 5e16b94..0000000 --- a/FunGame.Core.Api/Interface/Events.cs +++ /dev/null @@ -1,223 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace FunGame.Core.Api.Interface -{ - public interface FunGameEvent - { - - } - - public interface BeforeConnectEvent : FunGameEvent - { - - } - - public interface AfterConnectEvent : FunGameEvent - { - - } - - public interface BeforeDisconnectEvent : FunGameEvent - { - - } - - public interface AfterDisconnectEvent : FunGameEvent - { - - } - - public interface BeforeLoginEvent : FunGameEvent - { - - } - - public interface AfterLoginEvent : FunGameEvent - { - - } - - public interface BeforeLogoutEvent : FunGameEvent - { - - } - - public interface AfterLogoutEvent : FunGameEvent - { - - } - - public interface BeforeRegEvent : FunGameEvent - { - - } - - public interface AfterRegEvent : FunGameEvent - { - - } - - public interface BeforeIntoRoomEvent : FunGameEvent - { - - } - - public interface AfterIntoRoomEvent : FunGameEvent - { - - } - - public interface BeforeSendTalkEvent : FunGameEvent - { - - } - - public interface AfterSendTalkEvent : FunGameEvent - { - - } - - public interface BeforeCreateRoomEvent : FunGameEvent - { - - } - - public interface AfterCreateRoomEvent : FunGameEvent - { - - } - - public interface BeforeQuitRoomEvent : FunGameEvent - { - - } - - public interface AfterQuitRoomEvent : FunGameEvent - { - - } - - public interface BeforeChangeRoomSettingEvent : FunGameEvent - { - - } - - public interface AfterChangeRoomSettingEvent : FunGameEvent - { - - } - - public interface BeforeStartMatchEvent : FunGameEvent - { - - } - - public interface AfterStartMatchEvent : FunGameEvent - { - - } - - public interface BeforeStartGameEvent : FunGameEvent - { - - } - - public interface AfterStartGameEvent : FunGameEvent - { - - } - - public interface BeforeChangeProfileEvent : FunGameEvent - { - - } - - public interface AfterChangeProfileEvent : FunGameEvent - { - - } - - public interface BeforeChangeAccountSettingEvent : FunGameEvent - { - - } - - public interface AfterChangeAccountSettingEvent : FunGameEvent - { - - } - - public interface BeforeOpenStockEvent : FunGameEvent - { - - } - - public interface AfterOpenStockEvent : FunGameEvent - { - - } - - public interface BeforeSignInEvent : FunGameEvent - { - - } - - public interface AfterSignInEvent : FunGameEvent - { - - } - - public interface BeforeOpenStoreEvent : FunGameEvent - { - - } - - public interface AfterOpenStoreEvent : FunGameEvent - { - - } - - public interface BeforeBuyItemEvent : FunGameEvent - { - - } - - public interface AfterBuyItemEvent : FunGameEvent - { - - } - - public interface BeforeShowRankingEvent : FunGameEvent - { - - } - - public interface AfterShowRankingEvent : FunGameEvent - { - - } - - public interface BeforeUseItemEvent : FunGameEvent - { - - } - - public interface AfterUseItemEvent : FunGameEvent - { - - } - - public interface BeforeEndGameEvent : FunGameEvent - { - - } - - public interface AfterEndGameEvent : FunGameEvent - { - - } -} diff --git a/FunGame.Core.Api/Interface/Interface.cs b/FunGame.Core.Api/Interface/Interface.cs deleted file mode 100644 index 573eec7..0000000 --- a/FunGame.Core.Api/Interface/Interface.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace FunGame.Core.Api.Interface -{ - /** - * 接口需要在FunGame.Core项目中Implement文件夹创建新的类实现 - * 参考: - * using FunGame.Core.Interface; - - namespace FunGame.Core.Implement - { - public class ClientConnectInterfaceImpl : ClientConnectInterface - { - public string RemoteServerIP() - { - // 此处修改连接远程服务器IP - string serverIP = "127.0.0.1"; - string serverPort = "22222"; - return serverIP + ":" + serverPort; - } - } - } - */ - - public interface ClientConnectInterface - { - public string RemoteServerIP(); - } - - public interface ServerInterface - { - - } -} diff --git a/FunGame.Core.Api/Util/Utility.cs b/FunGame.Core.Api/Util/Utility.cs deleted file mode 100644 index 24a1bd3..0000000 --- a/FunGame.Core.Api/Util/Utility.cs +++ /dev/null @@ -1,323 +0,0 @@ -using FunGame.Core.Api.Model.Enum; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Runtime.InteropServices; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading.Tasks; - -namespace FunGame.Core.Api.Util -{ - #region 通用工具类 - - /// - /// 通用工具类,客户端和服务器端都可以直接调用的工具方法都可以写在这里 - /// - public class Utility - { - /// - /// 判断字符串是否是IP地址 - /// - /// - /// - public static bool IsIP(string str) - { - //判断是否为IP - return Regex.IsMatch(str, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$"); - } - - /// - /// 判断字符串是否为邮箱地址 - /// - /// - /// - public static bool IsEmail(string str) - { - //判断是否为Email - return Regex.IsMatch(str, @"^(\w)+(\.\w)*@(\w)+((\.\w+)+)$"); - } - - /// - /// 判断字符串是否是一个FunGame可接受的服务器地址 - /// - /// - /// - public static ErrorType IsServerAddress(string str) - { - string[] strs = str.Split(':'); - string ip; - int port; - if (strs.Length < 2) - { - ip = strs[0]; - port = 22222; - } - else if (strs.Length < 3) - { - ip = strs[0]; - port = Convert.ToInt32(strs[1]); - } - else return ErrorType.WrongFormat; - if (IsIP(ip) && port > 0 && port < 65536) return ErrorType.None; - else if (!IsIP(ip) && port > 0 && port < 65536) return ErrorType.IsNotIP; - else if (IsIP(ip) && (port <= 0 || port >= 65536)) return ErrorType.IsNotPort; - else return ErrorType.WrongFormat; - } - - /// - /// 判断参数是否是一个FunGame可接受的服务器地址 - /// - /// - /// - /// - public static ErrorType IsServerAddress(string ip, int port) - { - if (IsIP(ip) && port > 0 && port < 65536) return ErrorType.None; - else if (!IsIP(ip) && port > 0 && port < 65536) return ErrorType.IsNotIP; - else if (IsIP(ip) && (port <= 0 || port >= 65536)) return ErrorType.IsNotPort; - else return ErrorType.WrongFormat; - } - } - - #endregion - - #region 读写INI文件工具类 - - public class INIHelper - { - /* - * 声明API函数 - */ - [DllImport("kernel32", CharSet = CharSet.Unicode)] - private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); - [DllImport("kernel32", CharSet = CharSet.Unicode)] - private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); - - /// - /// 写入ini文件 - /// - /// Section - /// 键 - /// 值 - /// 文件名,缺省为FunGame.ini - public static void WriteINI(string Section, string Key, string Value, string FileName = @"FunGame.ini") - { - WritePrivateProfileString(Section, Key, Value, System.Environment.CurrentDirectory.ToString() + @"\" + FileName); - } - - /// - /// 读取ini文件 - /// - /// Section - /// 键 - /// 文件名,缺省为FunGame.ini - /// 读取到的值 - public static string ReadINI(string Section, string Key, string FileName = @"FunGame.ini") - { - StringBuilder str = new(256); - _ = GetPrivateProfileString(Section, Key, "", str, 256, System.Environment.CurrentDirectory.ToString() + @"\" + FileName); - return str.ToString(); - } - - /// - /// 查询ini文件是否存在 - /// - /// 文件名,缺省为FunGame.ini - /// 是否存在 - public static bool ExistINIFile(string FileName = @"FunGame.ini") - { - return File.Exists(System.Environment.CurrentDirectory.ToString() + @"\" + FileName); - } - - /// - /// 初始化ini模板文件 - /// - public static void Init(FunGameEnums.FunGame FunGameType) - { - switch(FunGameType) - { - case FunGameEnums.FunGame.FunGame_Core: - case FunGameEnums.FunGame.FunGame_Core_Api: - case FunGameEnums.FunGame.FunGame_Console: - case FunGameEnums.FunGame.FunGame_Desktop: - /** - * Config - */ - WriteINI("Config", "AutoConnect", "true"); - WriteINI("Config", "AutoLogin", "false"); - /** - * Account - */ - WriteINI("Account", "UserName", ""); - WriteINI("Account", "Password", ""); - WriteINI("Account", "AutoKey", ""); - break; - case FunGameEnums.FunGame.FunGame_Server: - /** - * Server - */ - WriteINI("Server", "Name", "FunGame Server"); - WriteINI("Server", "Password", ""); - WriteINI("Server", "Describe", "Just Another FunGame Server."); - WriteINI("Server", "Notice", "This is the FunGame Server's Notice."); - WriteINI("Server", "Key", ""); - WriteINI("Server", "Status", "1"); - /** - * Socket - */ - WriteINI("Socket", "Port", "22222"); - WriteINI("Socket", "MaxPlayer", "20"); - WriteINI("Socket", "MaxConnectFailed", "0"); - /** - * MySQL - */ - WriteINI("MySQL", "DBServer", "localhost"); - WriteINI("MySQL", "DBPort", "3306"); - WriteINI("MySQL", "DBName", "fungame"); - WriteINI("MySQL", "DBUser", "root"); - WriteINI("MySQL", "DBPassword", "pass"); - break; - } - } - } - - #endregion - - #region 接口反射工具类 - - /// - /// 在FunGame.Core.Api中添加新接口和新实现时,需要: - /// 在FunGame.Core.Api.Model.Enum.CommonEnums里同步添加InterfaceType、InterfaceMethod - /// - public class ReflectionHelper - { - /** - * 定义需要反射的DLL - */ - public const string FUNGAME_CORE = "FunGame.Core"; - - /** - * 无需二次修改的 - */ - public static string EXEDocPath = System.Environment.CurrentDirectory.ToString() + "\\"; // 程序目录 - public static string PluginDocPath = System.Environment.CurrentDirectory.ToString() + "\\plugins\\"; // 插件目录 - - //////////////////////////////////////////////////////////////////// - /////////////// * 下 面 是 工 具 类 实 现 * //////////////// - /////////////////////////////////////////////////////////////////// - - /** - * 定义反射变量 - */ - private Assembly? Assembly; - private Type? Type; - private MethodInfo? Method; - private object? Instance; - - /// - /// 获取FunGame.Core.dll中接口的实现方法 - /// - /// 接口代号 - /// - private Type? GetFunGameCoreImplement(int Interface) - { - // 通过类名获取获取命名空间+类名称 - string ClassName = EnumHelper.GetImplementClassName(Interface); - List? Classes = null; - if (Assembly != null) - { - Classes = Assembly.GetTypes().Where(w => - w.Namespace == "FunGame.Core.Implement" && - w.Name.Contains(ClassName) - ).ToList(); - if (Classes != null && Classes.Count > 0) - return Classes[0]; - else return null; - } - else return null; - } - - /// - /// 公开方法:获取FUNGAME.CORE.DLL中指定方法的返回值 - /// - /// 接口代号 - /// 方法代号 - /// - public object? GetFunGameCoreValue(int Interface, int Method) - { - Assembly = Assembly.LoadFile(EXEDocPath + @FUNGAME_CORE + ".dll"); - Type = GetFunGameCoreImplement(Interface); // 通过类名获取获取命名空间+类名称 - string MethodName = EnumHelper.GetImplementMethodName(Method); // 获取方法名 - if (Assembly != null && Type != null) this.Method = Type.GetMethod(MethodName); // 从Type中查找方法名 - else return null; - Instance = Assembly.CreateInstance(Type.Namespace + "." + Type.Name); - if (Instance != null && this.Method != null) - { - object? value = this.Method.Invoke(Instance, Array.Empty()); // 实例方法的调用 - if (value != null) - return value; - else return null; - } - else return null; - } - } - - #endregion - - #region 枚举反射工具类 - - public class EnumHelper - { - /// - /// 获取实现类类名 - /// - /// 接口代号 - /// - public static string GetImplementClassName(int Interface) - { - foreach (string str in System.Enum.GetNames(typeof(InterfaceType))) - { - InterfaceType temp = (InterfaceType)System.Enum.Parse(typeof(InterfaceType), Interface.ToString(), true); - if (temp.ToString() == str) - return temp + "Impl"; - } - return ""; - } - - /// - /// 获取实现类的方法名 - /// - /// 方法代号 - /// - public static string GetImplementMethodName(int Method) - { - foreach (string str in System.Enum.GetNames(typeof(InterfaceMethod))) - { - InterfaceMethod temp = (InterfaceMethod)System.Enum.Parse(typeof(InterfaceMethod), Method.ToString(), true); - if (temp.ToString() == str) - return temp.ToString(); - } - return ""; - } - - /// - /// 获取Socket枚举名 - /// - /// Socket枚举 - /// - public static string GetSocketTypeName(int SocketType) - { - foreach (string str in System.Enum.GetNames(typeof(SocketMessageType))) - { - SocketMessageType temp = (SocketMessageType)System.Enum.Parse(typeof(SocketMessageType), SocketType.ToString(), true); - if (temp.ToString() == str) - return temp.ToString(); - } - return ""; - } - } - - #endregion -} diff --git a/FunGame.Core/Api/Factory/CharacterFactory.cs b/FunGame.Core/Api/Factory/CharacterFactory.cs new file mode 100644 index 0000000..be958c2 --- /dev/null +++ b/FunGame.Core/Api/Factory/CharacterFactory.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Api.Factory +{ + public class CharacterFactory + { + + } +} diff --git a/FunGame.Core/Api/Factory/ItemFactory.cs b/FunGame.Core/Api/Factory/ItemFactory.cs new file mode 100644 index 0000000..4f57517 --- /dev/null +++ b/FunGame.Core/Api/Factory/ItemFactory.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Api.Factory +{ + public abstract class ItemFactory + { + + } +} diff --git a/FunGame.Core/Api/Factory/RoomFactory.cs b/FunGame.Core/Api/Factory/RoomFactory.cs new file mode 100644 index 0000000..9f9c774 --- /dev/null +++ b/FunGame.Core/Api/Factory/RoomFactory.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Security.Policy; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Api.Factory +{ + public class RoomFactory + { + + } +} diff --git a/FunGame.Core/Api/Factory/SkillFactory.cs b/FunGame.Core/Api/Factory/SkillFactory.cs new file mode 100644 index 0000000..63a8e04 --- /dev/null +++ b/FunGame.Core/Api/Factory/SkillFactory.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Api.Factory +{ + public abstract class SkillFactory + { + + } +} diff --git a/FunGame.Core/Api/Factory/StockFactory.cs b/FunGame.Core/Api/Factory/StockFactory.cs new file mode 100644 index 0000000..bee0ed8 --- /dev/null +++ b/FunGame.Core/Api/Factory/StockFactory.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Api.Factory +{ + public class StockFactory + { + + } +} diff --git a/FunGame.Core/Api/Factory/UserFactory.cs b/FunGame.Core/Api/Factory/UserFactory.cs new file mode 100644 index 0000000..c793a3f --- /dev/null +++ b/FunGame.Core/Api/Factory/UserFactory.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Api.Factory +{ + public class UserFactory + { + + } +} diff --git a/FunGame.Core/Api/Proxy/SQLProxy.cs b/FunGame.Core/Api/Proxy/SQLProxy.cs new file mode 100644 index 0000000..50f5109 --- /dev/null +++ b/FunGame.Core/Api/Proxy/SQLProxy.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Api.Proxy +{ + public class SQLProxy + { + } +} diff --git a/FunGame.Core/Api/Utility/EnumHelper.cs b/FunGame.Core/Api/Utility/EnumHelper.cs new file mode 100644 index 0000000..18c5a27 --- /dev/null +++ b/FunGame.Core/Api/Utility/EnumHelper.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Milimoe.FunGame.Core.Entity.Enum; + +namespace Milimoe.FunGame.Core.Api.Utility +{ + public class EnumHelper + { + /// + /// 获取实现类类名 + /// + /// 接口代号 + /// + public static string GetImplementClassName(int Interface) + { + foreach (string str in Enum.GetNames(typeof(InterfaceType))) + { + InterfaceType temp = (InterfaceType)Enum.Parse(typeof(InterfaceType), Interface.ToString(), true); + if (temp.ToString() == str) + return temp + "Impl"; + } + return ""; + } + + /// + /// 获取实现类的方法名 + /// + /// 方法代号 + /// + public static string GetImplementMethodName(int Method) + { + foreach (string str in Enum.GetNames(typeof(InterfaceMethod))) + { + InterfaceMethod temp = (InterfaceMethod)Enum.Parse(typeof(InterfaceMethod), Method.ToString(), true); + if (temp.ToString() == str) + return temp.ToString(); + } + return ""; + } + + /// + /// 获取Socket枚举名 + /// + /// Socket枚举 + /// + public static string GetSocketTypeName(int SocketType) + { + foreach (string str in Enum.GetNames(typeof(SocketMessageType))) + { + SocketMessageType temp = (SocketMessageType)Enum.Parse(typeof(SocketMessageType), SocketType.ToString(), true); + if (temp.ToString() == str) + return temp.ToString(); + } + return ""; + } + } +} diff --git a/FunGame.Core/Api/Utility/General.cs b/FunGame.Core/Api/Utility/General.cs new file mode 100644 index 0000000..34bc1c0 --- /dev/null +++ b/FunGame.Core/Api/Utility/General.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using Milimoe.FunGame.Core.Entity.Enum; + +namespace Milimoe.FunGame.Core.Api.Utility +{ + /// + /// 通用工具类,客户端和服务器端都可以直接调用的工具方法都可以写在这里 + /// + public class Utility + { + /// + /// 判断字符串是否是IP地址 + /// + /// + /// + public static bool IsIP(string str) + { + //判断是否为IP + return Regex.IsMatch(str, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$"); + } + + /// + /// 判断字符串是否为邮箱地址 + /// + /// + /// + public static bool IsEmail(string str) + { + //判断是否为Email + return Regex.IsMatch(str, @"^(\w)+(\.\w)*@(\w)+((\.\w+)+)$"); + } + + /// + /// 判断字符串是否是一个FunGame可接受的服务器地址 + /// + /// + /// + public static ErrorType IsServerAddress(string str) + { + string[] strs = str.Split(':'); + string ip; + int port; + if (strs.Length < 2) + { + ip = strs[0]; + port = 22222; + } + else if (strs.Length < 3) + { + ip = strs[0]; + port = Convert.ToInt32(strs[1]); + } + else return ErrorType.WrongFormat; + if (IsIP(ip) && port > 0 && port < 65536) return ErrorType.None; + else if (!IsIP(ip) && port > 0 && port < 65536) return ErrorType.IsNotIP; + else if (IsIP(ip) && (port <= 0 || port >= 65536)) return ErrorType.IsNotPort; + else return ErrorType.WrongFormat; + } + + /// + /// 判断参数是否是一个FunGame可接受的服务器地址 + /// + /// + /// + /// + public static ErrorType IsServerAddress(string ip, int port) + { + if (IsIP(ip) && port > 0 && port < 65536) return ErrorType.None; + else if (!IsIP(ip) && port > 0 && port < 65536) return ErrorType.IsNotIP; + else if (IsIP(ip) && (port <= 0 || port >= 65536)) return ErrorType.IsNotPort; + else return ErrorType.WrongFormat; + } + } +} diff --git a/FunGame.Core/Api/Utility/INIHelper.cs b/FunGame.Core/Api/Utility/INIHelper.cs new file mode 100644 index 0000000..fc578d0 --- /dev/null +++ b/FunGame.Core/Api/Utility/INIHelper.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Milimoe.FunGame.Core.Entity.Enum; + +namespace Milimoe.FunGame.Core.Api.Utility +{ + public class INIHelper + { + /* + * 声明API函数 + */ + [DllImport("kernel32", CharSet = CharSet.Unicode)] + private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); + [DllImport("kernel32", CharSet = CharSet.Unicode)] + private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); + + /// + /// 写入ini文件 + /// + /// Section + /// 键 + /// 值 + /// 文件名,缺省为FunGame.ini + public static void WriteINI(string Section, string Key, string Value, string FileName = @"FunGame.ini") + { + WritePrivateProfileString(Section, Key, Value, Environment.CurrentDirectory.ToString() + @"\" + FileName); + } + + /// + /// 读取ini文件 + /// + /// Section + /// 键 + /// 文件名,缺省为FunGame.ini + /// 读取到的值 + public static string ReadINI(string Section, string Key, string FileName = @"FunGame.ini") + { + StringBuilder str = new(256); + _ = GetPrivateProfileString(Section, Key, "", str, 256, Environment.CurrentDirectory.ToString() + @"\" + FileName); + return str.ToString(); + } + + /// + /// 查询ini文件是否存在 + /// + /// 文件名,缺省为FunGame.ini + /// 是否存在 + public static bool ExistINIFile(string FileName = @"FunGame.ini") + { + return File.Exists(Environment.CurrentDirectory.ToString() + @"\" + FileName); + } + + /// + /// 初始化ini模板文件 + /// + public static void Init(FunGameEnums.FunGame FunGameType) + { + switch (FunGameType) + { + case FunGameEnums.FunGame.FunGame_Core: + case FunGameEnums.FunGame.FunGame_Core_Api: + case FunGameEnums.FunGame.FunGame_Console: + case FunGameEnums.FunGame.FunGame_Desktop: + /** + * Config + */ + WriteINI("Config", "AutoConnect", "true"); + WriteINI("Config", "AutoLogin", "false"); + /** + * Account + */ + WriteINI("Account", "UserName", ""); + WriteINI("Account", "Password", ""); + WriteINI("Account", "AutoKey", ""); + break; + case FunGameEnums.FunGame.FunGame_Server: + /** + * Server + */ + WriteINI("Server", "Name", "FunGame Server"); + WriteINI("Server", "Password", ""); + WriteINI("Server", "Describe", "Just Another FunGame Server."); + WriteINI("Server", "Notice", "This is the FunGame Server's Notice."); + WriteINI("Server", "Key", ""); + WriteINI("Server", "Status", "1"); + /** + * Socket + */ + WriteINI("Socket", "Port", "22222"); + WriteINI("Socket", "MaxPlayer", "20"); + WriteINI("Socket", "MaxConnectFailed", "0"); + /** + * MySQL + */ + WriteINI("MySQL", "DBServer", "localhost"); + WriteINI("MySQL", "DBPort", "3306"); + WriteINI("MySQL", "DBName", "fungame"); + WriteINI("MySQL", "DBUser", "root"); + WriteINI("MySQL", "DBPassword", "pass"); + break; + } + } + } +} diff --git a/FunGame.Core/Api/Utility/ReflectionHelper.cs b/FunGame.Core/Api/Utility/ReflectionHelper.cs new file mode 100644 index 0000000..c25d4a4 --- /dev/null +++ b/FunGame.Core/Api/Utility/ReflectionHelper.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Api.Utility +{ + /// + /// 在FunGame.Core.Interface中添加新接口和新实现时,需要: + /// 在FunGame.Core.Entity.Enum.CommonEnums里同步添加InterfaceType、InterfaceMethod + /// + public class ReflectionHelper + { + /** + * 定义需要反射的DLL + */ + public const string FUNGAME_IMPL = "FunGame.Implement"; + + /** + * 无需二次修改的 + */ + public static string EXEDocPath = Environment.CurrentDirectory.ToString() + "\\"; // 程序目录 + public static string PluginDocPath = Environment.CurrentDirectory.ToString() + "\\plugins\\"; // 插件目录 + + //////////////////////////////////////////////////////////////////// + /////////////// * 下 面 是 工 具 类 实 现 * //////////////// + /////////////////////////////////////////////////////////////////// + + /** + * 定义反射变量 + */ + private Assembly? Assembly; + private Type? Type; + private MethodInfo? Method; + private object? Instance; + + /// + /// 获取FunGame.Implement.dll中接口的实现方法 + /// + /// 接口代号 + /// + private Type? GetFunGameImplementType(int Interface) + { + // 通过类名获取获取命名空间+类名称 + string ClassName = EnumHelper.GetImplementClassName(Interface); + List? Classes = null; + if (Assembly != null) + { + Classes = Assembly.GetTypes().Where(w => + w.Namespace == "Milimoe.FunGame.Core.Implement" && + w.Name.Contains(ClassName) + ).ToList(); + if (Classes != null && Classes.Count > 0) + return Classes[0]; + else return null; + } + else return null; + } + + /// + /// 公开方法:获取FunGame.Implement.DLL中指定方法的返回值 + /// + /// 接口代号 + /// 方法代号 + /// + public object? GetFunGameImplValue(int Interface, int Method) + { + Assembly = Assembly.LoadFile(EXEDocPath + FUNGAME_IMPL + ".dll"); + Type = GetFunGameImplementType(Interface); // 通过类名获取获取命名空间+类名称 + string MethodName = EnumHelper.GetImplementMethodName(Method); // 获取方法名 + if (Assembly != null && Type != null) this.Method = Type.GetMethod(MethodName); // 从Type中查找方法名 + else return null; + Instance = Assembly.CreateInstance(Type.Namespace + "." + Type.Name); + if (Instance != null && this.Method != null) + { + object? value = this.Method.Invoke(Instance, Array.Empty()); // 实例方法的调用 + if (value != null) + return value; + else return null; + } + else return null; + } + } +} diff --git a/FunGame.Core.Api/Model/Enum/CommonEnums.cs b/FunGame.Core/Entity/Enum/CommonEnums.cs similarity index 91% rename from FunGame.Core.Api/Model/Enum/CommonEnums.cs rename to FunGame.Core/Entity/Enum/CommonEnums.cs index 4449135..a9fad2d 100644 --- a/FunGame.Core.Api/Model/Enum/CommonEnums.cs +++ b/FunGame.Core/Entity/Enum/CommonEnums.cs @@ -6,11 +6,11 @@ using System.Text; using System.Threading.Tasks; -namespace FunGame.Core.Api.Model.Enum +namespace Milimoe.FunGame.Core.Entity.Enum { /** * ſʵصState Type Result Method - * FunGame.Core.ApiӿںʵʱҪͬӣInterfaceTypeInterfaceMethod + * Milimoe.FunGame.Core.ApiӿںʵʱҪͬӣInterfaceTypeInterfaceMethod */ #region State @@ -76,8 +76,8 @@ namespace FunGame.Core.Api.Model.Enum public enum InterfaceType { - ClientConnectInterface, - ServerInterface + IClient, + IServer } public enum LightType diff --git a/FunGame.Core.Api/Model/Enum/FunGameEnums.cs b/FunGame.Core/Entity/Enum/FunGameEnums.cs similarity index 97% rename from FunGame.Core.Api/Model/Enum/FunGameEnums.cs rename to FunGame.Core/Entity/Enum/FunGameEnums.cs index 2211c18..177999b 100644 --- a/FunGame.Core.Api/Model/Enum/FunGameEnums.cs +++ b/FunGame.Core/Entity/Enum/FunGameEnums.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FunGame.Core.Api.Model.Enum +namespace Milimoe.FunGame.Core.Entity.Enum { public static class FunGameEnums { diff --git a/FunGame.Core/Entity/Event/GeneralEventHandler.cs b/FunGame.Core/Entity/Event/GeneralEventHandler.cs new file mode 100644 index 0000000..a3a9945 --- /dev/null +++ b/FunGame.Core/Entity/Event/GeneralEventHandler.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Entity.Event +{ + public class GeneralEventHandler + { + + } +} diff --git a/FunGame.Core.Api/Model/Entity/ActiveItem.cs b/FunGame.Core/Entity/General/ActiveItem.cs similarity index 86% rename from FunGame.Core.Api/Model/Entity/ActiveItem.cs rename to FunGame.Core/Entity/General/ActiveItem.cs index 7f9be78..5d38234 100644 --- a/FunGame.Core.Api/Model/Entity/ActiveItem.cs +++ b/FunGame.Core/Entity/General/ActiveItem.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FunGame.Core.Api.Model.Entity +namespace Milimoe.FunGame.Core.Entity.General { public class ActiveItem : Item { diff --git a/FunGame.Core.Api/Model/Entity/ActiveSkill.cs b/FunGame.Core/Entity/General/ActiveSkill.cs similarity index 94% rename from FunGame.Core.Api/Model/Entity/ActiveSkill.cs rename to FunGame.Core/Entity/General/ActiveSkill.cs index f3e3f65..fc8c5a8 100644 --- a/FunGame.Core.Api/Model/Entity/ActiveSkill.cs +++ b/FunGame.Core/Entity/General/ActiveSkill.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FunGame.Core.Api.Model.Entity +namespace Milimoe.FunGame.Core.Entity.General { public class ActiveSkill : Skill { diff --git a/FunGame.Core.Api/Model/Entity/Character.cs b/FunGame.Core/Entity/General/Character.cs similarity index 96% rename from FunGame.Core.Api/Model/Entity/Character.cs rename to FunGame.Core/Entity/General/Character.cs index 7d9f74c..a9e3da2 100644 --- a/FunGame.Core.Api/Model/Entity/Character.cs +++ b/FunGame.Core/Entity/General/Character.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FunGame.Core.Api.Model.Entity +namespace Milimoe.FunGame.Core.Entity.General { public class Character { diff --git a/FunGame.Core.Api/Model/Entity/CharacterStatistics.cs b/FunGame.Core/Entity/General/CharacterStatistics.cs similarity index 96% rename from FunGame.Core.Api/Model/Entity/CharacterStatistics.cs rename to FunGame.Core/Entity/General/CharacterStatistics.cs index eddaaf8..08f1ccf 100644 --- a/FunGame.Core.Api/Model/Entity/CharacterStatistics.cs +++ b/FunGame.Core/Entity/General/CharacterStatistics.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FunGame.Core.Api.Model.Entity +namespace Milimoe.FunGame.Core.Entity.General { public class CharacterStatistics { diff --git a/FunGame.Core.Api/Model/Entity/GameStatistics.cs b/FunGame.Core/Entity/General/GameStatistics.cs similarity index 96% rename from FunGame.Core.Api/Model/Entity/GameStatistics.cs rename to FunGame.Core/Entity/General/GameStatistics.cs index b4f7aac..94617e5 100644 --- a/FunGame.Core.Api/Model/Entity/GameStatistics.cs +++ b/FunGame.Core/Entity/General/GameStatistics.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FunGame.Core.Api.Model.Entity +namespace Milimoe.FunGame.Core.Entity.General { public class GameStatistics { diff --git a/FunGame.Core.Api/Model/Entity/Item.cs b/FunGame.Core/Entity/General/Item.cs similarity index 91% rename from FunGame.Core.Api/Model/Entity/Item.cs rename to FunGame.Core/Entity/General/Item.cs index 71a8645..6ed09d5 100644 --- a/FunGame.Core.Api/Model/Entity/Item.cs +++ b/FunGame.Core/Entity/General/Item.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FunGame.Core.Api.Model.Entity +namespace Milimoe.FunGame.Core.Entity.General { public abstract class Item { diff --git a/FunGame.Core.Api/Model/Entity/PassiveItem.cs b/FunGame.Core/Entity/General/PassiveItem.cs similarity index 86% rename from FunGame.Core.Api/Model/Entity/PassiveItem.cs rename to FunGame.Core/Entity/General/PassiveItem.cs index 24e72e5..433a719 100644 --- a/FunGame.Core.Api/Model/Entity/PassiveItem.cs +++ b/FunGame.Core/Entity/General/PassiveItem.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FunGame.Core.Api.Model.Entity +namespace Milimoe.FunGame.Core.Entity.General { public class PassiveItem : Item { diff --git a/FunGame.Core.Api/Model/Entity/PassiveSkill.cs b/FunGame.Core/Entity/General/PassiveSkill.cs similarity index 94% rename from FunGame.Core.Api/Model/Entity/PassiveSkill.cs rename to FunGame.Core/Entity/General/PassiveSkill.cs index edf6d99..9abf712 100644 --- a/FunGame.Core.Api/Model/Entity/PassiveSkill.cs +++ b/FunGame.Core/Entity/General/PassiveSkill.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FunGame.Core.Api.Model.Entity +namespace Milimoe.FunGame.Core.Entity.General { public class PassiveSkill : Skill { diff --git a/FunGame.Core.Api/Model/Entity/Room.cs b/FunGame.Core/Entity/General/Room.cs similarity index 95% rename from FunGame.Core.Api/Model/Entity/Room.cs rename to FunGame.Core/Entity/General/Room.cs index 43f78ff..85df72a 100644 --- a/FunGame.Core.Api/Model/Entity/Room.cs +++ b/FunGame.Core/Entity/General/Room.cs @@ -6,7 +6,7 @@ using System.Security.Policy; using System.Text; using System.Threading.Tasks; -namespace FunGame.Core.Api.Model.Entity +namespace Milimoe.FunGame.Core.Entity.General { public class Room { diff --git a/FunGame.Core.Api/Model/Entity/Skill.cs b/FunGame.Core/Entity/General/Skill.cs similarity index 90% rename from FunGame.Core.Api/Model/Entity/Skill.cs rename to FunGame.Core/Entity/General/Skill.cs index 05a3691..2a6bc72 100644 --- a/FunGame.Core.Api/Model/Entity/Skill.cs +++ b/FunGame.Core/Entity/General/Skill.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FunGame.Core.Api.Model.Entity +namespace Milimoe.FunGame.Core.Entity.General { public abstract class Skill { diff --git a/FunGame.Core.Api/Model/Entity/Stock.cs b/FunGame.Core/Entity/General/Stock.cs similarity index 91% rename from FunGame.Core.Api/Model/Entity/Stock.cs rename to FunGame.Core/Entity/General/Stock.cs index 0a33623..1210d62 100644 --- a/FunGame.Core.Api/Model/Entity/Stock.cs +++ b/FunGame.Core/Entity/General/Stock.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FunGame.Core.Api.Model.Entity +namespace Milimoe.FunGame.Core.Entity.General { public class Stock { diff --git a/FunGame.Core.Api/Model/Entity/User.cs b/FunGame.Core/Entity/General/User.cs similarity index 96% rename from FunGame.Core.Api/Model/Entity/User.cs rename to FunGame.Core/Entity/General/User.cs index 13a7c77..dbe0685 100644 --- a/FunGame.Core.Api/Model/Entity/User.cs +++ b/FunGame.Core/Entity/General/User.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FunGame.Core.Api.Model.Entity +namespace Milimoe.FunGame.Core.Entity.General { public class User { diff --git a/FunGame.Core.Api/Model/Entity/UserStatistics.cs b/FunGame.Core/Entity/General/UserStatistics.cs similarity index 96% rename from FunGame.Core.Api/Model/Entity/UserStatistics.cs rename to FunGame.Core/Entity/General/UserStatistics.cs index 43aa107..006923a 100644 --- a/FunGame.Core.Api/Model/Entity/UserStatistics.cs +++ b/FunGame.Core/Entity/General/UserStatistics.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FunGame.Core.Api.Model.Entity +namespace Milimoe.FunGame.Core.Entity.General { public class UserStatistics { diff --git a/FunGame.Core/FunGame.Core.csproj b/FunGame.Core/FunGame.Core.csproj index 8ee0f18..dcc5c29 100644 --- a/FunGame.Core/FunGame.Core.csproj +++ b/FunGame.Core/FunGame.Core.csproj @@ -4,13 +4,13 @@ net6.0 enable enable - Milimoe ..\bin + Milimoe Milimoe - FunGame - ..\bin 1.0 1.0 + ..\bin + FunGame.Core @@ -21,11 +21,4 @@ embedded - - - False - True - - - diff --git a/FunGame.Core/Interface/Event/Events.cs b/FunGame.Core/Interface/Event/Events.cs new file mode 100644 index 0000000..736bba7 --- /dev/null +++ b/FunGame.Core/Interface/Event/Events.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Interface +{ + public interface IEvent + { + + } + + public interface IConnectEvent : IEvent + { + + } + + public interface IDisconnectEvent : IEvent + { + + } + + public interface ILoginEvent : IEvent + { + + } + + public interface ILogoutEvent : IEvent + { + + } + + public interface IRegEvent : IEvent + { + + } + + public interface IIntoRoomEvent : IEvent + { + + } + + public interface ISendTalkEvent : IEvent + { + + } + + public interface ICreateRoomEvent : IEvent + { + + } + + public interface IQuitRoomEvent : IEvent + { + + } + + public interface IChangeRoomSettingEvent : IEvent + { + + } + + public interface IStartMatchEvent : IEvent + { + + } + + public interface IStartGameEvent : IEvent + { + + } + + public interface IChangeProfileEvent : IEvent + { + + } + + public interface IChangeAccountSettingEvent : IEvent + { + + } + + public interface IOpenStockEvent : IEvent + { + + } + + public interface ISignInEvent : IEvent + { + + } + + public interface IOpenStoreEvent : IEvent + { + + } + + public interface IBuyItemEvent : IEvent + { + + } + + public interface IShowRankingEvent : IEvent + { + + } + + public interface IUseItemEvent : IEvent + { + + } + + public interface IEndGameEvent : IEvent + { + + } +} diff --git a/FunGame.Core/Interface/Example.cs b/FunGame.Core/Interface/Example.cs new file mode 100644 index 0000000..7d167e7 --- /dev/null +++ b/FunGame.Core/Interface/Example.cs @@ -0,0 +1,22 @@ +namespace Milimoe.FunGame.Core.Interface +{ + /** + * 接口需要在FunGame.Core项目中Implement文件夹创建新的类实现 + * 参考: + * using Milimoe.FunGame.Core.Interface; + + namespace Milimoe.FunGame.Core.Implement + { + public class IClientImpl : IClient + { + public string RemoteServerIP() + { + // 此处修改连接远程服务器IP + string serverIP = "127.0.0.1"; + string serverPort = "22222"; + return serverIP + ":" + serverPort; + } + } + } + */ +} diff --git a/FunGame.Core/Interface/General/IClient.cs b/FunGame.Core/Interface/General/IClient.cs new file mode 100644 index 0000000..b8c1008 --- /dev/null +++ b/FunGame.Core/Interface/General/IClient.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Interface +{ + public interface IClient + { + public string RemoteServerIP(); + } +} diff --git a/FunGame.Core/Interface/General/IServer.cs b/FunGame.Core/Interface/General/IServer.cs new file mode 100644 index 0000000..1e29b04 --- /dev/null +++ b/FunGame.Core/Interface/General/IServer.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Interface +{ + public interface IServer + { + + } +} diff --git a/FunGame.Core/Others/Config/Config.cs b/FunGame.Core/Others/Config/Config.cs new file mode 100644 index 0000000..e49014f --- /dev/null +++ b/FunGame.Core/Others/Config/Config.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Others +{ + public class Config + { + + } +} diff --git a/FunGame.Core/Service/MySQLManager.cs b/FunGame.Core/Service/MySQLManager.cs new file mode 100644 index 0000000..8687e1d --- /dev/null +++ b/FunGame.Core/Service/MySQLManager.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Service +{ + public class MySQLManager + { + } +} diff --git a/FunGame.Core/Service/PluginManager.cs b/FunGame.Core/Service/PluginManager.cs new file mode 100644 index 0000000..6941e62 --- /dev/null +++ b/FunGame.Core/Service/PluginManager.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Service +{ + public class PluginManager + { + } +} diff --git a/FunGame.Core/Service/RedisManager.cs b/FunGame.Core/Service/RedisManager.cs new file mode 100644 index 0000000..438def3 --- /dev/null +++ b/FunGame.Core/Service/RedisManager.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Service +{ + public class RedisManager + { + } +} diff --git a/FunGame.Core/Service/ResourceManager.cs b/FunGame.Core/Service/ResourceManager.cs new file mode 100644 index 0000000..c1973c2 --- /dev/null +++ b/FunGame.Core/Service/ResourceManager.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Service +{ + public class ResourceManager + { + } +} diff --git a/FunGame.Core/Service/SocketManager.cs b/FunGame.Core/Service/SocketManager.cs new file mode 100644 index 0000000..474d0a9 --- /dev/null +++ b/FunGame.Core/Service/SocketManager.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Service +{ + public class SocketManager + { + } +} diff --git a/FunGame.Core/Service/ThreadManager.cs b/FunGame.Core/Service/ThreadManager.cs new file mode 100644 index 0000000..7bedeee --- /dev/null +++ b/FunGame.Core/Service/ThreadManager.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Milimoe.FunGame.Core.Service +{ + public class ThreadManager + { + } +} diff --git a/FunGame.Desktop/Models/Component/ExitButton.Designer.cs b/FunGame.Desktop/Entities/Component/ExitButton.Designer.cs similarity index 94% rename from FunGame.Desktop/Models/Component/ExitButton.Designer.cs rename to FunGame.Desktop/Entities/Component/ExitButton.Designer.cs index 353a71f..92f30cb 100644 --- a/FunGame.Desktop/Models/Component/ExitButton.Designer.cs +++ b/FunGame.Desktop/Entities/Component/ExitButton.Designer.cs @@ -1,4 +1,4 @@ -namespace FunGame.Desktop.Models.Component +namespace Milimoe.FunGame.Desktop.Entity.Component { partial class ExitButton { diff --git a/FunGame.Desktop/Models/Component/ExitButton.cs b/FunGame.Desktop/Entities/Component/ExitButton.cs similarity index 91% rename from FunGame.Desktop/Models/Component/ExitButton.cs rename to FunGame.Desktop/Entities/Component/ExitButton.cs index e26ec76..1e62000 100644 --- a/FunGame.Desktop/Models/Component/ExitButton.cs +++ b/FunGame.Desktop/Entities/Component/ExitButton.cs @@ -6,7 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FunGame.Desktop.Models.Component +namespace Milimoe.FunGame.Desktop.Entity.Component { public partial class ExitButton : Button { @@ -15,7 +15,7 @@ namespace FunGame.Desktop.Models.Component InitializeComponent(); Anchor = System.Windows.Forms.AnchorStyles.None; BackColor = System.Drawing.Color.White; - BackgroundImage = global::FunGame.Desktop.Properties.Resources.exit; + BackgroundImage = global::Milimoe.FunGame.Desktop.Properties.Resources.exit; FlatAppearance.BorderColor = System.Drawing.Color.White; FlatAppearance.BorderSize = 0; FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); @@ -35,7 +35,7 @@ namespace FunGame.Desktop.Models.Component InitializeComponent(); Anchor = System.Windows.Forms.AnchorStyles.None; BackColor = System.Drawing.Color.White; - BackgroundImage = global::FunGame.Desktop.Properties.Resources.exit; + BackgroundImage = global::Milimoe.FunGame.Desktop.Properties.Resources.exit; FlatAppearance.BorderColor = System.Drawing.Color.White; FlatAppearance.BorderSize = 0; FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); diff --git a/FunGame.Desktop/Models/Component/ShowMessage.Designer.cs b/FunGame.Desktop/Entities/Component/ShowMessage.Designer.cs similarity index 97% rename from FunGame.Desktop/Models/Component/ShowMessage.Designer.cs rename to FunGame.Desktop/Entities/Component/ShowMessage.Designer.cs index 5718bf6..a024b6e 100644 --- a/FunGame.Desktop/Models/Component/ShowMessage.Designer.cs +++ b/FunGame.Desktop/Entities/Component/ShowMessage.Designer.cs @@ -1,4 +1,4 @@ -namespace FunGame.Desktop.Models.Component +namespace Milimoe.FunGame.Desktop.Entity.Component { partial class ShowMessage { @@ -32,11 +32,11 @@ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ShowMessage)); this.MsgText = new System.Windows.Forms.Label(); this.LeftButton = new System.Windows.Forms.Button(); - this.Exit = new FunGame.Desktop.Models.Component.ExitButton(this.components); + this.Exit = new FunGame.Desktop.Entity.Component.ExitButton(this.components); this.RightButton = new System.Windows.Forms.Button(); this.MidButton = new System.Windows.Forms.Button(); this.Title = new System.Windows.Forms.Label(); - this.TransparentRect = new FunGame.Desktop.Models.Component.TransparentRect(); + this.TransparentRect = new FunGame.Desktop.Entity.Component.TransparentRect(); this.InputButton = new System.Windows.Forms.Button(); this.InputText = new System.Windows.Forms.TextBox(); this.TransparentRect.SuspendLayout(); @@ -133,7 +133,7 @@ this.TransparentRect.Name = "TransparentRect"; this.TransparentRect.Opacity = 125; this.TransparentRect.Radius = 20; - this.TransparentRect.ShapeBorderStyle = FunGame.Desktop.Models.Component.TransparentRect.ShapeBorderStyles.ShapeBSNone; + this.TransparentRect.ShapeBorderStyle = FunGame.Desktop.Entity.Component.TransparentRect.ShapeBorderStyles.ShapeBSNone; this.TransparentRect.Size = new System.Drawing.Size(235, 170); this.TransparentRect.TabIndex = 103; this.TransparentRect.TabStop = false; diff --git a/FunGame.Desktop/Models/Component/ShowMessage.cs b/FunGame.Desktop/Entities/Component/ShowMessage.cs similarity index 99% rename from FunGame.Desktop/Models/Component/ShowMessage.cs rename to FunGame.Desktop/Entities/Component/ShowMessage.cs index 0c34c13..ae06f3c 100644 --- a/FunGame.Desktop/Models/Component/ShowMessage.cs +++ b/FunGame.Desktop/Entities/Component/ShowMessage.cs @@ -7,9 +7,9 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; -using FunGame.Core.Api.Model.Enum; +using Milimoe.FunGame.Core.Entity.Enum; -namespace FunGame.Desktop.Models.Component +namespace Milimoe.FunGame.Desktop.Entity.Component { public partial class ShowMessage : Form { diff --git a/FunGame.Desktop/Models/Component/ShowMessage.resx b/FunGame.Desktop/Entities/Component/ShowMessage.resx similarity index 100% rename from FunGame.Desktop/Models/Component/ShowMessage.resx rename to FunGame.Desktop/Entities/Component/ShowMessage.resx diff --git a/FunGame.Desktop/Models/Component/TextArea.Designer.cs b/FunGame.Desktop/Entities/Component/TextArea.Designer.cs similarity index 96% rename from FunGame.Desktop/Models/Component/TextArea.Designer.cs rename to FunGame.Desktop/Entities/Component/TextArea.Designer.cs index 9d5da02..407c314 100644 --- a/FunGame.Desktop/Models/Component/TextArea.Designer.cs +++ b/FunGame.Desktop/Entities/Component/TextArea.Designer.cs @@ -1,6 +1,6 @@ namespace FunGame.Desktop.Models.Component { - partial class TextArea + partial class TextArea : RichTextBox { /// /// 必需的设计器变量。 diff --git a/FunGame.Desktop/Models/Component/TextArea.cs b/FunGame.Desktop/Entities/Component/TextArea.cs similarity index 98% rename from FunGame.Desktop/Models/Component/TextArea.cs rename to FunGame.Desktop/Entities/Component/TextArea.cs index 0836bb6..a9bfe1a 100644 --- a/FunGame.Desktop/Models/Component/TextArea.cs +++ b/FunGame.Desktop/Entities/Component/TextArea.cs @@ -8,7 +8,7 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Forms; -namespace FunGame.Desktop.Models.Component +namespace Milimoe.FunGame.Desktop.Entity.Component { [ToolboxBitmap(typeof(TextBox))] partial class TextArea : RichTextBox diff --git a/FunGame.Desktop/Models/Component/TextArea.resx b/FunGame.Desktop/Entities/Component/TextArea.resx similarity index 100% rename from FunGame.Desktop/Models/Component/TextArea.resx rename to FunGame.Desktop/Entities/Component/TextArea.resx diff --git a/FunGame.Desktop/Models/Component/TransparentRect.Designer.cs b/FunGame.Desktop/Entities/Component/TransparentRect.Designer.cs similarity index 95% rename from FunGame.Desktop/Models/Component/TransparentRect.Designer.cs rename to FunGame.Desktop/Entities/Component/TransparentRect.Designer.cs index 371ccee..0c9168c 100644 --- a/FunGame.Desktop/Models/Component/TransparentRect.Designer.cs +++ b/FunGame.Desktop/Entities/Component/TransparentRect.Designer.cs @@ -1,4 +1,4 @@ -namespace FunGame.Desktop.Models.Component +namespace Milimoe.FunGame.Desktop.Entity.Component { partial class TransparentRect { diff --git a/FunGame.Desktop/Models/Component/TransparentRect.cs b/FunGame.Desktop/Entities/Component/TransparentRect.cs similarity index 98% rename from FunGame.Desktop/Models/Component/TransparentRect.cs rename to FunGame.Desktop/Entities/Component/TransparentRect.cs index d335e48..23fd3a7 100644 --- a/FunGame.Desktop/Models/Component/TransparentRect.cs +++ b/FunGame.Desktop/Entities/Component/TransparentRect.cs @@ -7,7 +7,7 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Forms; -namespace FunGame.Desktop.Models.Component +namespace Milimoe.FunGame.Desktop.Entity.Component { partial class TransparentRect : GroupBox { diff --git a/FunGame.Desktop/FunGame.Desktop.csproj b/FunGame.Desktop/FunGame.Desktop.csproj index 31897a5..0fed6ba 100644 --- a/FunGame.Desktop/FunGame.Desktop.csproj +++ b/FunGame.Desktop/FunGame.Desktop.csproj @@ -1,4 +1,4 @@ - + WinExe @@ -15,7 +15,7 @@ False Milimoe FunGame - FunGame + FunGame.Desktop ..\bin 1.0 1.0 @@ -49,6 +49,7 @@ + @@ -58,10 +59,10 @@ - + True - + True diff --git a/FunGame.Desktop/Images/favicon.ico b/FunGame.Desktop/Images/favicon.ico deleted file mode 100644 index 25a4c9048b0d2b93656355fec18e50ea2f5123eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67646 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 diff --git a/FunGame.Desktop/Models/Config/Config.cs b/FunGame.Desktop/Others/Config/Config.cs similarity index 97% rename from FunGame.Desktop/Models/Config/Config.cs rename to FunGame.Desktop/Others/Config/Config.cs index 1d90d48..83f12ad 100644 --- a/FunGame.Desktop/Models/Config/Config.cs +++ b/FunGame.Desktop/Others/Config/Config.cs @@ -4,10 +4,10 @@ using System.Linq; using System.Security.AccessControl; using System.Text; using System.Threading.Tasks; -using FunGame.Core.Api.Model.Enum; -using FunGame.Core.Api.Util; +using Milimoe.FunGame.Core.Entity.Enum; +using Milimoe.FunGame.Core.Api.Utility; -namespace FunGame.Desktop.Models.Config +namespace Milimoe.FunGame.Desktop.Others { public static class Config { diff --git a/FunGame.Desktop/Models/Config/Usercfg.cs b/FunGame.Desktop/Others/Config/Usercfg.cs similarity index 76% rename from FunGame.Desktop/Models/Config/Usercfg.cs rename to FunGame.Desktop/Others/Config/Usercfg.cs index 012443b..2585df9 100644 --- a/FunGame.Desktop/Models/Config/Usercfg.cs +++ b/FunGame.Desktop/Others/Config/Usercfg.cs @@ -1,11 +1,11 @@ -using FunGame.Core.Api.Model.Entity; -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Milimoe.FunGame.Core.Entity.General; -namespace FunGame.Desktop.Models.Config +namespace Milimoe.FunGame.Desktop.Others { public class Usercfg { diff --git a/FunGame.Desktop/Properties/Resources.Designer.cs b/FunGame.Desktop/Properties/Resources.Designer.cs index 1644e18..beb7615 100644 --- a/FunGame.Desktop/Properties/Resources.Designer.cs +++ b/FunGame.Desktop/Properties/Resources.Designer.cs @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -namespace FunGame.Desktop.Properties { +namespace Milimoe.FunGame.Desktop.Properties { using System; @@ -80,16 +80,6 @@ namespace FunGame.Desktop.Properties { } } - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap favicon { - get { - object obj = ResourceManager.GetObject("favicon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// diff --git a/FunGame.Desktop/Properties/Resources.resx b/FunGame.Desktop/Properties/Resources.resx index 6000db2..9abaf8d 100644 --- a/FunGame.Desktop/Properties/Resources.resx +++ b/FunGame.Desktop/Properties/Resources.resx @@ -133,9 +133,6 @@ ..\images\back.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\favicon.ico;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\images\min.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a diff --git a/FunGame.Desktop/UI/Main/Main.Designer.cs b/FunGame.Desktop/UI/Main/Main.Designer.cs index a6e1750..4c45e6b 100644 --- a/FunGame.Desktop/UI/Main/Main.Designer.cs +++ b/FunGame.Desktop/UI/Main/Main.Designer.cs @@ -1,7 +1,7 @@ -using FunGame.Desktop.Models.Component; -using FunGame.Desktop.Models.Config; +using Milimoe.FunGame.Desktop.Entity.Component; +using Milimoe.FunGame.Desktop.Others; -namespace FunGame.Desktop.UI +namespace Milimoe.FunGame.Desktop.UI { partial class Main { @@ -33,7 +33,7 @@ namespace FunGame.Desktop.UI { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main)); - this.Exit = new FunGame.Desktop.Models.Component.ExitButton(this.components); + this.Exit = new FunGame.Desktop.Entity.Component.ExitButton(this.components); this.Title = new System.Windows.Forms.Label(); this.MinForm = new System.Windows.Forms.Button(); this.Connection = new System.Windows.Forms.Label(); @@ -55,10 +55,10 @@ namespace FunGame.Desktop.UI this.QueryRoom = new System.Windows.Forms.Button(); this.RoomList = new System.Windows.Forms.ListBox(); this.Notice = new System.Windows.Forms.GroupBox(); - this.NoticeText = new FunGame.Desktop.Models.Component.TextArea(); + this.NoticeText = new FunGame.Desktop.Entity.Component.TextArea(); this.InfoBox = new System.Windows.Forms.GroupBox(); - this.TransparentRectControl = new FunGame.Desktop.Models.Component.TransparentRect(); - this.GameInfo = new FunGame.Desktop.Models.Component.TextArea(); + this.TransparentRectControl = new FunGame.Desktop.Entity.Component.TransparentRect(); + this.GameInfo = new FunGame.Desktop.Entity.Component.TextArea(); this.QuitRoom = new System.Windows.Forms.Button(); this.CreateRoom = new System.Windows.Forms.Button(); this.Logout = new System.Windows.Forms.Button(); @@ -77,7 +77,7 @@ namespace FunGame.Desktop.UI // this.Exit.Anchor = System.Windows.Forms.AnchorStyles.None; this.Exit.BackColor = System.Drawing.Color.White; - this.Exit.BackgroundImage = global::FunGame.Desktop.Properties.Resources.exit; + this.Exit.BackgroundImage = global::Milimoe.FunGame.Desktop.Properties.Resources.exit; this.Exit.FlatAppearance.BorderColor = System.Drawing.Color.White; this.Exit.FlatAppearance.BorderSize = 0; this.Exit.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); @@ -110,7 +110,7 @@ namespace FunGame.Desktop.UI // this.MinForm.Anchor = System.Windows.Forms.AnchorStyles.None; this.MinForm.BackColor = System.Drawing.Color.White; - this.MinForm.BackgroundImage = global::FunGame.Desktop.Properties.Resources.min; + this.MinForm.BackgroundImage = global::Milimoe.FunGame.Desktop.Properties.Resources.min; this.MinForm.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; this.MinForm.FlatAppearance.BorderColor = System.Drawing.Color.LightGray; this.MinForm.FlatAppearance.BorderSize = 0; @@ -142,7 +142,7 @@ namespace FunGame.Desktop.UI // Light // this.Light.BackColor = System.Drawing.Color.Transparent; - this.Light.Image = global::FunGame.Desktop.Properties.Resources.yellow; + this.Light.Image = global::Milimoe.FunGame.Desktop.Properties.Resources.yellow; this.Light.Location = new System.Drawing.Point(777, 426); this.Light.Name = "Light"; this.Light.Size = new System.Drawing.Size(18, 18); @@ -152,7 +152,7 @@ namespace FunGame.Desktop.UI // this.SendTalkText.Anchor = System.Windows.Forms.AnchorStyles.None; this.SendTalkText.BackColor = System.Drawing.Color.Transparent; - this.SendTalkText.BackgroundImage = global::FunGame.Desktop.Properties.Resources.send; + this.SendTalkText.BackgroundImage = global::Milimoe.FunGame.Desktop.Properties.Resources.send; this.SendTalkText.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; this.SendTalkText.FlatAppearance.BorderSize = 0; this.SendTalkText.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Teal; @@ -433,7 +433,7 @@ namespace FunGame.Desktop.UI this.TransparentRectControl.Name = "TransparentRectControl"; this.TransparentRectControl.Opacity = 125; this.TransparentRectControl.Radius = 20; - this.TransparentRectControl.ShapeBorderStyle = FunGame.Desktop.Models.Component.TransparentRect.ShapeBorderStyles.ShapeBSNone; + this.TransparentRectControl.ShapeBorderStyle = Milimoe.FunGame.Desktop.Entity.Component.TransparentRect.ShapeBorderStyles.ShapeBSNone; this.TransparentRectControl.Size = new System.Drawing.Size(464, 343); this.TransparentRectControl.TabIndex = 2; this.TransparentRectControl.TabStop = false; @@ -559,7 +559,7 @@ namespace FunGame.Desktop.UI // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackgroundImage = global::FunGame.Desktop.Properties.Resources.back; + this.BackgroundImage = global::Milimoe.FunGame.Desktop.Properties.Resources.back; this.ClientSize = new System.Drawing.Size(800, 450); this.Controls.Add(this.StopMatch); this.Controls.Add(this.Copyright); @@ -637,8 +637,8 @@ namespace FunGame.Desktop.UI private Button Store; private LinkLabel Copyright; private Button StopMatch; - private Models.Component.TextArea GameInfo; - private Models.Component.TextArea NoticeText; - private Models.Component.TransparentRect TransparentRectControl; + private Entity.Component.TextArea GameInfo; + private Entity.Component.TextArea NoticeText; + private Entity.Component.TransparentRect TransparentRectControl; } } \ No newline at end of file diff --git a/FunGame.Desktop/UI/Main/Main.cs b/FunGame.Desktop/UI/Main/Main.cs index c771801..23fc1fe 100644 --- a/FunGame.Desktop/UI/Main/Main.cs +++ b/FunGame.Desktop/UI/Main/Main.cs @@ -1,17 +1,17 @@ -using FunGame.Desktop.Models.Component; using System.Diagnostics; using System.Net.Sockets; using System.Net; using System.Windows.Forms; using System.Net.NetworkInformation; using System.Text; -using FunGame.Core.Api.Model.Entity; -using FunGame.Desktop.Models.Config; -using FunGame.Desktop.Utils; -using FunGame.Core.Api.Model.Enum; -using FunGame.Core.Api.Util; +using Milimoe.FunGame.Core.Api.Utility; +using Milimoe.FunGame.Core.Entity.General; +using Milimoe.FunGame.Core.Entity.Enum; +using Milimoe.FunGame.Desktop.Entity.Component; +using Milimoe.FunGame.Desktop.Others; +using Milimoe.FunGame.Desktop.Utils; -namespace FunGame.Desktop.UI +namespace Milimoe.FunGame.Desktop.UI { public partial class Main : Form { @@ -291,7 +291,7 @@ namespace FunGame.Desktop.UI { try { - string? ipaddress = (string?)Config.ReflectionHelper.GetFunGameCoreValue((int)InterfaceType.ClientConnectInterface, (int)InterfaceMethod.RemoteServerIP); // 获取服务器IP + string? ipaddress = (string?)Config.ReflectionHelper.GetFunGameImplValue((int)InterfaceType.IClient, (int)InterfaceMethod.RemoteServerIP); // 获取服务器IP if (ipaddress != null) { string[] s = ipaddress.Split(':'); diff --git a/FunGame.Desktop/UI/Start.cs b/FunGame.Desktop/UI/Start.cs index 31a6a28..dfbc124 100644 --- a/FunGame.Desktop/UI/Start.cs +++ b/FunGame.Desktop/UI/Start.cs @@ -1,4 +1,4 @@ -namespace FunGame.Desktop.UI +namespace Milimoe.FunGame.Desktop.UI { internal static class Start { diff --git a/FunGame.Desktop/Utils/SocketHelper.cs b/FunGame.Desktop/Utils/SocketHelper.cs index 4ece43b..a67d831 100644 --- a/FunGame.Desktop/Utils/SocketHelper.cs +++ b/FunGame.Desktop/Utils/SocketHelper.cs @@ -8,13 +8,13 @@ using System.Threading.Tasks; using FunGame.Desktop.Models.Component; using System.ComponentModel.DataAnnotations; using System.Net.NetworkInformation; -using FunGame.Core.Api.Model.Entity; -using FunGame.Core.Api.Model.Enum; -using FunGame.Core.Api.Util; -using FunGame.Desktop.Models.Config; -using FunGame.Desktop.UI; +using Milimoe.FunGame.Core.Entity.General; +using Milimoe.FunGame.Core.Entity.Enum; +using Milimoe.FunGame.Desktop.Others; +using Milimoe.FunGame.Desktop.UI; +using Milimoe.FunGame.Core.Api.Utility; -namespace FunGame.Desktop.Utils +namespace Milimoe.FunGame.Desktop.Utils { public class SocketHelper { diff --git a/FunGame.Core.Api/FunGame.Core.Api.csproj b/FunGame.Implement/FunGame.Implement.csproj similarity index 69% rename from FunGame.Core.Api/FunGame.Core.Api.csproj rename to FunGame.Implement/FunGame.Implement.csproj index ac6b656..0253be4 100644 --- a/FunGame.Core.Api/FunGame.Core.Api.csproj +++ b/FunGame.Implement/FunGame.Implement.csproj @@ -1,16 +1,16 @@ - + net6.0 enable enable - ..\bin Milimoe + ..\bin Milimoe + FunGame.Implement + ..\bin 1.0 1.0 - ..\bin - FunGame @@ -21,4 +21,11 @@ embedded + + + False + True + + + diff --git a/FunGame.Plugin/FunGame.Plugin.csproj b/FunGame.Plugin/FunGame.Plugin.csproj index 9dc8a9b..1124976 100644 --- a/FunGame.Plugin/FunGame.Plugin.csproj +++ b/FunGame.Plugin/FunGame.Plugin.csproj @@ -1,4 +1,4 @@ - + net6.0 @@ -7,7 +7,7 @@ ..\bin\ Milimoe Milimoe - FunGame + FunGameSDK 1.0 1.0 ..\bin\plugin @@ -21,4 +21,8 @@ embedded + + + + diff --git a/FunGame.sln b/FunGame.sln index 4f487f1..3eb428f 100644 --- a/FunGame.sln +++ b/FunGame.sln @@ -8,16 +8,23 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunGame.Desktop", "FunGame. {CC6C83C6-5818-4565-8873-67587FED1D0A} = {CC6C83C6-5818-4565-8873-67587FED1D0A} EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunGame.Core", "FunGame.Core\FunGame.Core.csproj", "{CC6C83C6-5818-4565-8873-67587FED1D0A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunGame.Implement", "FunGame.Implement\FunGame.Implement.csproj", "{CC6C83C6-5818-4565-8873-67587FED1D0A}" ProjectSection(ProjectDependencies) = postProject {842BB22E-4309-4ADD-93CD-A981CE10C30E} = {842BB22E-4309-4ADD-93CD-A981CE10C30E} EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunGame.Core.Api", "FunGame.Core.Api\FunGame.Core.Api.csproj", "{842BB22E-4309-4ADD-93CD-A981CE10C30E}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunGame.Core", "FunGame.Core\FunGame.Core.csproj", "{842BB22E-4309-4ADD-93CD-A981CE10C30E}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FunGame.Plugin", "FunGame.Plugin\FunGame.Plugin.csproj", "{A1132284-47F3-4C2D-89DB-C34B2354D9BB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunGame.Plugin", "FunGame.Plugin\FunGame.Plugin.csproj", "{A1132284-47F3-4C2D-89DB-C34B2354D9BB}" ProjectSection(ProjectDependencies) = postProject {842BB22E-4309-4ADD-93CD-A981CE10C30E} = {842BB22E-4309-4ADD-93CD-A981CE10C30E} + {CC6C83C6-5818-4565-8873-67587FED1D0A} = {CC6C83C6-5818-4565-8873-67587FED1D0A} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FunGame.Console", "FunGame.Console\FunGame.Console.csproj", "{1DB30EB0-5434-453B-949B-2164B6809291}" + ProjectSection(ProjectDependencies) = postProject + {842BB22E-4309-4ADD-93CD-A981CE10C30E} = {842BB22E-4309-4ADD-93CD-A981CE10C30E} + {CC6C83C6-5818-4565-8873-67587FED1D0A} = {CC6C83C6-5818-4565-8873-67587FED1D0A} EndProjectSection EndProject Global @@ -42,6 +49,10 @@ Global {A1132284-47F3-4C2D-89DB-C34B2354D9BB}.Debug|Any CPU.Build.0 = Debug|Any CPU {A1132284-47F3-4C2D-89DB-C34B2354D9BB}.Release|Any CPU.ActiveCfg = Release|Any CPU {A1132284-47F3-4C2D-89DB-C34B2354D9BB}.Release|Any CPU.Build.0 = Release|Any CPU + {1DB30EB0-5434-453B-949B-2164B6809291}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1DB30EB0-5434-453B-949B-2164B6809291}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1DB30EB0-5434-453B-949B-2164B6809291}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1DB30EB0-5434-453B-949B-2164B6809291}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE