Commit df6a6060 authored by hex's avatar hex

Rollback TcpHelper.cs; Updaete README.md

parent 835e3805
Pipeline #37860 failed
......@@ -40,7 +40,6 @@ public static class TcpHelper
networkStream = tcpClient.GetStream();
Thread t = new Thread(receiver);
t.Start();
StartSendThread();
CtosMessage_PlayerInfo(name);
if (pswString == "L")
{
......@@ -89,64 +88,33 @@ public static class TcpHelper
public static void addDateJumoLine(byte[] data)
{
lock (datasLock)
Monitor.Enter(datas);
try
{
datas.Enqueue(data);
}
datas.Add(data);
}
public static bool onDisConnected = false;
static Queue<byte[]> datas = new Queue<byte[]>();
static object datasLock = new object();
static object locker = new object();
public static void StartSendThread()
{
if (sendThread == null)
catch (System.Exception e)
{
sendThreadRunning = true;
sendThread = new Thread(SendThreadFunc);
sendThread.IsBackground = true;
sendThread.Start();
UnityEngine.Debug.Log(e);
}
Monitor.Exit(datas);
}
static void StopSendThread()
{
sendThreadRunning = false;
if (sendThread != null)
{
try
{
if (!sendThread.Join(100))
{
sendThread.Abort();
}
}
catch { }
sendThread = null;
}
}
public static bool onDisConnected = false;
static List<byte[]> datas = new List<byte[]>();
public static void preFrameFunction()
{
byte[][] packets = null;
lock (datasLock)
{
if (datas.Count > 0)
{
packets = datas.ToArray();
datas.Clear();
}
}
if (packets != null)
if (Monitor.TryEnter(datas))
{
for (int i = 0; i < packets.Length; i++)
for (int i = 0; i < datas.Count; i++)
{
try
{
MemoryStream memoryStream = new MemoryStream(packets[i]);
MemoryStream memoryStream = new MemoryStream(datas[i]);
BinaryReader r = new BinaryReader(memoryStream);
var ms = (StocMessage)(r.ReadByte());
switch (ms)
......@@ -233,6 +201,9 @@ public static class TcpHelper
// Program.DEBUGLOG(e);
}
}
datas.Clear();
Monitor.Exit(datas);
}
}
if (onDisConnected == true)
{
......@@ -256,8 +227,6 @@ public static class TcpHelper
}
tcpClient = null;
StopSendThread();
if (Program.I().ocgcore.isShowed == false)
{
if (Program.I().menu.isShowed == false)
......@@ -288,34 +257,29 @@ public static class TcpHelper
}
}
static Queue<Package> sendQueue = new Queue<Package>();
static object sendLock = new object();
static Thread sendThread = null;
static bool sendThreadRunning = false;
static void SendThreadFunc()
{
while (sendThreadRunning)
{
Package pkg = null;
lock (sendLock)
public static void Send(Package message)
{
if (sendQueue.Count > 0)
if (tcpClient != null && tcpClient.Connected)
{
pkg = sendQueue.Dequeue();
Thread t = new Thread(sender);
t.Start(message);
}
}
if (pkg != null)
static object locker = new object();
static void sender(object o)
{
try
{
lock (locker)
{
byte[] data = pkg.Data.get();
Package message = (Package)o;
byte[] data = message.Data.get();
MemoryStream memstream = new MemoryStream();
BinaryWriter b = new BinaryWriter(memstream);
b.Write(BitConverter.GetBytes((Int16)data.Length + 1), 0, 2);
b.Write(BitConverter.GetBytes((byte)pkg.Fuction), 0, 1);
b.Write(BitConverter.GetBytes((byte)message.Fuction), 0, 1);
b.Write(data, 0, data.Length);
byte[] s = memstream.ToArray();
tcpClient.Client.Send(s);
......@@ -327,23 +291,6 @@ public static class TcpHelper
Program.DEBUGLOG("onDisConnected 5");
}
}
else
{
Thread.Sleep(2); // 避免空转
}
}
}
public static void Send(Package message)
{
if (tcpClient != null && tcpClient.Connected)
{
lock (sendLock)
{
sendQueue.Enqueue(message);
}
}
}
public static void CtosMessage_Response(byte[] response)
{
......
# 介绍
这是个人修改版本的 KoishiPro2 iOS.
包含以下功能:
1. 结算界面卡顿问题修复;
2. 主界面卡顿问题修复,启动速度加快;
3. 调整的分辨率设置会保存,启动后默认使用上一次的分辨率设置。默认分辨率调整为 1600x900。
4. 服务器列表增加 EXP 服和 MYGO 超先行服;
5. “设置”见面乱点无法关闭问题修复;
6. 双击添加卡牌修改为长按添加卡牌(腱鞘炎福音);
7. 下载代码规范化,使用官方异步下载写法,不影响主线程,让界面更流畅。
8. 暴力适配 ios 刘海屏,左侧卡片描述区域在刘海屏上减少遮挡
# Download game
https://hexzhou.github.io/posts/00008-ygopro2ios-note/
https://koishi.pro/download.html
# Notes for MyCard Helper
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment