Commit 575b8c4f authored by mercury233's avatar mercury233

Merge branch 'patch-v1362' into 'master'

Patch v1362

See merge request !7
parents 79c7623c 368a1319
Pipeline #39406 passed with stages
in 168 minutes and 22 seconds
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using UnityEngine; using UnityEngine;
public static class Config public static class Config
{ {
public static uint ClientVersion = 0x1361; public static uint ClientVersion = 0x1362;
private static readonly List<oneString> translations = new List<oneString>(); private static readonly List<oneString> translations = new List<oneString>();
......
...@@ -44,6 +44,7 @@ public static class TcpHelper ...@@ -44,6 +44,7 @@ public static class TcpHelper
networkStream = tcpClient.GetStream(); networkStream = tcpClient.GetStream();
var t = new Thread(receiver); var t = new Thread(receiver);
t.Start(); t.Start();
CtosMessage_ExternalAddress(ipString);
CtosMessage_PlayerInfo(name); CtosMessage_PlayerInfo(name);
CtosMessage_JoinGame(pswString, version); CtosMessage_JoinGame(pswString, version);
} }
...@@ -310,6 +311,15 @@ public static class TcpHelper ...@@ -310,6 +311,15 @@ public static class TcpHelper
Send(message); Send(message);
} }
public static void CtosMessage_ExternalAddress(string hostname)
{
var message = new Package();
message.Fuction = (int) CtosMessage.ExternalAddress;
message.Data.writer.Write((UInt32)0);
message.Data.writer.WriteUnicode(hostname, hostname.Length + 1);
Send(message);
}
public static void CtosMessage_PlayerInfo(string name) public static void CtosMessage_PlayerInfo(string name)
{ {
var message = new Package(); var message = new Package();
......
...@@ -30,6 +30,7 @@ public class Effect ...@@ -30,6 +30,7 @@ public class Effect
public string desc; public string desc;
public int flag; public int flag;
public int ptr; public int ptr;
public bool forced = false;
} }
public class gameCard : OCGobject public class gameCard : OCGobject
...@@ -1431,14 +1432,14 @@ public class gameCard : OCGobject ...@@ -1431,14 +1432,14 @@ public class gameCard : OCGobject
{ {
gameObject_face.GetComponent<Renderer>().material.mainTexture = await GameTextureManager.GetCardPicture(data.Id, gameObject_face.GetComponent<Renderer>().material.mainTexture = await GameTextureManager.GetCardPicture(data.Id,
p.controller == 0 ? GameTextureManager.myBack : GameTextureManager.opBack); p.controller == 0 ? GameTextureManager.myBack : GameTextureManager.opBack);
if (game_object_verticle_drawing) if (game_object_verticle_drawing)
{ {
if (Program.getVerticalTransparency() > 0.5f) if (Program.getVerticalTransparency() > 0.5f)
game_object_verticle_drawing.GetComponent<Renderer>().material.mainTexture =
await GameTextureManager.GetCardCloseUp(data.Id);
else
game_object_verticle_drawing.GetComponent<Renderer>().material.mainTexture = game_object_verticle_drawing.GetComponent<Renderer>().material.mainTexture =
await GameTextureManager.GetCardCloseUp(data.Id); GameTextureManager.N;
else
game_object_verticle_drawing.GetComponent<Renderer>().material.mainTexture =
GameTextureManager.N;
} }
} }
......
...@@ -59,6 +59,7 @@ public class Ocgcore : ServantWithCardDescription ...@@ -59,6 +59,7 @@ public class Ocgcore : ServantWithCardDescription
private arrow Arrow; private arrow Arrow;
private autoForceChainHandlerType autoForceChainHandler = autoForceChainHandlerType.manDoAll; private autoForceChainHandlerType autoForceChainHandler = autoForceChainHandlerType.manDoAll;
private List<gameCard> chainCards = new List<gameCard>();
private float camera_max = -17.5f; private float camera_max = -17.5f;
...@@ -1048,11 +1049,20 @@ public class Ocgcore : ServantWithCardDescription ...@@ -1048,11 +1049,20 @@ public class Ocgcore : ServantWithCardDescription
r.ReadChar(); r.ReadChar();
int count = r.ReadByte(); int count = r.ReadByte();
int spcount = r.ReadByte(); int spcount = r.ReadByte();
int forced = r.ReadByte();
var hint0 = r.ReadInt32(); var hint0 = r.ReadInt32();
var hint1 = r.ReadInt32(); var hint1 = r.ReadInt32();
var ignore = false; var ignore = false;
if (forced == 0) bool forced = false;
for (int i = 0; i < count; i++)
{
r.ReadByte(); // flag
int f = r.ReadByte(); // forced
if (f == 1) forced = true;
r.ReadInt32(); // card id
r.ReadGPS();
r.ReadInt32(); // desc
}
if (!forced)
{ {
var condition = gameInfo.get_condition(); var condition = gameInfo.get_condition();
if (condition == gameInfo.chainCondition.no) if (condition == gameInfo.chainCondition.no)
...@@ -2023,6 +2033,7 @@ public class Ocgcore : ServantWithCardDescription ...@@ -2023,6 +2033,7 @@ public class Ocgcore : ServantWithCardDescription
break; break;
case GameMessage.ConfirmCards: case GameMessage.ConfirmCards:
player = localPlayer(r.ReadByte()); player = localPlayer(r.ReadByte());
bool skip_panel = r.ReadByte() == 1;
count = r.ReadByte(); count = r.ReadByte();
for (var i = 0; i < count; i++) for (var i = 0; i < count; i++)
{ {
...@@ -3106,14 +3117,15 @@ public class Ocgcore : ServantWithCardDescription ...@@ -3106,14 +3117,15 @@ public class Ocgcore : ServantWithCardDescription
player = localPlayer(r.ReadChar()); player = localPlayer(r.ReadChar());
count = r.ReadByte(); count = r.ReadByte();
int spcount = r.ReadByte(); int spcount = r.ReadByte();
int forced = r.ReadByte();
var hint0 = r.ReadInt32(); var hint0 = r.ReadInt32();
var hint1 = r.ReadInt32(); var hint1 = r.ReadInt32();
var chainCards = new List<gameCard>(); chainCards = new List<gameCard>();
var forceCount = 0;
for (var i = 0; i < count; i++) for (var i = 0; i < count; i++)
{ {
var flag = 0; var flag = r.ReadChar();
if (length_of_message % 12 != 0) flag = r.ReadChar(); var forced = r.ReadByte();
forceCount += forced;
code = r.ReadInt32() % 1000000000; code = r.ReadInt32() % 1000000000;
gps = r.ReadGPS(); gps = r.ReadGPS();
desc = GameStringManager.get(r.ReadInt32()); desc = GameStringManager.get(r.ReadInt32());
...@@ -3127,13 +3139,14 @@ public class Ocgcore : ServantWithCardDescription ...@@ -3127,13 +3139,14 @@ public class Ocgcore : ServantWithCardDescription
eff.flag = flag; eff.flag = flag;
eff.ptr = i; eff.ptr = i;
eff.desc = desc; eff.desc = desc;
eff.forced = forced > 0;
card.effects.Add(eff); card.effects.Add(eff);
} }
} }
var chain_condition = gameInfo.get_condition(); var chain_condition = gameInfo.get_condition();
var handle_flag = 0; var handle_flag = 0;
if (forced == 0) if (forceCount == 0)
{ {
//无强制发动的卡 //无强制发动的卡
if (spcount == 0) if (spcount == 0)
...@@ -3302,8 +3315,21 @@ public class Ocgcore : ServantWithCardDescription ...@@ -3302,8 +3315,21 @@ public class Ocgcore : ServantWithCardDescription
if (handle_flag == 4) if (handle_flag == 4)
{ {
//有一张强制发动的卡 回应-- //有一张强制发动的卡 回应--
var answer = -1;
foreach (var ccard in chainCards)
{
foreach (var effect in ccard.effects)
{
if (effect.forced)
{
answer = effect.ptr;
break;
}
}
if (answer >= 0) break;
}
binaryMaster = new BinaryMaster(); binaryMaster = new BinaryMaster();
binaryMaster.writer.Write(chainCards[0].effects[0].ptr); binaryMaster.writer.Write(answer >= 0 ? answer : 0);
sendReturn(binaryMaster.get()); sendReturn(binaryMaster.get());
} }
...@@ -3457,6 +3483,11 @@ public class Ocgcore : ServantWithCardDescription ...@@ -3457,6 +3483,11 @@ public class Ocgcore : ServantWithCardDescription
card.selectPtr = i; card.selectPtr = i;
card.levelForSelect_1 = para & 0xffff; card.levelForSelect_1 = para & 0xffff;
card.levelForSelect_2 = para >> 16; card.levelForSelect_2 = para >> 16;
if ((para & 0x80000000) > 0)
{
card.levelForSelect_1 = para & 0x7fffffff;
card.levelForSelect_2 = card.levelForSelect_1;
}
if (card.levelForSelect_2 == 0) card.levelForSelect_2 = card.levelForSelect_1; if (card.levelForSelect_2 == 0) card.levelForSelect_2 = card.levelForSelect_1;
allCardsInSelectMessage.Add(card); allCardsInSelectMessage.Add(card);
cardsMustBeSelected.Add(card); cardsMustBeSelected.Add(card);
...@@ -3478,6 +3509,11 @@ public class Ocgcore : ServantWithCardDescription ...@@ -3478,6 +3509,11 @@ public class Ocgcore : ServantWithCardDescription
card.selectPtr = i; card.selectPtr = i;
card.levelForSelect_1 = para & 0xffff; card.levelForSelect_1 = para & 0xffff;
card.levelForSelect_2 = para >> 16; card.levelForSelect_2 = para >> 16;
if ((para & 0x80000000) > 0)
{
card.levelForSelect_1 = para & 0x7fffffff;
card.levelForSelect_2 = card.levelForSelect_1;
}
if (card.levelForSelect_2 == 0) card.levelForSelect_2 = card.levelForSelect_1; if (card.levelForSelect_2 == 0) card.levelForSelect_2 = card.levelForSelect_1;
allCardsInSelectMessage.Add(card); allCardsInSelectMessage.Add(card);
card.forSelect = true; card.forSelect = true;
...@@ -3734,6 +3770,7 @@ public class Ocgcore : ServantWithCardDescription ...@@ -3734,6 +3770,7 @@ public class Ocgcore : ServantWithCardDescription
break; break;
case GameMessage.ConfirmCards: case GameMessage.ConfirmCards:
player = localPlayer(r.ReadByte()); player = localPlayer(r.ReadByte());
var skip_panel = r.ReadByte() == 1;
count = r.ReadByte(); count = r.ReadByte();
var t2 = 0; var t2 = 0;
var t3 = 0; var t3 = 0;
...@@ -3823,6 +3860,12 @@ public class Ocgcore : ServantWithCardDescription ...@@ -3823,6 +3860,12 @@ public class Ocgcore : ServantWithCardDescription
t2 = 0; t2 = 0;
clearResponse(); clearResponse();
} }
else if (skip_panel)
{
Sleep(t2);
t2 = 0;
clearResponse();
}
} }
Sleep(t2); Sleep(t2);
...@@ -7434,8 +7477,21 @@ public class Ocgcore : ServantWithCardDescription ...@@ -7434,8 +7477,21 @@ public class Ocgcore : ServantWithCardDescription
autoForceChainHandler = autoForceChainHandlerType.autoHandleAll; autoForceChainHandler = autoForceChainHandlerType.autoHandleAll;
try try
{ {
var answer = -1;
foreach (var card in chainCards)
{
foreach (var effect in card.effects)
{
if (effect.forced)
{
answer = effect.ptr;
break;
}
}
if (answer >= 0) break;
}
binaryMaster = new BinaryMaster(); binaryMaster = new BinaryMaster();
binaryMaster.writer.Write(0); binaryMaster.writer.Write(answer >= 0 ? answer : 0);
sendReturn(binaryMaster.get()); sendReturn(binaryMaster.get());
} }
catch (Exception e) catch (Exception e)
......
...@@ -738,11 +738,11 @@ namespace Percy ...@@ -738,11 +738,11 @@ namespace Percy
move(1); move(1);
count = move(1); count = move(1);
move(1); move(1);
move(1);
move(4); move(4);
move(4); move(4);
for (var i = 0; i < count; i++) for (var i = 0; i < count; i++)
{ {
move(1);
move(1); move(1);
move(4); move(4);
move(4); move(4);
...@@ -779,6 +779,7 @@ namespace Percy ...@@ -779,6 +779,7 @@ namespace Percy
move(move(1) * 7); move(move(1) * 7);
break; break;
case GameMessage.ConfirmCards: case GameMessage.ConfirmCards:
move(1);
move(1); move(1);
move(move(1) * 7); move(move(1) * 7);
break; break;
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
Surrender = 0x14, Surrender = 0x14,
TimeConfirm = 0x15, TimeConfirm = 0x15,
Chat = 0x16, Chat = 0x16,
ExternalAddress = 0x17,
HsToDuelist = 0x20, HsToDuelist = 0x20,
HsToObserver = 0x21, HsToObserver = 0x21,
HsReady = 0x22, HsReady = 0x22,
......
...@@ -940,7 +940,7 @@ MonoBehaviour: ...@@ -940,7 +940,7 @@ MonoBehaviour:
keepCrispWhenShrunk: 1 keepCrispWhenShrunk: 1
mTrueTypeFont: {fileID: 12800000, guid: f775853fdfd14bb47934543e95c3bae3, type: 3} mTrueTypeFont: {fileID: 12800000, guid: f775853fdfd14bb47934543e95c3bae3, type: 3}
mFont: {fileID: 0} mFont: {fileID: 0}
mText: YGOPro2 v2.5.1 1.036.1 mText: YGOPro2 v2.5.2 1.036.2
mFontSize: 18 mFontSize: 18
mFontStyle: 0 mFontStyle: 0
mAlignment: 1 mAlignment: 1
......
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