Skip to content

Commit 5851f20

Browse files
committed
[修改]1. 修改示例程序的流程为Web 登录的方式
1 parent 053ec99 commit 5851f20

4 files changed

Lines changed: 127 additions & 49 deletions

File tree

Lines changed: 40 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
using System.Net;
1+
using System.Collections.Generic;
2+
using System.Net;
23
using GameFrameX;
34
using GameFrameX.Event.Runtime;
5+
using GameFrameX.GlobalConfig.Runtime;
46
#if ENABLE_UI_FAIRYGUI
57
using GameFrameX.UI.FairyGUI.Runtime;
68
#endif
@@ -11,6 +13,7 @@
1113
using GameFrameX.UI.UGUI.Runtime;
1214
#endif
1315
using Hotfix.Config.item;
16+
using Hotfix.Manager;
1417
using Hotfix.Network;
1518
using Hotfix.Proto;
1619
using UnityEngine;
@@ -19,9 +22,7 @@ namespace Hotfix.UI
1922
{
2023
public partial class UILogin
2124
{
22-
private static INetworkChannel networkChannel;
23-
public static string serverIp = "127.0.0.1";
24-
public static int serverPort = 29100;
25+
2526

2627
public override void OnOpen(object userData)
2728
{
@@ -31,24 +32,9 @@ public override void OnOpen(object userData)
3132

3233
private void OnLoginClick()
3334
{
34-
if (networkChannel != null && networkChannel.Connected)
35-
{
36-
Login();
37-
return;
38-
}
39-
40-
if (networkChannel != null && GameApp.Network.HasNetworkChannel("network") && !networkChannel.Connected)
41-
{
42-
GameApp.Network.DestroyNetworkChannel("network");
43-
}
35+
Login();
36+
return;
4437

45-
networkChannel = GameApp.Network.CreateNetworkChannel("network", new DefaultNetworkChannelHelper());
46-
// 注册心跳消息
47-
DefaultPacketHeartBeatHandler packetSendHeaderHandler = new DefaultPacketHeartBeatHandler();
48-
networkChannel.RegisterHeartBeatHandler(packetSendHeaderHandler);
49-
networkChannel.Connect(IPAddress.Parse(serverIp), serverPort);
50-
GameApp.Event.CheckSubscribe(NetworkConnectedEventArgs.EventId, OnNetworkConnected);
51-
GameApp.Event.CheckSubscribe(NetworkClosedEventArgs.EventId, OnNetworkClosed);
5238
}
5339

5440
private async void Login()
@@ -60,6 +46,8 @@ private async void Login()
6046
}
6147

6248

49+
#region 账号登录
50+
6351
var req = new ReqLogin
6452
{
6553
SdkType = 0,
@@ -70,13 +58,41 @@ private async void Login()
7058
};
7159
req.Platform = PathHelper.GetPlatformName;
7260

73-
RespLogin respLogin = await networkChannel.Call<RespLogin>(req);
74-
Log.Info(respLogin);
61+
var respLoginWebResult = await GameApp.Web.PostToString($"http://127.0.0.1:28080/game/api/{nameof(ReqLogin)}", Utility.Json.ToObject<Dictionary<string, object>>(Utility.Json.ToJson(req)));
62+
HttpJsonResult respLoginHttpJsonResult = Utility.Json.ToObject<HttpJsonResult>(respLoginWebResult.Result);
63+
if (respLoginHttpJsonResult.Code > 0)
64+
{
65+
Log.Error("登录失败,错误信息:" + respLoginHttpJsonResult.Message);
66+
return;
67+
}
68+
69+
Log.Info(respLoginWebResult.Result);
70+
Log.Info(respLoginHttpJsonResult.Data);
71+
var respLogin = Utility.Json.ToObject<RespLogin>(respLoginHttpJsonResult.Data);
72+
73+
#endregion
74+
75+
#region 获取角色列表
76+
7577
ReqPlayerList reqPlayerList = new ReqPlayerList();
7678

7779
reqPlayerList.Id = respLogin.Id;
80+
var respPlayerListWebResult = await GameApp.Web.PostToString($"http://127.0.0.1:28080/game/api/{nameof(ReqPlayerList)}", Utility.Json.ToObject<Dictionary<string, object>>(Utility.Json.ToJson(reqPlayerList)));
81+
HttpJsonResult respPlayerListHttpJsonResult = Utility.Json.ToObject<HttpJsonResult>(respPlayerListWebResult.Result);
82+
if (respPlayerListHttpJsonResult.Code > 0)
83+
{
84+
Log.Error("登录失败,错误信息:" + respPlayerListHttpJsonResult.Message);
85+
return;
86+
}
87+
88+
Log.Info(respPlayerListWebResult.Result);
89+
Log.Info(respPlayerListHttpJsonResult.Data);
90+
91+
var respPlayerList = Utility.Json.ToObject<RespPlayerList>(respPlayerListHttpJsonResult.Data);
92+
AccountManager.Instance.PlayerList = respPlayerList.PlayerList;
93+
94+
#endregion
7895

79-
var respPlayerList = await networkChannel.Call<RespPlayerList>(reqPlayerList);
8096
if (respPlayerList.PlayerList.Count > 0)
8197
{
8298
await GameApp.UI.OpenUIFormAsync<UIPlayerList>(Utility.Asset.Path.GetUIPath(nameof(UILogin)), UIGroupConstants.Floor.Name, respLogin, true);
@@ -86,19 +102,7 @@ private async void Login()
86102
await GameApp.UI.OpenUIFormAsync<UIPlayerCreate>(Utility.Asset.Path.GetUIPath(nameof(UILogin)), UIGroupConstants.Floor.Name, respLogin, true);
87103
}
88104

89-
// await GameApp.UI.OpenUIFormAsync<UIMain>(Utility.Asset.Path.GetUIPath(nameof(UIMain)), UIGroupConstants.Floor.Name);
90105
GameApp.UI.CloseUIForm(this);
91106
}
92-
93-
private static void OnNetworkClosed(object sender, GameEventArgs e)
94-
{
95-
Log.Info(nameof(OnNetworkClosed));
96-
}
97-
98-
private void OnNetworkConnected(object sender, GameEventArgs e)
99-
{
100-
Login();
101-
Log.Info(nameof(OnNetworkConnected));
102-
}
103107
}
104108
}

