public void Execute(BaseGame game, long tick) { if (m_player.IsActive) { eTankCmdType type = (eTankCmdType)m_packet.ReadByte(); try { ICommandHandler handleCommand = CommandMgr.LoadCommandHandler((int)type); if (handleCommand != null) { handleCommand.HandleCommand(game, m_player, m_packet); } else { log.Error(string.Format("Player Id: {0}", m_player.Id)); } } catch (Exception ex) { log.Error(string.Format("Player Id: {0} cmd:0x{1:X2}", m_player.Id, (byte)type), ex); } } }
public void Execute(BaseGame game, long tick) { if (this.m_player.IsActive) { eTankCmdType eTankCmdType = (eTankCmdType)this.m_packet.ReadByte(); try { ICommandHandler commandHandler = CommandMgr.LoadCommandHandler((int)eTankCmdType); if (commandHandler != null) { commandHandler.HandleCommand(game, this.m_player, this.m_packet); } else { ProcessPacketAction.log.Error(string.Format("Player Id: {0}", this.m_player.Id)); } } catch (Exception exception) { ProcessPacketAction.log.Error(string.Format("Player Id: {0} cmd:0x{1:X2}", this.m_player.Id, (byte)eTankCmdType), exception); } } }
public void Execute(BaseGame game, long tick) { if (this.m_player.IsActive) { byte a = this.m_packet.ReadByte(); eTankCmdType type = (eTankCmdType)a; try { ICommandHandler handleCommand = CommandMgr.LoadCommandHandler((int)type); if (handleCommand != null) { handleCommand.HandleCommand(game, this.m_player, this.m_packet); } else { ProcessPacketAction.log.Error(string.Format("Player Id: {0}", this.m_player.Id)); } } catch (Exception ex) { ProcessPacketAction.log.Error(string.Format("Player Id: {0} cmd:0x{1:X2}", this.m_player.Id, a), ex); } } }
public override void OnRecvPacket(GSPacketIn pkg) { this.m_lastRecv = pkg.Code; this.m_recvCount++; // Debug.Log("player ["+this.m_account+"]:"+DateTime.Now+" receive: "+pkg.Code+" (ePackageType."+(ePackageType)pkg.Code+")"); /*if (this.m_log != null) * { * this.m_log.WriteLine(Marshal.ToHexDump(string.Format("player [{0}]:{1} recive:", this.m_account, DateTime.Now), pkg.Buffer, 0, pkg.Length)); * }*/ switch (pkg.Code) { case 1: { //LOGIN if (pkg.ReadByte() != 0) { string str = pkg.ReadString(); Debug.Log(this.m_account + " login socket failed: " + str); this.m_state = ePlayerState.Stopped; this.LastError = "SocketError:" + str; break; } this.UserId = pkg.ClientID; pkg.ReadInt(); //4 this.m_playerId = pkg.Parameter1; localPlayerInfo = new PlayerInfo(); pkg.ReadInt(); //attack pkg.ReadInt(); //def pkg.ReadInt(); //agil pkg.ReadInt(); //luck pkg.ReadInt(); //gp pkg.ReadInt(); //repute pkg.ReadInt(); //gold pkg.ReadInt(); //money pkg.ReadInt(); //PropBag.GetItemCount pkg.ReadInt(); //PlayerCharacter.Hide pkg.ReadInt(); //PlayerCharacter.FightPower pkg.ReadInt(); pkg.ReadInt(); pkg.ReadString(); //Master pkg.ReadInt(); pkg.ReadString(); //HoNorMaster pkg.ReadDateTime(); pkg.ReadBoolean(); //true pkg.ReadInt(); pkg.ReadInt(); pkg.ReadDateTime(); pkg.ReadDateTime(); pkg.ReadInt(); pkg.ReadDateTime(); pkg.ReadBoolean(); // false pkg.ReadInt(); //1599 pkg.ReadInt(); //1599 pkg.ReadString(); //honor pkg.ReadInt(); // 0 localPlayerInfo.sex = pkg.ReadBoolean(); //sex string tmpStr = pkg.ReadString(); //style & color localPlayerInfo.style = tmpStr.Split('&')[0]; pkg.ReadString(); //skin Debug.Log("login socket success! pid " + this.m_playerId + " uid: " + this.UserId); Debug.Log("localPlayerInfo style: " + localPlayerInfo.style); UnityThread.executeInUpdate(() => { //Call StartGameHandler in ConnectorManager connectorManager.UpdateLocalPlayerPreview(); }); break; } case 2: { //KIT_USER Debug.Log("CMDType 2 KIT_USER"); this.m_state = ePlayerState.Stopped; this.LastError = "KickReason:" + pkg.ReadString(); Debug.Log(this.LastError); break; } case 3: { //SYS_MESS Debug.Log("CMDType 3 - SYS MESS"); int val = pkg.ReadInt(); Debug.Log("CMDType 3 val: " + val.ToString()); this.LastMsg = pkg.ReadString(); Debug.Log(this.LastMsg); break; } case 0x5b: { //GAME_CMD //Debug.Log("GAME_CMD"); eTankCmdType type = (eTankCmdType)pkg.ReadByte(); int pId = pkg.Parameter1; int LifeTime = pkg.Parameter2; Debug.Log("[CMD] " + ((eTankCmdType)type).ToString() + " - lifeTime: " + LifeTime.ToString()); switch (type) { case eTankCmdType.TAKE_CARD: // Debug.Log("TAKE_CARD "); // return; case eTankCmdType.GAME_OVER: // this.Act(new PlayerExecutable(this.EnterWaitingRoom)); // this.Act(new PlayerExecutable(this.CreateRoom)); // this.Act(new PlayerExecutable(this.StartGame)); UnityThread.executeInUpdate(() => { //Call StartGameHandler in ConnectorManager connectorManager.GameOverHandler(); }); return; case eTankCmdType.GAME_TIME: this.m_lifeTime = pkg.ReadInt(); Debug.Log("GAME_TIME sync: " + this.m_lifeTime.ToString()); return; case eTankCmdType.START_GAME: // Game.Logic/PVPGame.cs int size = pkg.ReadInt(); //number of players // List<PlayerInfo> Players = new List<PlayerInfo>(); for (int i = 0; i < size; i++) { // Players.Add(new PlayerInfo()); int tmpId = pkg.ReadInt(); // Players[i].id = pkg.ReadInt(); for (int j = 0; j < size; j++) { if (tmpId != playersList[j].id) { continue; } playersList[j].x = pkg.ReadInt(); playersList[j].y = pkg.ReadInt(); playersList[j].direction = pkg.ReadInt(); playersList[j].blood = pkg.ReadInt(); pkg.ReadInt(); //2 pkg.ReadInt(); //34 playersList[j].isMainPlayer = false; //check if player is this user //Debug.Log("thisPid: "+ this.m_playerId.ToString() + " - Pid: " + Players[i].id.ToString()); // if (playersList[j].id == this.m_playerId){ if (playersList[j].nickname == this.m_account) { playersList[j].isMainPlayer = true; this.m_posX = playersList[j].x; this.m_posY = playersList[j].y; } playersList[j].dander = pkg.ReadInt(); playersList[j].effectCount = pkg.ReadInt(); playersList[j].property3 = new List <int>(); playersList[j].property4 = new List <int>(); for (int k = 0; k < playersList[j].effectCount; k++) { playersList[j].property3.Add(pkg.ReadInt()); playersList[j].property4.Add(pkg.ReadInt()); } break; } } UnityThread.executeInUpdate(() => { //Call StartGameHandler in ConnectorManager connectorManager.StartGameHandler(playersList); }); this.m_state = ePlayerState.StartGame; return; case eTankCmdType.GAME_CREATE: this.m_gameCount++; pkg.ReadInt(); //Roomtype pkg.ReadInt(); //gametype pkg.ReadInt(); //Timetype int num2 = pkg.ReadInt(); // number of players this.playersList = new List <PlayerInfo>(); for (int i = 0; i < num2; i++) { this.playersList.Add(new PlayerInfo()); pkg.ReadInt(); pkg.ReadString(); this.playersList[i].id = pkg.ReadInt(); this.playersList[i].nickname = pkg.ReadString(); pkg.ReadBoolean(); // is vip pkg.ReadInt(); // vip level this.playersList[i].sex = pkg.ReadBoolean(); // sex pkg.ReadInt(); this.playersList[i].style = pkg.ReadString(); this.playersList[i].color = pkg.ReadString(); this.playersList[i].skin = pkg.ReadString(); pkg.ReadInt(); // grade pkg.ReadInt(); // repute this.playersList[i].mainWeapon = pkg.ReadInt(); pkg.ReadInt(); pkg.ReadString(); pkg.ReadDateTime(); pkg.ReadInt(); pkg.ReadInt(); // Nimbus pkg.ReadInt(); // Corsotia Id pkg.ReadString(); //Corsotia name pkg.ReadInt(); // Corsotia level pkg.ReadInt(); // Corsotia repute pkg.ReadInt(); // win pkg.ReadInt(); // total pkg.ReadInt(); // fightPower pkg.ReadInt(); pkg.ReadInt(); pkg.ReadString(); pkg.ReadInt(); pkg.ReadString(); bool isMarried = pkg.ReadBoolean(); if (isMarried) { pkg.ReadInt(); pkg.ReadString(); } pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); this.playersList[i].team = pkg.ReadInt(); this.playersList[i].id = pkg.ReadInt(); this.playersList[i].blood = pkg.ReadInt(); if (this.playersList[i].id == this.m_playerId) { this.m_team = this.playersList[i].team; this.m_blood = this.playersList[i].blood; } } this.m_state = ePlayerState.CreateGame; UnityThread.executeInUpdate(() => { //Call GameCreateHandler in ConnectorManager connectorManager.GameCreateHandler(this.playersList); }); return; case eTankCmdType.GAME_LOAD: pkg.ReadInt(); //maxTime int mapId = pkg.ReadInt(); UnityThread.executeInUpdate(() => { //Call LoadMapHandler in ConnectorManager connectorManager.GameLoadHandler(mapId); }); return; case eTankCmdType.LOAD: this.m_state = ePlayerState.Loading; // this.Act(new PlayerExecutable(this.SendLoadingComplete)); return; case eTankCmdType.TURN: Debug.Log("pId turn: " + pkg.Parameter1.ToString()); int wind = pkg.ReadInt(); pkg.ReadBoolean(); pkg.ReadByte(); pkg.ReadByte(); pkg.ReadByte(); bool isHiding = pkg.ReadBoolean(); //turnTime // TimeType int timeType = pkg.ReadInt(); List <BoxInfo> newBoxesList = new List <BoxInfo>(); int newBoxesCount = pkg.ReadInt(); for (int j = 0; j < newBoxesCount; j++) { newBoxesList.Add(new BoxInfo()); newBoxesList[j].id = pkg.ReadInt(); newBoxesList[j].x = pkg.ReadInt(); newBoxesList[j].y = pkg.ReadInt(); pkg.ReadInt(); // pkg.ReadBoolean(); } List <PlayerInfo> updatedPlayerList = new List <PlayerInfo>(); int listSize = pkg.ReadInt(); for (int j = 0; j < listSize; j++) { updatedPlayerList.Add(new PlayerInfo()); updatedPlayerList[j].id = pkg.ReadInt(); updatedPlayerList[j].isLiving = pkg.ReadBoolean(); updatedPlayerList[j].x = pkg.ReadInt(); updatedPlayerList[j].y = pkg.ReadInt(); updatedPlayerList[j].blood = pkg.ReadInt(); updatedPlayerList[j].isNoHole = pkg.ReadBoolean(); updatedPlayerList[j].energy = pkg.ReadInt(); updatedPlayerList[j].dander = pkg.ReadInt(); updatedPlayerList[j].shootCount = pkg.ReadInt(); } int turnIndex = pkg.ReadInt(); UnityThread.executeInUpdate(() => { //Call TurnHandler in ConnectorManager connectorManager.TurnHandler(pkg.Parameter1, newBoxesList, updatedPlayerList); }); // this.m_state = ePlayerState.Shoot; // this.m_shootCount++; //this.Act(new PlayerExecutable(this.Shoot)); return; case eTankCmdType.CURRENTBALL: bool special = pkg.ReadBoolean(); int currentBallId = pkg.ReadInt(); UnityThread.executeInUpdate(() => { //Call CurrentBallHandler in ConnectorManager connectorManager.CurrentBallHandler(pId, special, currentBallId); }); //pkg.WriteByte((byte)player.BallCount); return; case eTankCmdType.FIRE: int bombCount = pkg.ReadInt(); float lifeTime = 0; List <FireInfo> fireInfos = new List <FireInfo>(); for (int i = 0; i < bombCount; i++) { fireInfos.Add(new FireInfo()); // int vx = (int)(force * reforce * Math.Cos((double)(angle + reangle) / 180 * Math.PI)); // int vy = (int)(force * reforce * Math.Sin((double)(angle + reangle) / 180 * Math.PI)); //Console.ReadLine(string.Format("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< vx:{0} vy:{1}", vx, vy)); // m_map.AddPhysical(bomb); // bomb.StartMoving(); pkg.ReadInt(); pkg.ReadInt(); fireInfos[i].isDigMap = pkg.ReadBoolean(); fireInfos[i].bomId = pkg.ReadInt(); fireInfos[i].x = pkg.ReadInt(); fireInfos[i].y = pkg.ReadInt(); fireInfos[i].vx = pkg.ReadInt(); fireInfos[i].vy = pkg.ReadInt(); fireInfos[i].bomInfoId = pkg.ReadInt(); //FlyingPartical //pkg.ReadString(bomb.BallInfo.FlyingPartical); pkg.ReadString(); pkg.ReadInt(); pkg.ReadInt(); //pkg.ReadInt(0); fireInfos[i].bomActionCount = pkg.ReadInt(); //Debug.Log("Bom Action count: "+ fireInfos[i].bomActionCount.ToString()); for (int j = 0; j < fireInfos[i].bomActionCount; j++) { fireInfos[i].timeInt.Add(pkg.ReadInt()); //0 ->null fireInfos[i].actionType.Add(pkg.ReadInt()); //0 ->null fireInfos[i].actionParam1.Add(pkg.ReadInt()); //0 ->null fireInfos[i].actionParam2.Add(pkg.ReadInt()); //0 ->null fireInfos[i].actionParam3.Add(pkg.ReadInt()); //0 ->null fireInfos[i].actionParam4.Add(pkg.ReadInt()); //0 ->null } //Debug.Log(fireInfos[i].ToString()); } UnityThread.executeInUpdate(() => { //Call FireHandler in ConnectorManager connectorManager.FireHandler(pId, fireInfos); }); return; case eTankCmdType.FIRE_TAG: bool tag = pkg.ReadBoolean(); byte speedTime = pkg.ReadByte(); UnityThread.executeInUpdate(() => { //Call FireTagHandler in ConnectorManager connectorManager.FireTagHandler(pId, tag, speedTime); }); return; case eTankCmdType.USING_PROP: byte propType = pkg.ReadByte(); int place = pkg.ReadInt(); int templateId = pkg.ReadInt(); UnityThread.executeInUpdate(() => { //Call UsingPropHandler in ConnectorManager connectorManager.UsingPropHandler(pId, propType, place, templateId); }); return; case eTankCmdType.MOVESTART: byte moveType = pkg.ReadByte(); int tx = pkg.ReadInt(); int ty = pkg.ReadInt(); byte dir = pkg.ReadByte(); bool isLiving = pkg.ReadBoolean(); string action = pkg.ReadString(); // is null or empty or "move" Debug.Log("MOVE type: " + moveType.ToString() + " tX: " + tx.ToString() + " tY:" + ty.ToString() + " dir: " + dir.ToString()); UnityThread.executeInUpdate(() => { //Call MoveStartHandler in ConnectorManager connectorManager.MoveStartHandler(pId, moveType, tx, ty, dir, isLiving); }); return; case eTankCmdType.DIRECTION: int direction = pkg.ReadInt(); UnityThread.executeInUpdate(() => { //Call CurrentBallHandler in ConnectorManager connectorManager.DirectionHandler(pId, direction); }); return; case eTankCmdType.DANDER: int playerId = pkg.Parameter1; int dander = pkg.ReadInt(); UnityThread.executeInUpdate(() => { //Call CurrentBallHandler in ConnectorManager connectorManager.DanderHandler(pId, dander); }); return; default: Debug.Log("Unhandled type: " + type.ToString()); return; } break; } case 0x5e: { //GAME_CREATE_ROOM Debug.Log("GET GAME_CREATE_ROOM PACKAGE"); if (pkg.ReadInt() != 0) //if (m_isHost == false) { this.m_state = ePlayerState.Room; this.m_isHost = true; this.m_roomCount++; //this.Act(new PlayerExecutable(this.StartGame)); } break; } case 5: { //SYS_DATE Debug.Log("GET SYS_DATE PACKAGE"); // this.Act(new PlayerExecutable(this.EnterWaitingRoom)); // System.Threading.Thread.Sleep(100); // this.Act(new PlayerExecutable(this.CreateRoom)); // //Debug.Log(this.m_State == ePlayerState.Room); // //Debug.Log(this.m_isHost); // //Debug.Log(this.m_roomCount); // System.Threading.Thread.Sleep(100); // this.Act(new PlayerExecutable(this.StartGame)); break; } } }
public override void OnRecvPacket(GSPacketIn pkg) { this.m_lastRecv = pkg.Code; this.m_recvCount++; // Debug.Log("player ["+this.m_account+"]:"+DateTime.Now+" receive: "+pkg.Code+" (ePackageType."+(ePackageType)pkg.Code+")"); /*if (this.m_log != null) * { * this.m_log.WriteLine(Marshal.ToHexDump(string.Format("player [{0}]:{1} recive:", this.m_account, DateTime.Now), pkg.Buffer, 0, pkg.Length)); * }*/ Debug.Log("OnRecvPacket: " + (ePackageType)pkg.Code); switch (pkg.Code) { case (byte)ePlayerPackageType.LOGIN: { //LOGIN if (pkg.ReadByte() != 0) { string str = pkg.ReadString(); Debug.Log(this.m_account + " login socket failed: " + str); this.m_state = ePlayerState.Stopped; this.LastError = "SocketError:" + str; break; } this.UserId = pkg.ClientID; pkg.ReadInt(); //4 this.m_playerId = pkg.Parameter1; localPlayerInfo = new PlayerInfo(); localPlayerInfo.id = this.m_playerId; localPlayerInfo.nickname = this.NickName; ClientRecvPreparer.PlayerInfo_LOGIN(ref localPlayerInfo, ref pkg); Debug.Log("login socket success! pid " + this.m_playerId + " uid: " + this.UserId); // Debug.Log("login info: "+ localPlayerInfo.ToString()); // Debug.Log("localPlayerInfo style: " + localPlayerInfo.style); UnityThread.executeInUpdate(() => { //Call UpdateLocalPlayerPreview in ConnectorManager connectorManager.UpdateLocalPlayerPreview(); }); break; } case 2: { //KIT_USER Debug.Log("CMDType 2 KIT_USER"); this.m_state = ePlayerState.Stopped; this.LastError = "KickReason:" + pkg.ReadString(); Debug.Log(this.LastError); break; } case 3: { //SYS_MESS Debug.Log("CMDType 3 - SYS MESS"); int val = pkg.ReadInt(); Debug.Log("CMDType 3 val: " + val.ToString()); this.LastMsg = pkg.ReadString(); Debug.Log(this.LastMsg); break; } case (byte)ePlayerPackageType.GRID_GOODS: { // MainBag = 0, PropBag = 1, TaskBag = 2, //TempBag = 4, CaddyBag = 5, Bank = 11, Store =12, Card=15 int bagType = pkg.ReadInt(); int slotLength = pkg.ReadInt(); List <ItemInfo> bagBag = new List <ItemInfo>(); Debug.Log("bagtype: " + bagType + " - " + (eBagType)bagType + " slotLEngth: " + slotLength); for (int ind = 0; ind < slotLength; ind++) { pkg.ReadInt(); bagBag.Add(new ItemInfo(ref pkg, true)); // Debug.Log(bagBag[ind].ToString()); } UnityThread.executeInUpdate(() => { //Call StartGameHandler in ConnectorManager connectorManager.GridGoodsHandler(bagType, bagBag); }); break; } case (byte)ePackageType.GAME_ROOM_CREATE: { RoomInfo ri = new RoomInfo(); ri.id = pkg.ReadInt(); ri.roomType = (eRoomType)pkg.ReadByte(); ri.hardLevel = (eHardLevel)pkg.ReadByte(); ri.timeMode = pkg.ReadByte(); ri.playerCount = pkg.ReadByte(); ri.placescount = pkg.ReadByte(); ri.isPasswd = pkg.ReadBoolean(); ri.mapid = pkg.ReadInt(); ri.isplaying = pkg.ReadBoolean(); ri.roomname = pkg.ReadString(); ri.gametype = (eGameType)pkg.ReadByte(); ri.levelLimits = pkg.ReadInt(); pkg.ReadBoolean(); //pkg.WriteBoolean(false); Debug.Log(ri.ToString()); this.m_state = ePlayerState.Room; this.m_isHost = true; this.m_roomCount++; this.Act(new PlayerExecutable(this.StartGame)); break; } case (byte)ePlayerPackageType.ITEM_EQUIP: { { pkg.ReadInt(); //id pkg.ReadInt(); //agi pkg.ReadInt(); //Attack pkg.ReadString(); //Colors pkg.ReadString(); //Skin pkg.ReadInt(); //Defence pkg.ReadInt(); // GP pkg.ReadInt(); //Grade pkg.ReadInt(); //Luck pkg.ReadInt(); //Hide pkg.ReadInt(); //Repute pkg.ReadBoolean(); // Sex pkg.ReadString(); // Style pkg.ReadInt(); //Offer pkg.ReadString(); //NickName pkg.ReadBoolean(); pkg.ReadInt(); pkg.ReadInt(); //Win pkg.ReadInt(); //Total pkg.ReadInt(); //Escape pkg.ReadInt(); pkg.ReadString(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadBoolean(); pkg.ReadInt(); pkg.ReadString(); pkg.ReadString(); pkg.ReadInt(); pkg.ReadInt(); //FightPower pkg.ReadInt(); pkg.ReadInt(); pkg.ReadString(); pkg.ReadInt(); pkg.ReadString(); //AchievementPoint pkg.ReadInt(); pkg.ReadString(); pkg.ReadDateTime(); } int iCount = pkg.ReadInt(); //itemCount List <ItemInfo> items = new List <ItemInfo>(); for (int ind = 0; ind < iCount; ind++) { items.Add(new ItemInfo(ref pkg, false)); Debug.Log(items[ind].ToString()); } break; } case (byte)ePlayerPackageType.UPDATE_PRIVATE_INFO: { localPlayerInfo.money = pkg.ReadInt(); localPlayerInfo.medal = pkg.ReadInt(); localPlayerInfo.gold = pkg.ReadInt(); localPlayerInfo.giftToken = pkg.ReadInt(); break; } case (byte)ePlayerPackageType.UPDATE_PlAYER_INFO: { localPlayerInfo.nickname = this.m_account; localPlayerInfo.id = this.m_playerId; localPlayerInfo.grade = this.m_grade; localPlayerInfo.gp = pkg.ReadInt(); //info.GP); pkg.ReadInt(); //info.Offer); pkg.ReadInt(); //info.RichesOffer); pkg.ReadInt(); //info.RichesRob); localPlayerInfo.win = pkg.ReadInt(); //info.Win); localPlayerInfo.totalMatch = pkg.ReadInt(); //info.Total); pkg.ReadInt(); //info.Escape); localPlayerInfo.attack = pkg.ReadInt(); //info.Attack); localPlayerInfo.defence = pkg.ReadInt(); //info.Defence); localPlayerInfo.agility = pkg.ReadInt(); //info.Agility); localPlayerInfo.luck = pkg.ReadInt(); //info.Luck); pkg.ReadInt(); //info.Hide); localPlayerInfo.style = pkg.ReadString(); //info.Style); localPlayerInfo.color = pkg.ReadString(); //info.Colors); localPlayerInfo.skin = pkg.ReadString(); //info.Skin); pkg.ReadInt(); //info.ConsortiaID); pkg.ReadString(); //info.ConsortiaName); pkg.ReadInt(); //info.ConsortiaLevel); pkg.ReadInt(); //info.ConsortiaRepute); pkg.ReadInt(); //info.Nimbus); pkg.ReadString(); //info.PvePermission); pkg.ReadString(); //"1"); localPlayerInfo.fightPower = pkg.ReadInt(); //info.FightPower); // pkg.ReadInt();//1); // pkg.ReadInt();//-1); // pkg.ReadString();//"ss"); // pkg.ReadInt();//1); // pkg.ReadString();//"ss"); // ////AchievementPoint // pkg.ReadInt();//0); // ////honor // pkg.ReadString();//"honor"); // // //LastSpaDate // // if ();//info.ExpendDate != null) // // pkg.ReadDateTime();//();//DateTime)info.ExpendDate); // // else { pkg.ReadDateTime();//DateTime.MinValue); } // //charmgp // pkg.ReadInt();//100); // //consortiaCharmGP // pkg.ReadInt();//100); // pkg.ReadDateTime();//DateTime.MinValue); // ////DeputyWeaponID // pkg.ReadInt();//10001); // pkg.ReadInt();//0); // // box gi ko biet // pkg.ReadInt();//info.AnswerSite); // // pkg.ReadInt();//0); Debug.Log(localPlayerInfo.ToString()); UnityThread.executeInUpdate(() => { //Call Update mainplayer info in ConnectorManager connectorManager.UpdateLocalPlayerPreview(); connectorManager.UpdateStatsDisplay(); }); break; } case (byte)ePlayerPackageType.GAME_CMD: { //GAME_CMD //Debug.Log("GAME_CMD"); eTankCmdType type = (eTankCmdType)pkg.ReadByte(); int pId = pkg.Parameter1; int LifeTime = pkg.Parameter2; Debug.Log("[CMD] " + ((eTankCmdType)type).ToString() + " - lifeTime: " + LifeTime.ToString()); switch (type) { case eTankCmdType.TAKE_CARD: // Debug.Log("TAKE_CARD "); // return; case eTankCmdType.GAME_OVER: // this.Act(new PlayerExecutable(this.EnterWaitingRoom)); // this.Act(new PlayerExecutable(this.CreateRoom)); // this.Act(new PlayerExecutable(this.StartGame)); MatchSummary ms = ClientRecvPreparer.GameOver_MatchSummary(ref pkg, this.m_playerId); UnityThread.executeInUpdate(() => { //Call StartGameHandler in ConnectorManager connectorManager.GameOverHandler(ms); }); return; case eTankCmdType.GAME_TIME: this.m_lifeTime = pkg.ReadInt(); Debug.Log("GAME_TIME sync: " + this.m_lifeTime.ToString()); return; case eTankCmdType.START_GAME: // Game.Logic/PVPGame.cs int size = pkg.ReadInt(); //number of players // List<PlayerInfo> Players = new List<PlayerInfo>(); for (int i = 0; i < size; i++) { int tmpId = pkg.ReadInt(); for (int j = 0; j < size; j++) { if (tmpId != playersList[j].id) { continue; } playersList[j].x = pkg.ReadInt(); playersList[j].y = pkg.ReadInt(); playersList[j].direction = pkg.ReadInt(); playersList[j].blood = pkg.ReadInt(); pkg.ReadInt(); //2 pkg.ReadInt(); //34 playersList[j].isMainPlayer = false; //check if player is this user //Debug.Log("thisPid: "+ this.m_playerId.ToString() + " - Pid: " + Players[i].id.ToString()); // if (playersList[j].id == this.m_playerId){ if (playersList[j].nickname == this.m_account || playersList[j].nickname == this.NickName) { playersList[j].isMainPlayer = true; this.m_playerId = playersList[j].id; this.m_posX = playersList[j].x; this.m_posY = playersList[j].y; } playersList[j].dander = pkg.ReadInt(); playersList[j].effectCount = pkg.ReadInt(); playersList[j].property3 = new List <int>(); playersList[j].property4 = new List <int>(); for (int k = 0; k < playersList[j].effectCount; k++) { playersList[j].property3.Add(pkg.ReadInt()); playersList[j].property4.Add(pkg.ReadInt()); } break; } } UnityThread.executeInUpdate(() => { //Call StartGameHandler in ConnectorManager connectorManager.StartGameHandler(playersList); }); this.m_state = ePlayerState.StartGame; return; case eTankCmdType.GAME_CREATE: this.m_gameCount++; pkg.ReadInt(); //Roomtype pkg.ReadInt(); //gametype pkg.ReadInt(); //Timetype localPlayerInfo.nickname = this.m_account; this.playersList = ClientRecvPreparer.GameCreate_PlayerList(ref localPlayerInfo, ref pkg); this.m_playerId = localPlayerInfo.id; this.m_state = ePlayerState.CreateGame; UnityThread.executeInUpdate(() => { //Call GameCreateHandler in ConnectorManager connectorManager.GameCreateHandler(this.playersList); }); return; case eTankCmdType.GAME_LOAD: pkg.ReadInt(); //maxTime int mapId = pkg.ReadInt(); UnityThread.executeInUpdate(() => { //Call LoadMapHandler in ConnectorManager connectorManager.GameLoadHandler(mapId); }); return; case eTankCmdType.LOAD: this.m_state = ePlayerState.Loading; // this.Act(new PlayerExecutable(this.SendLoadingComplete)); return; case eTankCmdType.GAME_MISSION_INFO: MissionInfo mi = ClientRecvPreparer.GetPVEMissionInfo(ref pkg); UnityThread.executeInUpdate(() => { connectorManager.PVEMissionPrepare(mi); }); return; case eTankCmdType.GAME_UI_DATA: // update turn index and kill count; int TurnIndex = pkg.ReadInt(); int count = pkg.ReadInt(); int param3 = pkg.ReadInt(), param4 = pkg.ReadInt(); UnityThread.executeInUpdate(() => { Debug.Log(string.Format("GAME_UI_DATA : TurnIndex:{0} - count:{1} - param3,4:{2},{3}", TurnIndex, count, param3, param4)); }); return; case eTankCmdType.ADD_LIVING: // update turn index and kill count; LivingInfo li = ClientRecvPreparer.AddLivingInfo(ref pkg); UnityThread.executeInUpdate(() => { Debug.Log("ADD_LIVING : " + li.ToString()); }); return; case eTankCmdType.TURN: Debug.Log("pId turn: " + pkg.Parameter1.ToString()); int wind = pkg.ReadInt(); pkg.ReadBoolean(); pkg.ReadByte(); pkg.ReadByte(); pkg.ReadByte(); bool isHiding = pkg.ReadBoolean(); //turnTime // TimeType int timeType = pkg.ReadInt(); List <BoxInfo> newBoxesList = new List <BoxInfo>(); int newBoxesCount = pkg.ReadInt(); for (int j = 0; j < newBoxesCount; j++) { newBoxesList.Add(new BoxInfo()); newBoxesList[j].id = pkg.ReadInt(); newBoxesList[j].x = pkg.ReadInt(); newBoxesList[j].y = pkg.ReadInt(); pkg.ReadInt(); // pkg.ReadBoolean(); } List <PlayerInfo> updatedPlayerList = new List <PlayerInfo>(); int listSize = pkg.ReadInt(); for (int j = 0; j < listSize; j++) { updatedPlayerList.Add(new PlayerInfo()); updatedPlayerList[j].id = pkg.ReadInt(); updatedPlayerList[j].isLiving = pkg.ReadBoolean(); updatedPlayerList[j].x = pkg.ReadInt(); updatedPlayerList[j].y = pkg.ReadInt(); updatedPlayerList[j].blood = pkg.ReadInt(); updatedPlayerList[j].isNoHole = pkg.ReadBoolean(); updatedPlayerList[j].energy = pkg.ReadInt(); updatedPlayerList[j].dander = pkg.ReadInt(); updatedPlayerList[j].shootCount = pkg.ReadInt(); } int turnIndex = pkg.ReadInt(); UnityThread.executeInUpdate(() => { //Call TurnHandler in ConnectorManager connectorManager.TurnHandler(pkg.Parameter1, newBoxesList, updatedPlayerList); }); // this.m_state = ePlayerState.Shoot; // this.m_shootCount++; //this.Act(new PlayerExecutable(this.Shoot)); return; case eTankCmdType.CURRENTBALL: bool special = pkg.ReadBoolean(); int currentBallId = pkg.ReadInt(); UnityThread.executeInUpdate(() => { //Call CurrentBallHandler in ConnectorManager connectorManager.CurrentBallHandler(pId, special, currentBallId); }); //pkg.WriteByte((byte)player.BallCount); return; case eTankCmdType.FIRE: List <FireInfo> fireInfos = ClientRecvPreparer.MakeFireInfo(ref pkg); UnityThread.executeInUpdate(() => { //Call FireHandler in ConnectorManager connectorManager.FireHandler(pId, fireInfos); }); return; case eTankCmdType.FIRE_TAG: bool tag = pkg.ReadBoolean(); byte speedTime = pkg.ReadByte(); UnityThread.executeInUpdate(() => { //Call FireTagHandler in ConnectorManager connectorManager.FireTagHandler(pId, tag, speedTime); }); return; case eTankCmdType.USING_PROP: byte propType = pkg.ReadByte(); int place = pkg.ReadInt(); int templateId = pkg.ReadInt(); UnityThread.executeInUpdate(() => { //Call UsingPropHandler in ConnectorManager connectorManager.UsingPropHandler(pId, propType, place, templateId); }); return; case eTankCmdType.MOVESTART: byte moveType = pkg.ReadByte(); int tx = pkg.ReadInt(); int ty = pkg.ReadInt(); byte dir = pkg.ReadByte(); bool isLiving = pkg.ReadBoolean(); string action = pkg.ReadString(); // is null or empty or "move" // Debug.Log("MOVE type: "+moveType.ToString()+" tX: " + tx.ToString()+ // " tY:"+ ty.ToString()+ " dir: "+dir.ToString()); UnityThread.executeInUpdate(() => { //Call MoveStartHandler in ConnectorManager connectorManager.MoveStartHandler(pId, moveType, tx, ty, dir, isLiving); }); return; case eTankCmdType.DIRECTION: int direction = pkg.ReadInt(); UnityThread.executeInUpdate(() => { //Call CurrentBallHandler in ConnectorManager connectorManager.DirectionHandler(pId, direction); }); return; case eTankCmdType.DANDER: int playerId = pkg.Parameter1; int dander = pkg.ReadInt(); localPlayerInfo.dander = dander; UnityThread.executeInUpdate(() => { //Call CurrentBallHandler in ConnectorManager connectorManager.DanderHandler(pId, dander); }); return; default: Debug.Log("Unhandled GAME_CMD type: " + type.ToString()); return; } break; } // case 0x5e:{ // //GAME_CREATE_ROOM // Debug.Log("GET GAME_CREATE_ROOM PACKAGE"); // if (pkg.ReadInt() != 0)//if (m_isHost == false) // { // this.m_state = ePlayerState.Room; // this.m_isHost = true; // this.m_roomCount++; // this.Act(new PlayerExecutable(this.StartGame)); // } // break; // } case 5: { //SYS_DATE Debug.Log("GET SYS_DATE PACKAGE"); // this.Act(new PlayerExecutable(this.EnterWaitingRoom)); // System.Threading.Thread.Sleep(100); // this.Act(new PlayerExecutable(this.CreateRoom)); // //Debug.Log(this.m_State == ePlayerState.Room); // //Debug.Log(this.m_isHost); // //Debug.Log(this.m_roomCount); // System.Threading.Thread.Sleep(100); // this.Act(new PlayerExecutable(this.StartGame)); break; } case (int)ePackageType.GAME_PAIRUP_START: UnityThread.executeInUpdate(() => { connectorManager.ConfirmMatching(); }); break; default: Debug.Log("Unhandled Package type: " + ((ePackageType)pkg.Code).ToString()); break; } }
public override void OnRecvPacket(GSPacketIn pkg) { UnityEngine.Debug.Log("ONRecvPacket"); this.m_lastRecv = pkg.Code; this.m_recvCount++; Console.WriteLine("player [{0}]:{1} receive: 0x{2:X2} (ePackageType.{3})", this.Account, DateTime.Now, pkg.Code, (ePackageType)pkg.Code); /*if (this.m_log != null) * { * this.m_log.WriteLine(Marshal.ToHexDump(string.Format("player [{0}]:{1} recive:", this.Account, DateTime.Now), pkg.Buffer, 0, pkg.Length)); * }*/ switch (pkg.Code) { case 1: if (pkg.ReadByte() != 0) { string str = pkg.ReadString(); Console.WriteLine("{0} login socket failed:{1}", this.Account, str); this.m_state = ePlayerState.Stopped; this.LastError = "SocketError:" + str; break; } Console.WriteLine("{0} login socket success!", this.Account); this.UserId = pkg.ClientID; break; case 2: this.m_state = ePlayerState.Stopped; this.LastError = "KickReason:" + pkg.ReadString(); break; case 3: pkg.ReadInt(); this.LastMsg = pkg.ReadString(); break; case 0x5b: { UnityEngine.Debug.Log("0x5b"); eTankCmdType type = (eTankCmdType)pkg.ReadByte(); switch (type) { case eTankCmdType.TAKE_CARD: case eTankCmdType.GAME_OVER: this.Act(new PlayerExecutable(this.EnterWaitingRoom)); this.Act(new PlayerExecutable(this.CreateRoom)); return; case eTankCmdType.START_GAME: this.m_state = ePlayerState.StartGame; return; case eTankCmdType.GAME_CREATE: { UnityEngine.Debug.Log("GAME_CREATE"); this.m_gameCount++; pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); int num2 = pkg.ReadInt(); UnityEngine.Debug.Log(num2); for (int i = 0; i < num2; i++) { pkg.ReadInt(); pkg.ReadString(); int num4 = pkg.ReadInt(); string nn = pkg.ReadString(); UnityEngine.Debug.Log(nn); pkg.ReadBoolean(); pkg.ReadByte(); pkg.ReadInt(); pkg.ReadBoolean(); pkg.ReadInt(); pkg.ReadString(); pkg.ReadString(); pkg.ReadString(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadString(); pkg.ReadDateTime(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadBoolean(); pkg.ReadInt(); pkg.ReadString(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadString(); pkg.ReadInt(); pkg.ReadString(); pkg.ReadInt(); pkg.ReadBoolean(); pkg.ReadInt(); if (pkg.ReadBoolean()) { pkg.ReadInt(); pkg.ReadString(); } pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); int num5 = pkg.ReadInt(); int num6 = pkg.ReadInt(); int num7 = pkg.ReadInt(); if (num4 == this.UserId) { this.m_team = num5; this.m_playerId = num6; this.m_blood = num7; } if (pkg.ReadInt() != 0) { pkg.ReadInt(); pkg.ReadInt(); pkg.ReadInt(); pkg.ReadString(); pkg.ReadInt(); pkg.ReadInt(); int num9 = pkg.ReadInt(); for (int j = 0; j < num9; j++) { pkg.ReadInt(); pkg.ReadInt(); } } } this.m_state = ePlayerState.CreateGame; return; } case eTankCmdType.GAME_LOAD: pkg.ReadInt(); //maxTime int mapId = pkg.ReadInt(); //mapID UnityEngine.Debug.Log("mapId: " + mapId.ToString()); return; case eTankCmdType.LOAD: this.m_state = ePlayerState.Loading; this.Act(new PlayerExecutable(this.SendLoadingComplete)); return; case eTankCmdType.TURN: if (pkg.Parameter1 == this.m_playerId) { this.m_state = ePlayerState.Shoot; this.m_shootCount++; this.Act(new PlayerExecutable(this.Shoot)); } return; } break; } case 0x5e: if (pkg.ReadInt() != 0)//if (m_isHost == false) { this.m_state = ePlayerState.Room; this.m_isHost = true; this.m_roomCount++; //this.Act(new PlayerExecutable(this.StartGame)); } break; case 5: this.Act(new PlayerExecutable(this.EnterWaitingRoom)); System.Threading.Thread.Sleep(3000); this.Act(new PlayerExecutable(this.CreateRoom)); //Debug.Log(this.m_State == ePlayerState.Room); //Debug.Log(this.m_isHost); //Debug.Log(this.m_roomCount); System.Threading.Thread.Sleep(3000); this.Act(new PlayerExecutable(this.StartGame)); break; } }