hand
_1_7_85
4
返回栏目
1k
0.2k
0.5k
0.1k
0k
0.2k
0k
0.7k
0k
0k
0.4k
0.1k
4k
0.2k
0.1k
2k
0.2k
0.2k
0k
0k
0.5k
0k
0.9k
0.1k
1k
0.9k
2k
1k
2k
0.9k
1k
0k
1k
0k
1k
1k
1k
1k
0k
1k
1k
1k
0k
3k
1k
0k
0.3k
1k
0.3k
0.9k
0k
8k
9k
6k
2k
1k
2k
1k
1k
2k
0.6k
1k
0.6k
1k
0.5k
0.2k
2k
2k
2k
1k
2k
0k
0.8k
0.8k
1k
0k
0k
0k
0k
0k
0k
0k
0k
0.3k
0.4k
0.8k
0.3k
5k
1k
3k
7k
6k
3k
3k
1k
0.2k
2k
3k
2k
0.4k
0.5k
3k
2k
7k
3k
4k
2k
1k
6k
6k
1k
1k
0.9k
0.2k
0.3k
0.9k
1k
0k
0.8k
2k
0k
0.4k
0.1k
1k
0.9k
0.2k
1k
1k
0.5k
0k
0k
0.4k
4k
0.4k
2k
3k
1k
1k
1k
3k
5k
0k
1k
2k
0.5k
0k
1k
0k
1k
0.5k
0.8k
返回Unity - 游戏引擎栏目
作者:
贺及楼
成为作者
更新日期:2023-09-17 10:57:22
class Client
{
private Socket clientSocket;
private Server server;
private Message msg = new Message();
private MySqlConnection mysqlConn;
private Room room;
private User user;//保存用户
private Result result;//保存战绩
private ResultDAO resultDAO = new ResultDAO();
public int HP{get;set;}
public bool TakeDamage(int damage){}
public bool IsDie(){}
public MySqlConnection MySQLConn{}
public void SetUserData(User user,Result result){}
public string GetUserData(){}
public Room Room{set { room = value; }get { return room; }}
public int GetUserId(){}
//新建一个Client客户端
public Client() { }//构造方法
public Client(Socket clientSocket,Server server) {}
//开启监听
public void Start() {}
//_开启监听:接收数据Callback
private void ReceiveCallback(IAsyncResult ar) {}
//_获得数据给server
private void OnProcessMessage(请求码,动作码,数据){}
//_关闭Socket
private void Close(){}
//发送信息给客户端
public void Send(动作码, 数据){}
public bool IsHouseOwner(){}
public void UpdateResult(bool isVictory){}
private void UpdateResultToDB(bool isVictory){}
private void UpdateResultToClient(){}
}
class Client
{
private Socket clientSocket;
private Server server;
private Message msg = new Message();
private MySqlConnection mysqlConn;
private Room room;
private User user;//保存用户
private Result result;//保存战绩
private ResultDAO resultDAO = new ResultDAO();
public int HP{get;set;}
public bool TakeDamage(int damage){}
public bool IsDie(){}
public MySqlConnection MySQLConn{}
public void SetUserData(User user,Result result){}
public string GetUserData(){}
public Room Room{set { room = value; }get { return room; }}
public int GetUserId(){}
//新建一个Client客户端
public Client() { }//构造方法
public Client(Socket clientSocket,Server server) {}
//开启监听
public void Start() {}
//_开启监听:接收数据Callback
private void ReceiveCallback(IAsyncResult ar) {}
//_获得数据给server
private void OnProcessMessage(RequestCode requestCode,ActionCode actionCode,string data){}
//_关闭Socket
private void Close(){}
//发送信息给客户端
public void Send(ActionCode actionCode, string data){}
public bool IsHouseOwner(){}
public void UpdateResult(bool isVictory){}
private void UpdateResultToDB(bool isVictory){}
private void UpdateResultToClient(){}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Sockets;
using Common;
using MySql.Data.MySqlClient;
using GameServer.Tool;
using GameServer.Model;
using GameServer.DAO;
namespace GameServer.Servers
{
class Client
{
private Socket clientSocket;
private Server server;
private Message msg = new Message();
private MySqlConnection mysqlConn;
private Room room;
private User user;//保存用户
private Result result;//保存战绩
private ResultDAO resultDAO = new ResultDAO();
public int HP
{
get;set;
}
public bool TakeDamage(int damage)
{
HP -= damage;
HP = Math.Max(HP, 0);
if (HP <= 0) return true;
return false;
}
public bool IsDie()
{
return HP <= 0;
}
public MySqlConnection MySQLConn
{
get { return mysqlConn; }
}
public void SetUserData(User user,Result result)
{
this.user = user;
this.result = result;
}
public string GetUserData()
{
return user.Id+","+ user.Username + "," + result.TotalCount + "," + result.WinCount;
}
public Room Room
{
set { room = value; }
get { return room; }
}
public int GetUserId()
{
return user.Id;
}
//新建一个Client客户端
public Client() { }//构造方法
public Client(Socket clientSocket,Server server)
{
this.clientSocket = clientSocket;
this.server = server;
mysqlConn = ConnHelper.Connect();
}
//开启监听
public void Start()
{
if (clientSocket == null || clientSocket.Connected == false) return;
clientSocket.BeginReceive(msg.Data, msg.StartIndex, msg.RemainSize, SocketFlags.None, ReceiveCallback, null);//开启监听
}
//_开启监听:接收数据Callback
private void ReceiveCallback(IAsyncResult ar)
{
try
{
if (clientSocket == null || clientSocket.Connected == false) return;
int count = clientSocket.EndReceive(ar);
if (count == 0)
{
Close();//断开连接
}
msg.ReadMessage(count,OnProcessMessage);//_获得数据
Start();//开启监听,造成循环监听,处理message消息
}
catch (Exception e)
{
Console.WriteLine(e);
Close();
}
}
//_获得数据给server
private void OnProcessMessage(RequestCode requestCode,ActionCode actionCode,string data)
{
server.HandleRequest(requestCode, actionCode, data, this);
}
//_关闭Socket
private void Close()
{
ConnHelper.CloseConnection(mysqlConn);//关闭数据库
if (clientSocket != null)
clientSocket.Close();
if (room != null)
{
room.QuitRoom(this);
}
server.RemoveClient(this);//_移除断开连线的客户端:server调用
}
//发送信息给客户端
public void Send(ActionCode actionCode, string data)
{
try
{
byte[] bytes = Message.PackData(actionCode, data);
clientSocket.Send(bytes);
}catch(Exception e)
{
Console.WriteLine("无法发送消息:" + e);
}
}
public bool IsHouseOwner()
{
return room.IsHouseOwner(this);
}
public void UpdateResult(bool isVictory)
{
UpdateResultToDB(isVictory);
UpdateResultToClient();
}
private void UpdateResultToDB(bool isVictory)
{
result.TotalCount++;
if (isVictory)
{
result.WinCount++;
}
resultDAO.UpdateOrAddResult(mysqlConn, result);
}
private void UpdateResultToClient()
{
Send(ActionCode.UpdateResult, string.Format("{0},{1}", result.TotalCount, result.WinCount));
}
}
}
Unity - 游戏引擎
整章节共151节
快分享给你的小伙伴吧 ~