Assets/Hotfix/UI/Logic/UILogin/UIPlayerCreate.Logic.cs

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1+
using System.Collections.Generic;
12
using GameFrameX;
3+
using GameFrameX.GlobalConfig.Runtime;
24
#if ENABLE_UI_FAIRYGUI
35
using GameFrameX.UI.FairyGUI.Runtime;
46
#endif
57
using GameFrameX.Runtime;
68
using GameFrameX.UI.Runtime;
9+
using Hotfix.Manager;
710
#if ENABLE_UI_UGUI
811
using GameFrameX.UI.UGUI.Runtime;
912
#endif
@@ -34,12 +37,49 @@ private async void OnCreateButtonClick()
3437
}
3538

3639
req.Name = m_UserName.text;
37-
var resp = await GameApp.Network.GetNetworkChannel("network").Call<RespPlayerCreate>(req);
38-
if (resp.PlayerInfo != null)
40+
41+
#region 创建角色
42+
43+
var respPlayerCreateWebResult = await GameApp.Web.PostToString($"http://127.0.0.1:28080/game/api/{nameof(ReqPlayerCreate)}", Utility.Json.ToObject<Dictionary<string, object>>(Utility.Json.ToJson(req)));
44+
HttpJsonResult respPlayerCreateHttpJsonResult = Utility.Json.ToObject<HttpJsonResult>(respPlayerCreateWebResult.Result);
45+
if (respPlayerCreateHttpJsonResult.Code > 0)
46+
{
47+
Log.Error("登录失败,错误信息:" + respPlayerCreateHttpJsonResult.Message);
48+
return;
49+
}
50+
51+
Log.Info(respPlayerCreateWebResult.Result);
52+
Log.Info(respPlayerCreateHttpJsonResult.Data);
53+
54+
var respPlayerCreate = Utility.Json.ToObject<RespPlayerCreate>(respPlayerCreateHttpJsonResult.Data);
55+
if (respPlayerCreate.PlayerInfo != null)
3956
{
4057
Log.Info("创建角色成功");
4158
}
4259

60+
#endregion
61+
62+
#region 获取角色列表
63+
64+
ReqPlayerList reqPlayerList = new ReqPlayerList();
65+
66+
reqPlayerList.Id = req.Id;
67+
var respPlayerListWebResult = await GameApp.Web.PostToString($"http://127.0.0.1:28080/game/api/{nameof(ReqPlayerList)}", Utility.Json.ToObject<Dictionary<string, object>>(Utility.Json.ToJson(reqPlayerList)));
68+
HttpJsonResult respPlayerListHttpJsonResult = Utility.Json.ToObject<HttpJsonResult>(respPlayerListWebResult.Result);
69+
if (respPlayerListHttpJsonResult.Code > 0)
70+
{
71+
Log.Error("登录失败,错误信息:" + respPlayerListHttpJsonResult.Message);
72+
return;
73+
}
74+
75+
Log.Info(respPlayerListWebResult.Result);
76+
Log.Info(respPlayerListHttpJsonResult.Data);
77+
78+
var respPlayerList = Utility.Json.ToObject<RespPlayerList>(respPlayerListHttpJsonResult.Data);
79+
AccountManager.Instance.PlayerList = respPlayerList.PlayerList;
80+
81+
#endregion
82+
4383
await GameApp.UI.OpenUIFormAsync<UIPlayerList>(Utility.Asset.Path.GetUIPackagePath(nameof(UILogin)), UIGroupConstants.Floor.Name, UserData, true);
4484
GameApp.UI.CloseUIForm(this);
4585
}

