Commit 987cd120 authored by mercury233's avatar mercury233

ocgcore API changements

parent f21817f7
...@@ -297,7 +297,10 @@ namespace Percy ...@@ -297,7 +297,10 @@ namespace Percy
public static extern IntPtr create_duel(uint seed); public static extern IntPtr create_duel(uint seed);
[DllImport("ocgcore", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] [DllImport("ocgcore", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
public static extern void start_duel(IntPtr pduel, int options); public static extern IntPtr create_duel_v2([In] uint[] seeds);
[DllImport("ocgcore", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
public static extern void start_duel(IntPtr pduel, uint options);
[DllImport("ocgcore", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] [DllImport("ocgcore", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
public static extern int get_ai_going_first_second(IntPtr pduel, IntPtr deckname); public static extern int get_ai_going_first_second(IntPtr pduel, IntPtr deckname);
...@@ -351,7 +354,7 @@ namespace Percy ...@@ -351,7 +354,7 @@ namespace Percy
public static extern int query_field_info(IntPtr pduel, IntPtr buf); public static extern int query_field_info(IntPtr pduel, IntPtr buf);
[DllImport("ocgcore", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] [DllImport("ocgcore", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
public static extern int preload_script(IntPtr pduel, IntPtr script, int len); public static extern int preload_script(IntPtr pduel, IntPtr script);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr ScriptReader(string scriptName, int* len); private delegate IntPtr ScriptReader(string scriptName, int* len);
...@@ -1114,14 +1117,8 @@ namespace Percy ...@@ -1114,14 +1117,8 @@ namespace Percy
isFirst = true; isFirst = true;
dll.set_player_info(duel, 0, 8000, 5, 1); dll.set_player_info(duel, 0, 8000, 5, 1);
dll.set_player_info(duel, 1, 8000, 5, 1); dll.set_player_info(duel, 1, 8000, 5, 1);
var reult = 0; dll.preload_script(duel, getPtrString(path));
for (var i = 0; i < 10; i++)
{
reult = dll.preload_script(duel, getPtrString(path), 0);
if (reult > 0) break;
}
if (reult == 0) return false;
dll.start_duel(duel, 0); dll.start_duel(duel, 0);
Refresh(); Refresh();
new Thread(Process).Start(); new Thread(Process).Start();
...@@ -1135,18 +1132,12 @@ namespace Percy ...@@ -1135,18 +1132,12 @@ namespace Percy
isFirst = playerGoFirst; isFirst = playerGoFirst;
dll.set_player_info(duel, 0, life, 5, 1); dll.set_player_info(duel, 0, life, 5, 1);
dll.set_player_info(duel, 1, life, 5, 1); dll.set_player_info(duel, 1, life, 5, 1);
var reult = 0; dll.preload_script(duel, getPtrString(aiScript));
for (var i = 0; i < 10; i++)
{
reult = dll.preload_script(duel, getPtrString(aiScript), 0);
if (reult > 0) break;
}
if (reult == 0) return false;
addDeck(playerDek, playerGoFirst ? 0 : 1, !unrand); addDeck(playerDek, playerGoFirst ? 0 : 1, !unrand);
addDeck(aiDeck, playerGoFirst ? 1 : 0, true); addDeck(aiDeck, playerGoFirst ? 1 : 0, true);
dll.set_ai_id(duel, playerGoFirst ? 1 : 0); dll.set_ai_id(duel, playerGoFirst ? 1 : 0);
var opt = 0; UInt32 opt = 0;
opt |= 0x80; opt |= 0x80;
if (unrand) opt |= 0x10; if (unrand) opt |= 0x10;
var master = new BinaryMaster(); var master = new BinaryMaster();
...@@ -1159,7 +1150,7 @@ namespace Percy ...@@ -1159,7 +1150,7 @@ namespace Percy
master.writer.Write((ushort) dll.query_field_count(duel, 1, 0x1)); master.writer.Write((ushort) dll.query_field_count(duel, 1, 0x1));
master.writer.Write((ushort) dll.query_field_count(duel, 1, 0x40)); master.writer.Write((ushort) dll.query_field_count(duel, 1, 0x40));
sendToPlayer(master.get()); sendToPlayer(master.get());
dll.start_duel(duel, opt | (mr << 16)); dll.start_duel(duel, opt | (UInt32)(mr << 16));
Refresh(); Refresh();
new Thread(Process).Start(); new Thread(Process).Start();
return true; return true;
...@@ -1401,7 +1392,7 @@ namespace Percy ...@@ -1401,7 +1392,7 @@ namespace Percy
public List<byte[]> gameData = new List<byte[]>(); public List<byte[]> gameData = new List<byte[]>();
public int Hash = 0; public int Hash = 0;
public int ID = 0; public int ID = 0;
public int opt = 0; public uint opt = 0;
public List<PlayerData> playerData = new List<PlayerData>(); public List<PlayerData> playerData = new List<PlayerData>();
public byte[] Props = new byte[8]; public byte[] Props = new byte[8];
public uint Seed = 0; public uint Seed = 0;
......
...@@ -164,8 +164,8 @@ public class selectReplay : WindowServantSP ...@@ -164,8 +164,8 @@ public class selectReplay : WindowServantSP
returnValue.StartLp = reader.ReadInt32(); returnValue.StartLp = reader.ReadInt32();
returnValue.StartHand = reader.ReadInt32(); returnValue.StartHand = reader.ReadInt32();
returnValue.DrawCount = reader.ReadInt32(); returnValue.DrawCount = reader.ReadInt32();
returnValue.opt = reader.ReadInt32(); returnValue.opt = reader.ReadUInt32();
Program.I().ocgcore.MasterRule = returnValue.opt >> 16; Program.I().ocgcore.MasterRule = (int)(returnValue.opt >> 16);
for (var i = 0; i < 4; i++) for (var i = 0; i < 4; i++)
{ {
var count = reader.ReadInt32(); var count = reader.ReadInt32();
...@@ -183,8 +183,8 @@ public class selectReplay : WindowServantSP ...@@ -183,8 +183,8 @@ public class selectReplay : WindowServantSP
returnValue.StartLp = reader.ReadInt32(); returnValue.StartLp = reader.ReadInt32();
returnValue.StartHand = reader.ReadInt32(); returnValue.StartHand = reader.ReadInt32();
returnValue.DrawCount = reader.ReadInt32(); returnValue.DrawCount = reader.ReadInt32();
returnValue.opt = reader.ReadInt32(); returnValue.opt = reader.ReadUInt32();
Program.I().ocgcore.MasterRule = returnValue.opt >> 16; Program.I().ocgcore.MasterRule = (int)(returnValue.opt >> 16);
for (var i = 0; i < 2; i++) for (var i = 0; i < 2; i++)
{ {
var count = reader.ReadInt32(); var count = reader.ReadInt32();
......
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