调试checklogin

This commit is contained in:
Mili 2022-09-08 00:17:32 +08:00
parent 35a060f693
commit db9437ada6
6 changed files with 193 additions and 122 deletions

View File

@ -17,33 +17,33 @@ namespace FunGame.Core.Api.Model.Enum
public enum StartMatch_State
{
Matching = 1,
Success = 2,
Enable = 3,
Cancel = 4
Matching,
Success,
Enable,
Cancel
}
public enum CreateRoom_State
{
Creating = 1,
Success = 2
Creating,
Success
}
public enum RoomState
{
Created = 1,
Gaming = 2,
Close = 3,
Complete = 4
Created,
Gaming,
Close,
Complete
}
public enum OnlineState
{
Offline = 1,
Online = 2,
Matching = 3,
InRoom = 4,
Gaming = 5
Offline,
Online,
Matching,
InRoom,
Gaming
}
#endregion
@ -52,33 +52,33 @@ namespace FunGame.Core.Api.Model.Enum
public enum RoomType
{
Mix = 1,
Team = 2,
MixHasPass = 3,
TeamHasPass = 4
Mix,
Team,
MixHasPass,
TeamHasPass
}
public enum InterfaceType
{
ClientConnectInterface = 1,
ServerInterface = 2
ClientConnectInterface,
ServerInterface
}
public enum LightType
{
Green = 1,
Yellow = 2,
Red = 3
Green,
Yellow,
Red
}
public enum SocketType
{
Unknown = 0,
GetNotice = 1,
Login = 2,
CheckLogin = 3,
Logout = 4,
HeartBeat = 5
Unknown,
GetNotice,
Login,
CheckLogin,
Logout,
HeartBeat
}
#endregion
@ -87,11 +87,11 @@ namespace FunGame.Core.Api.Model.Enum
public enum MessageResult
{
OK = 1,
Cancel = 2,
Yes = 3,
No = 4,
Retry = 5
OK,
Cancel,
Yes,
No,
Retry
}
#endregion
@ -100,16 +100,17 @@ namespace FunGame.Core.Api.Model.Enum
public enum WebHelperMethod
{
CreateSocket = 1,
CloseSocket = 2,
StartWebHelper = 3,
CreateSocket,
CloseSocket,
StartWebHelper,
Login
}
public enum InterfaceMethod
{
RemoteServerIP = 1,
DBConnection = 2,
GetServerSettings = 3
RemoteServerIP,
DBConnection,
GetServerSettings
}
#endregion

View File

