//5.16 홍승준 추가 public void Select_skillset(int id, CS_SKILLSET_PACKET CS) { int i = 0; for (i = 0; i < 4; i++) { Ch[id].skill[i] = Convert.ToInt16(CS.sk_id[i]); } }//5.16 여기까지
public bool MakeCharacter(byte ch_type, byte player_num, object cs) { CS_SKILLSET_PACKET sc = (CS_SKILLSET_PACKET)cs; byte id = 0; if (select_player[player_num]) { id = select_slot[player_num]; } else { return(false); } //CHARACTER INIT OPTION SET============================================= savedata.CharacterData[id].id = id; savedata.CharacterData[id].clearedround = 0; savedata.CharacterData[id].remainpoint = 0; savedata.CharacterData[id].ch_type = ch_type; savedata.CharacterData[id].ch_atk = 0; savedata.CharacterData[id].ch_str = 0; savedata.CharacterData[id].ch_vit = 0; savedata.CharacterData[id].ch_int = 0; savedata.CharacterData[id].ch_mid = 0; savedata.CharacterData[id].ch_matk = 0; savedata.CharacterData[id].ch_movespd = 0; savedata.CharacterData[id].ch_atkspd = 0; savedata.CharacterData[id].ch_stamina = 0; savedata.CharacterData[id].DefaultSkillSetData = new int[4] { 0, 0, 0, 0 }; charactercount++; CC[id].ch_type = ch_type; CC[id].clearedround = 0; CC[id].skillset = new int[4] { 0, 0, 0, 0 }; show_card[id] = true; //CC[id].show(); Debug.Log("id : " + Convert.ToString(sc.id)); Debug.Log(" 1 : " + (short)sc.sk_id[0]); Debug.Log(" 2 : " + (short)sc.sk_id[1]); Debug.Log(" 3 : " + (short)sc.sk_id[2]); Debug.Log(" 4 : " + (short)sc.sk_id[3]); return(true); }
//5.15 끝 //받은 데이터 체크 꼭 할것!!!! public void DataReceive(IAsyncResult ar) { IAsyncClient obj = (IAsyncClient)ar.AsyncState; Socket handler = obj.s; int bytesRead = handler.EndReceive(ar); obj.recvbyte += bytesRead; //길이 맞는지 확인해보고 if (obj.recvbyte > 0 || bytesRead > 0) { Debug.Log("DataRecived"); if (true == obj.signalread) { //5.14 홍승준 수정 obj.recv_signal = obj.recvbuf[0]; Buffer.BlockCopy(obj.recvbuf, 1, obj.recvbuf, 0, obj.recvbyte - 1); switch (obj.recv_signal) { case NetworkController.CS_REQCHR: //캐릭터 정보 요청 신호 일 때 Debug.Log("Requset signal"); SC_CHARACTERINFOSET_PACKET chset = new SC_CHARACTERINFOSET_PACKET(); chset.characterinfo = new SC_CHARACTERINFO_PACKET[4]; int i = 0; for (i = 0; i < 4; i++) { if (connected[i]) { chset.characterinfo[i] = GS.PC[i].CharacterInfo(); chset.characterinfo[i].id = (byte)i; } else { chset.characterinfo[i].id = 125; } } NC.net_send_signal(NetworkController.SC_CHARACTERINFOSET, obj.s); NC.net_send(chset, obj.s, NetworkController.SC_CHARACTERINFOSET); Debug.Log("Ch_info_set_packet : " + NC.ObjToByte(chset).Length); //다시 시그널 리시브 하도록 초기화 obj.recvbyte -= 1; obj.signalread = true; break; default: obj.recvbyte -= 1; obj.signalread = false; break; } } //5.14 홍승준 수정 끝 if (false == obj.signalread) { if (obj.recv_signal == NetworkController.CS_DISCONNECT) { client_sock.Remove(obj.s); obj.s.Disconnect(false); if (false == isgamescene) { CC.disconnected(obj.id); } else { GS.disconnected(obj.id); } return; } else if (obj.recv_signal == NetworkController.CS_CONNECT && obj.recvbyte >= 116) { Buffer.BlockCopy(obj.recvbuf, 0, obj.cbuf, 0, 116); object recvobj = NC.ByteToObj(obj.cbuf); Buffer.BlockCopy(obj.recvbuf, 116, obj.recvbuf, 0, obj.recvbyte - 116); obj.recvbyte -= 116; CS_CONNECT_PACKET res = (CS_CONNECT_PACKET)recvobj; CC.nickname[res.id] = res.nickname; obj.recv_signal = NetworkController.S_NULL; obj.signalread = true; } else if (obj.recv_signal == NetworkController.CS_MOVE && obj.recvbyte >= 89) { Buffer.BlockCopy(obj.recvbuf, 0, obj.cbuf, 0, 89); object recvobj = NC.ByteToObj(obj.cbuf); Buffer.BlockCopy(obj.recvbuf, 89, obj.recvbuf, 0, obj.recvbyte - 89); obj.recvbyte -= 89; CS_MOVE_PACKET res = (CS_MOVE_PACKET)recvobj; if (false == isgamescene) { CC.move(res.x, res.y, res.id); } else { GS.move(res.x, res.y, res.id); } obj.recv_signal = NetworkController.S_NULL; obj.signalread = true; } else if (obj.recv_signal == NetworkController.CS_BTN && obj.recvbyte >= 89) { Buffer.BlockCopy(obj.recvbuf, 0, obj.cbuf, 0, 89); object recvobj = NC.ByteToObj(obj.cbuf); Buffer.BlockCopy(obj.recvbuf, 89, obj.recvbuf, 0, obj.recvbyte - 89); obj.recvbyte -= 89; CS_BUTTON_PACKET res = (CS_BUTTON_PACKET)recvobj; if (false == isgamescene) { CC.click(res.id, res.btn_number); } else { GS.click(res.id, res.btn_number); } obj.recv_signal = NetworkController.S_NULL; obj.signalread = true; }//5.15 홍승준 추가//5.18 홍승준 수정 else if (obj.recv_signal == NetworkController.CS_SKILL && obj.recvbyte >= 104) { Buffer.BlockCopy(obj.recvbuf, 0, obj.cbuf, 0, 104); object recvobj = NC.ByteToObj(obj.cbuf); Buffer.BlockCopy(obj.recvbuf, 104, obj.recvbuf, 0, obj.recvbyte - 104); obj.recvbyte -= 104; CS_SKILLSET_PACKET sc = (CS_SKILLSET_PACKET)recvobj; sm.MakeCharacter(0, sc.id, sc); obj.recv_signal = NetworkController.S_NULL; obj.signalread = true; /* * Debug.Log("id : "+ Convert.ToString(sc.sk_id)); * Debug.Log(" 1 : "+(short)sc.sk_id[0]); * Debug.Log(" 2 : " + (short)sc.sk_id[1]); * Debug.Log(" 3 : " + (short)sc.sk_id[2]); * Debug.Log(" 4 : " + (short)sc.sk_id[3]);*/ }//여기까지 else if (obj.recv_signal == NetworkController.CS_UPGRADE && obj.recvbyte >= 85) { Debug.Log("UPGRADE RECEIVE"); Buffer.BlockCopy(obj.recvbuf, 0, obj.cbuf, 0, 85); object recvobj = NC.ByteToObj(obj.cbuf); Buffer.BlockCopy(obj.recvbuf, 85, obj.recvbuf, 0, obj.recvbyte - 85); obj.recvbyte -= 85; Ms.Upgrade_reciev(recvobj); obj.recv_signal = NetworkController.S_NULL; obj.signalread = true; } } } handler.BeginReceive(obj.recvbuf, obj.recvbyte, NetworkController.MAXBUFFERSIZE - obj.recvbyte, 0, new AsyncCallback(DataReceive), obj); }