Assets/Hotfix/UI/Logic/UILogin/UIPlayerList.Logic.cs

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
using System.Collections.Generic;
2+
using System.Net;
23
using FairyGUI;
4+
using GameFrameX.Event.Runtime;
5+
using GameFrameX.Network.Runtime;
36
using GameFrameX.Runtime;
47
using GameFrameX.UI.Runtime;
58
#if ENABLE_UI_FAIRYGUI
@@ -9,6 +12,7 @@
912
using GameFrameX.UI.UGUI.Runtime;
1013
#endif
1114
using Hotfix.Manager;
15+
using Hotfix.Network;
1216
using Hotfix.Proto;
1317
using UnityEngine;
1418

@@ -18,17 +22,13 @@ public partial class UIPlayerList
1822
{
1923
List<PlayerInfo> playerList = new List<PlayerInfo>();
2024

25+
private static INetworkChannel networkChannel;
26+
public static string serverIp = "127.0.0.1";
27+
public static int serverPort = 29100;
28+
2129
public override async void OnOpen(object userData)
2230
{
2331
base.OnOpen(userData);
24-
25-
RespLogin respLogin = userData as RespLogin;
26-
ReqPlayerList req = new ReqPlayerList();
27-
if (respLogin != null)
28-
{
29-
req.Id = respLogin.Id;
30-
}
31-
3232
#if ENABLE_UI_FAIRYGUI
3333
this.m_login_button.onClick.Set(OnLoginButtonClick);
3434
this.m_player_list.itemRenderer = ItemRenderer;
@@ -37,8 +37,7 @@ public override async void OnOpen(object userData)
3737
m_right_Panel.gameObject.SetActive(false);
3838
m_right_Panel__login_button.onClick.Set(OnLoginButtonClick);
3939
#endif
40-
var resp = await GameApp.Network.GetNetworkChannel("network").Call<RespPlayerList>(req);
41-
playerList = resp.PlayerList;
40+
playerList = AccountManager.Instance.PlayerList;
4241
#if ENABLE_UI_UGUI
4342
var uiPlayerListItemAssetHandle = await GameApp.Asset.LoadAssetAsync<GameObject>(Utility.Asset.Path.GetUIPath($"{nameof(UILogin)}/{nameof(UIPlayerListItem)}"));
4443
foreach (var playerInfo in playerList)
@@ -57,7 +56,29 @@ public override async void OnOpen(object userData)
5756
#endif
5857
}
5958

60-
private async void OnLoginButtonClick()
59+
private void OnLoginButtonClick()
60+
{
61+
if (networkChannel != null && networkChannel.Connected)
62+
{
63+
Login();
64+
return;
65+
}
66+
67+
if (networkChannel != null && GameApp.Network.HasNetworkChannel("network") && !networkChannel.Connected)
68+
{
69+
GameApp.Network.DestroyNetworkChannel("network");
70+
}
71+
72+
networkChannel = GameApp.Network.CreateNetworkChannel("network", new DefaultNetworkChannelHelper());
73+
// 注册心跳消息
74+
DefaultPacketHeartBeatHandler packetSendHeaderHandler = new DefaultPacketHeartBeatHandler();
75+
networkChannel.RegisterHeartBeatHandler(packetSendHeaderHandler);
76+
networkChannel.Connect(IPAddress.Parse(serverIp), serverPort);
77+
GameApp.Event.CheckSubscribe(NetworkConnectedEventArgs.EventId, OnNetworkConnected);
78+
GameApp.Event.CheckSubscribe(NetworkClosedEventArgs.EventId, OnNetworkClosed);
79+
}
80+
81+
private async void Login()
6182
{
6283
ReqPlayerLogin reqPlayerLogin = new ReqPlayerLogin();
6384
reqPlayerLogin.Id = m_SelectedPlayerInfo.Id;
@@ -106,5 +127,16 @@ private void ItemRenderer(int index, GObject item)
106127

107128
item.dataSource = playerInfo;
108129
}
130+
131+
private static void OnNetworkClosed(object sender, GameEventArgs e)
132+
{
133+
Log.Info(nameof(OnNetworkClosed));
134+
}
135+
136+
private void OnNetworkConnected(object sender, GameEventArgs e)
137+
{
138+
Login();
139+
Log.Info(nameof(OnNetworkConnected));
140+
}
109141
}
110142
}

Assets/Hotfix/Unity.HotFix.asmdef

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
"GameFrameX.UI.Runtime",
2424
"GameFrameX.UI.FairyGUI.Runtime",
2525
"GameFrameX.FairyGUI.Runtime",
26+
"GameFrameX.Web.Runtime",
27+
"GameFrameX.GlobalConfig.Runtime",
2628
"GameFrameX.Event.Runtime",
2729
"GameFrameX.Config.Runtime",
2830
"GameFrameX.Asset.Runtime",

0 commit comments

Comments
 (0)