@ -6,39 +6,41 @@ using System.Threading.Tasks;
namespace FunGame.Core.Api.Model.Enum
{
/// <summary>
/// 用于记录版本号和更新日志
/// </summary>
public static class FunGameEnums
{
public const string FunGame_Core = "FunGame Core";
public const string FunGame_Core_Api = "FunGame Core Api";
public const string FunGame_Console = "FunGame Console";
public const string FunGame_Desktop = "FunGame Desktop";
public const string FunGame_Server = "FunGame Server";
public const int FirstVersion = 1;
public const int SecondVersion = 0;
public const int ThirdVersion = 0;
private const string FunGame_Core = "FunGame Core";
private const string FunGame_Core_Api = "FunGame Core Api";
private const string FunGame_Console = "FunGame Console";
private const string FunGame_Desktop = "FunGame Desktop";
private const string FunGame_Server = "FunGame Server Console";
public enum Patch
private const string FunGame_Version = "v1.0";
private const string FunGame_VersionPatch = "";
public enum FunGame
{
Latest = 20221001,
Patch20220906 = 20220906
FunGame_Core,
FunGame_Core_Api,
FunGame_Console,
FunGame_Desktop,
FunGame_Server
}
public enum History
public static string GetInfo(FunGame FunGameType)
{
Latest = 20221001,
R20220906 = 20220906
}
public static string GetVersion()
{
return "=/=\\=/=\\=/=\\=/= > FunGame版本信息 < =\\=/=\\=/=\\=/=\\=" + "\n" +
FunGame_Core + " -> v" + FirstVersion + "." + SecondVersion + ((int)Patch.Latest == (int)History.Latest ? " Patch" + (int)Patch.Latest : "") + "\n" +
FunGame_Core_Api + " -> v" + FirstVersion + "." + SecondVersion + ((int)Patch.Latest == (int)History.Latest ? " Patch" + (int)Patch.Latest : "") + "\n" +
FunGame_Desktop + " -> v" + FirstVersion + "." + SecondVersion + ((int)Patch.Latest == (int)History.Latest ? " Patch" + (int)Patch.Latest : "");
string type = FunGameType switch
{
FunGame.FunGame_Core => FunGame_Core,
FunGame.FunGame_Core_Api => FunGame_Core_Api,
FunGame.FunGame_Console => FunGame_Console,
FunGame.FunGame_Desktop => FunGame_Desktop,
FunGame.FunGame_Server => FunGame_Server,
_ => ""
};
if (type.Equals(FunGame_Desktop))
return type + " [ 版本: " + FunGame_Version + FunGame_VersionPatch + " ]\n©2022 Mili.cyou. 保留所有权利\n";
else
return type + " [ 版本: " + FunGame_Version + FunGame_VersionPatch + " ]\n(C)2022 Mili.cyou. 保留所有权利\n";
}
/**

View File

@ -4,6 +4,7 @@ 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;
namespace FunGame.Desktop.Models.Config
@ -13,10 +14,7 @@ namespace FunGame.Desktop.Models.Config
/**
* Game Configs
*/
public static string VERSION = "";
public static string VERSION_TYPE = "";
public static string VERSION_PATCH = "";
public static string VERSION_DATE = "";
public static FunGameEnums.FunGame FunGameType = FunGameEnums.FunGame.FunGame_Desktop;
public static INIHelper DefaultINIHelper = new();
public static AssemblyHelper DefaultAssemblyHelper = new();
@ -30,6 +28,7 @@ namespace FunGame.Desktop.Models.Config
public const string WebHelper_SetYellow = "-WebHelper .set yellow";
public const string WebHelper_Disconnected = "-WebHelper .disconnected";
public const string WebHelper_GetUser = "-WebHelper .get user";
public const string WebHelper_SetUser = "-WebHelper .set user";
public static int WebHelper_HeartBeatFaileds = 0;
/**
@ -58,7 +57,7 @@ namespace FunGame.Desktop.Models.Config
public const string FunGame_Retry = "重新连接";
public const string FunGame_AutoRetryOn = "开启自动重连";
public const string FunGame_AutoRetryOff = "关闭自动重连";
public static readonly object[] PresetItems =
public static readonly object[] PresetOnineItems =
{
FunGame_PresetMessage,
FunGame_SignIn,
@ -72,6 +71,12 @@ namespace FunGame.Desktop.Models.Config
FunGame_AutoRetryOn,
FunGame_AutoRetryOff
};
public const string FunGame_ConnectByDebug = "连接到Debug";
public static readonly object[] PresetNoLoginItems =
{
FunGame_PresetMessage,
FunGame_Retry,
FunGame_AutoRetryOn,
FunGame_AutoRetryOff
};
}
}

View File

@ -1,4 +1,5 @@
using System;
using FunGame.Core.Api.Model.Entity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@ -11,6 +12,8 @@ namespace FunGame.Desktop.Models.Config
/**
*
*/
public static User? LoginUser = null; // 已登录的用户
public static string LoginUserName = ""; // 已登录用户名
public static bool Match_Mix = false; // 混战模式选项
public static bool Match_Team = false; // 团队模式选项
public static bool Match_HasPass = false; // 密码房间选项
@ -19,6 +22,5 @@ namespace FunGame.Desktop.Models.Config
public static bool FunGame_isRetrying = false; // 是否正在重连
public static bool FunGame_isAutoRetry = true; // 是否自动重连
public static string FunGame_roomid = "-1"; // 房间号
public static string LoginUserName = ""; // 已登录用户名
}
}

