Commit 20aedee9 authored by mercury233's avatar mercury233

fix GameMessage.SelectChain

parent 18430657
Pipeline #38163 failed with stage
in 49 minutes and 28 seconds
......@@ -30,6 +30,7 @@ public class Effect
public string desc;
public int flag;
public int ptr;
public bool forced = false;
}
public class gameCard : OCGobject
......@@ -1431,14 +1432,14 @@ public class gameCard : OCGobject
{
gameObject_face.GetComponent<Renderer>().material.mainTexture = await GameTextureManager.GetCardPicture(data.Id,
p.controller == 0 ? GameTextureManager.myBack : GameTextureManager.opBack);
if (game_object_verticle_drawing)
{
if (Program.getVerticalTransparency() > 0.5f)
if (game_object_verticle_drawing)
{
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 =
await GameTextureManager.GetCardCloseUp(data.Id);
else
game_object_verticle_drawing.GetComponent<Renderer>().material.mainTexture =
GameTextureManager.N;
GameTextureManager.N;
}
}
......
......@@ -59,6 +59,7 @@ public class Ocgcore : ServantWithCardDescription
private arrow Arrow;
private autoForceChainHandlerType autoForceChainHandler = autoForceChainHandlerType.manDoAll;
private List<gameCard> chainCards = new List<gameCard>();
private float camera_max = -17.5f;
......@@ -3118,12 +3119,13 @@ public class Ocgcore : ServantWithCardDescription
int spcount = r.ReadByte();
var hint0 = r.ReadInt32();
var hint1 = r.ReadInt32();
var chainCards = new List<gameCard>();
var forced = 0;
chainCards = new List<gameCard>();
var forceCount = 0;
for (var i = 0; i < count; i++)
{
var flag = r.ReadChar();
forced += r.ReadByte();
var forced = r.ReadByte();
forceCount += forced;
code = r.ReadInt32() % 1000000000;
gps = r.ReadGPS();
desc = GameStringManager.get(r.ReadInt32());
......@@ -3137,13 +3139,14 @@ public class Ocgcore : ServantWithCardDescription
eff.flag = flag;
eff.ptr = i;
eff.desc = desc;
eff.forced = forced > 0;
card.effects.Add(eff);
}
}
var chain_condition = gameInfo.get_condition();
var handle_flag = 0;
if (forced == 0) // TODO: 按每张卡的forced处理
if (forceCount == 0)
{
//无强制发动的卡
if (spcount == 0)
......@@ -3312,8 +3315,21 @@ public class Ocgcore : ServantWithCardDescription
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.writer.Write(chainCards[0].effects[0].ptr);
binaryMaster.writer.Write(answer >= 0 ? answer : 0);
sendReturn(binaryMaster.get());
}
......@@ -7460,8 +7476,21 @@ public class Ocgcore : ServantWithCardDescription
autoForceChainHandler = autoForceChainHandlerType.autoHandleAll;
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.writer.Write(0);
binaryMaster.writer.Write(answer >= 0 ? answer : 0);
sendReturn(binaryMaster.get());
}
catch (Exception e)
......
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