public static void Send_Damage(int m_iPlayerID, int damage) { OnGame_HP xmsg = new OnGame_HP(); xmsg.m_iPlayerID = m_iPlayerID; xmsg.hpValues = damage; byte[] msgBytes; using (MemoryStream stream = new MemoryStream()) { ProtoBuf.Serializer.Serialize(stream, xmsg); msgBytes = stream.ToArray(); } OnGame ongame = new OnGame(); ongame.gameData = msgBytes; ongame.m_iRoomID = Network.Myplayer.m_iRoomID; ongame.m_iTableID = Network.gameInfo_sitdown.m_iTableID; ongame.m_icmd = (int)GameID.Damage; ongame.gameDataLength = msgBytes.Length; byte[] res; using (MemoryStream stream = new MemoryStream()) { ProtoBuf.Serializer.Serialize(stream, ongame); res = stream.ToArray(); } ClientHeader header = new ClientHeader(); header = GetHeader(MessageID.CMD_PLAYGAME, res.Length); connector.SendMsg(header, res); }
public static void CMD_PUSHGAMEDATA(NetworkMsg msg) { Res_game xmsg = new Res_game(); using (MemoryStream stream = new MemoryStream(msg.data)) { xmsg = ProtoBuf.Serializer.Deserialize <Res_game>(stream); } //Debug.Log("xue****sdid****:" + xmsg.m_iRoomID + ":" + xmsg.m_iTableID + ":" + xmsg.m_icmd + ":" + Enum.GetName(typeof(GameID), xmsg.m_icmd) + ":------" + Network.xue++); if (xmsg.m_icmd == (int)GameID.Ready) { Res_ready res = new Res_ready(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Res_ready>(stream); } Network.battleinfo.m_iMapIndex = res.m_iMapID; #if xue Network.battleinfo.m_eBattleType = BattleType.NORMAL_PVP; Network.battleinfo.m_iTimeLimit = GameDefine.INFINITE; #endif int ma = res.m_iSeatSum; List <string> username = res.m_strName; List <int> teamid = res.m_iTeamID; List <int> playerid = res.m_aiSeatPlayer; for (int i = 0; i < ma; i++) { PlayerInfo p1 = new PlayerInfo(); p1.m_strName = username[i]; p1.m_iPlayerUID = playerid[i]; p1.m_iTeam = teamid[i]; Network.Pid_Tid.Add(playerid[i], teamid[i]); #if xue //Debug.Log("xue*****************:" + ":name:" + username[i] + ":playerid:" + playerid[i] + "teamid" + teamid[i] + "mapid:" + res.m_iMapID); #endif Network.battleinfo.m_listPlayers.Add(p1); if (Network.playerid == playerid[i]) { Network.playerindex = i; } else { Network.playerid2 = playerid[i]; } } CMD_MAP_MATCH_result = (int)ResultID.result_enter_game; } else if (xmsg.m_icmd == (int)GameID.Ready_Notify) { Notify_ready res = new Notify_ready(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Notify_ready>(stream); } Network.seat_binary = (Network.seat_binary) | (1 << (res.m_iSeat)); Network.GameReady_pic[res.m_iSeat] = res.m_iPic; Network.seat_res++; } else if (xmsg.m_icmd == (int)GameID.Choose) { Res_choose res = new Res_choose(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Res_choose>(stream); } Network.battleinfo.m_iRoundLimit = res.m_iRound; #if xue Network.battleinfo.m_eBattleType = BattleType.NORMAL_PVP; Network.battleinfo.m_iTimeLimit = GameDefine.INFINITE; #endif int ma = Network.battleinfo.m_listPlayers.Count; List <int> tankid = res.m_iTankID; for (int i = 0; i < ma; i++) { Network.battleinfo.m_listPlayers[i].m_iInstructionID = tankid[i]; Network.battleinfo.m_listPlayers[i].m_iHP = GameGOW.Get().DataMgr.GetCharacterInstructionByID(tankid[i]).m_iHP; Network.battleinfo.m_listPlayers[i].m_iMoveEnergy = GameGOW.Get().DataMgr.GetCharacterInstructionByID(tankid[i]).m_iMoveEnergy; Network.battleinfo.m_listPlayers[i].m_iAddEnergy = GameGOW.Get().DataMgr.GetCharacterInstructionByID(tankid[i]).m_iAddEnergy; #if xue //Debug.Log("xue*****************:tankid:" + tankid[i]); #endif } CMD_MAP_MATCH_result = (int)ResultID.result_choose_done; } else if (xmsg.m_icmd == (int)GameID.Choose_Notify) { Notify_choose res = new Notify_choose(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Notify_choose>(stream); } //Debug.Log("xue^^^^^^^^^^^^^^^^^ " + res.m_iSeat + ":" + res.m_iTankID + " " + Network.xue++); if (res.m_iTankID < 0) { Network.GameChoose_num[res.m_iSeat + 1] = (-res.m_iTankID) + 100; } else { Network.GameChoose_num[res.m_iSeat + 1] = res.m_iTankID; Network.GameChooseStatus = -1; } } else if (xmsg.m_icmd == (int)GameID.Load) { Res_loading res = new Res_loading(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Res_loading>(stream); } int index = 1; for (int i = 0; i < Network.battleinfo.m_listPlayers.Count; i++) { if (Network.battleinfo.m_listPlayers[i].m_iPlayerUID == res.m_iOptID) { index = i; break; } } Network.GameLoading_num[index + 1] = res.m_ilen; if (res.m_ilen == 200) { Network.GameLoading = 10; } else if (Network.playerid == res.m_iOptID) { Network.GameLoading++; } } else if (xmsg.m_icmd == (int)GameID.Move) { Res_move res = new Res_move(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Res_move>(stream); } CharacterLogic m_pCurrentPlayer = GameGOW.Get().CharacterMgr.GetCharacterByUid(res.m_iOptID); int type = res.m_iDirection; //var m_pCharacterLogic = GameGOW.Get().BattleMgr.m_pCurrentPlayer; m_pCurrentPlayer.OnDirectionKeyChanged(type); if (type == 0 || res.m_iIntervalTime == 1) { Vector2 v2 = new Vector2(res.m_iPosX, res.m_iPosY); m_pCurrentPlayer.Position = v2; } } else if (xmsg.m_icmd == (int)GameID.Round) { Res_round res = new Res_round(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Res_round>(stream); } Network.Round = res.m_iRound; Network.Wind = res.m_iWind; Network.next_playerid = res.m_iOptID; if (res.m_iOptID != Network.playerid) { EventDispatcher.DispatchEvent("EventHideBattleJoyStickUI", null, null); } //技能冷却 /* * if (Network.playerid == GameGOW.Get().BattleMgr.m_stBattleInfo.m_listPlayers[GameGOW.Get().BattleMgr.m_iCurrentRoundPlayerIndex].m_iPlayerUID) * { * if (SkillManager.CurrentSkillId != 0) * { * Network.Skill_CD[SkillManager.CurrentSkillId]--; * } * * for (int i = 0; i < 20; i++) * { * if (i == SkillManager.CurrentSkillId) * { * if (Network.Skill_CD[i] == -1) * { * Network.Skill_CD[i] = 2; * } * continue; * } * else if (Network.Skill_CD[i] > 0) * { * Network.Skill_CD[i]--; * } * //Debug.Log("xue^^^^^" + i + " " + Network.Skill_CD[i] + " " + Network.xue++); * } * } */ SkillManager.CurrentSkillId = 0; if (res.m_iOptID == Network.playerid) { EventDispatcher.DispatchEvent("EventShowBattleJoyStickUI", null, null); } Network.InitRound(); GameGOW.Get().BattleMgr.ChangeController_Quick(); } else if (xmsg.m_icmd == (int)GameID.Attach) { Res_attack res = new Res_attack(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Res_attack>(stream); } int speed = res.m_iPower; float angle = res.m_iAngle; SkillManager.CurrentSkillId = res.m_iBombType; CharacterLogic m_pCurrentPlayer = GameGOW.Get().CharacterMgr.GetCharacterByUid(res.m_iOptID); //var m_pCharacterLogic = GameGOW.Get().BattleMgr.m_pCurrentPlayer; /** * m_pCurrentPlayer.OnFunctionKeyDown(0x11); * * GameGOW.Get().BattleMgr.m_pCurrentPlayer.m_pInfo.m_iBombSpeed = speed; * GameGOW.Get().BattleMgr.m_pCurrentPlayer.m_pInfo.m_iFireAngle = angle; * Network.Attacking = 2; * m_pCurrentPlayer.OnFunctionKeyUp(0x11); **/ Network.Round = res.m_iRound; m_pCurrentPlayer.m_pInfo.m_iBombSpeed = speed; m_pCurrentPlayer.m_pInfo.m_iFireAngle = angle; Network.Attacking = 2; m_pCurrentPlayer.m_pInfo.m_bInBombSpeedUp = false; GameGOW.Get().PlaySkill((SkillManager.SkillType)SkillManager.CurrentSkillId, m_pCurrentPlayer, Network.attackbasedata); } else if (xmsg.m_icmd == (int)GameID.Boom) { Res_Boom res = new Res_Boom(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Res_Boom>(stream); } float x = res.m_ix; float y = res.m_iy; SounderManager.Get().FunNet(res.BombID, res.Kind, x, y); /* * GameGOW.Get().BombMgr.GetBombByUID(res.BombID).Boom_pos = new Vector2(x, y); * Debug.Log("xue^^^^" + res.BombID + " " + GameGOW.Get().BombMgr.GetBombByUID(res.BombID).Boom_pos.x + " " + * GameGOW.Get().BombMgr.GetBombByUID(res.BombID).Boom_pos.y + " " + Network.xue++); * if (res.Kind == false) * { * GameGOW.Get().BombMgr.GetBombByUID(res.BombID).Net_Boom_Status = 1; * //BaseBomb.Net_Boom_Status = 1; * } * else * { * GameGOW.Get().BombMgr.GetBombByUID(res.BombID).Net_Boom_Status = 2; * //BaseBomb.Net_Boom_Status = 2; * } */ } else if (xmsg.m_icmd == (int)GameID.Damage) { OnGame_HP res = new OnGame_HP(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <OnGame_HP>(stream); } //执行掉血 DamageType eType = DamageType.NORMAL; CharacterLogic dstObject = GameGOW.Get().CharacterMgr.GetCharacterByUid(res.m_iPlayerID); int hp = dstObject.m_pInfo.m_iHP; float DD = res.hpValues; hp -= (int)DD; if (hp > dstObject.m_pInfo.m_iMaxHP) { hp = dstObject.m_pInfo.m_iMaxHP; } dstObject.OnDamage(hp, res.hpValues, eType); } else if (xmsg.m_icmd == (int)GameID.Die) { Notify_disconnect res = new Notify_disconnect(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Notify_disconnect>(stream); } GameGOW.Get().CharacterMgr.GetCharacterByUid(res.m_iOptID).Dead(); } else if (xmsg.m_icmd == (int)GameID.Disconnect) { Notify_disconnect res = new Notify_disconnect(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Notify_disconnect>(stream); } //处理掉线 } else if (xmsg.m_icmd == (int)GameID.Over) { Res_over res = new Res_over(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Res_over>(stream); } if (res.m_iOverStatus == (int)GameResID.game_result_win) { GameGOW.Get().Winner_Id = 2; GameGOW.Get().BattleMgr.StopBattle(); } else if (res.m_iOverStatus == (int)GameResID.game_result_fail) { GameGOW.Get().Winner_Id = 1; GameGOW.Get().BattleMgr.StopBattle(); } else if (res.m_iOverStatus == (int)GameResID.game_result_exception) { EventDispatcher.DispatchEvent("EventBackHost", null, null); } else { GameGOW.Get().Winner_Id = 1; GameGOW.Get().BattleMgr.StopBattle(); } Network.addgold = res.m_iGetGold; Network.addexp = res.m_iGetExp; Network.adddiamond = res.m_iGetDiamond; Network.gold += Network.addgold; Network.exp += Network.addexp; Network.diamond += Network.adddiamond; Add_Friend_List = new Dictionary <string, int>(); Invite_Friend_List = new Dictionary <string, int>(); } else if (xmsg.m_icmd == (int)GameID.Quit) { GameGOW.Get().BattleMgr.m_bIsInBattle = false; } else if (xmsg.m_icmd == (int)GameID.Chat) { Notify_chat res = new Notify_chat(); using (MemoryStream stream = new MemoryStream(xmsg.gameData)) { res = ProtoBuf.Serializer.Deserialize <Notify_chat>(stream); } if (res.m_iChatID >= 1000 && res.m_iChatID < 2000) { var info = GameGOW.Get().CharacterMgr.GetCharacterByUid(res.m_iOptID).m_pInfo; info.EmojiID = res.m_iChatID; } else { LuaHelper.Play_Sound(2, "sound/girlsound/girl_0" + (res.m_iChatID - 2000)); var info = GameGOW.Get().CharacterMgr.GetCharacterByUid(res.m_iOptID).m_pInfo; info.MessageID = res.m_iChatID; } } }