View File

@ -29,7 +29,6 @@ namespace FunGame.Desktop.UI
*
*/
private Task? MatchFunGame = null; // 匹配线程
private User? LoginUser = null; // 登录的玩家对象
private WebHelper? WebHelper = null; // WebHelper
/**
@ -52,7 +51,7 @@ namespace FunGame.Desktop.UI
/// </summary>
public void Init()
{
this.PresetText.SelectedIndex = 0; // 快捷消息初始选择
SetButtonEnableIfLogon(false);
SetRoomid("-1"); // 房间号初始化
ShowFunGameInfo(); // 显示FunGame信息
GetServerConnection(); // 开始连接服务器
@ -69,7 +68,7 @@ namespace FunGame.Desktop.UI
/// <param name="msg"></param>
/// <param name="needTime"></param>
/// <returns></returns>
public object? GetMessage(WebHelper webHelper, string? msg, bool needTime = false)
public object? GetMessage(WebHelper webHelper, string? msg, bool needTime = false, object[]? objs = null)
{
try
{
@ -82,6 +81,7 @@ namespace FunGame.Desktop.UI
WebHelper_Action = (main) =>
{
SetServerStatusLight((int)CommonEnums.LightType.Green);
SetButtonEnableIfLogon(true);
};
if (InvokeRequired)
BeginInvoke(WebHelper_Action, this);
@ -95,6 +95,7 @@ namespace FunGame.Desktop.UI
WebHelper_Action = (main) =>
{
SetServerStatusLight((int)CommonEnums.LightType.Green, GetServerPing(Config.SERVER_IPADRESS));
SetButtonEnableIfLogon(true);
};
if (InvokeRequired)
BeginInvoke(WebHelper_Action, this);
@ -108,6 +109,7 @@ namespace FunGame.Desktop.UI
WebHelper_Action = (main) =>
{
SetServerStatusLight((int)CommonEnums.LightType.Yellow);
SetButtonEnableIfLogon(false);
};
if (InvokeRequired)
BeginInvoke(WebHelper_Action, this);
@ -120,6 +122,7 @@ namespace FunGame.Desktop.UI
WebHelper_Action = (main) =>
{
SetServerStatusLight((int)CommonEnums.LightType.Red);
SetButtonEnableIfLogon(false);
};
if (InvokeRequired)
BeginInvoke(WebHelper_Action, this);
@ -132,6 +135,7 @@ namespace FunGame.Desktop.UI
WebHelper_Action = (main) =>
{
SetServerStatusLight((int)CommonEnums.LightType.Red);
SetButtonEnableIfLogon(false);
};
if (InvokeRequired)
BeginInvoke(WebHelper_Action, this);
@ -156,8 +160,17 @@ namespace FunGame.Desktop.UI
else
throw new Exception("ERROR无法连接至服务器请检查你的网络连接。");
case Config.WebHelper_GetUser:
if (LoginUser != null)
return LoginUser;
if (Usercfg.LoginUser != null)
return Usercfg.LoginUser;
return null;
case Config.WebHelper_SetUser:
if (objs != null && objs.Length > 1)
{
if (InvokeRequired)
BeginInvoke(SetLoginUser, objs);
else
SetLoginUser(objs);
}
return null;
default:
if (needTime)
@ -307,12 +320,10 @@ namespace FunGame.Desktop.UI
/// <param name="objs"></param>
private void SetLoginUser(object[]? objs = null)
{
if (objs != null && objs.Length > 0)
{
LoginUser = (User)objs[0];
Usercfg.LoginUserName = LoginUser.Userame;
}
LoginAccount();
if (InvokeRequired)
BeginInvoke(LoginAccount, objs);
else
LoginAccount(objs);
}
/// <summary>
@ -400,6 +411,33 @@ namespace FunGame.Desktop.UI
RoomSetting.Visible = true;
}
/// <summary>
/// 未登录和离线时,停用按钮
/// </summary>
private void SetButtonEnableIfLogon(bool isLogon)
{
if (isLogon)
{
PresetText.Items.Clear();
PresetText.Items.AddRange(Config.PresetOnineItems);
}
else
{
PresetText.Items.Clear();
PresetText.Items.AddRange(Config.PresetNoLoginItems);
}
this.PresetText.SelectedIndex = 0;
CheckMix.Enabled = isLogon;
CheckTeam.Enabled = isLogon;
CheckHasPass.Enabled = isLogon;
StartMatch.Enabled = isLogon;
CreateRoom.Enabled = isLogon;
RoomBox.Enabled = isLogon;
AccountSetting.Enabled = isLogon;
Stock.Enabled = isLogon;
Store.Enabled = isLogon;
}
/// <summary>
/// 加入房间
/// </summary>
@ -572,11 +610,18 @@ namespace FunGame.Desktop.UI
/// <summary>
/// 登录账号,显示登出按钮
/// </summary>
private void LoginAccount()
private void LoginAccount(object[]? objs = null)
{
if (objs != null && objs.Length > 0)
{
Usercfg.LoginUser = (User)objs[2];
Usercfg.LoginUserName = Usercfg.LoginUser.Userame;
}
NowAccount.Text = "[ID] " + Usercfg.LoginUserName;
Login.Visible = false;
Logout.Visible = true;
SetServerStatusLight((int)LightType.Green);
ShowMessage.TipMessage("欢迎回来, " + Usercfg.LoginUserName + "", "登录成功");
}
/// <summary>
@ -617,7 +662,7 @@ namespace FunGame.Desktop.UI
// 向消息队列发送消息
if (!TalkText.Text.Trim().Equals("") && !TalkText.ForeColor.Equals(Color.DarkGray))
{
WritelnGameInfo(GetNowShortTime() + " [ " + Usercfg.LoginUserName + " ] 说: " + TalkText.Text);
WritelnGameInfo(GetNowShortTime() + " [ " + (!Usercfg.LoginUserName.Equals("") ? Usercfg.LoginUserName : "尚未登录") + " ] 说: " + TalkText.Text);
SwitchTalkMessage(TalkText.Text);
TalkText.Text = "";
if (isLeave) TalkText_Leave(); // 回车不离开焦点
@ -636,7 +681,7 @@ namespace FunGame.Desktop.UI
/// <param name="msg"></param>
private void SendTalkText_Click(string msg)
{
WritelnGameInfo(GetNowShortTime() + " [ " + Usercfg.LoginUserName + " ] 说: " + msg);
WritelnGameInfo(GetNowShortTime() + " [ " + (!Usercfg.LoginUserName.Equals("") ? Usercfg.LoginUserName : "尚未登录") + " ] 说: " + msg);
}
/// <summary>
@ -736,7 +781,7 @@ namespace FunGame.Desktop.UI
/// </summary>
private void ShowFunGameInfo()
{
WritelnGameInfo(FunGameEnums.GetVersion());
WritelnGameInfo(FunGameEnums.GetInfo(Config.FunGameType));
}
#endregion
@ -930,7 +975,10 @@ namespace FunGame.Desktop.UI
/// <param name="e"></param>
private void Login_Click(object sender, EventArgs e)
{
LoginAccount();
if (WebHelper != null)
WebHelper.WebHelpMethod((int)CommonEnums.WebHelperMethod.Login);
else
ShowMessage.WarningMessage("请先连接服务器!");
}
/// <summary>

View File

@ -34,7 +34,7 @@ namespace FunGame.Desktop.Utils
/// 选择WebHelp分支方法
/// </summary>
/// <param name="i">分支方法ID</param>
public void WebHelpMethod(int i)
public bool WebHelpMethod(int i)
{
switch (i)
{
@ -47,7 +47,16 @@ namespace FunGame.Desktop.Utils
case (int)CommonEnums.WebHelperMethod.StartWebHelper:
StartWebHelper();
break;
case (int)CommonEnums.WebHelperMethod.Login:
if (client != null)
{
Send((int)CommonEnums.SocketType.CheckLogin, new object[] { Main, client, new User("Mili") });
return true;
}
else
return false;
}
return true;
}
/// <summary>
@ -148,6 +157,7 @@ namespace FunGame.Desktop.Utils
case (int)CommonEnums.SocketType.Login:
break;
case (int)CommonEnums.SocketType.CheckLogin:
Main.GetMessage(this, Config.WebHelper_SetUser, true, objs);
StartWebHelper(); // 开始创建TCP流
return true;
case (int)CommonEnums.SocketType.Logout:
@ -198,50 +208,38 @@ namespace FunGame.Desktop.Utils
if (socket != null)
{
string msg = "";
byte[] buffer;
int length;
CommonEnums.SocketType type = (CommonEnums.SocketType)i;
// 发送消息给服务器端
switch (i)
switch (type)
{
case (int)CommonEnums.SocketType.GetNotice:
msg = "获取公告";
buffer = new byte[2048];
buffer = Config.DEFAULT_ENCODING.GetBytes(MakeMessage((int)CommonEnums.SocketType.GetNotice, msg));
length = socket.Send(buffer);
if (length > 0)
case CommonEnums.SocketType.GetNotice:
msg = MakeMessage(type, "获取公告");
if (Send(msg, socket) > 0)
{
return Read(objs);
}
else
throw new Exception("ERROR消息未送达服务器与服务器连接可能丢失。");
case CommonEnums.SocketType.Login:
break;
case (int)CommonEnums.SocketType.Login:
break;
case (int)CommonEnums.SocketType.CheckLogin:
case CommonEnums.SocketType.CheckLogin:
User user;
if (objs != null && objs.Length > 2)
{
user = (User)objs[2];
msg = user.Userame;
msg = MakeMessage(type, user.Userame);
}
else
{
Usercfg.FunGame_isAutoRetry = false;
throw new Exception("ERROR: 请登录账号。");
}
buffer = new byte[2048];
buffer = Config.DEFAULT_ENCODING.GetBytes(MakeMessage((int)CommonEnums.SocketType.CheckLogin, msg));
length = socket.Send(buffer);
if (length > 0)
{
return Read(objs);
}
else
throw new Exception("ERROR消息未送达服务器与服务器连接可能丢失。");
case (int)CommonEnums.SocketType.Logout:
break;
case (int)CommonEnums.SocketType.HeartBeat:
buffer = new byte[2048];
buffer = Config.DEFAULT_ENCODING.GetBytes(Convert.ToString(MakeMessage((int)CommonEnums.SocketType.HeartBeat, "心跳检测")));
if (socket.Send(buffer) > 0)
case CommonEnums.SocketType.Logout:
break;
case CommonEnums.SocketType.HeartBeat:
msg = MakeMessage(type, "心跳检测");
if (Send(msg, socket) > 0)
{
WaitHeartBeat = Task.Run(() =>
{
@ -251,8 +249,16 @@ namespace FunGame.Desktop.Utils
return true;
}
AddHeartBeatFaileds(main);
break;
return false;
default:
return false;
}
if (Send(msg, socket) > 0)
{
return Read(objs);
}
else
throw new Exception("ERROR消息未送达服务器与服务器连接可能丢失。");
}
else
{
@ -267,6 +273,13 @@ namespace FunGame.Desktop.Utils
return false;
}
private int Send(string msg, Socket socket)
{
byte[] buffer = Config.DEFAULT_ENCODING.GetBytes(msg);
int length = socket.Send(buffer);
return length;
}
private void CatchException(Main main, Exception e, bool isDisconnected)
{
if (isDisconnected)
@ -307,9 +320,9 @@ namespace FunGame.Desktop.Utils
return msg[index..];
}
private string MakeMessage(int type, string msg)
private string MakeMessage(CommonEnums.SocketType type, string msg)
{
return type + ";" + msg;
return (int)type + ";" + msg;
}
private void Close()