using System; using System.Collections.Generic; using System.Windows; using System.Windows.Forms; using System.Text; using System.Runtime.InteropServices; using System.Diagnostics; using System.IO; using zyxAdapter; namespace nativeCom { public partial class dcEvent_zyx : dcEvent_zyx0 { static dcEvent_zyx _instance; public static dcEvent_zyx Instance { get { if (_instance == null) { _instance = new dcEvent_zyx(); } return _instance; } } public dcEvent_zyx() { _instance = this; //_instance.init(); } public override void init() { base.init(); //Form2.fmSub.init(); //baseinfo.instance.dll.fun=doMsg_fun; //baseinfo.instance.dll.rukou=doMsg_rukou; } /// /// 调用gamefun -- 调试用的 /// /// /// /// /// /// public int TestGameFun(string dowhat, string param, ref tr_rltpchar rlt, ref nativeCom.ABlock dataEx, ref nativeCom.ABlock result) { //MrWu.Debug.Debug.Error("GameFun:" + dowhat + "," + param); return 0; } } public interface Igamedo { void i_do_pack(object obj, int evt); void i_do_initMem(bool isfree); void i_do_startWar(); void i_do_timer(); void i_do_reconect(); void i_setData(ref tr_rltpchar t); // void i_getData(byte[] bts); void i_getData(string str); } public class myGameClassBase : myGameObj { public static string teststrs; tr_rltpchar rlt = new tr_rltpchar(); ABlock ab = new ABlock(); Igamedo igamedo { get { return this as Igamedo; } } public myGameClassBase(ref tr_rltpchar t) { t.str = getAddr.ToString(); } //----------------数据-------------- /// ///座位总数 拿这个循环 中途可能有人先结算 /// public int seatCnts; /// /// 开战中否 /// public bool isFighting { get; set; }//自己控制,不需要问底层 // { // return baseinfo.instance.exe.gamefun("-1","6*-1*-1*5", ref rlt,ref ab,ref ab)==1; // } // } //-------------------过程或属性--------------------- /// /// /// public int getUserId(int seat) { return dcEvent_zyx.Instance.TestGameFun("-1", "2*" + seat, ref rlt, ref ab, ref ab); } /// /// 结算 /// /// /// /// public void setFan(int seat, int value, int sifangFinal = 0) { int id = getUserId(seat); setFan_id(id, value, sifangFinal); // int lx=2; // // if (isSifang) // lx=8+sifangFinal; // // baseinfo.instance.exe.gamefun("-1","11*"+id.ToString()+"*"+lx.ToString()+"*"+value.ToString(), ref rlt,ref ab,ref ab); } /// /// 结算 /// /// /// /// public void setFan_id(int id, int value, int sifangFinal = 0) { // int id=getUserId(seat); int lx = 2; if (isSifang) lx = 8 + sifangFinal; dcEvent_zyx.Instance.TestGameFun("-1", "11*" + id.ToString() + "*" + lx.ToString() + "*" + value.ToString(), ref rlt, ref ab, ref ab); } //提前结算--》可以离开桌子了 public void tiqianJieSuan(int seat) { int id = getUserId(seat); tiqianJieSuan_id(id); dcEvent_zyx.Instance.TestGameFun("-1", "11*" + id.ToString() + "*10*0", ref rlt, ref ab, ref ab); } //提前结算--》可以离开桌子了 public void tiqianJieSuan_id(int id) { // int id=getUserId(seat); dcEvent_zyx.Instance.TestGameFun("-1", "11*" + id.ToString() + "*10*0", ref rlt, ref ab, ref ab); } public void tiqianXiaZhuo_id(int id) { // int id=getUserId(seat); dcEvent_zyx.Instance.TestGameFun("-1", "11*" + id.ToString() + "*11*0", ref rlt, ref ab, ref ab); } public int warOver() { return dcEvent_zyx.Instance.TestGameFun("-1", "10", ref rlt, ref ab, ref ab); } public bool isGui_id(int id) { return dcEvent_zyx.Instance.TestGameFun("-1", "4*" + id.ToString() + "*5", ref rlt, ref ab, ref ab) == 1; } public bool isTiqianJiesuan_id(int id) { return dcEvent_zyx.Instance.TestGameFun("-1", "4*" + id.ToString() + "*20", ref rlt, ref ab, ref ab) == 1; } public string teststr() { int addr = dcEvent_zyx.Instance.TestGameFun("-1", "14*1*2", ref rlt, ref ab, ref ab);//获取pchar地址 NativeDllMethod.nativefun("2", addr.ToString(), ref ab, ref ab);//pchar装入ab结构体 return cls_nativeCom.Instance.getUnmanagedString(ref ab);//ab结构体转string } public bool canPlay(int seat) { return !isEmptySeat(seat) && !isTiqianJiesuan_id(getUserId(seat)); } unsafe public int yasuo(byte[] src, byte[] dst, int len, int sty) { fixed (byte* p1 = src) { fixed (byte* p2 = dst) { // ABlock sdfsdf; // sdfsdf.pt=(int*)p1; // sdfsdf.len=len; // nativeCom.cls_nativeCom.Instance. return dcEvent_zyx.Instance.TestGameFun("-1", "21*" + sty.ToString() + "*" + ((int)p1).ToString() + "*" + ((int)p2).ToString() + "*" + len.ToString(), ref rlt, ref ab, ref ab); } } } unsafe public void sendPack(object obj, int evt, int userId = -1) { byte[] data = cls_nativeCom.Instance.Serizeable_obj_withEvt(obj, evt); fixed (byte* bt = data) { int i = (int)(int*)bt; dcEvent_zyx.Instance.TestGameFun("-1", "9*" + userId.ToString() + '*' + i.ToString() + '*' + data.Length, ref rlt, ref ab, ref ab); } } /// /// 是否socket在线 不是玩家是否登录了游戏 /// /// /// public bool isOnline(int seat) { int id = getUserId(seat); MrWu.Debug.Debug.Info("玩家是否在线!!!"); return false; /* if (id < 0) return false; return baseinfo.instance.exe.gamefun("-1", "4*" + id + "*3", ref rlt, ref ab, ref ab) != 1; */ } public bool isOnline_id(int id) { // int id=getUserId(seat); if (id < 0) return false; return dcEvent_zyx.Instance.TestGameFun("-1", "4*" + id + "*3", ref rlt, ref ab, ref ab) != 1; } /// /// 是否空座位 /// /// /// public bool isEmptySeat(int seat) { return getUserId(seat) < 0; } public bool isSifang { get { return dcEvent_zyx.Instance.TestGameFun("-1", "13*6*-1", ref rlt, ref ab, ref ab) != -1; } } public int getSifangInfo(int sty) { return dcEvent_zyx.Instance.TestGameFun("-1", "13*6*2*" + sty.ToString(), ref rlt, ref ab, ref ab); } //--------- public void log(string str, bool isError = false) { if(isError) MrWu.Debug.Debug.Error(str); else MrWu.Debug.Debug.Log(str); } public int getSeatCnts { get { return dcEvent_zyx.Instance.TestGameFun("-1", "6*-1*-1*6", ref rlt, ref ab, ref ab); } } //-------- public void savePaiju() { dcEvent_zyx.Instance.TestGameFun("-1", "15", ref rlt, ref ab, ref ab); } } }