public int _id; // identify public PAG_DELETE(int id) { header = JFTools.size(typeof(PAG_DELETE)); len = 0; no = (uint)MSG_ID.DELETE; _id = id; }
public PAG_STRING(byte[] _c) { header = JFTools.size(typeof(PAG_STRING)); len = 0; no = (uint)MSG_ID.TEST_STRING; content = _c; }
public static byte [] RecvPackage(Socket sock) { int len; JFPackage.PAG_HEAD head = new JFPackage.PAG_HEAD(); while (true) { len = recveSize(sock, PackageContext, JFPackage.HEAD_LENGTH, 0); if (len <= 0) { GameDebug.Log("head recveSize:" + len); break; } head = (JFPackage.PAG_HEAD)JFTools.BytesToStruct(PackageContext, head.GetType()); //GameDebug.Log("head.header:"+head.header+":"+head.no); if (head.header > 0) { len = recveSize(sock, PackageContext, head.header - JFPackage.HEAD_LENGTH, JFPackage.HEAD_LENGTH); //GameDebug.Log("body recveSize:"+len); if (len <= 0) { GameDebug.Log("body recveSize:" + len); break; } return(PackageContext); } else { GameDebug.Log("head.header <= 0:" + head.no); } } return(null); }
public void SendMessage(JFPackage.IPackage obj, System.Action <bool> cbSendSuccess) { if (!clientSocket.Connected) { clientSocket.Close(); return; } try { Byte[] data = JFTools.StructToBytes(obj); //GameDebug.Log("data len"+data.Length); IAsyncResult asyncSend = clientSocket.BeginSend(data, 0, data.Length, SocketFlags.None, new AsyncCallback(sendCallBack), cbSendSuccess); bool success = asyncSend.AsyncWaitHandle.WaitOne(5000, true); if (!success) { clientSocket.Close(); GameDebug.Log("Time out !"); cbSendSuccess(false); } } catch (Exception e) { GameDebug.LogError("Send message error:" + e); } }
public PAG_EnetrMap(short mapid) { header = JFTools.size(typeof(PAG_EnetrMap)); len = 0; no = (uint)MSG_ID.ENTRPMAP; _mapid = mapid; }
public PAG_ARRAY(byte cnt) { _cnt = cnt; _inner = new byte[0]; header = JFTools.size(typeof(PAG_ARRAY)); len = 0; no = (uint)MSG_ID.TEST_ARRAY; }
public PAG_ListKill(byte cnt) { _cnt = cnt; _inner = new byte[0]; header = JFTools.size(typeof(PAG_ListKill)); len = 0; no = (uint)MSG_ID.LISTKILL; }
public PAG_ERROR(short msgid, int code) { header = JFTools.size(typeof(JFPackage.PAG_ERROR)); len = 0; no = (uint)MSG_ID.Error; _theMsgid = msgid; _errorCode = code; }
public PAG_Notify(byte[] attack, byte[] target) { header = JFTools.size(typeof(PAG_Notify)); len = 0; no = (uint)MSG_ID.NOTIFY; _type = 0; _attack = attack; _target = target; }
public byte[] _pwd; // pwd maxLenght 16 public PAG_LOGIN(byte[] name, byte[] pwd) { header = JFTools.size(typeof(PAG_LOGIN)); len = 0; no = (uint)MSG_ID.LOGIN; _name = name; _pwd = pwd; }
public byte[] _pwd; // pwd maxLenght 16 public PAG_REGIST(byte bAuto, byte[] name, byte[] pwd) { header = JFTools.size(typeof(PAG_REGIST)); len = 0; no = (uint)MSG_ID.REGIST; _bAuto = bAuto; _name = name; _pwd = pwd; }
public PAG_MAPINF(short x, short z, byte block) { header = JFTools.size(typeof(PAG_MAPINF)); len = 0; no = (uint)MSG_ID.MAPINFO; _x = x; _z = z; _block = block; }
public PAG_WALK(int id, int x, int z, byte dir) { header = JFTools.size(typeof(PAG_WALK)); len = 0; no = (uint)MSG_ID.WALK; _id = (short)id; _x = (short)x; _z = (short)z; _dir = dir; }
public PAG_STRUCTURE(byte[] _dest, int _id, byte[] _name, byte[] _sex5) { header = JFTools.size(typeof(JFPackage.PAG_STRUCTURE)); len = 0; no = (uint)MSG_ID.TEST_STRUCTURE; id = _id; dest = _dest; name = _name; sex5 = _sex5; }
public PAG_JUMPINMAP(int id, short x, short z, byte dir) { header = JFTools.size(typeof(JFPackage.PAG_JUMPINMAP)); len = 0; no = (uint)MSG_ID.JUMPINMAP; _id = id; _x = x; _z = z; _dir = dir; }
public PAG_FIGHT(int id, int target, short action) { header = JFTools.size(typeof(PAG_FIGHT)); len = 0; no = (uint)MSG_ID.FIGHT; _id = id; _target = target; _action = action; _param01 = 0; _param02 = 0; _order = 0; }
public byte[] _name; // name maxLenght 8 public PAG_CREATE(int id, short type, short x, short z, byte dir, int hp, byte[] name) { header = JFTools.size(typeof(PAG_CREATE)); len = 0; no = (uint)MSG_ID.CREATE; _id = id; _type = type; _x = x; _z = z; _dir = dir; _name = name; }
public PAG_ATTRCHG(int attID, int tarID, short action, short type, short num, short delay) { header = JFTools.size(typeof(JFPackage.PAG_ATTRCHG)); len = 0; no = (uint)MSG_ID.ATTRCHG; _attackID = attID; _targetID = tarID; _action = action; _type = type; _num = num; _delay = delay; _order = 0; }
void sendArray() { JFPackage.PAG_ArrayInner inner = new JFPackage.PAG_ArrayInner( StringEncoding.GetBytes("ArrayDest"), cnt, StringEncoding.GetBytes("guccang"), StringEncoding.GetBytes("arr") ); List <JFPackage.PAG_ArrayInner> lst = new List <JFPackage.PAG_ArrayInner>(); lst.Add(inner); lst.Add(inner); JFPackage.PAG_ARRAY _a = JFTools.buildArrayStruct <JFPackage.PAG_ArrayInner, JFPackage.PAG_ARRAY>(lst); NetMgr.getSingleton().sendMsg(_a); }
public PAG_ATTR(int id, int maxHp, int maxMp, int hp, int mp, int def) { header = JFTools.size(typeof(JFPackage.PAG_ATTR)); len = 0; no = (uint)MSG_ID.ATTR; _id = id; _hp = hp; _mp = mp; _def = def; _maxHp = maxHp; _maxMp = maxMp; _maxShiled = 0; _shiled = 0; }
public static S buildArrayStruct <T, S>(List <T> inT) where S : JFPackage.IPackage, new() { byte[] bytes; int sizeOfT = Marshal.SizeOf(typeof(T)); int SizeOfSrcObjLst = sizeOfT * inT.Count; int SizeOfDescObj = Marshal.SizeOf(typeof(S)); if (SizeOfDescObj < SizeOfSrcObjLst) { GameDebug.LogError("Error Desc NOT Enought!!!"); return(default(S)); } S pag = new S(); IntPtr descBuf = Marshal.AllocHGlobal(SizeOfDescObj); try { // head short [] headInfo = new short[2]; headInfo[0] = pag.HEAD; headInfo[1] = pag.LEN; int [] headInfo2 = new int[2]; headInfo2[0] = (int)pag.ID; headInfo2[1] = inT.Count; Marshal.Copy(headInfo, 0, descBuf, 2); Marshal.Copy(headInfo2, 0, new IntPtr(descBuf.ToInt32() + JFTools.size(typeof(short)) * 2), 2); int offset = JFTools.size(typeof(short)) * 2 + JFTools.size(typeof(uint)) * 2; // body for (int i = 0; i < inT.Count; ++i) { bytes = StructToBytes(inT[i]); Marshal.Copy(bytes, 0, new IntPtr(descBuf.ToInt32() + i * sizeOfT + offset), sizeOfT); } return((S)Marshal.PtrToStructure(descBuf, typeof(S))); } finally { Marshal.FreeHGlobal(descBuf); } }
int getPackageLenght(uint no) { int len = 0; if (no == (uint)JFPackage.MSG_ID.LISTKILL) { len = JFTools.size(typeof(JFPackage.PAG_ListKill)); } else if (no == (uint)JFPackage.MSG_ID.TEST_STRING) { len = JFTools.size(typeof(JFPackage.PAG_STRING)); } else if (no == (uint)JFPackage.MSG_ID.TEST_STRUCTURE) { len = JFTools.size(typeof(JFPackage.PAG_STRUCTURE)); } else if (no == (uint)JFPackage.MSG_ID.TEST_ARRAY) { len = JFTools.size(typeof(JFPackage.PAG_ARRAY)); } else if (no == (uint)JFPackage.MSG_ID.WALK) { len = JFTools.size(typeof(JFPackage.PAG_WALK)); } else if (no == (uint)JFPackage.MSG_ID.FIGHT) { len = JFTools.size(typeof(JFPackage.PAG_FIGHT)); } else if (no == (uint)JFPackage.MSG_ID.CREATE) { len = JFTools.size(typeof(JFPackage.PAG_CREATE)); } else if (no == (uint)JFPackage.MSG_ID.DELETE) { len = JFTools.size(typeof(JFPackage.PAG_DELETE)); } else if (no == (uint)JFPackage.MSG_ID.REGIST) { len = JFTools.size(typeof(JFPackage.PAG_REGIST)); } else if (no == (uint)JFPackage.MSG_ID.Error) { len = JFTools.size(typeof(JFPackage.PAG_ERROR)); } else if (no == (uint)JFPackage.MSG_ID.ATTRCHG) { len = JFTools.size(typeof(JFPackage.PAG_ATTRCHG)); } else if (no == (uint)JFPackage.MSG_ID.ATTR) { len = JFTools.size(typeof(JFPackage.PAG_ATTR)); } else if (no == (uint)JFPackage.MSG_ID.JUMPINMAP) { len = JFTools.size(typeof(JFPackage.PAG_JUMPINMAP)); } else if (no == (uint)JFPackage.MSG_ID.MAPINFO) { len = JFTools.size(typeof(JFPackage.PAG_MAPINF)); } else if (no == (uint)JFPackage.MSG_ID.ENTRPMAP) { len = JFTools.size(typeof(JFPackage.PAG_EnetrMap)); } else if (no == (uint)JFPackage.MSG_ID.RELIVE) { len = JFTools.size((typeof(JFPackage.PAG_RELIVE))); } else if (no == (uint)JFPackage.MSG_ID.REGIST) { len = JFTools.size((typeof(JFPackage.PAG_REGIST))); } else if (no == (uint)JFPackage.MSG_ID.NOTIFY) { len = JFTools.size((typeof(JFPackage.PAG_Notify))); } else { GameDebug.LogError("NO Find MSD in getPackageLenght."); } return(len); }
public static int processMsg(List <JFPackage.IPackage> pages, System.Action <bool> cb) { try { //if(pages.Count!=0) // GameDebug.LogError("before Pages count"+pages.Count); for (int i = 0; i < pages.Count; ++i) { JFPackage.IPackage pag = pages[i]; NetMgr.getSingleton().perfact(pag.ID); if (pag.ID == (uint)JFPackage.MSG_ID.LISTKILL) { JFPackage.PAG_ListKill kill = (JFPackage.PAG_ListKill)pag; GameDebug.Log("recv list of killed:" + kill._cnt); List <JFPackage.killBeKilledData> listStruct = new List <JFPackage.killBeKilledData>(); JFTools.bytesToArrayStruct(kill._inner, kill._cnt, listStruct); foreach (var v in listStruct) { GameDebug.Log("Array Info: " + " id:" + v._id + " beKilled:" + v._beKilled + " killed:" + v._killed + " name:" + StringEncoding.GetString(v._name)); } } else if (pag.ID == (uint)JFPackage.MSG_ID.NOTIFY) { JFPackage.PAG_Notify no = (JFPackage.PAG_Notify)pag; GameDebug.Log("NotifyMessage:" + StringEncoding.GetString(no._attack) + "杀死了" + StringEncoding.GetString(no._target)); } else if (pag.ID == (uint)JFPackage.MSG_ID.REGIST) { JFPackage.PAG_REGIST reg = (JFPackage.PAG_REGIST)pag; GameDebug.Log(StringEncoding.GetString(reg._name) + ":" + StringEncoding.GetString(reg._pwd)); } else if (pag.ID == (uint)JFPackage.MSG_ID.MAPINFO) { JFPackage.PAG_MAPINF mapInof = (JFPackage.PAG_MAPINF)pag; Hero.NotifyMapInfo(mapInof._x, mapInof._z, mapInof._block); } else if (pag.ID == (uint)JFPackage.MSG_ID.JUMPINMAP) { JFPackage.PAG_JUMPINMAP jim = (JFPackage.PAG_JUMPINMAP)pag; PlayerSys.getSingleton().getHero().NotifyJumpInMap(jim._id.ToString(), new Map.position(jim._x, jim._z)); } else if (pag.ID == (uint)JFPackage.MSG_ID.ATTR) { JFPackage.PAG_ATTR attr = (JFPackage.PAG_ATTR)pag; if (Hero != null) { Hero.AttrInit(attr._id.ToString(), attr._maxHp, attr._maxMp, attr._hp, attr._mp, attr._def, attr._maxShiled, attr._shiled); } else { GameDebug.LogError("hero is null"); } } else if (pag.ID == (uint)JFPackage.MSG_ID.ATTRCHG) { JFPackage.PAG_ATTRCHG attr = (JFPackage.PAG_ATTRCHG)pag; int action = attr._action; if (Hero.ID != attr._targetID) { Hero.NotifyFight(attr._attackID, attr._targetID, attr._action); } if (attr._delay <= 0) { Hero.NotifyAttrChg(attr._targetID.ToString(), attr._type, attr._num); } else { Hero.NotifyAttrChgDelay(attr._targetID.ToString(), attr._type, attr._num, attr._delay); } GameDebug.Log(attr._attackID + " fight " + attr._targetID + ":" + ((Player.ENUM_SKILL_TYPE)attr._action).ToString() + ":" + ((Creature.ENUM_ATTR)attr._type).ToString() + ":" + attr._num); } else if (pag.ID == (uint)JFPackage.MSG_ID.Error) { JFPackage.PAG_ERROR error = (JFPackage.PAG_ERROR)pag; GameDebug.LogError("msg Error:" + ((JFPackage.MSG_ID)error._theMsgid).ToString() + ":" + ((JFPackage.ERROR_CODE)error._errorCode).ToString()); } else if (pag.ID == (uint)JFPackage.MSG_ID.REGIST) { JFPackage.PAG_REGIST reg = (JFPackage.PAG_REGIST)pag; GameDebug.Log("Register Success!!!" + reg._name + ":" + reg._pwd); } else if (pag.ID == (uint)JFPackage.MSG_ID.DELETE) { JFPackage.PAG_DELETE del = (JFPackage.PAG_DELETE)pag; PlayerSys.getSingleton().getHero().NotifyRemove(del._id.ToString()); } else if (pag.ID == (uint)JFPackage.MSG_ID.CREATE) { JFPackage.PAG_CREATE create = (JFPackage.PAG_CREATE)pag; Map.position pos = new Map.position(create._x, create._z); pos._dir = create._dir; CreateSize++; //GameDebug.Log("CreateSize:"+CreateSize+":("+create._x+":"+create._z+")"); string name = StringEncoding.GetString(create._name); if (create._type == 0) // hero { PlayerSys.getSingleton().createHero(create._id, pos, 0, name); } else // others player { PlayerSys.getSingleton().getHero().NotifyAdd(create._type, create._id.ToString(), pos, 0, name); } } else if ((uint)JFPackage.MSG_ID.WALK == pag.ID) { JFPackage.PAG_WALK walk = (JFPackage.PAG_WALK)pag; Map.position pos = new Map.position(walk._x, walk._z); pos._dir = (int)walk._dir; PlayerSys.getSingleton().getHero().NotifyMove(walk._id.ToString(), pos); } else if (pag.ID == (uint)JFPackage.MSG_ID.FIGHT) { JFPackage.PAG_FIGHT fight = (JFPackage.PAG_FIGHT)pag; Player hero = PlayerSys.getSingleton().getHero(); if (fight._action == 8) { GameDebug.Log("BOSS 召唤了卫兵,请小心."); } //if(fight._id != PlayerSys.getSingleton().getHero().ID) { PlayerSys.getSingleton().getHero().NotifyFight(fight._id, fight._target, fight._action); } //else { // hero.fight(fight._action,PlayerSys.getSingleton().getControl().curPos); } } else if (pag.ID == (uint)JFPackage.MSG_ID.CONNECTED) { //short id = 0; //PlayerSys.getSingleton().createHero(id,new Map.position(0,0)); } else if (pag.ID == (uint)JFPackage.MSG_ID.TEST_STRING) { JFPackage.PAG_STRING pag64 = (JFPackage.PAG_STRING)pag; GameDebug.Log("recv 1000:" + StringEncoding.GetString(pag64.content)); } else if ((uint)JFPackage.MSG_ID.TEST_STRUCTURE == pag.ID) { JFPackage.PAG_STRUCTURE inner = (JFPackage.PAG_STRUCTURE)pag; // * Funck 内存对齐,字符串长度问题。byte[] 中如果有0的话,转成string,长度有问题。 string desc = StringEncoding.GetString(inner.dest); string name = StringEncoding.GetString(inner.name); string sex5 = StringEncoding.GetString(inner.sex5); GameDebug.Log("recv 1001:" + name + ":" + desc + ":" + sex5); } else if ((uint)JFPackage.MSG_ID.TEST_ARRAY == pag.ID) { JFPackage.PAG_ARRAY array = (JFPackage.PAG_ARRAY)pag; GameDebug.Log("recv 1002:" + array._cnt); List <JFPackage.PAG_ArrayInner> listStruct = new List <JFPackage.PAG_ArrayInner>(); JFTools.bytesToArrayStruct(array._inner, array._cnt, listStruct); foreach (var v in listStruct) { GameDebug.Log("Array Info: " + " name:" + StringEncoding.GetString(v.name) + " dest:" + StringEncoding.GetString(v.dest) + " sex5:" + StringEncoding.GetString(v.sex5)); } } else { GameDebug.LogError("PAG ID Not FIND!!!" + pag.ID); } } if (pages.Count != 0) { ProcessNumTotal += pages.Count; //Debug.Log("processMsg call , Num pages process :"+ProcessNumTotal); } } catch (System.Exception e) { GameDebug.LogError("MSGProcess Error:" + pages.Count + ":" + e); pages.Clear(); return(-1); } if (pages.Count != 0) { //GameDebug.LogError("after Pages count"+pages.Count); pages.Clear(); } return(0); }
void getPackage(int header, int Lenght, uint no, byte[] data) { if (no == (uint)JFPackage.MSG_ID.LISTKILL) { JFPackage.PAG_ListKill wp = new JFPackage.PAG_ListKill(); wp = (JFPackage.PAG_ListKill)JFTools.BytesToStruct(data, wp.GetType()); _curPackages.Add(wp); } else if (no == (uint)JFPackage.MSG_ID.NOTIFY) { JFPackage.PAG_Notify wp = new JFPackage.PAG_Notify(); wp = (JFPackage.PAG_Notify)JFTools.BytesToStruct(data, wp.GetType()); _curPackages.Add(wp); } else if (no == (uint)JFPackage.MSG_ID.RELIVE) { JFPackage.PAG_RELIVE wp = new JFPackage.PAG_RELIVE(); wp = (JFPackage.PAG_RELIVE)JFTools.BytesToStruct(data, wp.GetType()); _curPackages.Add(wp); } else if (no == (uint)JFPackage.MSG_ID.ENTRPMAP) { JFPackage.PAG_EnetrMap wp = new JFPackage.PAG_EnetrMap(); wp = (JFPackage.PAG_EnetrMap)JFTools.BytesToStruct(data, wp.GetType()); _curPackages.Add(wp); } else if (no == (uint)JFPackage.MSG_ID.MAPINFO) { JFPackage.PAG_MAPINF wp = new JFPackage.PAG_MAPINF(); wp = (JFPackage.PAG_MAPINF)JFTools.BytesToStruct(data, wp.GetType()); _curPackages.Add(wp); } else if (no == (uint)JFPackage.MSG_ID.JUMPINMAP) { JFPackage.PAG_JUMPINMAP wp = new JFPackage.PAG_JUMPINMAP(); wp = (JFPackage.PAG_JUMPINMAP)JFTools.BytesToStruct(data, wp.GetType()); _curPackages.Add(wp); } else if (no == (uint)JFPackage.MSG_ID.ATTR) { JFPackage.PAG_ATTR wp = new JFPackage.PAG_ATTR(); wp = (JFPackage.PAG_ATTR)JFTools.BytesToStruct(data, wp.GetType()); _curPackages.Add(wp); } else if (no == (uint)JFPackage.MSG_ID.ATTRCHG) { JFPackage.PAG_ATTRCHG wp = new JFPackage.PAG_ATTRCHG(); wp = (JFPackage.PAG_ATTRCHG)JFTools.BytesToStruct(data, wp.GetType()); _curPackages.Add(wp); } else if (no == (uint)JFPackage.MSG_ID.TEST_STRING) { JFPackage.PAG_STRING wp = new JFPackage.PAG_STRING(); wp = (JFPackage.PAG_STRING)JFTools.BytesToStruct(data, wp.GetType()); _curPackages.Add(wp); } else if (no == (uint)JFPackage.MSG_ID.TEST_STRUCTURE) { JFPackage.PAG_STRUCTURE wp = new JFPackage.PAG_STRUCTURE(); wp = (JFPackage.PAG_STRUCTURE)JFTools.BytesToStruct(data, wp.GetType()); _curPackages.Add(wp); } else if (no == (uint)JFPackage.MSG_ID.TEST_ARRAY) { JFPackage.PAG_ARRAY wp = new JFPackage.PAG_ARRAY(); wp = (JFPackage.PAG_ARRAY)JFTools.BytesToStruct(data, wp.GetType()); _curPackages.Add(wp); } else if (no == (uint)JFPackage.MSG_ID.WALK) { JFPackage.PAG_WALK wp = new JFPackage.PAG_WALK(); wp = (JFPackage.PAG_WALK)JFTools.BytesToStruct(data, wp.GetType()); _curPackages.Add(wp); } else if (no == (uint)JFPackage.MSG_ID.FIGHT) { JFPackage.PAG_FIGHT wp = new JFPackage.PAG_FIGHT(); wp = (JFPackage.PAG_FIGHT)JFTools.BytesToStruct(data, wp.GetType()); _curPackages.Add(wp); } else if (no == (uint)JFPackage.MSG_ID.CREATE) { JFPackage.PAG_CREATE wp = new JFPackage.PAG_CREATE(); wp = (JFPackage.PAG_CREATE)JFTools.BytesToStruct(data, wp.GetType()); _curPackages.Add(wp); } else if (no == (uint)JFPackage.MSG_ID.DELETE) { JFPackage.PAG_DELETE wp = new JFPackage.PAG_DELETE(); wp = (JFPackage.PAG_DELETE)JFTools.BytesToStruct(data, wp.GetType()); _curPackages.Add(wp); } else if (no == (uint)JFPackage.MSG_ID.REGIST) { JFPackage.PAG_REGIST wp = new JFPackage.PAG_REGIST(); wp = (JFPackage.PAG_REGIST)JFTools.BytesToStruct(data, wp.GetType()); _curPackages.Add(wp); } else if (no == (uint)JFPackage.MSG_ID.Error) { JFPackage.PAG_ERROR wp = new JFPackage.PAG_ERROR(); wp = (JFPackage.PAG_ERROR)JFTools.BytesToStruct(data, wp.GetType()); _curPackages.Add(wp); } else { GameDebug.LogError("getPackage error " + no); } }
public PAG_RELIVE(int mapid) { header = JFTools.size(typeof(PAG_RELIVE)); len = 0; no = (uint)MSG_ID.RELIVE; }